CIDOC CRM is used as basis for the underlying data model of OpenAtlas. Currently we are using CIDOC CRM v7.1.1 from http://www.cidoc-crm.org/versions-of-the-cidoc-crm
A script is used to parse the specification and import it into a PostgreSQL database (https://github.com/craws/OpenAtlas/tree/main/install)
OpenAtlas "knows" the specification and checks every link that it is made with the application. There is also a function to check all existing links which can be useful e.g. after an import of external data.
We don't import or use inverse properties (ending with i) since our links are directed anyway. Nevertheless their labels are imported for more convenient viewing of relations.
Properties with URLs as domain/range are ignored because our system has a foreign key on domain which must match an existing class.
Also some properties are linked as sub_properties_of properties with the i suffix. Since we don't use inverse properties in the database (direction is determined through domain/range selection)they are linked to their counterpart without i.
There are some "special" properties we ignore, e.g. P3, you can look them up in the OpenAtlas CIDOC parser script where they are defined at the top: https://github.com/craws/OpenAtlas/blob/main/install/crm/cidoc_rtfs_parser.py
We don't import them because of technical reasons, e.g. they are missing some definitions that "normal" properties have and the import script would have troubles to deal with them. E.g. they have no defined range but this is a foreign key in our database that can't be empty.
We try as long as possible to only use the official CIDOC CRM and to not introduce own classes or use extensions, which we managed so far.
But we are using some shortcuts in the software/database for performance and to keep the code base maintainable.
More details: CIDOC CRM shortcuts.
OpenAtlas class mapping¶
OpenAtlas uses the CIDOC CRM in the application but because of contextual differences we needed a more fine grained model for the user interface.
E.g. E33 Linguistic Object can be a source or a source translation which have different forms in different context.
An overview of internal mapping and CIDOC CRM classes can be found here
Here you can see a simplified version of the model used in OpenAtlas which is based on classes and properties of the CIDOC CRM.