concepts

This page describes the main concepts used by Datasphere. For each of these concepts, this page defines the vocabulary used. Where possible, alternative terms are given. These alternative terms are given to facilitate the understanding of the reader who already has experience in databases.

This chapter is aimed at readers with different technical backgrounds and experience. It explains each concept in (up to) 3 different ways: a description, the corresponding JSON data, and a UML class diagram.

Note

Since these 3 ways of explaining are equivalent, readers are encouraged to pick only what “speaks” to them most.
For example, if you don’t speak fluent UML, feel free to ignore all those weird diagrams!

database

A database is a set of information structured to be easily accessible, organized and updated. It is a way to store and analyze information on a given theme.

The vocation of a database is not to model the entirety of reality, but only the concepts, or entities, necessary to represent a given theme. In this, and especially in a scientific context, a database also represents a vision, a certain way of approaching a research problem, intrinsically dependent of the team members who participate in its construction.

All entities in a database, along with their respective attributes, is called the schema of this database.

This schema represents the modeling of the specific theme, sometimes the answer to the problematic. It is the vision of the person or team who designed the database.

To be able to manage every database imaginable, Datasphere abstracts them as 5 main concepts : entity, property, attribute, item, metadata.

@startmindmap
* Database
--[#Orange] Properties
--[#Sienna] Entities
--[#FireBrick] Attributes
++[#MediumPurple] Items
++[#RoyalBlue] Metadata
@endmindmap

HERA: 5 concepts: property, entity, attribute, item, metadata

@startuml

entity Entity {
  -id : string
  +name : string
  +description : string
  -attributes : Attribute
  +uri : URI[]
}

entity Property {
  -id : string
  +name : string
  +description : string
  +type : string
  +uri : URI[]
}

class Attribute {
  -id : string
  +name : string
  +description : string
  +type : string
  -property : Property
  +min : int ≥ 0
  +max : int ≥ min
}

entity Item {
  -id : string
  +entity : Entity
  ~metadata : Metadata
  +uri : URI[]
}

entity Metadata {
  -id : string
  ~item : Item
  ~attribute : Attribute
  +value : string
}

Entity    "1" *-- "0..N" Attribute : < définissent
Attribute "0..N" o-- "1" Property : spécialisent >
Item      "0..N" --o "0..1" Entity : < type
Item      "1" *-- "0..N" Metadata : < décrivent
Metadata  "min..max" --o "1" Attribute : < type
@enduml

(UML) HERA: Class diagram : Property, Entity, Attribute, Item, Metadata

property

A property is a reusable characteristic that can be declared differently by one or more entities of a database.

Each property is defined by :

  • a label (name) to identify it;

  • a description to understand when to use it ;

  • a type which constrains the value it can take;

  • an URI to uniquely identify it.

@startjson
!include ../../resource/figure/hera.property.json
@endjson

(modèle JSON) A Property

@startuml
!include ../../resource/figure/hera.uml
remove Entity
remove Attribute
remove Item
remove Metadata
@enduml

(UML) HERA: Class diagram : Property

entity

An entity is a subject, a concept, related to the topic of the database it belongs to. An entity is characterized by attributes defining all information necessary to its description.

The list of attributes of an entity is not necessarily intended to be exhaustive. It is simply a matter of modeling what is needed in the context of a specific theme.

@startjson
!include ../../resource/figure/hera.entity.json
@endjson

(modèle JSON) An entity list its attributes, each one is the concrete use of an abstract property by this entity

@startuml
!include ../../resource/figure/hera.uml
remove Item
remove Metadata
@enduml

(UML) Class diagram: Property, Entity, Attribute

attribute

An attribute is the use by an entity of a particular property.

In addition to the entity and property it links, each attribute is defined by a cardinality telling whether it is repeatable (or not), and mandatory (or not).

An attribute can specialize (ie. overload) its corresponding property’s label, description or type. This doesn’t change the property in any way. This allows to make its usage clearer or make it easier to understand in the context of the entity.

@startuml
!include ../../resource/figure/hera.uml
remove Property
remove Entity
remove Item
remove Metadata
@enduml

(UML) Class diagram: Attribute

Note

In practice, the cardinality of an attribute is represented by a minimum (min) and maximum (max) number of occurrences of the relevant metadata for each element of the entity to which this attribute belongs. For example:

  • if the metadata is mandatory for each element of this entity, min is 1

  • if the metadata is optional, min is 0

  • if the metadata is not repeatable, max is 1

  • if the metadata is repeatable, max is … as many as you like!

item

An item is a composite piece of information. Each item is the concrete manifestation of one entity. Consequently, each of the entity’s attributes has a concrete value: the item’s metadata.

@startjson
!include ../../resource/figure/hera.item.json
@endjson

(modèle JSON) An Item is a container for its metadata ; each metadata is the concrete value of an abstract property.

@startuml
!include ../../resource/figure/hera.uml
remove Entity
remove Property
remove Attribute
@enduml

(UML) Class diagram: Item, Metadata

metadata

A metadata is an atomic piece of information. It is necessarily relative to an attribute. It only has meaning if it is associated with other metadata; the aggregate thus formed is an item.

reference

A reference is a unique, direct link from one item to one other item. It is a specific type of metadata.

relationship

A relationship is an association between two items.