-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathspecification.html
More file actions
642 lines (638 loc) · 41.2 KB
/
specification.html
File metadata and controls
642 lines (638 loc) · 41.2 KB
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
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
<!DOCTYPE html>
<html lang="en">
<head lang="en">
<meta charset="UTF-8">
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<link href='//fonts.googleapis.com/css?family=Spartan:300,400' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/css?family=Bebas+Neue:300,400' rel='stylesheet' type='text/css'>
<link href="style/agldwg.css" rel="stylesheet" type="text/css">
<title>VocPub Specification</title>
</head>
<body>
<div id="toc">
<h4>Table of Contents</h4>
<ul>
<li><a href="#metadata">Metadata</a></li>
<li><a href="#abstract">Abstract</a></li>
<li><a href="#namespaces">Namespaces</a></li>
<li>
<a href="#intro">Introduction</a>
<ul>
<li><a href="#expansion">Expansion</a></li>
<li><a href="#dependencies">Dependencies</a></li>
</ul>
</li>
<li>
<a href="#elements-reqs">Eements & Reqs</a>
<ul>
<li><a href="#vocabulary">Vocabulary</a></li>
<li><a href="#collection">Collection</a></li>
<li><a href="#concept">Concept</a></li>
<li><a href="#agent">Agent</a></li>
</ul>
</li>
<li><a href="#references">References</a></li>
</ul>
</div>
<div id="header" style="grid-column:1/4; padding: 0 0 0 20%;">
<a href="https://www.linked.data.gov.au">
<img alt="AGLDWG Logo" style="width:150px; margin-top:10px" src="style/agldwg-logo-ochre-150.png" />
</a>
</div><!-- #header -->
<div id="content" style="grid-column:2;">
<h1>VocPub Profile - Specification</h1>
<section id="metadata">
<dl>
<dt>URI</dt>
<dd><code><a href="https://linked.data.gov.au/def/vocpub/spec">https://linked.data.gov.au/def/vocpub/spec</a></code></dd>
<dt>Title</dt>
<dd>VocPub Profile - Specification Document</dd>
<dt>Definition</dt>
<dd>This document specifies the VocPub Profile. It is to be used to inform people about the requirements that need to be met by data claiming to conform to the profile.</dd>
<dt>Created</dt>
<dd>2020-06-14</dd>
<dt>Modified</dt>
<dd>2026-02-25</dd>
<dt>Version IRI</dt>
<dd><a href="https://linked.data.gov.au/def/vocpub/spec/5.5">https://linked.data.gov.au/def/vocpub/spec/5.5</a></dd>
<dt>Version Information</dt>
<dd>
<p>5.5 2026-02: Added Shapes for Reqs 2.3.10 - 2.3.19</p>
<p>5.4 2026-02: Small fixes for a number of Issues raised in the Issue Tracker</p>
<p>5.3 ValPub valid. All propertyShape instances have IRIs, are not Blank Nodes. All Shapes have names & messages. SHACL-UI elements moved to shaclui.ttl</p>
<p>5.2 Implement Shape 2.1.2+3 using qualified shape pattern as this is supported by pySHACL</p>
<p>5.1 remove targetNode -> ConceptScheme shape, use schema:, not sdo:</p>
<p>5.0 change IRI to linked.data.gov.au</p>
<p>4.10 move all warning from PropertyShapes to NodeShapes</p>
<p>4.9 Fixed RDF syntax errors</p>
<p>4.8 Fixed Warning/Violation error for PropertyShapes</p>
<p>4.7 Fixed modified date alternate path listing bug</p>
<p>4.6 Fixed schema:historyNote->skos:historyNote bug</p>
<p>4.5 Added suggested predicates of license & copyrightHolder</p>
<p>4.4 Fixed versions across multiple Resources</p>
<p>4.3 Improved validator error messages by using more named Property Shapes</p>
<p>4.2: Included CONSTRUCT-based pre-validation inference in validator. First Git tagged version</p>
<p>4.1: Added Requirements 2.1.10, 2.1.11 & 2.1.12 and example RDF</p>
<p>4.0: Added a SPARQL function to allow for the inferencing of <code>skos:inScheme</code> predicates, <code>skos:broader</code> / <code>skos:narrower</code> and <code>skos:topConceptOf</code>/<code>skos:hasTopConcept</code> pairs of inverse predicates</p>
<p>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 <code>skos:topConceptOf</code> in 2.1.8 for Concepts at the top of the hierarchy; collapsed title & definition requirement pairs to single requirements</p>
<p>3.2: Allowed <code>dcterms:provenance</code> and <code>skos:historyNote</code>; removed max restriction on <code>dcterms:source</code> & <code>prov:wasDerivedFrom</code></p>
<p>3.1: Changed <code>dcterms:provenance</code> to <code>skos:historyNote</code></p>
<p>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 <code>ConceptScheme</code></p>
</dd>
<dt>Creator</dt>
<dd><a href="https://orcid.org/0000-0002-8742-7730">Nicholas J. Car</a></dd>
<dt>Publisher</dt>
<dd><a href="https://linked.data.gov.au/org/agldwg">Australian Government Linked Data Working Group</a></dd>
<dt>Further metadata</dt>
<dd>This specification is part of the <em>VocPub Profile</em>. See that profile's main document for License & Rights information and other metadata not given here.</dd>
<dt>Profile URI</dt>
<dd><code><a href="https://linked.data.gov.au/def/vocpub">https://linked.data.gov.au/def/vocpub</a></code></dd>
<dt>License</dt>
<dd><a href="https://creativecommons.org/licenses/by/4.0/">CC-BY 4.0</a></dd>
</dl>
</section>
<section id="abstract">
<h2>Abstract</h2>
<p>
This is the specification document of the VocPub <a href="https://www.w3.org/TR/dx-prof/#definitions">profile</a> of <a href="https://www.w3.org/TR/skos-reference/">SKOS</a>. It defines the requirements that data must satisfy to be considered conformant with this profile.
</p>
<p>
This specification document cannot be used for testing conformance of RDF resources to this profile: that role belongs to the <em>validation</em> resource within this profile:
</p>
<ul>
<li><a href="https://linked.data.gov.au/def/vocpub/validator">https://linked.data.gov.au/def/vocpub/validator</a></li>
</ul>
<p>
For the list of all resources within this profile, see the profile definition:
</p>
<ul>
<li><a href="https://linked.data.gov.au/def/vocpub">https://linked.data.gov.au/def/vocpub</a></li>
</ul>
</section>
<section id="namespaces">
<h2>Namespaces</h2>
<p>
This document refers to elements of various ontologies by short codes using namespace prefixes. The prefixes and their corresponding namespaces' URIs are:
</p>
<dl>
<dt>dcat</dt>
<dd><code>http://www.w3.org/ns/dcat#</code></dd>
<dt>dcterms</dt>
<dd><code>http://purl.org/dc/terms/</code></dd>
<dt>isorole</dt>
<dd><code>http://def.isotc211.org/common/RoleCode/</code></dd>
<dt>prof</dt>
<dd><code>http://www.w3.org/ns/dx/prof/</code></dd>
<dt>prov</dt>
<dd><code>http://www.w3.org/ns/prov#</code></dd>
<dt>rdfs</dt>
<dd><code>http://www.w3.org/2000/01/rdf-schema#</code></dd>
<dt>reg</dt>
<dd><code>http://purl.org/linked-data/registry#></code></dd>
<dt>schema</dt>
<dd><code>https://schema.org/</code></dd>
<dt>skos</dt>
<dd><code>http://www.w3.org/2004/02/skos/core#</code></dd>
<dt>time</dt>
<dd>http://www.w3.org/2006/time#</dd>
<dt>xsd</dt>
<dd>http://www.w3.org/2001/XMLSchema#</dd>
</dl>
</section>
<section id="intro">
<h2>1. Introduction</h2>
<p>
Many organisations use the Simple Knowledge Organization System Reference (SKOS)<sup><a href="#skos">ref</a></sup> to represent vocabularies in a form that can be read by humans and consumed by machines; that is, in <em>Semantic Web</em> form<sup><a href="#semantic-web">ref</a></sup>.
</p>
<p>
This profile defines a <em>vocabulary</em> as a controlled collection of defined terms - Concepts - that may or may not contain relationships between Cocnepts and relationships to Concepts in other vocabularies.
</p>
<p>
This document specifies a <em>profile</em> of SKOS and for profile, the definition of from the <em>Profiles Vocabulary</em><sup><a href="#prof">ref</a></sup> is used. A <em>profile</em> is:
</p>
<p class="quote">A specification that constrains, extends, combines, or provides guidance or explanation about the usage of other specifications.
</p>
<p>
Here, the <em>other specification</em> being profiled is SKOS.
</p>
<p>
In the next section, this document describes how SKOS's elements must be presented - in certain arrangements wth respect to one another and with certain predicates to indicate properties - to make a vocabulary that conforms to this profile.
</p>
<p>
This specification's rules/requirements - are numbered and <span style="color:darkred;">indicated in red text</span>.
</p>
<section id="expansion">
<h3>1.1 Data Expansion</h3>
<p>
Some SKOS elements - classes and predicates - can be inferred based on rules present in the SKOS model. For example, <code>skos:broader</code> and <code>skos:narrower</code> are inverse predicates thus if I have <code><A> skos:broader <B></code>, I can infer <code><B> skos:narrower <A></code>.
</p>
<p>
This profile allows data to be supplied in a minimalist form that is not conformant to this specification until a series of calculations, based on certain SKOS rules, are carried out on it through a process known as data <em>expansion</em>.
</p>
<p>The particular rules that may be applied to data before validation with this profile's validator are given in the table below. These rules are enacted by the application of a series of SPARQL<sup><a href="#sparql">ref</a></sup> queries to the data, all of which are packaged up inside a SHACL<sup><a href="#shacl">ref</a></sup> file in this profile's repository.</p>
<table class="bordered">
<tr>
<th>Rule</th><th>Description</th><th>SPARQL Query</th>
</tr>
<tr>
<td>hasTopConcept</td><td>Calculate <code>skos:hasTopConcept</code> as the inverse to <code>skos:topConceptOf</code></td>
<td>
<pre>
CONSTRUCT {
?cs skos:hasTopConcept ?c .
}
WHERE {
?c skos:topConceptOf ?cs .
}
</pre>
</td>
</tr>
<tr>
<td>topConceptOf</td><td>Calculate <code>skos:topConceptOf</code> as the inverse to <code>skos:hasTopConcept</code></td>
<td>
<pre>
CONSTRUCT {
?c skos:topConceptOf ?cs .
}
WHERE {
?cs skos:hasTopConcept ?c .
}
</pre>
</td>
</tr>
<tr>
<td>broader</td><td>Calculate <code>skos:broader</code> as the inverse to <code>skos:narrower</code></td>
<td>
<pre>
CONSTRUCT {
?c skos:broader ?b .
}
WHERE {
?b skos:narrower ?c .
}
</pre>
</td>
</tr>
<tr>
<td>narrower</td><td>Calculate <code>skos:narrower</code> as the inverse to <code>skos:broader</code></td>
<td>
<pre>
CONSTRUCT {
?c skos:narrower ?n .
}
WHERE {
?n skos:broader ?c .
}
</pre>
</td>
</tr>
<tr>
<td>inScheme</td><td>Calculate <code>skos:inScheme</code> for all Concepts, based on their linking to a Concept Scheme via <code>skos:broader/skos:topConceptOf</code> property path</td>
<td>
<pre>
CONSTRUCT {
?c skos:inScheme ?cs .
}
WHERE {
?c skos:broader*/skos:topConceptOf ?cs .
}
</pre>
</td>
</tr>
<tr>
<td>Concept provenance</td><td>Infer provenance predicates for a Concept when they don't have their own but their containing Concept Scheme does</td>
<td>
<pre>
CONSTRUCT {
?c ?p ?o3
}
WHERE {
?c skos:inScheme ?cs .
VALUES ?p {
prov:wasDerivedFrom
skos:historyNote
schema:citation
dcterms:source
dcterms:provenance
}
?cs ?p ?o .
OPTIONAL {
?c ?p ?o2 .
}
BIND (COALESCE(?o2, ?o) AS ?o3)
}
</pre>
</td>
</tr>
</table>
<p>
Application of these rules will allow a Concept supplied without any provenance predicates to be calculated from its containing Concept Scheme, thus satisfying Requirement 2.3.4.
</p>
<p>
The SHACL file containing all the expansion queries is available at:
</p>
<ul>
<li><a href="https://linked.data.gov.au/def/vocpub/expander">https://linked.data.gov.au/def/vocpub/expander</a></li>
</ul>
<p>
A Python script able to execute the expansion rule on RDF data before validation is available at:
</p>
<ul>
<li><a href="https://linked.data.gov.au/def/vocpub/validate">https://linked.data.gov.au/def/vocpub/validate</a></li>
</ul>
</section>
<section id="dependencies">
<h3>1.2 Dependencies</h3>
<p>
To characterise vocabularies according to the mandatory and suggested Requirements of this Profile, several other vocabularies will need to be used. This profile is therefore dependent on those vocabularies. For this reason, copies of these vocabularies are maintained within the repository of this profile and are accessible as per the details table below.
</p>
<table class="bordered">
<tr>
<th>Vocabulary</th><th>Description</th><th>Where used</th><th>Local Copy</th>
</tr>
<tr>
<td>
<a href="https://def.isotc211.org/common/RoleCode">ISO 19115 Role Codes</a>
</td>
<td>Codes indicating the role Agents - People and Organisations - play in relation to data</td>
<td>For the predicate <code>prov:hadRole</code>, applied to an <code>Attribution</code> indicated by a <code>prov:qualifiedAttribution</code> predicate for a Concept Scheme</td>
<td><a href="https://def.isotc211.org/common/RoleCode">https://def.isotc211.org/common/RoleCode</a></td>
</tr>
<tr>
<td>
<a href="https://linked.data.gov.au/def/reg-statuses">Registry Statuses</a>
</td>
<td>The registration statuses of items in a Register, as per ISO19135</td>
<td>For the suggested vocabulary predicate <code>schema:status</code> (preferred) or <code>reg:status</code>, as per <span style="color:darkred;">Requirement 2.1.10 & 2.3.5</span> </td>
<td><a href="https://linked.data.gov.au/def/reg-statuses">https://linked.data.gov.au/def/reg-statuses</a></td>
</tr>
<tr>
<td>
<a href="https://linked.data.gov.au/def/vocdermods">Vocab Derivation Modes</a>
</td>
<td>The modes by which one vocabulary may derive from another</td>
<td>For the suggested vocabulary predicate <code>prov:qualifiedDerivation</code>, as per <span style="color:darkred;">Requirement 2.1.11</span> </td>
<td><a href="https://linked.data.gov.au/def/vocdermods">https://linked.data.gov.au/def/vocdermods</a></td>
</tr>
</table>
</section>
</section>
<section id="elements-reqs">
<h2>2. Elements & Requirements</h2>
<section id="vocabulary">
<h3>2.1 Vocabulary</h3>
<p>
This profile identifies Semantic Web objects with URI-based persistent identifiers. For this reason:
</p>
<p class="req">
<a class="frag" id="2.1.01" href="#2.1.01">§</a>
2.1.01 Each vocabulary <em>MUST</em> be identified by a IRI
</p>
<p>
As per the <em>SKOS Primer</em><sup><a href="#skos-primer">ref</a></sup>, a document guiding the use of SKOS:
</p>
<p class="quote">concepts usually come in carefully compiled vocabularies, such as thesauri or classification schemes. SKOS offers the means of representing such KOSs using the <code>skos:ConceptScheme</code> class.
</p>
<p>
For this reason, this profile requires that:
</p>
<p class="req">
<a class="frag" id="2.1.02" href="#2.1.02">§</a>
2.1.02 Each vocabulary <em>MUST</em> be presented as a single Concept Scheme object
</p>
<p>
For ease of data management:
</p>
<p class="req">
<a class="frag" id="2.1.03" href="#2.1.03">§</a>
2.1.03 Each vocabulary <em>MUST</em> be presented in a single RDF file which does not contain information other than that which is directly part of the vocabulary
</p>
<p>
To ensure vocabularies can be catalogued effectively and governed:
</p>
<p class="req">
<a class="frag" id="2.1.04" href="#2.1.04">§</a>
2.1.04 Each vocabulary <em>MUST</em> have exactly one title and at least one definition indicated using the <code>skos:prefLabel</code> and the <code>skos:definition</code> predicates respectively that must give textual literal values. Only one definition per language is allowed
</p>
<p><strong>NOTE</strong>: Unlike the general directions for the use of SKOS (the <a href="https://www.w3.org/TR/skos-primer/">SKOS "Primer"</a>) labels in multiple languages should be indicated with <code>skos:altLabel</code> predicates, not all with <code>skos:prefLabel</code>, i.e. there should only ever be one <code>skos:prefLabel</code> value. If multiple definitions are given, the one in the language of the label is considered primary.</p>
<p class="req">
<a class="frag" id="2.1.05" href="#2.1.05">§</a>
2.1.05 Each vocabulary <em>MUST</em> have exactly one created date and exactly one modified date indicated using the <code>schema:dateCreated</code> and <code>schema:dateModified</code> or <code>dcterms:created</code> and <code>dcterms:modified</code> predicates respectively that must be either an <code>xsd:date</code>, <code>xsd:dateTime</code> or <code>xsd:dateTimeStamp</code> literal value
</p>
<p class="req">
<a class="frag" id="2.1.06" href="#2.1.06">§</a>
2.1.06 Each vocabulary <em>MUST</em> have at least one creator, indicated using <code>schema:creator</code> or <code>dcterms:creator</code> predicate and exactly one publisher, indicated using <code>schema:publisher</code> or <code>dcterms:publisher</code>, all of which MUST be IRIs indicating instances of <code>schema:Person</code>, or <code>schema:Organization</code>. A <code>prov:qualifiedAttribution</code> predicate indicating an Agent with the <code>prov:hadRole</code> predicate indicating the value <code>isorole:originator</code> or <code>isorole:publisher</code> may be used instead of <code>schema:creator</code> & <code>schema:publisher</code>, respectively
</p>
<p>
To be able to link SKOS vocabularies to their non-vocabulary source information:
</p>
<p class="req">
<a class="frag" id="2.1.07" href="#2.1.07">§</a>
2.1.07 The origins of a Concept Scheme <em>MUST</em> be indicated by at least one of the following predicates: <code>skos:historyNote</code>, <code>schema:citation</code>, <code>prov:wasDerivedFrom</code>. <code>dcterms:source</code> <em>MAY</em> be used instead of <code>schema:citation</code> and <code>dcterms:provenance</code> <em>MAY</em> be used instead of <code>skos:historyNote</code> but the schema.org and SKOS predicates are preferred.
</p>
<p>
If a vocabulary is based on another Semantic Web resource, such as an ontology or another vocabulary, <code>prov:wasDerivedFrom</code> should be used to indicate that resource's IRI. If the vocabulary is based on a resource that is identified by a IRI but which is not a Semantic Web resource, <code>schema:citation</code> should be used to indicate the resource's IRI with the <code>xsd:anyURI</code> datatype. If the vocabulary is based on something which cannot be identified by IRI, a statement about the vocabulary's origins should be given in a literal value indicated with the <code>skos:historyNote</code> predicate. If the vocabulary is not based on any other resource or source of information, i.e. this vocabulary is its only expression, this should be communicated by use of the <code>skos:historyNote</code> indicating the phrase "This vocabulary is expressed for the first time here".
</p>
<p><em>The use of <code>dcterms:source</code> & <code>dcterms:provenance</code> is to maintain compatability with previous versions of VocPub only and may eventually be disallowed.</em></p>
<p>
To ensure that all the terms within a vocabulary are linked to the main vocabulary object, the Concept Scheme:
</p>
<p class="req">
<a class="frag" id="2.1.08" href="#2.1.08">§</a>
2.1.08 All Concept instances within a Concept Scheme <em>MUST</em> be contained in a single term hierarchy using <code>skos:hasTopConcept</code> / <code>skos:topConceptOf</code> predicates indicating the broadest Concepts in the vocabulary and then <code>skos:broader</code> and/or <code>skos:narrower</code> predicates for all non-broadest Concepts in a hierarchy that contains no cycles.
</p>
<p>
To unambiguously link the term hierarchy within a vocabulary to the vocabulary itself:
</p>
<p class="req">
<a class="frag" id="2.1.09" href="#2.1.09">§</a>
2.1.09 Each vocabulary's Concept Scheme <em>MUST</em> link to at least one Concept within the vocabulary with the <code>skos:hasTopConcept</code> predicate
</p>
<p>To communicate the <em>Registry Status</em> of the vocabulary:</p>
<p class="req">
<a class="frag" id="2.1.10" href="#2.1.10">§</a>
2.1.10 The status of the vocabulary as a whole, according to the Registry Status standard<sup><a href="#iso19135">ref</a></sup>, <em>SHOULD</em> be given with the predicate <code>schema:status</code> (preferred) or <code>reg:status</code> indicating a Concept from the <em>Registry Statuses</em> vocabulary (<a href="https://linked.data.gov.au/def/reg-statuses">https://linked.data.gov.au/def/reg-statuses</a>).
</p>
<p>To indicate whether and if so how this vocabulary has been derived from another vocabulary:</p>
<p class="req">
<a class="frag" id="2.1.11" href="#2.1.11">§</a>
2.1.11 The derivation status of the vocabulary <em>SHOULD</em> be given with the predicate <code>prov:qualifiedDerivation</code> indicating a Blank Node that contains the predicated <code>prov:entity</code>, to indicate the vocabulary derived from and <code>prov:hadRole</code> to indicate the mode of derivation which <em>SHOULD</em> be taken from the <em>Vocabulary Derivation Modes</em> vocabulary (<a href="https://linked.data.gov.au/def/vocdermods">https://linked.data.gov.au/def/vocdermods</a>).
</p>
<p>Example data for a vocabulary indicating that it is an extension to another vocabulary using the mechanism defined in Requirement 2.1.2 is:</p>
<pre>
# Vocab X is derived from Vocab Y and is an extension of it
<http://example.com/vocab/x>
a skos:ConceptScheme ;
skos:prefLabel "Vocab X"@en ;
...
prov:qualifiedDerivation [
prov:entity <http://example.com/vocab/y> ; # Vocab Y
prov:hadRole <https://linked.data.gov.au/def/vocdermods/extension> ;
] ;
.</pre>
<p>To high-level theming of a vocabulary:</p>
<p class="req">
<a class="frag" id="2.1.12" href="#2.1.12">§</a>
2.1.12 High-level theming of a vocabulary <em>SHOULD</em> be given using the <code>schema:keywords</code> predicate indicating Concepts from another vocabulary. Alternatively, <code>dcat:theme</code> <em>MAY</em> be used. Text literal values for either predicate <em>SHOULD NOT</em> be used.
</p>
<p>To indicate license, copyright:</p>
<p class="req">
<a class="frag" id="2.1.13" href="#2.1.13">§</a>
2.1.13 Any licence pertaining to the reuse of a vocabulary's content <em>SHOULD</em> be given using the <code>schema:license</code> predicate preferentially indicating the IRI of a license if in RDF form or a literal URL (datatype <code>xsd:anyURI</code>) if online but not in RDF form. If the licence is expressed in text, a literal text field may be indicated.
</p>
<p class="req">
<a class="frag" id="2.1.14" href="#2.1.14">§</a>
2.1.14 The copyright holder for the vocabulary <em>SHOULD</em> be given using the <code>schema:copyrightHolder</code> predicate preferentially indicating the IRI of an Agent or a Blank Node instance of an Agent containing details as per Agent requirements. A <code>prov:qualifiedAttribution</code> predicate indicating an Agent with the <code>prov:hadRole</code> predicate indicating the value <code>isorole:rightsHolder</code> may be used instead of <code>schema:copyrightHolder</code>.
</p>
</section>
<section id="collection">
<h3>2.2 Collection</h3>
<p>
From the SKOS Primer<sup><a href="#skos-primer">ref</a></sup>:
</p>
<p class="quote">
SKOS makes it possible to define meaningful groupings or "collections" of concepts. Collections may contain Concepts defined in any vocabulary, not just the one the Collection itself is defined in.
</p>
<p>
To ensure that Collection instances are identifiable and their meaning isn't obscure or lost:
</p>
<p class="req">
<a class="frag" id="2.2.01" href="#2.2.01">§</a>
2.2.01 Each Collection <em>MUST</em> have exactly one title and at least one definition indicated using the <code>skos:prefLabel</code> and the <code>skos:definition</code> predicates respectively that must give textual literal values. Only one definition per language is allowed
</p>
<p><strong>NOTE</strong>: Unlike the general directions for the use of SKOS (the <a href="https://www.w3.org/TR/skos-primer/">SKOS "Primer"</a>) labels in multiple languages should be indicated with <code>skos:altLabel</code> predicates, not all with <code>skos:prefLabel</code>, i.e. there should only ever be one <code>skos:prefLabel</code> value. If multiple definitions are given, the one in the language of the label is considered primary.</p>
<p>
If a Collection's grouping of Concepts is derived from an existing resource that is different from the ConceptScheme it is defined within:
</p>
<p class="req">
<a class="frag" id="2.2.02" href="#2.2.02">§</a>
2.2.02 The origins of a Collection, if different from its containing Concept Scheme, <em>SHOULD</em> be indicated by at least one of the following predicates: <code>skos:historyNote</code>, <code>schema:citation</code>, <code>prov:wasDerivedFrom</code>. <code>dcterms:source</code> <em>MAY</em> be used instead of <code>schema:citation</code> and <code>dcterms:provenance</code> <em>MAY</em> be used instead of <code>skos:historyNote</code> but the schema.org and SKOS predicates are preferred.
</p>
<p><em>For compatability with previous versions of this Specification, <code>dcterms:provenance</code> MAY be used instead of <code>skos:historyNote</code> but the latter is the preferred predicate.</em></p>
<p>To help list Collections within vocabularies:</p>
<p class="req">
<a class="frag" id="2.2.03" href="#2.2.03">§</a>
2.2.03 A Collection exists within a vocabulary <em>SHOULD</em> indicate that it is within the vocabulary by use of the <code>skos:inScheme</code> predicate. If it is defined for the first time in the vocabulary, it should also indicate this with the <code>rdfs:isDefinedBy</code> predicate
</p>
<p>To ensure that a Collection isn't empty:</p>
<p class="req">
<a class="frag" id="2.2.04" href="#2.2.04">§</a>
2.2.04 A Collection <em>MUST</em> indicate at least one Concept instance that is within the collection with use of the <code>skos:member</code> predicate. The Concept need not be defined by the Concept Scheme that defines the Collection
</p>
</section>
<section id="concept">
<h3>2.3 Concept</h3>
<p>
From the SKOS Primer<sup><a href="#skos-primer">ref</a></sup>:
</p>
<p class="quote">
The fundamental element of the SKOS vocabulary is the concept. Concepts are the units of thought — ideas, meanings, or (categories of) objects and events—which underlie many knowledge organization systems
</p>
<p>
Vocabularies conforming to this profile must present at least one Concept within the vocabulary file and, as per requirements in Section 2.1, at least once Concept must be indicated as the top concept of the vocabulary.
</p>
<p>
To ensure that Concept instances are identifiable and their meaning isn't obscure or lost:
</p>
<p class="req">
<a class="frag" id="2.3.01" href="#2.3.01">§</a>
2.3.01 Each Concept <em>MUST</em> have exactly one title and at least one definition indicated using the <code>skos:prefLabel</code> and the <code>skos:definition</code> predicates respectively that must give textual literal values. Only one definition per language is allowed
</p>
<p><strong>NOTE</strong>: Unlike the general directions for the use of SKOS (the <a href="https://www.w3.org/TR/skos-primer/">SKOS "Primer"</a>) labels in multiple languages should be indicated with <code>skos:altLabel</code> predicates, not all with <code>skos:prefLabel</code>, i.e. there should only ever be one <code>skos:prefLabel</code> value. If multiple definitions are given, the one in the language of the label is considered primary.</p>
<p>
To ensure that every Concept is linked to the vocabulary that defines it:
</p>
<p class="req">
<a class="frag" id="2.3.02" href="#2.3.02">§</a>
2.3.02 Each Concept in a vocabulary <em>MAY</em> indicate the vocabulary that defines it by use of the <code>rdfs:isDefinedBy</code> 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
</p>
<p>Note that the vocabulary that defines a Concept does not have to be the vocabulary in the file being validated. This is to allow for Concept instance reuse across multiple vocabularies.</p>
<p>
Since a Concept may be used in more than one vocabulary:
</p>
<p class="req">
<a class="frag" id="2.3.03" href="#2.3.03">§</a>
2.3.03 Each Concept in a vocabulary <em>MUST</em> indicate that it appears within that vocabulary's hierarchy of Concepts either directly by use of the <code>skos:topConceptOf</code> predicate indicating the vocabulary or indirectly by use of one or more <code>skos:broader</code> / <code>skos:narrower</code> predicates placing the Concept within a chain of other Concepts, the top concept of which uses the <code>skos:topConceptOf</code> predicate to indicate the vocabulary.
</p>
<p>
If a Concept is derived from an existing resource and that derivation is not already covered by source information for the vocabulary that it is within:
</p>
<p class="req">
<a class="frag" id="2.3.04" href="#2.3.04">§</a>
2.3.04 The origins of a Concept, if different from its containing Concept Scheme, <em>SHOULD</em> be indicated by at least one of the following predicates: <code>skos:historyNote</code>, <code>schema:citation</code>, <code>dcterms:source</code> or <code>prov:wasDerivedFrom</code> or <code>dcterms:provenance</code>.
</p>
<p>
If a Concept is based on another Semantic Web resource, such as another Concept or other defined object, <code>prov:wasDerivedFrom</code> should be used to indicate that resource's IRI. If the Concept is based on a resource that is identified by a IRI but which is not a Semantic Web resource, <code>dcterms:source</code> should be used to indicate the resource's IRI. If the vocabulary is based on something which cannot be identified by IRI, a statement about the vocabulary's origins should be given in a literal value indicated with the <code>skos:historyNote</code> predicate. If the vocabulary is not based on any other resource or source of information, i.e. this vocabulary is its only expression, this should be communicated by use of the <code>skos:historyNote</code> indicating the phrase "This vocabulary is expressed for the first time here".
</p>
<p>To communicate the <em>Registry Status</em> of the vocabulary:</p>
<p class="req">
<a class="frag" id="2.3.05" href="#2.3.05">§</a>
2.3.05 The status of a Concept, according to the Registry Status standard<sup><a href="#iso19135">ref</a></sup>, <em>MAY</em> be given with the predicate <code>schema:status</code> (preferred) or <code>reg:status</code> indicating a Concept from the <em>Registry Statuses</em> vocabulary (<a href="https://linked.data.gov.au/def/reg-statuses">https://linked.data.gov.au/def/reg-statuses</a>).
</p>
<p>To link a Concept to other things with literal identifiers:</p>
<p class="req">
<a class="frag" id="2.3.10" href="#2.3.10">§</a>
2.3.10 If a Concept indicates a skos:notation, its range value MUST be a literal. Note that it SHOULD be of a custom datatype
</p>
<p>The use of custom datatypes with SKOS <code>notation</code> predicates is explained in <a href="https://www.w3.org/TR/skos-primer/#secnotations">SKOS Primer, Section 4.6 Notations</a>.</p>
<p>To describe the history of a Concept (it's development):</p>
<p class="req">
<a class="frag" id="2.3.11" href="#2.3.11">§</a>
2.3.11 If a Concept indicates a skos:historyNote, its range value MUST be a literal. A plain string value (xsd:string) may be used or, if values in multiple languages are desired, then multiple language string literals (rdf:langString) may be used, but ony one per language and plain strings and language strings should not be mixed
</p>
<p>To indicate another Concept from which a Concept was derived:</p>
<p class="req">
<a class="frag" id="2.3.12" href="#2.3.12">§</a>
2.3.12 If a Concept indicates was derived from, its range value MUST be an IRI
</p>
<p>To indicate another Concept which a Concept is a revision of, revision of being a closer derivation than the more generic was derived from, as above:</p>
<p class="req">
<a class="frag" id="2.3.13" href="#2.3.13">§</a>
2.3.13 If a Concept indicates revision of, its range value MUST be an IRI
</p>
<p>To indicate another Concept that a Concept replaces:</p>
<p class="req">
<a class="frag" id="2.3.14" href="#2.3.14">§</a>
2.3.14 If a Concept indicates replaces, its range value MUST be an IRI
</p>
<p>To indicate another Concept that a Concept is replaced by, the inverse of replaces above:</p>
<p class="req">
<a class="frag" id="2.3.15" href="#2.3.15">§</a>
2.3.15 If a Concept indicates is replaced by, its range value MUST be an IRI
</p>
<p>To indicate a version identifier for a Concept:</p>
<p class="req">
<a class="frag" id="2.3.16" href="#2.3.16">§</a>
2.3.16 If a Concept indicates version, its range value MUST be a plain string (xsd:string)
</p>
<p>To indicate details about when a Concept was created and modified but not when it is applicable for:</p>
<p class="req">
<a class="frag" id="2.3.17" href="#2.3.17">§</a>
2.3.17 If a Concept indicates a date created, its range value MUST be a date (xsd:date)
</p>
<p class="req">
<a class="frag" id="2.3.18" href="#2.3.18">§</a>
2.3.18 If a Concept indicates a date modified, its range value MUST be a date (xsd:date)
</p>
<p>To indicate the period of time that a Concept is relevant for:</p>
<p class="req">
<a class="frag" id="2.3.19" href="#2.3.19">§</a>
2.3.19 If a Concept indicates a temporal coverage, its range value MUST be a temporal entity (time:TemporalEntity) with either or both schema:startDate and schema:endDate values which must be dates (xsd:date)
</p>
</section>
</section>
<section id="agent">
<h3>2.4 Agent</h3>
<p>
To be consistent with other Semantic Web representations of Agents, vocabularies' associated Agents, creator & publisher must be certain typed RDF values:
</p>
<p class="req">
<a class="frag" id="2.4.1" href="#2.4.1">§</a>
2.4.1 Each Agent associated with a vocabulary <em>MUST</em> be typed as an <code>schema:Person</code> or <code>schema:Organization</code>
</p>
<p>
To ensure human readability and association of Agents with their non-Semantic Web (real world) form:
</p>
<p class="req">
<a class="frag" id="2.4.2" href="#2.4.2">§</a>
2.4.2 Each Agent <em>MUST</em> give either exactly one name with the <code>schema:name</code> predicate indicating a plain string text value or at least one <code>schema:name</code> predicate indicating a language string (e.g. "Nicholas"@en). If multiple language strings are used, the languages must be unique.
</p>
<p>
To ensure that Agents are linked to non-Semantic Web forms of identification:
</p>
<p class="req">
<a class="frag" id="2.4.3" href="#2.4.3">§</a>
2.4.3 Each Agent <em>MUST</em> indicate either a <code>schema:url</code> (for organizations) or a <code>schema:email</code> (for people) predicate with a URL or email value
</p>
<p>
To link to Agent registers using non-Semantic Web identifiers for Agents:
</p>
<p class="req">
<a class="frag" id="2.4.4" href="#2.4.4">§</a>
2.4.4 Each Agent <em>SHOULD</em> indicate any non-Semantic Web identifiers for Agents with the <code>schema:identifier</code> predicate with literal identifier values, preferentially with custom data types that define the form of the identifier.
</p>
<p><strong>NOTE</strong>: This method of providing identifiers with specialised datatypes is the same as that specified for <code>skos:notation</code> values in the <a href="https://www.w3.org/TR/skos-primer/#secnotations">SKOS Primer</a>.</p>
</section>
<section id="references">
<h2>3. References</h2>
<dl>
<dt><a id="prof"></a>PROF</dt>
<dd>
Rob Atkinson; Nicholas J. Car (eds.). <em>The Profiles Vocabulary</em>. 18 December 2019. W3C Working Group Note. URL: <a href="https://www.w3.org/TR/dx-prof/">https://www.w3.org/TR/dx-prof/</a>
</dd>
<dt><a id="iso19135"></a>ISO 19135-1:2015</dt>
<dd>
International Organization for Standardization <em>ISO 19135-1:2015 - Geographic information - Procedures for item registration - Part 1: Fundamentals</em>. 2015. ISO Standard. URL: <a href="https://www.iso.org/standard/54721.html">https://www.iso.org/standard/54721.html</a>
</dd>
<dt><a id="owl"></a>OWL</dt>
<dd>
W3C OWL Working Group (eds.). <em>OWL 2 Web Ontology Language Document Overview (Second Edition)</em>. 11 December 2012. W3C Recommendation. URL: <a href="https://www.w3.org/TR/owl2-overview/">https://www.w3.org/TR/owl2-overview/</a>
</dd>
<dt><a id="shacl"></a>SHACL</dt>
<dd>
World Wide Web Consortium. <em>Shapes Constraint Language (SHACL)</em> 20 July 2017. W3C Recommendation. URL: <a href="https://www.w3.org/TR/shacl/">https://www.w3.org/TR/shacl/</a>
</dd>
<dt><a id="skos"></a>SKOS</dt>
<dd>
Alistair Miles; Sean Bechhofer (eds.). <em>SKOS Simple Knowledge Organization System Reference</em>. 18 August 2009. W3C Recommendation. URL: <a href="https://www.w3.org/TR/skos-reference/">https://www.w3.org/TR/skos-reference/</a>
</dd>
<dt><a id="skos-primer"></a>SKOS Primer</dt>
<dd>
Antoine Isaac; Ed Summers (eds.). <em>SKOS Simple Knowledge Organization System Primer</em>. 18 August 2009. W3C Note. URL: <a href="https://www.w3.org/TR/skos-primer/">https://www.w3.org/TR/skos-primer/</a>
</dd>
<dt><a id="semantic-web"></a>Semantic Web</dt>
<dd>
World Wide Web Consortium. <em>Semantic Web</em> 2015. Web Page. URL: <a href="https://www.w3.org/standards/semanticweb/">https://www.w3.org/standards/semanticweb/</a>, accessed 2020-06-14
</dd>
<dt><a id="sparql"></a>SPARQL</dt>
<dd>
World Wide Web Consortium. <em>SPARQL 1.2 Query Language</em> 29 September 2023. W3C Working Draft. URL: <a href="https://www.w3.org/TR/sparql12-query/">https://www.w3.org/TR/sparql12-query/</a>
</dd>
</dl>
</section>
</div><!-- #content -->
<div id="footer" style="grid-column:1/4; text-align: center;">
This web page content is licensed under a <a href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>
</div><!-- #footer -->
</body>
</html>