-
Notifications
You must be signed in to change notification settings - Fork 2
/
schema.qmd
214 lines (151 loc) · 9.37 KB
/
schema.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
# Datenbankschema {#sec-schema}
Im Folgenden das Datenbankschema des Property Graphen beschrieben. Die
RDF-Daten im Triple-Store folgend dagegen bislang keinen Schema sondern werden
so eingespielt wie sie geliefert werden.
Als Sammlungsübergeifendes Datenmodell wird **[CIDOC-CRM (CRM)](crm.qmd)**
verwendet. Weitere Ontologien müssen auf CRM gemappt werden. Darüber hinaus
werden eine Reihen von etablierten [Vokabularen](#sec-vocabularies) wie
ICONCLASS, GND und die LIDO-Terminologien unterstützt.
## Modellierung
::: {.callout-warning appearance="simple"}
Die Modellierung ist noch nicht abgeschlossen! Überlegungen zur Abbildung
von CRM in RDF [befinden sich hier](https://nfdi4objects.github.io/crm-rdf-ap/).
:::
### Entitäten und Knoten
Knoten im [Property Graphen](#property-graphen) erhalten als Knoten-Label
die entsprechenden [CRM-Klassen](crm.qmd). Dabei werden Leerzeichen und
Sonderzeichen durch Unterstrich ersetzt
:::{.callout-note title="Beispiele"}
Entitäten der CRM-Klasse [E16 Measurement](https://cidoc-crm.org/html/cidoc_crm_v7.1.3_with_translations.html#E16) werden Knoten mit dem Label `E16_Measurement`.
Entitäten der CRM-Klasse [E22 Human-Made Object](https://cidoc-crm.org/html/cidoc_crm_v7.1.3_with_translations.html#E22) werden Knoten mit dem Label `E22_Human_Made_Object`
:::
Zwischenzeitlich gelöschte und umbenannte Klassen können weiterhin verwendet
werden, allerdings werden diese durch [Expansion](#expansion) auf die neueste
Form gemappt.
### Elementare Datentypen
Die folgende CRM-Klassen für elementare Datentypen werden *nicht* als Knoten-Label verwendet. Ihre Instanzen werden im Datenmodell stattdessen als Property-Werte abgebildet:
- [E59 Primitive Value](http://www.cidoc-crm.org/cidoc-crm/E59)
- [E60 Number](http://www.cidoc-crm.org/cidoc-crm/E60) für Zahlen
- [E62 String](http://www.cidoc-crm.org/cidoc-crm/E62) für Zeichenketten
Instanzen der folgenden CRM-Klassen werden ebenfalls *wenn möglich* nicht als Knoten sondern als Property-Werte abgebildet. Anderenfalls erfolgt die Expansion nur über die übergeordnete Klasse [E41 Appellation](http://www.cidoc-crm.org/cidoc-crm/E41):
- [E61 Time Primitive](http://www.cidoc-crm.org/cidoc-crm/E61) für Datums- und Zeitangaben
- [E94 Space Primitive](http://www.cidoc-crm.org/cidoc-crm/E94) für Koordinaten
### Relationen und Kanten
CRM-Properties (nicht zu verwechseln mit Eigenschaften im [Property-Graph
Datenbankmodell](#property-graph)) werden im Property-Graphen durch
Kanten-Label modelliert.
::: {.callout-warning appearance="simple"}
[Expansion] von Kanten-Label ist noch nicht umgesetzt!
:::
::: {.callout-warning appearance="simple"}
Inverse CRM-Properties sind noch nicht berücksichtigt!
:::
Eine Ausnahme bilden die folgenden CRM-Properties für [elementare
Datentypen](#elementare-datentypen), die stattdessen zu Property-Keys werden (siehe folgender Abschnitt).
### Properties
Folgende CRM-Properties werden im Property-Graphen durch Knoten-Properties modelliert:
CRM-Property | Property-Key | Datentyp
-------------|--------------|----------
[P3 has note](http://www.cidoc-crm.org/cidoc-crm/P3) | `P3_has_note` | Zeichenkette
[P57 has number of parts](http://www.cidoc-crm.org/cidoc-crm/P57) | `P57_has_number_of_parts` | Zahl
[P79 beginning is qualified by](http://www.cidoc-crm.org/cidoc-crm/P79) | `P79_beginning_is_qualified_by` | Zeichenkette
[P80 end is qualified by](http://www.cidoc-crm.org/cidoc-crm/P80) | `P80_end_is_qualified_by`| Zeichenkette
[P90 has value](http://www.cidoc-crm.org/cidoc-crm/P90) | `P90_has_value` | Zahl)
[P168 place is defined by (defines place)](http://www.cidoc-crm.org/cidoc-crm/P168) | `P168_place_is_defined_by` | Koordinate
[P170 defines time (time is defined by)](http://www.cidoc-crm.org/cidoc-crm/P170) | `P170i_time_is_defined_by` (inverse Relation!) | Datums-/Zeitangabe
[P171 at some place within](http://www.cidoc-crm.org/cidoc-crm/P171 ) | `P171_at_some_place_within` | Koordinate
[P172 contains](http://www.cidoc-crm.org/cidoc-crm/P172) | `P172_contains` | Koordinate
[P190 has_symbolic_content](https://cidoc-crm.org/html/cidoc_crm_v7.1.2_with_translations.html#P190) | `P190_has_symbolic_content` | Zeichenkette
::: {.callout-warning appearance="simple"}
Die Property-Keys werden möglicherweise noch umbenannt, um zu lange Namen zu vermeiden!
:::
:::{.callout-note title="Beispiel"}
```pg
d1 :E54_Dimension P90_has_value:12 # Wert 12 als Property
d1 -> u1 :P90_has_unit # Einheit u1 (hier nicht weiter definiert)
```
:::
Darüber hinaus gibt es einige besondere Property-Keys, deren möglicher Einsatz noch diskutiert wird:
- `cID`
- `collection`
- `value`
- `lang`
- `type`
- `pref`
- `formatResource`
- `sortorder`
- `source`
- `uri`
### Expansion
Entsprechend der CRM-Klassenhierarchie erhalten alle Knoten ausgehend von ihren
Labels jeweils zusätzlich als Label die CRM-Kürzel der eigenen und aller
übergeordneten Klassen.
:::{.callout-note title="Beispiele"}
Knoten mit dem Label `E16_Measurement` erhalten zusätzlich die Label `E16` sowie die übergeordneten Klassen `E13` (Attribute Assignment), `E7` (Activity), `E5` (Event),
`E4` (Period), `E2` (Temporal Entity) und `E92` (Spacetime Volume) sowie `E1` (CRM Entity).
Entitäten der CRM-Klasse [E22 Man-Made_Object](https://cidoc-crm.org/html/cidoc_crm_v6.2.6_with_translations.html#E22) (mit CRM-Version 6.2.7 umbenannt in "E22 Human-Made Object")
werden Knoten mit dem Label `E22_Man_Made_Object` und erhalten die selben Überklassen wie `E22_Human_Made_Object`.
Entitäte der CRM-Klasse [E40 Legal-Body](https://cidoc-crm.org/html/cidoc_crm_v6.2.7_with_translations.html#E40) werden Knoten mit dem Label `E40_Legal_Body` aber da die Klasse veraltet ist und stattdessen [E74 Group](https://cidoc-crm.org/html/cidoc_crm_v7.1.3_with_translations.html#E74) verwendet werden soll, erhalten sie zusätzlich die Label `E74` und die selben Überklassen wie `E74_Group`.
:::
Die Anreicherung ergibt sich aus der CRM-Klassenhierarchie:
- [CIDOC-CRM-Klassen (alle Versionen)](img/crm-classes.svg)
- [CIDOC-CRM-Properties (alle Versionen)](img/crm-properties.svg)
- [CRM und auf CRM-gemappte Klassen](img/n4o-all-classes.svg)
### Offene Punkte
Das Datenmodell muss noch erweitert werden um:
- Identifier (für Normdaten-Identifier siehe <https://github.com/nfdi4objects/n4o-terminologies>)
- `CREATE CONSTRAINT uri FOR (n:E1) REQUIRE n.uri IS UNIQUE`
<!-- see https://community.neo4j.com/t/index-on-array/4625 -->
- Informationen über Sammlungen aus denen die Daten und Objekte stammen
(siehe <https://github.com/nfdi4objects/n4o-databases> und
<https://github.com/nfdi4objects/n4o-rdf-import>)
- Informationen *über* Ontologien und Vokabulare
## Beispiel
Folgender in CIDOC-CRM modellierter Teilgraph (in Turtle-Syntax):
```ttl
{{< include crm-example.ttl >}}
```
wird konvertiert in folgenden Property Graph (in PG Format und als Diagram):
```.pg
{{< include crm-pg-example.pg >}}
```
![](img/crm-pg-example.svg)
## Vokabulare
*Die konkrete Modellierung und Implementierung ist noch in Arbeit.*
Ausgewählte kontrollierte [Vokabulare](#sec-vocabularies) werden zentral in den Property Graphen eingespielt. Das Datenmodell dafür basiert auf CIDOC-CRM und SKOS mit folgenden Bestandteilen:
- Vokabulare haben die Property `uri` mit der BARTOC-URI des Vokabulars als Wert und die
Label `E32_Authority_Document` ([E32 Authority Document](https://cidoc-crm.org/html/cidoc_crm_v7.1.3_with_translations.html#E32)) sowie `ConceptScheme` zur Markierung, dass sie als Vokabular eingespielt wurden.
- Konzepte haben eine Property `uri` und können unterschiedliche Label haben. Der allgemein Fall ist `E55_Type`.
([E55 Type](https://cidoc-crm.org/html/cidoc_crm_v7.1.3_with_translations.html#E55)).
Darüber hinaus erhalten sie das Label `Concept` zur Markierung, dass sie aus einem Vokabular statt aus einer
Lieferung von Forschungsdaten stammen.
- Konzepte werden ihrem Vokabular mit dem Kanten-Label `inScheme` zugeordnet. Die entsprechende inverse CRM-Property
[P71 lists](https://cidoc-crm.org/html/cidoc_crm_v7.1.3_with_translations.html#P71) wird *nicht* verwendet.
- Konzepte können mit den Kanten-Labeln `broader` miteinander verknüpft werden. Die entsprechende CRM-Property
[P127 has broader term](https://cidoc-crm.org/html/cidoc_crm_v7.1.3_with_translations.html#P127) wird *nicht*
verwendet.
- Konzepte können eine interne ID oder Notation haben (Property `notation`)
- Konzepte sollten Benennungen haben (Property `label` und `labelLang`)
Darüber könnten folgende CRM-Bestandteile eine Rolle spielen:
- [P150 defines typical part of](https://cidoc-crm.org/html/cidoc_crm_v7.1.3_with_translations.html#P150),
ein Spezialfall von `skos:related`.
- [P2 has type](https://cidoc-crm.org/html/cidoc_crm_v7.1.3_with_translations.html#P2)
- [P137 exemplifies](https://cidoc-crm.org/html/cidoc_crm_v7.1.3_with_translations.html#P137)
die inverse Relation von `skos:example`.
<!--
TODO: prefLabel, prefLabelLang
The Art & Architecture Thesaurus (E32) lists alcazars (E55). (http://vocab.getty.edu/page/aat/300006897)
-->
:::{.callout-note title="Beispiel"}
GND-Datensatz zu "Schleswig-Holstein":
```pg
gnd :ConceptScheme :E32_Authority_Document # GND
uri: http://bartoc.org/en/node/430
sh :Concept :E55_Type :E42_Identifier # Schleswig-Holstein
uri: https://d-nb.info/gnd/4052692-6
sh -> gnd :inScheme
```
<!--
type http://terminology.lido-schema.org/identifier_type/uri
value https://d-nb.info/gnd/4052692-6
-->