# Representing and Validating Cultural Heritage Knowledge Graphs in CIDOC-CRM Ontology
## 5 Discussion  
The purpose of this work was to translate COURAGE into CIDOC-CRM. The COURAGE dataset is a valuable historical dataset created by historians with thorough quality control. At the beginning of the COURAGE project, the application of CIDOC CRM was not an option for several reasons; complete control was necessary over the ontology, as its structure was evolving in an agile way, and also the input of facts had to be supported with a historian-friendly user interface. There was no time to educate historians and explain to them the rationale behind the complexity of CIDOC CRM concepts. Therefore, the project decided to develop its own ontology for driving data input. Although simpler than CRM, the COURAGE ontology also embraced a temporal approach in the representation of human roles in the life of collections. As each role had a start and end year, these were easy to translate into CIDOC CRM timespans. Overall, we can claim that the transfer of the main relation graph (the essence of the COURAGE dataset) to CIDOC CRM was easy to \begin{table}
\begin{tabular}{l} \hline \hline
**SHACL Validation** \\ \hline PersonShape rdf:type sh:NodeShape; \\ rdfs:label ” Validation of birthdate for E21 Person “@en; \\ sh:sparql [sh:message “birthDate happened after createDate”; \\ sh:prefixes) “[[http://courage.tblc.mta.hu/courage/individual](http://courage.tblc.mta.hu/courage/individual)]([http://courage.tblc.mta.hu/courage/individual](http://courage.tblc.mta.hu/courage/individual))>; \\ sh:select ”prefix ecrm: \(\{\}\):[[http://erlangen-crm.org/200717/](http://erlangen-crm.org/200717/)]([http://erlangen-crm.org/200717/](http://erlangen-crm.org/200717/))\textgreater{} \\ SELECT DISTINCT 5 this ’birthDate?createDate WHERE \{ \\
5 this ecrm:P98i\_was\_born?birth. \\
7 birth ecrm:P4\_has\_time-span ’birthIRI. \\
7 birthI ecrm:P82a\_beginbegin{tabular} of the begin?birthDate. \\?performed?performed?performed?performed?performed?end?performed?performed?end?end \\
2. Contextual validation is based on common sense and domain knowledge, and it includes constraints that are hard or impossible to represent in OWL or were simply forgotten during ontology implementation: \\
* Temporal validation: the events should be in a logical order, e.g., birth, marriage, death. For example, events in a collection must follow its creation. Table 5 is an example of using SHACL to conduct temporal validation via TopBraid. The below shape inspects whether a person’s birthdate occurred before the dates of all his/her activities; \\
* Spatial validation: the locations must adhere to logical containment. For example, featured item I of collection C must be in the same location as C; \\
* Uniqueness validation: there should be one URI and RDF representation for each entity. For example, we detected and merged multiple RDF individuals for cities and people; \\
3. Validation of mapping is used to check if properties and classes are translated in the right way. \\
* For example, if the COURAGE P1 property should be translated into CRM P2, then for all facts using the P1 property, the existence of corresponding facts using the P2 property can be checked. In certain cases, the non-existence of other facts using P2 can also be checked. For example, if a collection is located in Budapest only according to COURAGE data, then in its CIDOC CRM translation the same collection should not have other locations either. \\ \hline \hline \end{tabular}
\end{table} 
Table 5: Semantic validation using SHACL shape. accomplish. Some new subclasses for curation task had to be created for the representation of the finer task typology in COURAGE. However, the description of simple data properties in CIDOC CRM was found to be cumbersome. The description of collection topics, webpages, and answers to yes-no or numeric questions in the CRM schema becomes more complex than in a 'traditional' ontology. Although CIDOC-CRM was designed to represent cultural heritage data [24], it was a serious mental task to find the right classes and properties for collection and artifact data.