-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathvocpub-4.10.ttl
534 lines (474 loc) · 19.9 KB
/
vocpub-4.10.ttl
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
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
PREFIX dcat: <http://www.w3.org/ns/dcat#>
PREFIX dcterms: <http://purl.org/dc/terms/>
PREFIX owl: <http://www.w3.org/2002/07/owl#>
PREFIX prov: <http://www.w3.org/ns/prov#>
PREFIX reg: <http://purl.org/linked-data/registry#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX sdo: <https://schema.org/>
PREFIX sh: <http://www.w3.org/ns/shacl#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
PREFIX xsd: <http://www.w3.org/2001/XMLSchema#>
BASE <https://w3id.org/profile/vocpub/validator/>
<https://w3id.org/profile/vocpub/validator>
a owl:Ontology ;
sdo:name "VocPub Validator"@en ;
sdo:definition "SHACL validator for the VocPub Profile"@en ;
sdo:creator <https://orcid.org/0000-0002-8742-7730> ;
sdo:publisher <https://linked.data.gov.au/org/agldwg> ;
sdo:dateCreated "2020-06-14"^^xsd:date ;
sdo:dateModified "2024-06-13"^^xsd:date ;
owl:versionIRI <https://w3id.org/profile/vocpub/validator/4.10> ;
owl:versionInfo """4.10 move all warning from PropertyShapes to NodeShapes
4.9 Fixed RDF syntax errors
4.8 Fixed Warning/Violation error for PropertyShapes
4.7 Fixed modified date alternate path listing bug
4.6 Fixed sdo:historyNote->skos:historyNote bug
4.5 Added suggested predicates of license & copyrightHolder
4.4 Fixed versions across multiple Resources
4.3 Improved validator error messages by using more named Property Shapes
4.2: Included CONSTRUCT-based pre-validation inference in validator. First Git tagged version
4.1: Added Requirements 2.1.10, 2.1.11 & 2.1.12 and example RDF
4.0: Added a SPARQL function to allow for the inferencing of skos:inScheme predicates, skos:broader / skos:narrower and skos:topConceptOf/skos:hasTopConcept pairs of inverse predicates
3.3: Converted validator metadata to schema.org, enabled bibliographic references for Concepts, enabled DCTERMS or schema.org for many ConceptScheme predicates; simplified 2.1.6 from two Requirements to one; included skos:topConceptOf in 2.1.8 for Concepts at the top of the hierarchy; collapsed title & definition requirement pairs to single requirements
3.2: Allowed dcterms:provenance and skos:historyNote; removed max restriction on dcterms:source & prov:wasDerivedFrom
3.1: Changed dcterms:provenance to skos:historyNote
3.0: Removed Requirement-2.3.5 (identifiers) as these are auto-generated in systems like VocPrez; Added Requirement-2.1.10 & 2.1.11 and sub parts to test for qualifiedDerivation and status of a ConceptScheme""" ;
.
<https://linked.data.gov.au/org/agldwg>
a sdo:Organization ;
sdo:name "Australian Government Linked Data Working Group" ;
sdo:url "https://www.linked.data.gov.au"^^xsd:anyURI ;
.
<https://orcid.org/0000-0002-8742-7730>
a sdo:Person ;
sdo:name "Nicholas J. Car" ;
sdo:email "[email protected]"^^xsd:anyURI ;
sdo:identifier "https://orcid.org/0000-0002-8742-7730"^^xsd:anyURI ;
.
#
# Node Shapes
#
#
# ConceptScheme
#
# Requirement-2.1.1 so far un-implemented in SHACL
<Requirement-2.1.2+3>
a sh:NodeShape ;
sh:targetNode skos:ConceptScheme ;
sh:property <ConceptSchemeType> ;
.
<Requirement-2.1.4>
a sh:NodeShape ;
sh:targetClass skos:ConceptScheme ;
sh:message "Requirement 2.1.4 Each vocabulary MUST have exactly one title and at least one definition indicated using the skos:prefLabel and the skos:definition predicates respectively that must give textual literal values. Only one definition per language is allowed" ;
sh:property
<prefLabel> ,
<definition> ;
.
<Requirement-2.1.5>
a sh:NodeShape ;
sh:targetClass skos:ConceptScheme ;
sh:message "Requirement 2.1.5 Each vocabulary MUST have exactly one created date and exactly one modified date indicated using the sdo:dateCreated and sdo:dateModified or dcterms:created and dcterms:modified predicates respectively that must be either an xsd:date, xsd:dateTime or xsd:dateTimeStamp literal value" ;
sh:property
<created> ,
<modified> ;
.
<Requirement-2.1.6>
a sh:NodeShape ;
sh:targetClass skos:ConceptScheme ;
sh:message "Requirement 2.1.6 Each vocabulary MUST have at least one creator, indicated using sdo:creator or dcterms:creator predicate and exactly one publisher, indicated using sdo:publisher or dcterms:publisher, all of which MUST be IRIs indicating instances of sdo:Person, or sdo:Organization" ;
sh:property
<creator> ,
<publisher> ;
.
<Requirement-2.1.7>
a sh:NodeShape ;
sh:targetClass skos:ConceptScheme ;
sh:message "Requirement 2.1.7 The origins of a Concept Scheme MUST be indicated by at least one of the following predicates: skos:historyNote, sdo:citation, prov:wasDerivedFrom. dcterms:source MAY be used instead of sdo:citation and dcterms:provenance MAY be used instead of skos:historyNote but the schema.org and SKOS predicates are preferred" ;
sh:or (
<provenance-properties-01>
<provenance-properties-02>
<provenance-properties-03>
<provenance-properties-04>
<provenance-properties-05>
) ;
.
<Requirement-2.1.8>
a sh:NodeShape ;
sh:targetClass skos:Concept ;
sh:property [
sh:message "Requirement 2.1.8 All Concept instances within a Concept Scheme MUST be contained in a single term hierarchy using skos:hasTopConcept / skos:topConceptOf predicates indicating the broadest Concepts in the vocabulary and then skos:broader and/or skos:narrower predicates for all non-broadest Concepts in a hierarchy that contains no cycles" ;
sh:path skos:inScheme ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:class skos:ConceptScheme ;
] ;
.
<Requirement-2.1.9>
a sh:NodeShape ;
sh:targetClass skos:ConceptScheme ;
sh:property [
sh:message "Requirement 2.1.9 Each vocabulary's Concept Scheme MUST link to at least one Concept within the vocabulary with the skos:hasTopConcept predicate" ;
sh:path skos:hasTopConcept ;
sh:minCount 1 ;
sh:nodeKind sh:IRI ;
] ;
.
<Requirement-2.1.10>
a sh:NodeShape ;
sh:targetClass skos:ConceptScheme ;
sh:property [
sh:message "Requirement 2.1.10 The status of the vocabulary as a whole, according to the Registry Status standard, SHOULD be given with the predicate reg:status indicating a Concept from the Registry Statuses vocabulary (https://linked.data.gov.au/def/reg-statuses)" ;
sh:path reg:status ;
sh:maxCount 1 ;
sh:nodeKind sh:IRI ;
] ;
sh:severity sh:Warning ;
.
<Requirement-2.1.11>
a sh:NodeShape ;
sh:targetClass skos:ConceptScheme ;
sh:property [
sh:message "Requirement 2.1.11 The derivation status of the vocabulary SHOULD be given should be given with the predicate prov:qualifiedDerivation indicating a Blank Node that contains the predicated prov:entity, to indicate the vocabulary derived from and prov:hadRole to indicate the mode of derivation which SHOULD be taken from the Vocabulary Derivation Modes vocabulary (https://linked.data.gov.au/def/vocdermods)" ;
sh:path prov:qualifiedDerivation ;
sh:nodeKind sh:BlankNodeOrIRI ;
] ;
sh:severity sh:Warning ;
.
<Requirement-2.1.11b>
a sh:NodeShape ;
sh:targetObjectsOf prov:qualifiedDerivation ;
sh:property [
sh:message "Requirement 2.1.11 If a vocabulary has a qualified derivation given, it MUST then give a prove:entity predicate within the derivation" ;
sh:path prov:entity ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
.
<Requirement-2.1.11c>
a sh:NodeShape ;
sh:targetObjectsOf prov:qualifiedDerivation ;
sh:property [
sh:message "Requirement 2.1.11 If a vocabulary has a qualified derivation given, it MUST then give a prove:hadRole predicate within the derivation" ;
sh:path prov:hadRole ;
sh:nodeKind sh:IRI ;
sh:minCount 1 ;
sh:maxCount 1 ;
] ;
.
<Requirement-2.1.12>
a sh:NodeShape ;
sh:targetClass skos:ConceptScheme ;
sh:property [
sh:message "Requirement 2.1.12 High-level theming of a vocabulary SHOULD be given by using the sdo:keywords predicate indicating Concepts from another vocabulary. Alternatively, dcat:theme MAY be used. Text literal values for either predicate SHOULD NOT be used" ;
sh:path [
sh:alternativePath (
sdo:keywords
dcat:theme
) ;
] ;
sh:nodeKind sh:IRI ;
] ;
sh:severity sh:Warning ;
.
<Requirement-2.1.13>
a sh:NodeShape ;
sh:targetClass skos:ConceptScheme ;
sh:property [
sh:message "Requirement 2.1.13 Any licence pertaining to the reuse of a vocabulary's content SHOULD be given using the sdo:license predicate preferentially indicating the IRI of a license if in RDF form or a literal URL (datatype xsd:anyURI) if online but not in RDF form. If the licence is expressed in test, a literal text field may be indicated" ;
sh:path sdo:license ;
sh:nodeKind sh:IRI ;
sh:or (
[ sh:nodeKind sh:IRI ]
[ sh:datatype xsd:anyURI ]
[ sh:datatype xsd:string ]
) ;
sh:severity sh:Warning ;
] ;
.
<Requirement-2.1.14>
a sh:NodeShape ;
sh:targetClass skos:ConceptScheme ;
sh:property [
sh:message "Requirement 2.1.14 The copyright holder for the vocabulary SHOULD be given using the sdo:copyrightHolder predicate preferentially indicating the IRI of an Agent or a Blank Node instance of an Agent containing details as per Agent requirements. A prov:qualifiedAttribution predicate indicating an Agent with the prov:hadRole predicate indicating the value isorole:rightsHolder may be used instead of sdo:copyrightHolder" ;
sh:path sdo:copyrightHolder ;
sh:nodeKind sh:IRI ;
] ;
sh:severity sh:Warning ;
.
#
# Collections
#
<Requirement-2.2.1>
a sh:NodeShape ;
sh:targetClass skos:Collection ;
sh:message "Requirement 2.1.4 Each Collection MUST have exactly one title and at least one definition indicated using the skos:prefLabel and the skos:definition predicates respectively that must give textual literal values. Only one definition per language is allowed" ;
sh:property
<prefLabel> ,
<definition> ;
.
<Requirement-2.2.2>
a sh:NodeShape ;
sh:message "Requirement 2.2.2 The origins of a Collection, if different from its containing Concept Scheme, SHOULD be indicated by at least one of the following predicates: skos:historyNote, sdo:citation, prov:wasDerivedFrom. dcterms:source MAY be used instead of sdo:citation and dcterms:provenance MAY be used instead of skos:historyNote but the schema.org and SKOS predicates are preferred" ;
sh:targetClass skos:Collection ;
sh:or (
<provenance-properties-01>
<provenance-properties-02>
<provenance-properties-03>
<provenance-properties-04>
<provenance-properties-05>
) ;
sh:severity sh:Warning ;
.
<Requirement-2.2.3>
a sh:NodeShape ;
sh:targetClass skos:Collection ;
sh:property [
sh:path skos:inScheme ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:message "Requirement 2.2.3 A Collection exists within a vocabulary SHOULD indicate that it is within the vocabulary by use of the skos:inScheme predicate. If it is defined for the first time in the vocabulary, it should also indicate this with the rdfs:isDefinedBy predicate. This message is about skos:inScheme" ;
] ,
[
sh:path rdfs:isDefinedBy ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:message "Requirement 2.2.3 A Collection exists within a vocabulary SHOULD indicate that it is within the vocabulary by use of the skos:inScheme predicate. If it is defined for the first time in the vocabulary, it should also indicate this with the rdfs:isDefinedBy predicate. This message is about rdfs:isDefinedBy" ;
] ;
sh:severity sh:Warning ;
.
<Requirement-2.2.4>
a sh:NodeShape ;
sh:targetClass skos:Collection ;
sh:property [
sh:path skos:member ;
sh:minCount 1 ;
sh:message "Requirement 2.2.4 A Collection MUST indicate at least one Concept instance that is within the collection with use of the skos:member predicate. The Concept need not be defined by the Concept Scheme that defines the Collection" ;
sh:nodeKind sh:IRI ;
] ;
.
#
# Concept
#
<Requirement-2.2.1>
a sh:NodeShape ;
sh:targetClass skos:Concept ;
sh:message "Requirement 2.1.4 Each Concept MUST have exactly one title and at least one definition indicated using the skos:prefLabel and the skos:definition predicates respectively that must give textual literal values. Only one definition per language is allowed" ;
sh:property
<prefLabel> ,
<definition> ;
.
<Requirement-2.3.2>
a sh:NodeShape ;
sh:targetClass skos:Concept ;
sh:message "Requirement 2.3.2 Each Concept in a vocabulary MAY indicate the vocabulary that defines it by use of the rdfs:isDefinedBy predicate indicating a Concept Scheme instance. If no such predicate is given, the Concept Scheme in the file that a Concept is provided in is understood to be the defining Concept Scheme" ;
sh:property [
sh:path rdfs:isDefinedBy ;
sh:minCount 0 ;
sh:maxCount 1 ;
sh:nodeKind sh:IRI ;
sh:severity sh:Warning ;
] ;
.
<Requirement-2.3.3>
a sh:NodeShape ;
sh:targetClass skos:Concept ;
sh:property [
sh:path skos:inScheme ;
sh:minCount 1 ;
sh:nodeKind sh:IRI ;
sh:message "Requirement 2.3.3 Each Concept in a vocabulary MUST indicate that it appears within that vocabulary's hierarchy of Concepts either directly by use of the skos:topConceptOf predicate indicating the vocabulary or indirectly by use of one or more skos:broader / skos:narrower predicates placing the Concept within a chain of other Concepts, the top concept of which uses the skos:topConceptOf predicate to indicate the vocabulary" ;
] ;
.
<Requirement-2.3.4>
a sh:NodeShape ;
sh:targetClass skos:Concept ;
sh:message "Requirement 2.2.2 The origins of a Concept, if different from its containing Concept Scheme, SHOULD be indicated by at least one of the following predicates: skos:historyNote, sdo:citation, prov:wasDerivedFrom. dcterms:source MAY be used instead of sdo:citation and dcterms:provenance MAY be used instead of skos:historyNote but the schema.org and SKOS predicates are preferred" ;
sh:or (
<provenance-properties-01>
<provenance-properties-02>
<provenance-properties-03>
<provenance-properties-04>
<provenance-properties-05>
) ;
sh:severity sh:Warning ;
.
#
# Agent
#
<Requirement-2.4.2>
a sh:NodeShape ;
sh:targetClass sdo:Organization , sdo:Person ;
sh:property [
sh:path sdo:name ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:datatype xsd:string ;
sh:message "Requirement 2.4.2 Each Agent MUST give exactly one name with the sdo:name predicate indicating a literal text value" ;
] ;
.
<Requirement-2.4.3a>
a sh:NodeShape ;
sh:targetClass sdo:Organization ;
sh:property [
sh:path sdo:url ;
sh:minCount 1 ;
sh:datatype xsd:anyURI ;
sh:message "Requirement 2.4.3 Each Agent MUST indicate either a sdo:url (for organizations) or a sdo:email (for people) predicate with a URL or email value. This error message is for Organizations" ;
] ;
.
<Requirement-2.4.3b>
a sh:NodeShape ;
sh:targetClass sdo:Person ;
sh:property [
sh:path sdo:email ;
sh:minCount 1 ;
sh:datatype xsd:anyURI ;
sh:message "Requirement 2.4.3 Each Agent MUST indicate either a sdo:url (for organizations) or a sdo:email (for people) predicate with a URL or email value. This error message is for Persons"
] ;
.
#
# Property Shapes
#
<ConceptSchemeType>
sh:path [ sh:inversePath rdf:type ] ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:message "Requirement 2.1.2 Each vocabulary MUST be presented as a single Concept Scheme object & Requirement 2.1.3 Each vocabulary MUST be presented in a single RDF file which does not contain information other than that which is directly part of the vocabulary" ;
.
<prefLabel>
a sh:PropertyShape ;
sh:message "Requirement 2.1.4, 2.2.1 or 2.3.1 Each vocabulary, Collection or Concept MUST have exactly one title and at least one definition indicated using the skos:prefLabel and the skos:definition predicates respectively that must give textual literal values. Only one definition per language is allowed" ;
sh:path skos:prefLabel ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:uniqueLang true ;
sh:or (
[ sh:datatype xsd:string ]
[ sh:datatype rdf:langString ]
) ;
.
<definition>
a sh:PropertyShape ;
sh:message "Requirement 2.1.4, 2.2.1 or 2.3.1 Each vocabulary, Collection or Concept MUST have exactly one title and at least one definition indicated using the skos:prefLabel and the skos:definition predicates respectively that must give textual literal values. Only one definition per language is allowed" ;
sh:path skos:definition ;
sh:minCount 1 ;
sh:uniqueLang true ;
sh:or (
[ sh:datatype xsd:string ]
[ sh:datatype rdf:langString ]
) ;
.
<created>
a sh:PropertyShape ;
sh:message "Requirement 2.15 - created date - violated" ;
sh:path [
sh:alternativePath (
sdo:dateCreated
dcterms:created
) ;
] ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:or (
[ sh:datatype xsd:dateTime ]
[ sh:datatype xsd:date ]
[ sh:datatype xsd:dateTimeStamp ]
) ;
.
<modified>
a sh:PropertyShape ;
sh:message "Requirement 2.15 - modified date - violated" ;
sh:path [
sh:alternativePath (
sdo:dateModified
dcterms:modified
) ;
] ;
sh:minCount 1 ;
sh:maxCount 1 ;
sh:or (
[ sh:datatype xsd:dateTime ]
[ sh:datatype xsd:date ]
[ sh:datatype xsd:dateTimeStamp ]
) ;
.
<creator>
a sh:PropertyShape ;
sh:message "Requirement 2.1.6 Each vocabulary MUST have at least one creator, indicated using sdo:creator or dcterms:creator predicate and exactly one publisher, indicated using sdo:publisher or dcterms:publisher, all of which MUST be IRIs indicating instances of sdo:Person, or sdo:Organization. This error message is for creator" ;
sh:path [
sh:alternativePath (
sdo:creator
dcterms:creator
) ;
] ;
sh:minCount 1 ;
sh:or (
[ sh:class sdo:Organization ]
[ sh:class sdo:Person ]
) ;
.
<publisher>
a sh:PropertyShape ;
sh:path [
sh:alternativePath (
sdo:publisher
dcterms:publisher
) ;
] ;
sh:minCount 1 ;
sh:message "Requirement 2.1.6 Each vocabulary MUST have at least one creator, indicated using sdo:creator or dcterms:creator predicate and exactly one publisher, indicated using sdo:publisher or dcterms:publisher, all of which MUST be IRIs indicating instances of sdo:Person, or sdo:Organization. This error message is for publisher" ;
sh:or (
[ sh:class sdo:Organization ]
[ sh:class sdo:Person ]
) ;
.
<provenance-properties-01>
a sh:PropertyShape ;
sh:path prov:wasDerivedFrom ;
sh:minCount 1 ;
sh:nodeKind sh:IRI ;
sh:severity sh:Warning ;
.
<provenance-properties-02>
a sh:PropertyShape ;
sh:path sdo:citation ;
sh:minCount 1 ;
sh:or (
[ sh:datatype xsd:anyURI ]
[ sh:datatype xsd:string ]
) ;
sh:severity sh:Warning ;
.
<provenance-properties-03>
a sh:PropertyShape ;
sh:path dcterms:source ;
sh:minCount 1 ;
sh:or (
[ sh:datatype xsd:anyURI ]
[ sh:datatype xsd:string ]
) ;
sh:severity sh:Warning ;
.
<provenance-properties-04>
a sh:PropertyShape ;
sh:path skos:historyNote ;
sh:minCount 1 ;
sh:or (
[ sh:datatype rdf:langString ]
[ sh:datatype xsd:string ]
) ;
sh:severity sh:Warning ;
.
<provenance-properties-05>
a sh:PropertyShape ;
sh:path dcterms:provenance ;
sh:minCount 1 ;
sh:or (
[ sh:datatype rdf:langString ]
[ sh:datatype xsd:string ]
) ;
sh:severity sh:Warning ;
.