Data Model

Our internal data model consists of entities, relations, vocabularies and some meta-classes (e.g. annotations, revisions etc.)

Data model APIS

Simplified data-model of the APIS webapp

Please note that in the data-model schema in order to make the figure not too complex some arrows have been removed.

Entities

The entities build the core of the internal APIS data-model:

  • entities.models.Person: Natural persons

  • entities.models.Place: Any place on earth that can be defined by longitude and latitude. Mainly cities and countries.

  • entities.models.Institution: Any legal entity or legal entity similar entity. This includes obviously organisations, but also religions, or long lasting prizes.

  • entities.models.Event: Any event that took place in history and is too big to model as a relation. This does not include a birth of a person (like it would be modeled in event based data models) as the birth is split up between attributes (e.g. the date of birth) and relations to other entities (e.g. the mother). It includes though wars and battles as these would need a lot of entities to relate to each other.

  • entities.models.Work: Basically anything that human beings produce: letters and books, paintings, buildings and cars.

Relations

Every entity in the APIS data model can be related to any other entity. Relations consist of:

  • a start entity (e.g. a person for a PersonPlace relation)

  • a target entity (e.g. a place for a PersonPlace relation)

  • start and end dates of the relation

  • a vocabulary entry to define the kind of relation

  • reference- and notes fields. These are full-text fields to further define the relation.

There are

Vocabularies

As we already mentioned we use SKOS like vocabularies to define entities and relations. These vocabulary entries use following attributes:

  • name: the name of the entry. We define relations always in the direction the class is named. Thus the PersonPlace relation needs a vocabulary entry describing the relation from the Person to the Place. E.g. “was educated in”.

  • name_reverse: Specifies the name to use for the reverse relation (PlacePerson). E.g. “was place of education of”.

  • parent_class: The parent of the entry. SKOS allows for hierarchical structures and we implement these hierarchies by setting the parent class.

  • description: Can be used to further define the entry.

Annotations

The third important part of the data model are annotations. We store annotations as character offset with start and end character (please see highlighter.models.Annotation for details). Every highlighter.models.Annotation is associated with:

  • django.contrib.auth.models.User: The user that created the annotation. Please keep in mind that this is not

    changed when someone changes the associated relation or entity.

  • an entity or relation (optional): anything within Entities or Relations.