-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathxkos-best-practices.html
executable file
·2542 lines (2286 loc) · 146 KB
/
xkos-best-practices.html
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
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html>
<head>
<title>XKOS Best Practices</title>
<meta http-equiv='Content-Type' content='text/html;charset=utf-8'/>
<script src='https://www.w3.org/Tools/respec/respec-w3c' class='remove'></script>
<script class='remove'>
var respecConfig = {
// specification status (e.g. WD, LCWD, NOTE, etc.). If in doubt use ED.
specStatus: "base",
noRecTrack: true,
// the specification's short name, as in http://www.w3.org/TR/short-name/
shortName: "xkos-best-practices",
subtitle: "Best Practices for describing statistical classifications with XKOS",
latestVersion: "http://linked-statistics.github.io/xkos/xkos-best-practices.html",
// overrideCopyright: "<p class='copyright'>Copyright © 2022 <a href='https://www.ddialliance.org/'>The DDI Alliance</a>, All Rights Reserved</p >",
// publishDate: "2022-06-15",
editors: [
{ name: "Thomas Francart", company: "Sparna", companyURL: "http://www.sparna.fr/" }
],
authors: [
{ name: "Christophe Dzikowski", company: "Insee", companyURL: "http://www.insee.fr/" },
{ name: "Franck Cotton", company: "Insee", companyURL: "http://www.insee.fr/" }
],
// name of the WG
wg: "DDI XKOS Working Group",
// URI of the public WG page
wgURI: "https://ddi-alliance.atlassian.net/wiki/spaces/DDI4/pages/826408976/XKOS+-+Extended+Knowledge+Organization+System",
wgPatentURI: "https://creativecommons.org/licenses/by/4.0/",
github: {
repoURL: "https://github.com/linked-statistics/xkos",
branch: " ", // avoids default 'gh-pages'
},
logos: [{
src: "img/ddi-logo-r.png",
url: "https://www.ddialliance.org/",
alt: "DDI Alliance",
width: 200,
height: 48,
id: "ddi-alliance-logo",
url: "https://www.ddialliance.org/"
}],
localBiblio: {
"DCAT": {
"href": "https://www.w3.org/TR/vocab-dcat-2/",
"publisher": "World Wide Web Consortium (W3C)",
"title": "Data Catalog Vocabulary (DCAT) - Version 2"
},
"ELI": {
"href": "https://eur-lex.europa.eu/eli-register/about.html",
"publisher": "Publications Office of the European Union",
"title": "European Legislation Identifier"
},
"INSEE": {
"href": "http://rdf.insee.fr/def/base#",
"publisher": "Institut National de la Statistique et des Études Économiques",
"title": "Ontology of Institut National de la Statistique et des Études Économiques (France)"
},
"ISOTHES": {
"href": "http://pub.tenforce.com/schemas/iso25964/skos-thes/",
"title": "ISO 25964 SKOS Extension"
},
"QB": {
"href": "https://www.w3.org/TR/vocab-data-cube/",
"title": "The RDF Data Cube Vocabulary",
"publisher": "World Wide Web Consortium (W3C)"
},
"SCHEMA": {
"href": "http://schema.org",
"title": "Schema.org vocabulary"
},
"SKOS": {
"href": "http://www.w3.org/TR/skos-reference",
"publisher": "World Wide Web Consortium (W3C)",
"title": "Simple Knowledge Organization System"
},
"SKOSXL": {
"href": "http://www.w3.org/TR/skos-reference/#xl",
"publisher": "World Wide Web Consortium (W3C)",
"title": "SKOS eXtension for Labels (SKOS-XL)"
},
"XKOS": {
"href": "https://rdf-vocabulary.ddialliance.org/xkos.html",
"publisher": "Data Documentation Initiative (DDI)",
"title": "SKOS extension for representing statistical classifications"
}
}
};
</script>
<style type="text/css">
:root {
--uri-pattern-bg: #8fc9fd;
--uri-pattern-border: #1a5e9a;
}
.uri-pattern {
border-color: var(--uri-pattern-border) !important;
background: var(--uri-pattern-bg);
padding: .5em;
padding-top: 0.1em;
padding-bottom: 0.1em;
border: .5em;
border-left-style: solid;
page-break-inside: avoid;
margin: 1em auto;
font-family: Menlo, Consolas, "DejaVu Sans Mono", Monaco, monospace;
font-size: larger;
}
.table-section {
background: #b3d0fb;
color: black;
text-align: center;
font-weight: bold;
}
.stickyTableHead {
overflow-y: auto;
height: 110px;
}
.stickyTableHead thead th {
position: sticky;
top: 0;
}
/* --- TABLE --- */
table.simple {
border-spacing: 0;
border-collapse: collapse;
border-bottom: 3px solid #005a9c;
}
.simple th {
background: #005a9c;
color: #fff;
padding: 3px 5px;
text-align: left;
}
.simple th a {
color: #fff;
padding: 3px 5px;
text-align: left;
}
.simple th[scope="row"] {
background: inherit;
color: inherit;
border-top: 1px solid #ddd;
}
.simple td {
padding: 3px 10px;
border-top: 1px solid #ddd;
}
.simple tr:nth-child(even) {
background: #f0f6ff;
}
</style>
</head>
<body>
<p class='copyright'>Copyright © 2022 <a href='https://www.ddialliance.org/'>The DDI Alliance</a>, All Rights Reserved</p >
<p style="font-size:80%"><em>(Authors affiliations were recorded at the beginning of the writing of this document and might have changed since.)</em></p>
<section id='abstract' class="introductory" property="dc:abstract">
<h2>Abstract</h2>
<p>XKOS (An [[SKOS]] extension for representing statistical classifications) is a <a href="https://ddialliance.org/">DDI Alliance</a> Standard that defines terms that can be used for publishing statistical classifications as linked data. XKOS defines a vocabulary for representing classifications, as well as a general model based on SKOS and statistical business models. The <a href="https://rdf-vocabulary.ddialliance.org/xkos.html">XKOS specification</a> provides some guidance on how to use the vocabulary, but it does not specify every implementation detail, so it was useful to complement it with a "best practices" guide.</p>
<p>The guide contains advice on how to use XKOS for maximum interoperability and reusability, and covers topics like the description of classifications (labels, explanatory notes, levels), the different types of correspondences, how to represent evolution over time of the different elements, how to publish statistical classifications as XKOS, what kind of descriptive metadata to attach in order to maximize findability, etc.</p>
<p>After a short reminder on statistical classifications, the guide proposes best practices regarding the representation of different elements: classifications and levels, labels and notes, classification items, correspondence tables and concepts associations, etc. Then, guidelines are suggested on specific aspects like the evolution of classifications in time and URI patterns for the identification of components. A number of examples are provided throughout the document to illustrate the best practices, including a comprehensive final example based on the ISIC classification.</p>
<p>Where appropriate, best practice rules are formalized in the [[SHACL]] validation language, so that publishers can check if their classifications conform to the guidance. These shapes are available as separate files (see <a href="#shacl-howto">the appendix</a>).</p>
</section>
<section id='acknowledgements' class="introductory">
<h2>Acknowledgements</h2>
<p>The authors would like to thank the persons who provided suggestions and content through the <a href="https://github.com/linked-statistics/xkos/issues">XKOS GitHub issues</a>, in particular Danny Delcambre from Eurostat (now retired).</p>
</section>
<section class="appendix" class="introductory" id="issue-summary">
<!-- A list of issues will magically appear here -->
</section>
<section id='introduction-goals'>
<h2>Introduction and goals</h2>
<p>The XKOS Best Practices provide a set of recommendations that are applicable to the publication of statistical classifications on the Web using XKOS. The publication of statistical data is out of scope of this document.</p>
<p>Interoperability is especially important because classifications are often organized in global systems with articulation between worldwide classifications (e.g. UN) and national classifications, with sometimes intermediate levels (e.g. Europe). Also, classifications of different domains can be connected (e.g. activities and products, see for example the international system of classifications on economic activities, products and goods mentioned below). Finally, temporal interoperability is also primordial.</p>
<p>By providing implementation guidelines for the practical use of XKOS, our main goals are:</p>
<ul>
<li>to address the feedback received since the publication of XKOS;</li>
<li>to foster the creation of a community of XKOS users;</li>
<li>to concretely support classification owners and maintainers who want to model their classification in a standard and interoperable way;</li>
<li>to enable statistical classifications to be integrated within the wider Web of data;</li>
<li>and more generally to foster the publication at international level of a network of interoperable statistical classifications.</li>
</ul>
</section>
<section id="audience">
<h2>Audience</h2>
<p>The intended audience of this document is statistical agencies or other publishers of statistical classifications or correspondence tables between classifications, as well as users of these artifacts.</p>
<p>Statistical agencies will be particularly interested in how to represent classifications and correspondence tables, versioning policies, how to link classifications and major versions, how to structure the explanatory notes, etc.</p>
<p>Publishers of statistical classifications will be particularly interested in the descriptive metadata to describe statistical classifications.</p>
<p>Users of statistical classifications will be mostly interested in how to find classifications and tables, how to explore them, understand, use and query the data.</p>
</section>
<section id='summary'>
<h2>Best practices summary</h2>
<p>This document contains best practices organized in the following sections:</p>
<ul>
<li>Best practices for the <a href="#bp-classification">description of statistical classifications</a>, giving a list of mandatory, recommended and optional properties.</li>
<li>Best practices pertaining to the <a href="#bp-labels">labels of classification items</a>.</li>
<li>Best practices pertaining to the <a href="#bp-notes">notes attached to classification items</a>, including the difference between versioned notes and timestamp notes, and clarification of the difference between inclusion notes and case laws.</li>
<li>Best practices pertaining to the <a href="#bp-levels">levels of a statistical classification</a>.</li>
<li>Best practices on how to <a href="#bp-types">assign types to the classification items</a> of a classification.</li>
<li>Best practices pertaining to the <a href="#bp-correspondences">correspondence tables between classifications</a>, including the way to describe them with a list of mandatory, recommended and optional properties; the way to document concept associations; examples of concept associations; and description of correspondence table matrix.</li>
<li>Best practices on how to deal with the <a href="#bp-evolution">evolution of statistical classification over time</a>, including the consequences of a new revision; the combination of XKOS and PROV-O; and an example of statistical classification revisions.</li>
<li>Best practices on the <a href="#bp-relations">relation between national and international classifications</a>.</li>
<li>Best practices on the <a href="#bp-publishing">publishing of statistical classification data</a> using DCAT.</li>
<li>Best practices on the <a href="#bp-uri-patterns">URI patterns</a> for all statistical classification entities.</li>
</ul>
</section>
<section id="namespaces">
<h2>Namespaces</h2>
<p>The vocabularies used in this document are listed in the table below, with their namespaces and associated prefixes.</p>
<table class="simple">
<caption>Prefixes used in this document</caption>
<thead>
<tr>
<th>Prefix</th>
<th>URI</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><b>xkos</b></td>
<td><b>http://rdf-vocabulary.ddialliance.org/xkos#</b></td>
<td>SKOS extension for representing statistical classifications ([[XKOS]])</td>
</tr>
<tr>
<td>dc</td>
<td>http://purl.org/dc/elements/1.1/</td>
<td>Dublin Core Metadata Element Set, Version 1.1 ([[DC11]])</td>
</tr>
<tr>
<td>dcat</td>
<td>http://www.w3.org/ns/dcat#</td>
<td>Data Catalog Vocabulary (DCAT) - Version 2 ([[DCAT]])</td>
</tr>
<tr>
<td>dcterms</td>
<td>http://purl.org/dc/terms/</td>
<td>Dublin Core Metadata Initiative Metadata Terms ([[DC-TERMS]])</td>
</tr>
<tr>
<td>eli</td>
<td>http://data.europa.eu/eli/ontology#</td>
<td>European Legislation Identifier ontology ([[ELI]])</td>
</tr>
<tr>
<td>ex</td>
<td>http://example.com/ns#</td>
<td>Fictitious namespace used for examples in this document.</td>
</tr>
<tr>
<td>insee</td>
<td>http://rdf.insee.fr/def/base#</td>
<td>Ontology of France "Institut National de la Statistique et des Études Économiques" ([[INSEE]])</td>
</tr>
<tr>
<td>iso-thes</td>
<td>http://purl.org/iso25964/skos-thes#</td>
<td>ISO 25964 SKOS extension ([[ISOTHES]])</td>
</tr>
<tr>
<td>prov</td>
<td>http://www.w3.org/ns/prov#</td>
<td>The Provenance Ontology ([[PROV-O]])</td>
</tr>
<tr>
<td>qb</td>
<td>https://www.w3.org/TR/vocab-data-cube/</td>
<td>The RDF Data Cube Vocabulary ([[QB]])</td>
</tr>
<tr>
<td>rdf</td>
<td>http://www.w3.org/1999/02/22-rdf-syntax-ns#</td>
<td>RDF 1.1 Concepts Vocabulary ([[RDF11-CONCEPTS]])</td>
</tr>
<tr>
<td>schema</td>
<td>http://schema.org/</td>
<td>Schema.org ([[SCHEMA]])</a></td>
</tr>
<tr>
<td>sh</td>
<td>http://www.w3.org/ns/shacl#</td>
<td>Shapes Constraint Language ([[SHACL]])</a></td>
</tr>
<tr>
<td>skos</td>
<td>http://www.w3.org/2004/02/skos/core#</td>
<td>Simple Knowledge Organization System ([[SKOS]])</a></td>
</tr>
<tr>
<td>skosxl</td>
<td>http://www.w3.org/2008/05/skos-xl#</td>
<td>SKOS eXtension for Labels (SKOS-XL) ([[SKOSXL]])</a></td>
</tr>
</tbody>
</table>
<p>The RDF examples are expressed with the Terse RDF Triple language (Turtle) [[TURTLE]]. Individual resource names used as examples in the `ex:` namespace are entirely fictious.</p>
</section>
<section id="classifications">
<h2>Statistical classifications</h2>
<p>For a general understanding of statistical classifications and their specificities, readers should refer to <a href="https://rdf-vocabulary.ddialliance.org/xkos.html#intro-class">chapter §2.1 “Understanding statistical classifications” of the XKOS standard</a>. The paragraphs below complements this general introduction with further details on the actors publishing or using statistical classifications, the revision and versioning mechanism, and the articulation between international and national classifications.</p>
<section id="classifications-evolution">
<h3>Revisions and Versioning</h3>
<p>The rate at which classifications are revised must strike a balance between the stability of the classification over time to allow for analyses and adaptation to changes in the field of study. Thus, the lifespan of a classification is typically several years; the HS (Harmonised Commodity Description and Coding System) nomenclature, for example, is revised every five years.</p>
<p>As can be seen in the diagram in Figure 1, classifications should ideally be interoperable between domains and between geographical scales. Therefore, revisions can be coordinated to ensure that all classifications can remain consistent.</p>
<p>We make a distinction between <em>revisions</em> of statistical classifications and the <em>versioning</em> of the descriptive notes within a major revision.</p>
<p>Revisions of a classification include major changes resulting from upstream expertise in order to provide an updated analysis grid to better reflect the reality of the domain of interest.</p>
<p>Between revisions, although classifications are relatively stable resources, changes can be made to the elements, and typically to their definitions. To this end, the versioning of statistical classification is targeting the various notes that define the items. At the level of the classification itself, these minor changes do not result in a version number increment.</p>
<p class="note" title="New revision means new URIs">
As a consequence of the considerations above, this best practice document and the examples given assume that, when a new revision of a statistical classification is created, it is a totally different "artifact" than the previous revision, hence with a different URI; and all classification items inside it will be assigned new URIs. This is reflected in section "<a href="#bp-evolution-major-versions">Major versions of classifications</a>" below, in the examples of correspondence tables in section "<a href="#bp-correspondences-example">Examples of xkos:ConceptAssociation</a>", and in the <a href="#bp-uri-patterns">proposed URI patterns</a>.
</p>
</section>
<section id="classifications-actors">
<h3>Main actors working with statistical classifications</h3>
<p>At the United Nations (UN), statistical activities are carried out by the United Nations Statistics Division (UNSD). The Division compiles and disseminates global statistical information, develops standards and norms for statistical activities, and supports countries' efforts to strengthen their national statistical systems. It facilitates the coordination of international statistical activities and supports the functioning of the United Nations Statistical Commission as the apex body of the global statistical system.</p>
<p>In particular, the UNSD is the repository of the main international classifications such as ISIC, CPC, SITC, BEC and COICOP.</p>
<p>At the European level, Eurostat coordinates the consultation of Member States and establishes a timetable for the joint revision or updating of classifications. Eurostat offers a variety of information in paper, electronic and online formats, e.g. on the <a href="https://ec.europa.eu/eurostat/data">Eurostat data portal</a>, in particular its <a href="https://ec.europa.eu/eurostat/web/metadata/classifications">classifications section</a>.</p>
<p>Although the UNSD classifications mentioned above are only implemented as recommendations, the classifications at European level are implemented legally to ensure their adoption by the Member States. For instance in the CPA 2008 Guidelines, we can read that The CPA is the European version of the CPC, and the purposes it serves are in line with those of the CPC. Whilst the CPC is merely a recommended classification, the CPA is legally binding in the European Union. In addition, specific survey classifications must be linked to the CPA, unless the CPA itself is used as a survey classification.</p>
<p>The [[[#fig-int-syst-eco]]] below gives an overview of the relationships between the classifications both between domains and between geographical scales. International classifications are usually derived at national level to take account of local specificities.</p>
<p>For instance with CPA classification, The CPA Regulations allow Member States to use a national version derived from the CPA for national purposes. Such national versions must, however, fit into the structural and hierarchical framework of the CPA in accordance with the following rules:</p>
<ol>
<li>classifications that are more aggregated than the CPA shall comprise precise aggregations of CPA subcategories;</li>
<li>classificationsclassifications that are more detailed than the CPA shall comprise headings that are wholly contained within CPA subcategories;</li>
<li>classificationsclassifications that are derived from the CPA may have a different coding and shall include a table of correspondence with the CPA.</li>
</o>
<p>The European Commission is required to verify the conformity of the national classifications with these rules.</p>
</section>
<section id="classifications-examples">
<h3>International and national classifications</h3>
<p>International classifications can be applied according to regulations or gentlemen's agreements. This procedure ensures that data are comparable between countries. However, for national publications, countries may use a different, nationally adapted version of a classification.</p>
<h4>Classifications on activities, products and goods</h4>
<p>The Eurostat <a href="https://ec.europa.eu/eurostat/statistics-explained/index.php?title=NACE_background">“Statistics Explained”</a> web site describes the articulation between economic classifications at the international and national levels. The overview figure is reproduced below:</p>
<figure id="fig-int-syst-eco">
<img src="img/int-syst-eco.png" alt="International system of economic classifications"/>
<figcaption>International system of economic classifications</figcaption>
</figure>
<div class="ednote" title="Check copyright of figure"></div>
<p>The diagram above shows that the aim is to ensure consistency between classifications, whether between world classifications or between geographical levels, either by establishing correspondence tables or by maintaining the same structure between two neighbouring classifications. As an example, the ISIC classification is derived at the European level through the NACE. ISIC (International Standard Industrial Classification of all Economic Activities of the United Nation) is the reference classification and NACE has the same structure. The first two levels (Sections and Divisions) are identical between NACE and ISIC, while levels three and four (Groups and Classes) are subdivisions of the corresponding levels of the ISIC classification. The codes between these two classifications are as far as possible the same. To distinguish between them the representation is slightly different, with the insertion of intermediate points in the notation of the NACE codes.</p>
<p>The CPA is a product classification whose elements are related to activities as defined by NACE Rev. 2. Each product in CPA - whether it be a transportable or a non transportable good or a service - is assigned to one single NACE Rev. 2 activity. The linkage to activities as defined by NACE Rev. 2 gives the CPA a structure parallel to that of NACE Rev. 2 at all levels distinguished by NACE Rev. 2. However, the detailed linkage between products and activities could only be established to a certain degree. There are, nevertheless, cases where products can be assigned to activities only at a higher level than the class level or even where a class in CPA 2008 has no activity counterpart in NACE Rev. 2.</p>
<p>The relation between HS and CN is another example of one classification that is an extension of the other by bringing a lower level of description. HS (for Harmonized commodity description and coding System) is created for the classification of products. This international classification is used by most of the countries in the world. At the international level, the Harmonized System for classifying goods is a six-digit code system at its lowest level.</p>
<p>The CN, for Combined Nomenclature, is defined at the European level and proposes two additional digits, and works as a fourth level added seamlessly to the three first levels of HS.</p>
<h4>Classifications on occupations</h4>
<p>The International Standard Classification of Occupations (<a href="https://www.ilo.org/public/english/bureau/stat/isco/">ISCO</a>) belongs to the <a href="https://unstats.un.org/unsd/classifications/Family ">international family of economic and social classifications</a>. ISCO is a tool for organizing jobs into a clearly defined set of groups according to the tasks and duties undertaken in the job. Its main aims are to provide:</p>
<ul>
<li>a basis for the international reporting, comparison and exchange of statistical and administrative data about occupations;</li>
<li>a model for the development of national and regional classifications of occupations; and</li>
<li>a system that can be used directly in countries that have not developed their own national classifications.</li>
</ul>
<p><a href=" https://www.ilo.org/public/english/bureau/stat/isco/docs/publication08.pdf">ISCO-08</a> is a four-level hierarchically structured classification that allows all jobs in the world to be classified into 436 unit groups. These groups form the most detailed level of the classification structure and are aggregated into 130 minor groups, 43 sub-major groups and 10 major groups, based on their similarity in terms of the skill level and skill specialization required for the jobs. This allows the production of relatively detailed internationally comparable data as well as summary information for only 10 groups at the highest level of aggregation.</p>
<p><a href="https://ec.europa.eu/esco/portal/home">ESCO</a>, that stands for European Skills Competencies, qualifications and Occupations, is linked to the ISCO classification, one occupation of ESCO corresponds to only one item of ISCO. ISCO provides the top four levels of the occupation classification. The occupations are linked to only one unit group of ISCO classification.</p>
<p>In this case the european classification is an extension of the international classification by adding a new level specific for the european union. As a consequence, it is possible that some ISCO’s unit group stay without link to ESCO occupations for job that doesn’t exist in Europe.</p>
</section>
<section id="classifications-tables-usage">
<h3>Usage of correspondence tables</h3>
<p>Correspondence tables provide a means to relate statistical classifications. There are 3 different use-cases for these correspondence tables:</p>
<ol>
<li>Relating classifications on the same domain area but with different hierarchical organisations.</li>
<li>Relating classification on the same domain area but with a different point of view on it.</li>
<li>Relating revisions of the same classification.</li>
</ol>
<h4>Different hierarchical organisation (CPC / CPA)</h4>
<p>CPA is the European counterpart of CPC, although the components of CPA are in a different structural order. CPC structures products based on the physical properties and the intrinsic nature of the products as well as on the principle of industrial origin; the CPA has the same criteria but gives first priority to industrial origin.</p>
<p>The classes of the CPA are based on several other classifications: CPC, HS/CN and ISIC/NACE determine the borders of the CPA subcategories. The main principle for classifying products in the CPA is the industrial origin criterion. Each product - whether it be a transportable or a non-transportable good or a service - is assigned to one - and only one - NACE activity at the most detailed level, namely the NACE class that characteristically produces the product. Thus, classifying products according to industrial origin gives the product classification a different structure to that found in CPC: namely a structure which is parallel to that of NACE Rev. 2.</p>
<h4>Different point of view on the same domain area (ProdCom / CPA, or HS / CN)</h4>
<p>Prodcom stands for "PRODuction COMmunautaire". This classification provides statistics on the production of manufactured goods by enterprises on the national territory of reporting countries. Prodcom covers mining and manufacturing: sections B and C of the statistical classification of economic activities in the European Union (NACE Rev. 2). Prodcom statistics aim to provide a comprehensive picture at EU level of the development of industrial production for a given product or sector, so that comparisons can be made between countries.</p>
<p>The scope of ProdCom is thus different, and smaller, from the one of CPA, and there is a correspondence table to that subpart of the CPA.</p>
<h4>Different revisions of the same classification (NAFrev1 / NAFrev2)</h4>
<p>Since its creation, the NAF (Nomenclature d'Activités Française - French classification of activities) has been revised twice. The current version of the nomenclature is NAF rev.2, in force since 1 January 2008. It succeeded NAF rev.1, in force from 1 January 2003 to 31 December 2007.</p>
<p>The objectives of the revision were to modernise, in order to better reflect the economic developments of the last twenty years, and to improve the comparability of the major classification systems used worldwide, in order to facilitate international comparisons of economic data. Two correspondence tables have been produced, one for the transition from NAFrev1 to NAFrev2, the other for the reverse path. The links are documented in this correspondence table, so that partial links are used when an association to an item in the new nomenclature concerns only a part of this item. The link documentation also highlights whether the link relates to the core content of the item or the additional content. In addition, exclusion links are created to indicate which parts of the item are not retained. Finally, additional information is provided to show whether the item remains unchanged between the two classifications or, on the contrary, whether it has been split into n items in the new classification.</p>
</section>
</section>
<section id="best-practices">
<h2>The Best Practices</h2>
<section id="bp-classification">
<h3>Description of statistical classifications</h3>
<p><a href="https://rdf-vocabulary.ddialliance.org/xkos.html#class-representation">§5.1 of the XKOS specification</a> states that <blockquote><em>“In order to represent classifications and classification schemes, XKOS does not define specific classes but uses directly SKOS classes, adding to them different properties that specifically apply to classifications or classification schemes. Each major version of a classification is represented in XKOS by a `skos:ConceptScheme`.”</em></blockquote></p>
<p>This best practices document gives further recommendations on how best to describe a `skos:ConceptScheme` that identifies a statistical classification, with mandatory, recommended and optional properties. Note that some constraints impose the presence of a property in English, hence the "lang" column with value "en" for certain properties</p>
<table class="simple stickyTableHead">
<caption>Mandatory, Recommended and Optional properties to describe statistical classifications</caption>
<thead>
<tr>
<th>Property
<th>Lang.</th>
<th>Card.</th>
<th>Range</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr><td colspan="5" class="table-section">Mandatory properties</td></tr>
<tr>
<td>`skos:notation`</td>
<td></td>
<td>1..1</td>
<td>`xsd:string`</td>
<td>The value must be the short name of the classification, with no language tag.</td>
</tr>
<tr>
<td>`skos:prefLabel`</td>
<td>en</td>
<td>1..1</td>
<td>`rdf:langString`</td>
<td>The value must be the complete name of the classification scheme in english.</td>
</tr>
<tr>
<td>`dcterms:issued`</td>
<td></td>
<td>1..1</td>
<td>`xsd:date`</td>
<td>The value must be the publication date of the classification scheme</td>
</tr>
<tr><td colspan="5" class="table-section">Recommended properties</td></tr>
<tr>
<td>`skos:prefLabel`</td>
<td><em>any language</em></td>
<td>0..n</td>
<td>`rdf:langString`</td>
<td>The value must be the complete name of the classification scheme in another language than english, with a proper language tag.</td>
</tr>
<tr>
<td>`dc:description`</td>
<td>en</td>
<td>0..1</td>
<td>`rdf:langString`</td>
<td>The value must be a short descriptive text about the classification scheme in english.</td>
</tr>
<tr>
<td>`skos:scopeNote`</td>
<td>en</td>
<td>0..1</td>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#ExplanatoryNote">`xkos:ExplanatoryNote`</a></td>
<td>The explanatory note must have a <a href= "http://rdf-vocabulary.ddialliance.org/xkos#plainText">`xkos:plainText`</a> property which value is a long descriptive text about the classification scheme in English, with a language tag set at ‘@en’</td>
</tr>
<tr>
<td>`skos:hasTopConcept|^skos:topConceptOf`</td>
<td></td>
<td>0..n</td>
<td>`skos:Concept`</a></td>
<td>Reference to a top-level classification entry of this classification. Top level entries can be indicated either from ConceptScheme to root Concepts, using `skos:hasTopConcept`, or from root Concepts to ConceptScheme, using `skos:topConceptOf`.</td>
</tr>
<tr>
<td>`dcterms:modified`</td>
<td></td>
<td>0..1</td>
<td>`xsd:date`</td>
<td>The value must be the last modification date of the classification scheme.</td>
</tr>
<tr>
<td>`dcterms:creator`</td>
<td></td>
<td>0..n</td>
<td>`dcterms:Agent`</td>
<td>An agent responsible for creating the classification scheme. Note that the property can also be attached on the classification resource, as all versions of a classification are usually created by the same agent.</td>
</tr>
<tr>
<td>`schema:startDate`</td>
<td></td>
<td>0..1</td>
<td>`xsd:date`</td>
<td>Start date of the temporal validity of the classification. Readers interested in the rationale for the choice of schema.org properties can read the <a href="#date-ranges-modeling">appendix</a>.</td>
</tr>
<tr>
<td>`schema:endDate`</td>
<td></td>
<td>0..1</td>
<td>`xsd:date`</td>
<td>End date of the temporal validity of the classification. Readers interested in the rationale for the choice of schema.org properties can read the <a href="#date-ranges-modeling">appendix</a>.</td>
</tr>
<tr>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#belongsTo">`xkos:belongsTo`</a></td>
<td></td>
<td>0..1</td>
<td>`skos:Concept`</td>
<td>Connects a major version of a classification to a concept representing the overall classification.</td>
</tr>
<tr>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#levels">`xkos:levels`</a></td>
<td></td>
<td>0..1</td>
<td>`rdf:List`</td>
<td>Lists the classification levels represented as an RDF list of ordered levels (instances of <a href= "http://rdf-vocabulary.ddialliance.org/xkos#ClassificationLevel">`xkos:ClassificationLevel`</a>).</td>
</tr>
<tr>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#covers">`xkos:covers`</a></td>
<td></td>
<td>0..1</td>
<td>`skos:Concept`</td>
<td>The domain covered by the classification or its levels (eg. activities, products, etc.). Subproperties <a href= "http://rdf-vocabulary.ddialliance.org/xkos#coversExhaustively">`xkos:coversExhaustively`</a> and <a href= "http://rdf-vocabulary.ddialliance.org/xkos#coversMutuallyExclusively">`xkos:coversMutuallyExclusively`</a> can also be used.</td>
</tr>
<tr>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#coversExhaustively">`xkos:coversExhaustively`</a></td>
<td></td>
<td>0..1</td>
<td>`skos:Concept`</td>
<td>The domain covered by the classification (exhaustive coverage).</td>
</tr>
<tr>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#coversMutuallyExclusively">`xkos:coversMutuallyExclusively`</a></td>
<td></td>
<td>0..1</td>
<td>`skos:Concept`</td>
<td>The domain covered by the classification (mutually exclusive coverage).</td>
</tr>
<tr>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#numberOfLevels">`xkos:numberOfLevels`</a></td>
<td></td>
<td>0..1</td>
<td>`xsd:integer`</td>
<td>Depth of a classification (number of hierarchically nested levels) ; 1 for a flat classification.</td>
</tr>
<tr>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#follows">`xkos:follows`</a></td>
<td></td>
<td>0..1</td>
<td>`skos:ConceptScheme`</td>
<td>Links major revisions of classifications.</td>
</tr>
<tr>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#supersedes">`xkos:supersedes`</a></td>
<td></td>
<td>0..1</td>
<td>`skos:ConceptScheme`</td>
<td>Links major revisions of classifications, when the new one obsoletes the old one.</td>
</tr>
<tr><td colspan="5" class="table-section">Optional properties</td></tr>
<tr>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#variant">`xkos:variant`</a></td>
<td></td>
<td>0..n</td>
<td>`skos:ConceptScheme`</td>
<td>Connects a classification scheme to its variant(s)</td>
</tr>
<tr>
<td>`skos:scopeNote`</td>
<td>any language</td>
<td>0..n</td>
<td><a href= "http://rdf-vocabulary.ddialliance.org/xkos#ExplanatoryNote">`xkos:ExplanatoryNote`</a></td>
<td>Each explanatory note must have a <a href= "http://rdf-vocabulary.ddialliance.org/xkos#plainText">`xkos:plainText`</a> property which value is a long descriptive text about the classification scheme in another langage than english, with the langage tag set appropriately</td>
</tr>
<tr>
<td>`skos:altLabel`</td>
<td>any language</td>
<td>0..n</td>
<td>`rdf:langString`</td>
<td>An alternative appelation to refer to the classification scheme.</td>
</tr>
<tr>
<td>`dcterms:language`</td>
<td></td>
<td>0..n</td>
<td>`xsd:language`</td>
<td>Indicates the langage coverage of the classification scheme. Each value must correspond to a possible langage of labels within that classification.</td>
</tr>
<tr>
<td>`dcterms:license`</td>
<td></td>
<td>0..1</td>
<td>`dcterms:LicenseDocument`</td>
<td>The URI to the legal document giving official permission to do something with the classification.</td>
</tr>
<tr>
<td>`owl:deprecated`</td>
<td></td>
<td>0..1</td>
<td>`xsd:boolean`</td>
<td>Indicates the classification is no longer active and has been superseded by a new revision.</td>
</tr>
<tr>
<td>`eli:based_on`</td>
<td></td>
<td>0..n</td>
<td>`rdfs:Resource`</td>
<td>Legislation on which the nomenclature is based. Use of an <a href="https://eur-lex.europa.eu/eli-register/about.html">ELI URI</a> is preferred, if one is available ([[ELI]])</td>
</tr>
<tr>
<td>`rdfs:seeAlso`</td>
<td></td>
<td>0..1</td>
<td>`owl:Class`</td>
<td>A reference to a subclass of `skos:Concept` that is used as the class of all classification items in this classification (see below the best practice <a href="#bp-types-per-entry">Type the classification items of a given classification</a>)</td>
</tr>
</tbody>
</table>
<p>The above table is formally encoded in a set of [[SHACL]] constraints, documented in <a href="#shacl-howto">the appendix</a>.</p>
<aside class="example" title="Example of a statistical classification description">
<p>An example of high-level description of a classification is given in <a href="#isic-example">annex</a>.</p>
</aside>
</section>
<section id="bp-labels">
<h3>Labels</h3>
<p>Statistical classifications often make use of different types of labels for their items. Two examples taken from French classifications can be mentioned:</p>
<ul>
<li>The classification of activities (NAF rev.2) makes “standard” shortened labels available for use in certain cases where space is constrained (e.g. table headers in a paper publication).</li>
<li>The classification of professions (PCS 2020) defines an “official” label and a “usual” label.</li>
</ul>
<p>In these and other similar cases, it is recommended to use alternative labels (`skos:altLabel`), and if necessary the SKOS-XL extension of SKOS. However, SKOS specifies a number of integrity rules that must be respected:</p>
<ul>
<li>`skos:prefLabel`, `skos:altLabel` and `skos:hiddenLabel` are pairwise disjoint properties.</li>
<li>a resource has no more than one value of `skos:prefLabel` per language tag.</li>
</ul>
<p>The first rule implies in particular that preferred and alternative labels cannot have the same value.</p>
<p>These rules extend to SKOS-XL labels through a mechanism explained in the <a href="https://www.w3.org/TR/skos-reference/#L899">SKOS Reference</a>. So, for example, a `skosxl:Label` attached to an item by the `skosxl:altLabel` predicate cannot have the same literal form value as a plain SKOS preferred label.</p>
<p>This best practices document gives further recommendations and examples on how best to deal with fixed-length labels, translations, or labels in a specific context/usage.</p>
<section id="bp-labels-length">
<h4>Fixed-length labels</h4>
<p><a href="https://rdf-vocabulary.ddialliance.org/xkos.html#add-labels">§ 8.1 of the XKOS specification</a> describes how to use SKOS labels in combination with `xkos:maxLength` to render fixed-length labels. Another example taken from the NAF rév. 2 (“Nomenclature d'activités française”) is given below:</p>
<aside class="example" title="Example of fixed-length labels">
<pre class="nohighlight">
<http://id.insee.fr/codes/nafr2/classe/27.12>
a skos:Concept , nafr2:Classe ;
skos:prefLabel "Fabrication de matériel de distribution et de commande électrique"@fr ;
skos:prefLabel <http://id.insee.fr/codes/nafr2/classe/27.12/label40fr> .
<http://id.insee.fr/codes/nafr2/classe/27.12/label40fr>
a skos-xl:Label ;
skos-xl:literalForm "Fab. mat. de distrib. & de cde électri."@fr ;
xkos:maxLength 40 .
</pre>
</aside>
</section>
<section id="bp-labels-types">
<h4>Labels of different types</h4>
<p>Official labels should always be represented by the `skos:prefLabel` property. For usual labels, `skos:altLabel` should be used, but only when they are different from the official ones, due to the <a href="https://www.w3.org/TR/skos-reference/#L1567">SKOS integrity rules</a>.</p>
<p>For example, the French “Nomenclature des professions et catégories socioprofessionnelles 2020” (PCS2020) distinguishes “official” and “usual” labels:</p>
<aside class="example" title="Example of labels of different types with different values">
<pre class="nohighlight">
<http://id.insee.fr/codes/pcs2020/2/22>
skos:prefLabel "Commerçants / commerçantes et assimilés"@fr ;
skos:altLabel "Commerçants et assimilées"@fr .
</pre>
</aside>
<aside class="example" title="Example of labels of different types with the same value">
<pre class="nohighlight">
<http://id.insee.fr/codes/pcs2020/1/4>
skos:prefLabel "Professions intermédiaires"@fr .
</pre>
</aside>
<p>In the first example above, the official and usage labels are different, so `skos:altLabel` can be used to express the usage label. In the second example, the usage label is the same as the official one, so `skos:altLabel` cannot be used since `skos:prefLabel` and `skos:altLabel` are disjoint properties. `skos:prefLabel` represents both the official and usage labels.</p>
<p>If more than one type of “unofficial” labels exist, SKOS-XL constructs can be used, in the same way than for the fixed-length labels example. In this case, the `skos-xl:Label` can be qualified by a custom property listing the different types of labels. The current version of XKOS does not define this kind of property.</p>
</section>
<section id="bp-labels-languages">
<h4>Translations</h4>
<p>Classification publishers should always provide textual material (labels and notes) in their original language. Additionally, it is recommended to publish English versions of at least the official labels and if possible of other labels and of all notes.</p>
<p>RDF native support of multilingualism should always be used:</p>
<aside class="example" title="Example of labels in different languages">
<pre class="nohighlight">
ex:isco2008-9611
skos:notation "9611" ;
skos:prefLabel "Manoeuvres, enlèvement des ordures et matériel recyclable"@fr , "Garbage and recycling collectors"@en , "Recolectores de basura y material reciclable"@es .
</pre>
</aside>
</section>
</section>
<section id="bp-notes">
<h3>Notes</h3>
<p><a href="https://rdf-vocabulary.ddialliance.org/xkos.html#note-ext">§8.2 of the XKOS specification</a> describes the different types of content notes introduced in XKOS and mentions the `xkos:plainText` property as a way to capture the raw content of the note. This best practice document gives additional recommendations on how best to describe the note entity, how to handle note versioning and timestamps, and clarifies the difference between `xkos:inclusionNote` and `xkos:caseLaw`.</p>
<p>The tables given in this section are formally encoded in a set of [[SHACL]] constraints, documented in <a href="#shacl-howto">the appendix</a>.</p>
<section id="bp-notes-structure">
<h4>Note structure</h4>
<p>As indicated in the XKOS specification, and as a prerequisite for the versioning and timestamping of notes, instances of `xkos:ExplanatoryNote` should be used as value for the SKOS and XKOS note properties, and not literal values.</p>
<p>The instances of `xkos:ExplanatoryNote` should at least follow the structure given in the table below, in addition to other properties described below, depending if the note is timestamped or versioned.</p>
<table class="simple stickyTableHead">
<caption>General structure of an `xkos:ExplanatoryNote`</caption>
<thead>
<tr>
<th>Property</th>
<th>Card.</th>
<th>Range</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>`xkos:plainText`</td>
<td>1..1</td>
<td>xsd:string</td>
<td>The value of the note, in plain text (no HTML / XML markup). The literal is tagged with a proper language tag.</td>
</tr>
<tr>
<td>`dcterms:language`</td>
<td>1..1</td>
<td>xsd:language</td>
<td>The language code of the note. This is a repetition of the language tag of the `xkos:plainText` attribute, that makes it easier to query/select notes in a certain language.</td>
</tr>
<tr>
<td>`rdf:value`</td>
<td>0..1</td>
<td>rdf:XMLLiteral</td>
<td>If needed the value of the note containing HTML or XML markup.</td>
</tr>
</tbody>
</table>
</section>
<section id="bp-notes-versioning-timestamping">
<h4>Versioning notes and timestamping notes</h4>
<p>As indicated in the introductory paragraph about classification major revisions and versions, the notes are the information that have fine-grained versions between each major revision of a classification (any changes other than on the notes - moving a concept, renaming a concept, etc. - is supposed to happen in a new major revision, hence applies to a new Concept URI. See section <a href="bp-evolution-major-versions">Major versions of classifications</a>).</p>
<p>We propose 2 different patterns of versioning for notes: versioning notes with a version number and a date range, and keeping the history of notes with a timestamp.</p>
<p>The first pattern to version notes implies that each new version of the note is given a version number and a date range. All notes, except `skos:changeNote` and `xkos:caseLaw` should follow this pattern: `skos:scopeNote`, `skos:definition`, `xkos:coreContentNote`, `xkos:additionalContentNote`, `xkos:exclusionNote`, `xkos:inclusionNote`. These notes should use the properties listed in the table below.</p>
<table class="simple stickyTableHead">
<caption>Additional properties for an `xkos:ExplanatoryNote` when versioned</caption>
<thead>
<tr>
<th>Property</th>
<th>Card.</th>
<th>Range</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>`dcat:version`</td>
<td>1..1</td>
<td>xsd:int</td>
<td>The version number of the note. e.g. `"1"^^xsd:int`, `"2"^^xsd:int`, etc. Note that this version number will typically be used in the URI of the `xkos:ExplanatoryNote`.</td>
</tr>
<tr>
<td>`schema:startDate`</td>
<td>1..1</td>
<td>xsd:dateTime</td>
<td>The date from which this note content is valid. Readers interested in the rationale for the choice of schema.org properties can read the <a href="#date-ranges-modeling">appendix</a>.</td>
</tr>
<tr>
<td>`schema:endDate`</td>
<td>0..1</td>
<td>xsd:dateTime</td>
<td>The date until which this note content was (or will be) valid, indicating it was (or will be) replaced with another note with a different text, and its version number increased by 1. This property is not set in the case if there is no known end date. Readers interested in the rationale for the choice of schema.org properties can read the <a href="#date-ranges-modeling">appendix</a>.</td>
</tr>
</tbody>
</table>
<p>Given the versioning history of such notes, a client accessing a particular version of the classification might not be interested to know about the versioning history of all notes, and is only interested in the current state of each note.</p>
<aside class="example" title="Concept with a versioned note">
<p>Before 2010-02-01, the Concept description is the following:</p>
<pre class="nohighlight">
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21>
a skos:Concept;
xkos:coreContentNote
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21/noteContenuCentral/v1/fr> ;
skos:prefLabel
"Kaolin and other kaolinic clays"@en,
"Kaolin et autres argiles kaoliniques"@fr .
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21/noteContenuCentral/v1/fr>
a xkos:ExplanatoryNote;
rdf:value
"<div><ul><li><p>argiles kaoliniques brutes ou calcinées et pâtes céramiques</p></li></ul></div>"^^rdf:XMLLiteral ;
dcterms:language "fr"^^xsd:language ;
dcat:version "1"^^xsd:int ;
xkos:plainText "- argiles kaoliniques brutes ou calcinées et pâtes céramiques"@fr ;
schema:startDate "2008-01-01"^^xsd:date ;
schema:endDate "2010-02-01"^^xsd:date .
</pre>
<p>On the 2010-02-01, the note is modified, and a second version is created. The current state of the Concept then becomes the following:</p>
<pre class="nohighlight">
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21>
a skos:Concept;
xkos:coreContentNote,
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21/noteContenuCentral/v2/fr> ;
skos:prefLabel
"Kaolin and other kaolinic clays"@en,
"Kaolin et autres argiles kaoliniques"@fr .
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21/noteContenuCentral/v2/fr>
a xkos:ExplanatoryNote;
rdf:value
"<div><ul><li><p>argiles kaoliniques brutes et pâtes céramiques</p></li></ul></div>"^^rdf:XMLLiteral;
dcterms:language "fr"^^xsd:language;
dcat:version "2"^^xsd:int;
xkos:plainText "- argiles kaoliniques brutes et pâtes céramiques"@fr;
schema:startDate "2010-02-01"^^xsd:date .
</pre>
<p>The complete history of that Concept is given below. Note that, as we take the hypothesis that each new revision of the classification will give birth to new Concept URIs, this is indeed the <em>complete</em> history of that Concept URI, as any changes other than the notes (a move of the concept, a rename of the concept, etc.) has to be made in a new revision, hence applies to a new Concept URI.</p>
<pre class="nohighlight">
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21>
a skos:Concept;
xkos:coreContentNote
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21/noteContenuCentral/v1/fr> ,
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21/noteContenuCentral/v2/fr> ;
skos:prefLabel
"Kaolin and other kaolinic clays"@en,
"Kaolin et autres argiles kaoliniques"@fr .
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21/noteContenuCentral/v1/fr>
a xkos:ExplanatoryNote;
rdf:value
"<div><ul><li><p>argiles kaoliniques brutes ou calcinées et pâtes céramiques</p></li></ul></div>"^^rdf:XMLLiteral;
dcterms:language "fr"^^xsd:language;
dcat:version "1"^^xsd:int;
xkos:plainText "- argiles kaoliniques brutes ou calcinées et pâtes céramiques"@fr;
schema:startDate "2008-01-01"^^xsd:date;
schema:endDate "2010-02-01"^^xsd:date .
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21/noteContenuCentral/v2/fr>
a xkos:ExplanatoryNote;
rdf:value
"<div><ul><li><p>argiles kaoliniques brutes et pâtes céramiques</p></li></ul></div>"^^rdf:XMLLiteral;
dcterms:language "fr"^^xsd:language;
dcat:version "2"^^xsd:int;
xkos:plainText "- argiles kaoliniques brutes et pâtes céramiques"@fr;
schema:startDate "2010-02-01"^^xsd:date .
</pre>
<p>The modification of the core content note is documented by a (timestamped) `skos:changeNote` - see example below.</p>
</aside>
<p>The second pattern implies that the note is associated with a publication date, but no version number. This pattern applies to `skos:changeNote` and `xkos:caseLaw`. It will use the properties listed in the table below.</p>
<table class="simple stickyTableHead">
<caption>Additional properties for an `xkos:ExplanatoryNote` when timestamped</caption>
<thead>
<tr>
<th>Property</th>
<th>Card.</th>
<th>Range</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>`dcterms:issued`</td>
<td>1..1</td>
<td>xsd:dateTime</td>
<td>The date at which the note was issued. Note that this date will typically be used in the URI of the `xkos:ExplanatoryNote`.</td>
</tr>
</tbody>
</table>
<p>Given the versioning history of such a note, a client accessing a particular version of the classification might be interested to have the full history of each value of the note.</p>
<aside class="example" title="Concept with a timestamped note">
<pre class="nohighlight">
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21>
a skos:Concept;
skos:changeNote
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21/noteChangement/2010-02-01/fr> ;
skos:prefLabel
"Kaolin and other kaolinic clays"@en,
"Kaolin et autres argiles kaoliniques"@fr .
<http://id.insee.fr/codes/cpfr2/sousCategorie/08.12.21/noteChangement/2010-02-01/fr>
a xkos:ExplanatoryNote;
rdf:value
"<div><p>Suppression dans la rubrique \"Comprend\" : ou calcinées</p></div>"^^rdf:XMLLiteral;
dcterms:issued "2010-02-01T00:00:00.000+01:00"^^xsd:dateTime;
dcterms:language "fr"^^xsd:language;
xkos:plainText "Suppression dans la rubrique \"Comprend\" : ou calcinées"@fr .
</pre>
</aside>
</section>
<section id="bp-notes-inclusionNote-caseLaw">
<h4>xkos:inclusionNote vs. xkos:caseLaw</h4>
<p>When a framework classification is implemented it is generally accompanied by explanatory notes (represented using `skos:scopeNote` or its sub-properties). These explanatory notes can undergo some review procedures so that countries can provide feedback about their content. Once the new or updated/revised classification comes into force and for stability sake, the explanatory notes remain untouched until the classification is next revised or updated.</p>
<p>Questions about the explanatory notes are addressed to the custodians of the relevant classifications who then issue classification decisions after discussion with countries; these classification decisions are generally grouped under various names (e.g. "rulings", "classification decisions", "caselaws") and represented using the `xkos:caseLaw` property. When a framework classification is revised or updated theses caselaws are considered for inclusion in the official explanatory notes.</p>
<p>In other words, classification objects that were not explicitly described in the core content note nor in the additional content note are taken into account by adding a case law specifying the content not explained in the explanatory notes. As defined in <a href='https://unece.org/fileadmin/DAM/stats/documents/ece/ces/ge.40/2013/WP7.pdf'>Neuchâtel terminology model</a> <em>"case law refers to a ruling concerning the classification of certain statistical objects/units, which do not obviously fit into one category and are not clearly defined by explanatory notes"</em>.</p>
<aside class="example" title="xkos:caseLaw example in NACE">
<p>Below is an example of a caselaw relating to the NACE Rev. 2 classification. Rulings are displayed after `xkos:coreContentNote` and `xkos:additionalContentNote` properties but before `xkos:exclusionNote` property because such explanatory texts are labelled as inclusions and not as exclusions.</p>
<img src="img/bp-caseLaw-example.png" alt="Case Law Example from NACE Rev. 2" />
<pre>
ex:SupportActivities a skos:Concept ;
skos:notation "01.62" .
xkos:coreContentNote ex:SupportActivitiesCoreContent .
xkos:additionalContentNote ex:SupportActivitiesAdditionalContent .
xkos:caseLaw ex:SupportActivitiesCaseLaw .
xkos:exclusionNote ex:SupportActivitiesExclusionNote .
ex:SupportActivitiesCoreContent a xkos:ExplanatoryNote ;
dcterms:language "en"^^xsd:language ;
xkos:plainText "-agricultural activities on a fee or contract basis; activities to promote propagation, growth and output of animals [...]"@en ;
# same date as the start date of the classification
schema:startDate "2012-06-21"^^xsd:date;
dcat:version "1"^^xsd:int .
ex:SupportActivitiesAdditionalContent a xkos:ExplanatoryNote ;
dcterms:language "en"^^xsd:language ;
xkos:plainText "-activities for farriers"@en ;
# same date as the start date of the classification
schema:startDate "2012-06-21"^^xsd:date;
dcat:version "1"^^xsd:int .
ex:SupportActivitiesCaseLaw a xkos:ExplanatoryNote ;
dcterms:language "en"^^xsd:language ;
xkos:plainText "-automated egg hatching for poultry; operation of livestock management systems"@en ;
# Date at which the caseLaw was added. Case laws are published and enforced
# at a date after the initial publication date of the classification.
dcterms:issued "2014-09-22"^^xsd:date.
ex:SupportActivitiesExclusionNote a xkos:ExplanatoryNote ;
dcterms:language "en"^^xsd:language ;
xkos:plainText "-provision of space for animal boarding only, see 68.20; -veterinary activities, see 75.00 [...] "@en ;
# same date as the start date of the classification
schema:startDate "2012-06-21"^^xsd:date;
dcat:version "1"^^xsd:int.
</pre>
</aside>
</div>
</section>
</section>
<section id="bp-levels">
<h3>Levels</h3>
<p><a href="https://rdf-vocabulary.ddialliance.org/xkos.html#levels">§6 of the XKOS specification</a> specifies how to describe the levels in a classification, and how the property `xkos:organizedBy` can be used to link a level in a (specific revision of a) classification to the generic `skos:Concept` describing the generic kind of items that this level regroups (e.g. the concept of an ISCO major group, of a NACE section, etc.).</p>
<p>We emphasize what XKOS already specifies:</p>
<ul>
<li>the `skos:ConceptScheme` uses the property `xkos:levels` to point to an `rdf:List` that contains an ordered list of instances of `xkos:ClassificationLevels` in this classification. The list is ordered from the highest level to the lowest. These classification levels represent the grouping of the concepts in this particular revision of the classification.</li>
<li>Each instance of `xkos:ClassificationLevel` uses `xkos:organizedBy` to refer to a `skos:Concept` describing the “abstract” kind of items at this level of the classification, independently of the revision of the classification.</li>
</ul>
<p>We give additional best practices:</p>
<ol>