-
Notifications
You must be signed in to change notification settings - Fork 6
/
niem-ndr.html
1820 lines (1791 loc) · 811 KB
/
niem-ndr.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
PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>National Information Exchange Model Naming and Design Rules, 5.0</title><style type="text/css" media="all">body { font-family: "Times New Roman", Times, serif; background-color: #FFF; color: #000; margin: 3em; } p.todo { color: #000; background-color: #FCC; } a { text-decoration: none; color: #000; background-color: #FFF; } span.issue, span.issue a { color: #000; background-color: #FCC; } a[href]:hover { color: #000; background-color: #F9FAD4; } a.url { font-family: "Courier New", Courier, monospace; font-size: 80%; } a.ref, span.ref { font-weight: bold; } span.termRef::before { content: "·"; } span.termRef::after { content: "·"; } div.img { width: 100%; text-align: center; } img { width: 100%; } div.table { } div.table > table { margin: auto; } div.title { font-size: 200%; font-weight: bold; margin: 1em 5em; text-align: center; } div.subtitle { font-size: 150%; font-weight: bold; margin: 1em 5em; text-align: center; } div.heading { font-size: 125%; font-weight: bold; margin-top: 1em; margin-bottom: 1em; page-break-after: avoid; page-break-inside: avoid; } div.rule-section > div.heading { font-size: 100%; } div.section, div.rule-section { margin-left: 2em; } div.section div.section { margin-left: 0; } div.section div.heading { margin-left: -2em; } div.meta { width: 33%; float: right; clear: right; } div.meta > p { padding: 0; margin: 0; } div.box, div.meta { background-color: #EEE; color: #000; border: solid black 1px; padding: 1.0em; } div.box a, div.meta a { background-color: #EEE; color: #000; } div.box a:hover, div.meta a:hover { background-color: #F9FAD4; color: #000; } div.box + div.box, div.figure + div.box { margin-top: 1em; } div.normativeHead { font-weight: bold; margin-bottom: 1em; } dfn { font-style: normal; font-weight: bold; } div.sub { margin-top: 1em; margin-left: 2em; } div.sub > *:last-child { margin-bottom: 0; } td,th { border: solid black 1px; } th { color: #000; background-color: #EEE; } table { border-collapse: collapse; } code { font-family: "Courier New", Courier, monospace; font-size: 80%; } pre { font-family: "Courier New", Courier, monospace; font-size: 80%; white-space: pre-wrap; margin: 0; } div.caption { font-weight: bold; text-align: center; page-break-after: avoid; page-break-inside: avoid; } p.hang { text-indent: -2em; margin-left: 2em; } q { quotes: '\201C' '\201D' '\2018' '\2019'; } q:before { content: open-quote; } q:after { content: close-quote; } ol ol > li { list-style-type: upper-alpha; } li > p { margin-top: 0; margin-bottom: 0; } p + p { margin-top: 1em; } div > *:last-child { margin-bottom: 0; } blockquote > *:last-child { margin-bottom: 0; }</style></head><body><div class="title">National Information Exchange Model Naming and Design Rules</div><div class="subtitle">Version 5.0</div><div class="subtitle">December 18, 2020</div><div class="subtitle">NIEM Technical Architecture Committee (NTAC)</div><div class="section"><div class="heading"><a name="d3e56"></a>Abstract</div><p>This document specifies the data model, XML Schema components, and XML data for use with the National Information Exchange Model (NIEM) version 5.0.</p></div><div class="section"><div class="heading"><a name="d3e65"></a>Authors</div><p>Webb Roberts, Georgia Tech Research Institute (<a class="url" target="_blank" href="mailto:[email protected]"><[email protected]></a>), Lead Author</p></div><div class="section"><div class="heading"><a name="d3e78"></a>Status</div><p>This document specifies the data model, XML Schema components, and XML data for use with the National Information Exchange Model (NIEM) version 5.0. It presents a technical architecture that has evolved through the collaborative work of the NIEM Business Architecture Committee (NBAC), the NIEM Technical Architecture Committee (NTAC), and their predecessors.</p><p>This specification is a product of the NIEM Program Management Office (PMO).</p><p>Updates, revisions, and errata for this specification are posted to <a class="url" target="_blank" href="https://github.com/NIEM/NIEM-NDR">https://github.com/NIEM/NIEM-NDR</a>. Please submit comments on this specification as issues at <a class="url" target="_blank" href="https://github.com/NIEM/NIEM-NDR/issues">https://github.com/NIEM/NIEM-NDR/issues</a>.</p></div><div class="section"><div class="heading"><a name="toc"></a>Contents</div><ul><li><a href="#section_1">1. Introduction</a><ul><li><a href="#section_1.1">1.1. Scope</a></li><li><a href="#section_1.2">1.2. Audience</a></li></ul></li><li><a href="#section_2">2. Document conventions and normative content</a><ul><li><a href="#section_2.1">2.1. Document references</a></li><li><a href="#section_2.2">2.2. Clark notation and qualified names</a></li><li><a href="#section_2.3">2.3. Use of namespaces and namespace prefixes</a></li><li><a href="#section_2.4">2.4. Normative and informative content</a><ul><li><a href="#section_2.4.1">2.4.1. Rules</a></li><li><a href="#section_2.4.2">2.4.2. Use of normative Schematron</a></li><li><a href="#section_2.4.3">2.4.3. Normative XPath functions</a></li><li><a href="#section_2.4.4">2.4.4. Normative Schematron namespace declarations</a></li></ul></li><li><a href="#section_2.5">2.5. Additional formatting</a></li></ul></li><li><a href="#section_3">3. Terminology</a><ul><li><a href="#section_3.1">3.1. IETF Best Current Practice 14 terminology</a></li><li><a href="#section_3.2">3.2. XML terminology</a></li><li><a href="#section_3.3">3.3. XML Information Set terminology</a></li><li><a href="#section_3.4">3.4. XML Schema terminology</a><ul><li><a href="#section_3.4.1">3.4.1. Schema components</a></li><li><a href="#section_3.4.2">3.4.2. Schema information set contributions</a></li></ul></li><li><a href="#section_3.5">3.5. XML Namespaces terminology</a></li><li><a href="#section_3.6">3.6. Conformance Targets Attribute Specification terminology</a></li></ul></li><li><a href="#section_4">4. Conformance targets</a><ul><li><a href="#section_4.1">4.1. Conformance targets defined</a><ul><li><a href="#section_4.1.1">4.1.1. Reference schema document</a></li><li><a href="#section_4.1.2">4.1.2. Extension schema document</a></li><li><a href="#section_4.1.3">4.1.3. Schema document set</a></li><li><a href="#section_4.1.4">4.1.4. Instance documents and elements</a></li></ul></li><li><a href="#section_4.2">4.2. Applicability of rules to conformance targets</a></li><li><a href="#section_4.3">4.3. Conformance target identifiers</a></li></ul></li><li><a href="#section_5">5. The NIEM conceptual model</a><ul><li><a href="#section_5.1">5.1. Purpose of the NIEM conceptual model</a></li><li><a href="#section_5.2">5.2. The RDF model</a></li><li><a href="#section_5.3">5.3. NIEM in terms of RDF</a></li><li><a href="#section_5.4">5.4. Unique identification of data objects</a></li><li><a href="#section_5.5">5.5. NIEM data is explicit, not implicit</a></li><li><a href="#section_5.6">5.6. Mapping of NIEM concepts to RDF concepts</a><ul><li><a href="#section_5.6.1">5.6.1. Resource IRIs for XML Schema components and information items</a></li><li><a href="#section_5.6.2">5.6.2. RDF Literals</a></li><li><a href="#section_5.6.3">5.6.3. Instance document mapped to RDF</a><ul><li><a href="#section_5.6.3.1">5.6.3.1. Instance document</a></li><li><a href="#section_5.6.3.2">5.6.3.2. Element as a simple property without relationship metadata</a></li><li><a href="#section_5.6.3.3">5.6.3.3. Element as a simple property with relationship metadata</a></li><li><a href="#section_5.6.3.4">5.6.3.4. Element simple value without relationship metadata</a></li><li><a href="#section_5.6.3.5">5.6.3.5. Element simple value with relationship metadata</a></li><li><a href="#section_5.6.3.6">5.6.3.6. Attribute as a simple property without relationship metadata</a></li><li><a href="#section_5.6.3.7">5.6.3.7. Attribute as a simple property, with relationship metadata</a></li><li><a href="#section_5.6.3.8">5.6.3.8. Elements and attributes via an augmentation type</a></li><li><a href="#section_5.6.3.9">5.6.3.9. Properties applied via <code>structures:metadata</code></a></li></ul></li><li><a href="#section_5.6.4">5.6.4. Type information for instance documents</a></li><li><a href="#section_5.6.5">5.6.5. NIEM schema component definitions to RDF</a><ul><li><a href="#section_5.6.5.1">5.6.5.1. NIEM complex type definitions to RDF</a></li><li><a href="#section_5.6.5.2">5.6.5.2. NIEM element declaration mappings to RDF</a></li><li><a href="#section_5.6.5.3">5.6.5.3. NIEM attribute declarations to RDF</a></li></ul></li></ul></li></ul></li><li><a href="#section_6">6. Guiding principles</a><ul><li><a href="#section_6.1">6.1. Specification guidelines</a><ul><li><a href="#section_6.1.1">6.1.1. Keep specification to a minimum</a></li><li><a href="#section_6.1.2">6.1.2. Focus on rules for schemas</a></li><li><a href="#section_6.1.3">6.1.3. Use specific, concise rules</a></li></ul></li><li><a href="#section_6.2">6.2. XML Schema design guidelines</a><ul><li><a href="#section_6.2.1">6.2.1. Purpose of XML Schemas</a></li><li><a href="#section_6.2.2">6.2.2. Prohibit XML parsing from constructing values</a></li><li><a href="#section_6.2.3">6.2.3. Use XML validating parsers for content validation</a></li><li><a href="#section_6.2.4">6.2.4. Validate for conformance to schema</a></li><li><a href="#section_6.2.5">6.2.5. Allow multiple schemas for XML constraints</a></li><li><a href="#section_6.2.6">6.2.6. Define one reference schema per namespace</a></li><li><a href="#section_6.2.7">6.2.7. Disallow mixed content</a></li><li><a href="#section_6.2.8">6.2.8. Specify types for all constructs</a></li><li><a href="#section_6.2.9">6.2.9. Avoid wildcards in reference schemas</a></li><li><a href="#section_6.2.10">6.2.10. Schema locations provided in schema documents are hints</a></li><li><a href="#section_6.2.11">6.2.11. Use open standards</a></li></ul></li><li><a href="#section_6.3">6.3. Modeling design guidelines</a><ul><li><a href="#section_6.3.1">6.3.1. Namespaces enhance reuse</a></li><li><a href="#section_6.3.2">6.3.2. Design NIEM for extensibility</a></li></ul></li><li><a href="#section_6.4">6.4. Implementation guidelines</a><ul><li><a href="#section_6.4.1">6.4.1. Avoid displaying raw XML data</a></li><li><a href="#section_6.4.2">6.4.2. Leave implementation decisions to implementers</a></li></ul></li><li><a href="#section_6.5">6.5. Modeling guidelines</a><ul><li><a href="#section_6.5.1">6.5.1. Documentation</a></li><li><a href="#section_6.5.2">6.5.2. Consistent naming</a></li><li><a href="#section_6.5.3">6.5.3. Reflect the real world</a></li><li><a href="#section_6.5.4">6.5.4. Be consistent</a></li><li><a href="#section_6.5.5">6.5.5. Reserve inheritance for specialization</a></li><li><a href="#section_6.5.6">6.5.6. Do not duplicate definitions</a></li><li><a href="#section_6.5.7">6.5.7. Keep it simple</a></li><li><a href="#section_6.5.8">6.5.8. Be aware of scope</a></li><li><a href="#section_6.5.9">6.5.9. Be mindful of namespace cohesion</a></li></ul></li></ul></li><li><a href="#section_7">7. Conformance to standards</a><ul><li><a href="#section_7.1">7.1. Conformance to XML</a></li><li><a href="#section_7.2">7.2. Conformance to XML Namespaces</a></li><li><a href="#section_7.3">7.3. Conformance to XML Schema</a></li><li><a href="#section_7.4">7.4. ISO 11179 Part 4</a></li><li><a href="#section_7.5">7.5. ISO 11179 Part 5</a></li><li><a href="#section_7.6">7.6. IC-ISM and IC-NTK</a></li></ul></li><li><a href="#section_8">8. Strategy for a NIEM profile of XML Schema</a><ul><li><a href="#section_8.1">8.1. Wildcards</a></li><li><a href="#section_8.2">8.2. Components are globally reusable</a></li><li><a href="#section_8.3">8.3. Avoid recursive model groups</a></li><li><a href="#section_8.4">8.4. Ensure XML parsing does not construct values</a></li><li><a href="#section_8.5">8.5. Use namespaces rigorously</a></li><li><a href="#section_8.6">8.6. Documentation is for people; appinfo is for machines</a></li></ul></li><li><a href="#section_9">9. Rules for a NIEM profile of XML Schema</a><ul><li><a href="#section_9.1">9.1. Type definition components</a><ul><li><a href="#section_9.1.1">9.1.1. Type definition hierarchy</a><ul><li><a href="#section_9.1.1.1">9.1.1.1. Types prohibited as base types</a></li></ul></li><li><a href="#section_9.1.2">9.1.2. Simple type definition</a><ul><li><a href="#section_9.1.2.1">9.1.2.1. Simple types prohibited as list item types</a></li><li><a href="#section_9.1.2.2">9.1.2.2. Simple types prohibited as union member types</a></li></ul></li><li><a href="#section_9.1.3">9.1.3. Complex type definition</a><ul><li><a href="#section_9.1.3.1">9.1.3.1. No mixed content</a></li><li><a href="#section_9.1.3.2">9.1.3.2. Complex content</a><ul><li><a href="#section_9.1.3.2.1">9.1.3.2.1. Base type of complex type with complex content has complex content</a></li></ul></li><li><a href="#section_9.1.3.3">9.1.3.3. Simple content</a></li></ul></li></ul></li><li><a href="#section_9.2">9.2. Declaration components</a><ul><li><a href="#section_9.2.1">9.2.1. Element declaration</a><ul><li><a href="#section_9.2.1.1">9.2.1.1. No element value constraints</a></li></ul></li><li><a href="#section_9.2.2">9.2.2. Element substitution group</a></li><li><a href="#section_9.2.3">9.2.3. Attribute declaration</a><ul><li><a href="#section_9.2.3.1">9.2.3.1. Prohibited attribute types</a></li><li><a href="#section_9.2.3.2">9.2.3.2. No attribute value constraints</a></li></ul></li><li><a href="#section_9.2.4">9.2.4. Notation declaration</a></li></ul></li><li><a href="#section_9.3">9.3. Model group components</a><ul><li><a href="#section_9.3.1">9.3.1. Model group</a><ul><li><a href="#section_9.3.1.1">9.3.1.1. Sequence</a></li><li><a href="#section_9.3.1.2">9.3.1.2. Choice</a></li></ul></li><li><a href="#section_9.3.2">9.3.2. Particle</a><ul><li><a href="#section_9.3.2.1">9.3.2.1. Sequence cardinality</a></li><li><a href="#section_9.3.2.2">9.3.2.2. Choice cardinality</a></li></ul></li><li><a href="#section_9.3.3">9.3.3. Attribute use</a></li><li><a href="#section_9.3.4">9.3.4. Wildcard</a></li></ul></li><li><a href="#section_9.4">9.4. Identity-constraint definition components</a></li><li><a href="#section_9.5">9.5. Group definition components</a><ul><li><a href="#section_9.5.1">9.5.1. Model group definition</a></li><li><a href="#section_9.5.2">9.5.2. Attribute group definition</a></li></ul></li><li><a href="#section_9.6">9.6. Annotation components</a><ul><li><a href="#section_9.6.1">9.6.1. Application information annotation</a></li></ul></li><li><a href="#section_9.7">9.7. Schema as a whole</a></li><li><a href="#section_9.8">9.8. Schema assembly</a><ul><li><a href="#section_9.8.1">9.8.1. Namespaces for referenced components are imported</a></li></ul></li></ul></li><li><a href="#section_10">10. Rules for NIEM modeling, by NIEM concept</a><ul><li><a href="#section_10.1">10.1. Categories of NIEM type definitions</a></li><li><a href="#section_10.2">10.2. Object</a><ul><li><a href="#section_10.2.1">10.2.1. General object types</a><ul><li><a href="#section_10.2.1.1">10.2.1.1. Object types with complex content</a></li></ul></li><li><a href="#section_10.2.2">10.2.2. Role types and roles</a></li><li><a href="#section_10.2.3">10.2.3. External adapter types and external components</a><ul><li><a href="#section_10.2.3.1">10.2.3.1. Import of external namespace</a></li><li><a href="#section_10.2.3.2">10.2.3.2. External adapter types</a></li><li><a href="#section_10.2.3.3">10.2.3.3. External attribute use</a></li><li><a href="#section_10.2.3.4">10.2.3.4. External element use</a></li></ul></li><li><a href="#section_10.2.4">10.2.4. Code types</a></li><li><a href="#section_10.2.5">10.2.5. Proxy types</a></li></ul></li><li><a href="#section_10.3">10.3. Associations</a><ul><li><a href="#section_10.3.1">10.3.1. Association types</a></li><li><a href="#section_10.3.2">10.3.2. Association element declarations</a></li></ul></li><li><a href="#section_10.4">10.4. Augmentations</a><ul><li><a href="#section_10.4.1">10.4.1. Augmentable types</a></li><li><a href="#section_10.4.2">10.4.2. Augmentation point element declarations</a></li><li><a href="#section_10.4.3">10.4.3. Augmentation point element use</a></li><li><a href="#section_10.4.4">10.4.4. Augmentation types</a></li><li><a href="#section_10.4.5">10.4.5. Augmentation element declarations</a></li></ul></li><li><a href="#section_10.5">10.5. Metadata</a><ul><li><a href="#section_10.5.1">10.5.1. Metadata types</a></li><li><a href="#section_10.5.2">10.5.2. Metadata element declarations</a></li></ul></li><li><a href="#section_10.6">10.6. Container elements</a></li><li><a href="#section_10.7">10.7. The <q>Representation</q> pattern</a></li><li><a href="#section_10.8">10.8. Naming rules</a><ul><li><a href="#section_10.8.1">10.8.1. Character case</a></li><li><a href="#section_10.8.2">10.8.2. Use of acronyms and abbreviations</a><ul><li><a href="#section_10.8.2.1">10.8.2.1. Use of Acronyms, Initialisms, Abbreviations, and Jargon</a></li></ul></li><li><a href="#section_10.8.3">10.8.3. Word forms</a></li><li><a href="#section_10.8.4">10.8.4. Object-class term</a></li><li><a href="#section_10.8.5">10.8.5. Property term</a></li><li><a href="#section_10.8.6">10.8.6. Qualifier terms</a></li><li><a href="#section_10.8.7">10.8.7. Representation terms</a></li></ul></li><li><a href="#section_10.9">10.9. Machine-readable annotations</a><ul><li><a href="#section_10.9.1">10.9.1. The NIEM appinfo namespace</a><ul><li><a href="#section_10.9.1.1">10.9.1.1. Deprecation</a></li><li><a href="#section_10.9.1.2">10.9.1.2. External adapters</a></li><li><a href="#section_10.9.1.3">10.9.1.3. <code>appinfo:appliesToTypes</code> annotation</a></li><li><a href="#section_10.9.1.4">10.9.1.4. <code>appinfo:appliesToElements</code> annotation</a></li></ul></li><li><a href="#section_10.9.2">10.9.2. Local terminology</a></li></ul></li><li><a href="#section_10.10">10.10. NIEM structural facilities</a></li></ul></li><li><a href="#section_11">11. Rules for NIEM modeling, by XML Schema component</a><ul><li><a href="#section_11.1">11.1. Type definition components</a><ul><li><a href="#section_11.1.1">11.1.1. Type definition hierarchy</a></li><li><a href="#section_11.1.2">11.1.2. Simple type definition</a><ul><li><a href="#section_11.1.2.1">11.1.2.1. Derivation by list</a></li><li><a href="#section_11.1.2.2">11.1.2.2. Derivation by union</a></li><li><a href="#section_11.1.2.3">11.1.2.3. Code simple types</a></li></ul></li><li><a href="#section_11.1.3">11.1.3. Complex type definition</a></li></ul></li><li><a href="#section_11.2">11.2. Declaration components</a><ul><li><a href="#section_11.2.1">11.2.1. Element declaration</a><ul><li><a href="#section_11.2.1.1">11.2.1.1. Object element declarations</a></li></ul></li><li><a href="#section_11.2.2">11.2.2. Element substitution group</a></li><li><a href="#section_11.2.3">11.2.3. Attribute declaration</a></li><li><a href="#section_11.2.4">11.2.4. Notation declaration</a></li></ul></li><li><a href="#section_11.3">11.3. Model group components</a><ul><li><a href="#section_11.3.1">11.3.1. Model group</a></li><li><a href="#section_11.3.2">11.3.2. Particle</a><ul><li><a href="#section_11.3.2.1">11.3.2.1. Element use</a></li></ul></li><li><a href="#section_11.3.3">11.3.3. Attribute use</a><ul><li><a href="#section_11.3.3.1">11.3.3.1. Attribute group use</a></li></ul></li><li><a href="#section_11.3.4">11.3.4. Wildcard</a></li></ul></li><li><a href="#section_11.4">11.4. Identity-constraint definition components</a></li><li><a href="#section_11.5">11.5. Group definition components</a><ul><li><a href="#section_11.5.1">11.5.1. Model group definition</a></li><li><a href="#section_11.5.2">11.5.2. Attribute group definition</a></li></ul></li><li><a href="#section_11.6">11.6. Annotation components</a><ul><li><a href="#section_11.6.1">11.6.1. Human-readable documentation</a><ul><li><a href="#section_11.6.1.1">11.6.1.1. Data definition opening phrases</a><ul><li><a href="#section_11.6.1.1.1">11.6.1.1.1. Element and attribute opening phrases</a></li><li><a href="#section_11.6.1.1.2">11.6.1.1.2. Complex type opening phrases</a></li></ul></li></ul></li></ul></li><li><a href="#section_11.7">11.7. Schema as a whole</a><ul><li><a href="#section_11.7.1">11.7.1. <code>xs:schema</code> document element restrictions</a></li></ul></li><li><a href="#section_11.8">11.8. Schema assembly</a><ul><li><a href="#section_11.8.1">11.8.1. Supporting namespaces are imported as conformant</a></li></ul></li></ul></li><li><a href="#section_12">12. XML instance document rules</a><ul><li><a href="#section_12.1">12.1. The meaning of NIEM data</a></li><li><a href="#section_12.2">12.2. Identifiers and references</a><ul><li><a href="#section_12.2.1">12.2.1. Local identifiers and references</a></li><li><a href="#section_12.2.2">12.2.2. Uniform resource identifiers in NIEM data</a></li><li><a href="#section_12.2.3">12.2.3. Differentiating reference-to-identifier links and use of URIs</a></li><li><a href="#section_12.2.4">12.2.4. Reference and content elements have same meaning</a></li></ul></li><li><a href="#section_12.3">12.3. Property order and sequence identifiers</a></li><li><a href="#section_12.4">12.4. Instance metadata</a></li></ul></li><li><a href="#appendix_A">Appendix A. References</a></li><li><a href="#appendix_B">Appendix B. Structures namespace</a></li><li><a href="#appendix_C">Appendix C. Appinfo namespace</a></li><li><a href="#appendix_D">Appendix D. Index of definitions</a></li><li><a href="#appendix_E">Appendix E. Index of rules</a></li><li><a href="#appendix_F">Appendix F. General index</a></li></ul></div><div class="section"><div class="heading"><a name="d3e106"></a>Table of Figures</div><ul><li><a href="#figure_2-1">Figure 2-1: Normative Schematron namespace declarations</a></li><li><a href="#figure_2-2">Figure 2-2: Example of an XML fragment</a></li><li><a href="#figure_6-1">Figure 6-1: Example of the use of a namespace</a></li><li><a href="#figure_7-1">Figure 7-1: Example of data definition of element <code>nc:Activity</code></a></li><li><a href="#figure_9-1">Figure 9-1: Example of complex type with simple content that claims to have complex content</a></li><li><a href="#figure_10-1">Figure 10-1: An element declaration that constitutes a role without the use of a role type</a></li><li><a href="#figure_10-2">Figure 10-2: Element <code>j:CrashDriver</code>, modeling the role of a driver in a crash</a></li><li><a href="#figure_10-3">Figure 10-3: Role type <code>j:CrashDriverType</code>, modeling a driver involved in a crash</a></li><li><a href="#figure_10-4">Figure 10-4: Declaration of RoleOf element <code>nc:RoleOfPerson</code></a></li><li><a href="#figure_10-5">Figure 10-5: An XML instance of a role type</a></li><li><a href="#figure_10-6">Figure 10-6: Use of external components to create a NIEM-conformant type</a></li><li><a href="#figure_10-7">Figure 10-7: An association in an instance</a></li><li><a href="#figure_10-8">Figure 10-8: A definition of an association type</a></li><li><a href="#figure_10-9">Figure 10-9: Definition of augmentable type <code>nc:PersonType</code></a></li><li><a href="#figure_10-10">Figure 10-10: Declaration of augmentation point element <code>nc:PersonAugmentationPoint</code></a></li><li><a href="#figure_10-11">Figure 10-11: Declaration of augmentation type and element</a></li><li><a href="#figure_10-12">Figure 10-12: An augmentation that is not an augmentation type</a></li><li><a href="#figure_10-13">Figure 10-13: A type used for an augmentation</a></li><li><a href="#figure_10-14">Figure 10-14: Sample use of <code>appinfo:appliesToTypes</code></a></li><li><a href="#figure_10-15">Figure 10-15: A type definition that uses the <q>Representation</q> pattern</a></li><li><a href="#figure_10-16">Figure 10-16: Element declarations that implement representations</a></li><li><a href="#figure_11-1">Figure 11-1: Example of complex type with simple content derived from a simple type</a></li><li><a href="#figure_12-1">Figure 12-1: Example of content elements</a></li><li><a href="#figure_12-2">Figure 12-2: Diagram showing the meaning of XML data</a></li><li><a href="#figure_12-3">Figure 12-3: Example of <code>structures:id</code> and <code>structures:ref</code></a></li><li><a href="#figure_12-4">Figure 12-4: Example of <code>structures:uri</code> holding an absolute URI</a></li><li><a href="#figure_12-5">Figure 12-5: Example of <code>structures:uri</code> holding a relative URI, with an <code>xml:base</code></a></li><li><a href="#figure_12-6">Figure 12-6: Example of <code>structures:uri</code> holding a fragment</a></li><li><a href="#figure_12-7">Figure 12-7: Example of <code>structures:uri</code>, <code>structures:id</code>, and <code>structures:ref</code> identifying the same object.</a></li><li><a href="#figure_12-8">Figure 12-8: Example with no reference</a></li><li><a href="#figure_12-9">Figure 12-9: Example with a backward reference</a></li><li><a href="#figure_12-10">Figure 12-10: Example with a forward reference</a></li><li><a href="#figure_12-11">Figure 12-11: An instance of a name type</a></li><li><a href="#figure_12-12">Figure 12-12: An instance of a name type that uses <code>structures:sequenceID</code></a></li><li><a href="#figure_12-13">Figure 12-13: A simple example of object metadata</a></li><li><a href="#figure_12-14">Figure 12-14: A simple example of relationship metadata</a></li></ul></div><div class="section"><div class="heading"><a name="d3e114"></a>Table of Tables</div><ul><li><a href="#table_4-1">Table 4-1: Codes representing conformance targets</a></li><li><a href="#table_10-1">Table 10-1: Abbreviations used in schema component names</a></li><li><a href="#table_10-2">Table 10-2: Property representation terms</a></li><li><a href="#table_12-1">Table 12-1: Meaning of NIEM XML</a></li></ul></div><div class="section"><div class="heading"><a name="section_1"></a>1. Introduction</div><p>This Naming and Design Rules (NDR) document specifies XML Schema documents for use with the National Information Exchange Model (NIEM). NIEM is an information sharing framework based on the World Wide Web Consortium (W3C) Extensible Markup Language (XML) Schema standard. In February 2005, the U.S. Departments of Justice (DOJ) and Homeland Security (DHS) signed a cooperative agreement to jointly develop NIEM by leveraging and expanding the Global Justice XML Data Model (GJXDM) into multiple domains.</p><p>NIEM is a product of a combined government and industry effort to improve information interoperability and exchange within the United States at federal, state, tribal, and local levels of government. NIEM may have started in the U.S., but its reach does not stop there. International governments and private sector organizations can benefit from the value of NIEM, as well. Communities in Europe, North America, and Australia already use NIEM for their information exchange efforts. NIEM 5.0 represents an initial step toward evolving NIEM to support a more-global exchange environment</p><p>NIEM specifies a set of reusable information components for defining standard information exchange messages, transactions, and documents on a large scale: across multiple communities of interest and lines of business. These reusable components are rendered in XML Schema documents as type, element, and attribute declarations that comply with the W3C XML Schema specification. The resulting reference schemas are available to government practitioners and developers at <a class="url" target="_blank" href="http://niem.gov/">http://niem.gov/</a>.</p><p>The W3C XML Schema standard enables information interoperability and sharing by providing a common language for describing data precisely. The constructs it defines are basic metadata building blocks — baseline data types and structural components. Developers employ these building blocks to describe their own domain-oriented data semantics and structures, as well as structures for specific information exchanges and components for reuse across multiple information exchanges. Rules that profile allowable XML Schema constructs and describe how to use them help ensure that those components are consistent and reusable.</p><p>This document specifies principles and enforceable rules for NIEM data components and schemas. Schemas and components that obey the rules set forth here are considered to be conformant to specific conformance targets. These targets are defined in order that they may be leveraged for comprehensive definitions of NIEM conformance. Such definitions may include more than the level of conformance defined by this NDR, and may include specific patterns of use, additional quality criteria, and requirements to reuse NIEM release schemas.</p><div class="section"><div class="heading"><a name="section-scope"></a><a name="section_1.1"></a>1.1. Scope</div><p>This document was developed to specify NIEM 5.0. Later releases of NIEM may be specified by later versions of this document. The document covers the following issues in depth:</p><ul><li>The underlying NIEM data model</li><li>Guiding principles behind the design of NIEM</li><li>Rules for using XML Schema constructs in NIEM</li><li>Rules for modeling and structuring NIEM-conformant schemas</li><li>Rules for creating NIEM-conformant instances</li><li>Rules for naming NIEM components</li><li>Rules for extending NIEM-conformant components</li></ul><p>This document does NOT address the following:</p><ul><li>A <em>formal</em> definition of the NIEM data model. Such a definition would focus on the Resource Description Framework (RDF) and concepts not strictly required for interoperability. This document instead focuses on definition of schemas that work with the data model, to ensure translatability and interoperability.</li><li>A detailed discussion of NIEM architecture and schema versioning.</li><li>Aggregate artifacts that define information exchanges and models, such as message specifications, information exchange package descriptions (IEPDs) and other forms of model package descriptions (MPDs), information exchange specifications (IESs), and enterprise information exchange models (EIEMs).</li><li>Normative guidance for the location of <a name="d3e228"></a><a href="#definition_schema_document"><span class="termRef">schema documents</span></a> or for schema assembly.</li></ul><p>This document is intended as a technical specification. It is not intended to be a tutorial or a user guide.</p></div><div class="section"><div class="heading"><a name="section_1.2"></a>1.2. Audience</div><p>This document targets practitioners and developers who employ NIEM for information exchange and interoperability. Such information exchanges may be between organizations or within an organization. The NIEM reference schemas provide system implementers much content on which to build specific exchanges. However, there is a need for extended and additional content. The purpose of this document is to define the rules for such new content, so that it will be consistent with the NIEM reference schemas. These rules are intended to establish and, more importantly, enforce a degree of standardization across a broad set of users.</p></div></div><div class="section"><div class="heading"><a name="section_2"></a>2. Document conventions and normative content</div><p>This document uses formatting and syntactic conventions to clarify meaning and avoid ambiguity.</p><div class="section"><div class="heading"><a name="section_2.1"></a>2.1. Document references</div><p>This document relies on references to many outside documents. Such references are noted by bold, bracketed inline terms. For example, a reference to RFC 3986 is shown as <a href="#RFC3986" class="ref">[RFC 3986]</a>. All reference documents are recorded in <a href="#appendix_A">Appendix A, <em>References</em>, below</a>.</p></div><div class="section"><div class="heading"><a name="section_2.2"></a>2.2. Clark notation and qualified names</div><p>This document uses both Clark notation and QName notation to represent qualified names.</p><p>QName notation is defined by <a href="#XMLNamespaces" class="ref">[XML Namespaces]</a> <a target="_blank" href="http://www.w3.org/TR/2009/REC-xml-names-20091208/#NT-QName">Section 4, <em>Qualified Names</em></a>. A QName for the XML Schema string datatype is <code>xs:string</code>. Namespace prefixes used within this specification are listed in <a href="#section_2.3">Section 2.3, <em>Use of namespaces and namespace prefixes</em>, below</a>.</p><p>This document sometimes uses Clark notation to represent qualified names in normative text. Clark notation is described by <a href="#ClarkNS" class="ref">[ClarkNS]</a>, and provides the information in a QName without the need to first define a namespace prefix, and then to reference that namespace prefix. A Clark notation representation for the qualified name for the XML Schema string datatype is <code>{http://www.w3.org/2001/XMLSchema}string</code>.</p><p>Each Clark notation value usually consists of a namespace URI surrounded by curly braces, concatenated with a local name. The exception to this is when Clark notation is used to represent the qualified name for an attribute with no namespace, which is ambiguous when represented using QName notation. For example, the element <code>targetNamespace</code>, which has no [namespace name] property, is represented in Clark notation as <code>{}targetNamespace</code>.</p></div><div class="section"><div class="heading"><a name="section-use-of-namespaces"></a><a name="section_2.3"></a>2.3. Use of namespaces and namespace prefixes</div><p>The following namespace prefixes are used consistently within this specification. These prefixes are not normative; this document issues no requirement that these prefixes be used in any conformant artifact. Although there is no requirement for a schema or XML document to use a particular namespace prefix, the meaning of the following namespace prefixes have fixed meaning in this document.</p><ul><li><code>xs</code>: The namespace for the XML Schema definition language as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> and <a href="#XMLSchema-2" class="ref">[XML Schema Datatypes]</a>, <q><code>http://www.w3.org/2001/XMLSchema</code></q>.</li><li><code>xsi</code>: The XML Schema instance namespace, defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Instance_Document_Constructions">Section 2.6, <em>Schema-Related Markup in Documents Being Validated</em></a>, for use in XML documents, <q><code>http://www.w3.org/2001/XMLSchema-instance</code></q>.</li><li><code>sch</code>: The Schematron namespace, as defined by <a href="#Schematron" class="ref">[Schematron]</a>, <q><code>http://purl.oclc.org/dsdl/schematron</code></q>.</li><li><code>nf</code>: The namespace defined by this specification for XPath functions, <q><code>http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#NDRFunctions</code></q>.</li><li><code>ct</code>: The namespace defined by <a href="#CTAS" class="ref">[CTAS]</a> for the <code>conformanceTargets</code> attribute, <q><code>http://release.niem.gov/niem/conformanceTargets/3.0/</code></q>.</li><li><code>appinfo</code>: The namespace for the <a name="d3e392"></a><a href="#definition_appinfo_namespace"><span class="termRef">appinfo namespace</span></a>, <q><code>http://release.niem.gov/niem/appinfo/5.0/</code></q>.</li><li><code>structures</code>: The namespace for the <a name="d3e405"></a><a href="#definition_structures_namespace"><span class="termRef">structures namespace</span></a>, <q><code>http://release.niem.gov/niem/structures/5.0/</code></q>.</li></ul><p>In addition to the prefixes above, the prefix <code>example</code> is used for XML examples, denoting a user-defined namespace, such as might be defined by an information exchange specification.</p></div><div class="section"><div class="heading"><a name="SectionNormativeAndInformativeContent"></a><a name="section_2.4"></a>2.4. Normative and informative content</div><p>This document includes a variety of content. Some content of this document is <a name="d3e428"></a><a href="#definition_normative"><span class="termRef">normative</span></a>, while other content is <a name="d3e431"></a><a href="#definition_informative"><span class="termRef">informative</span></a>. In general, the informative material appears as supporting text, description, and rationales for the normative material.</p><div class="box"><div class="normativeHead"><a name="definition_normative"></a>[Definition: <dfn>normative</dfn>]</div><div class="sub"><p>The term <q>normative</q> is as defined by <a href="#ConfReq" class="ref">[ConfReq]</a> Section 7.2, <em>Conformance by key words</em>, which states:</p><blockquote><p>NORMATIVE — statements provided for the prescriptive parts of the specification, providing that which is necessary in order to be able to claim conformance to the specification.</p></blockquote></div></div><div class="box"><div class="normativeHead"><a name="definition_informative"></a>[Definition: <dfn>informative</dfn>]</div><div class="sub"><p>The term <q>informative</q> is as defined by <a href="#ConfReq" class="ref">[ConfReq]</a> Section 7.2, <em>Conformance by key words</em>, which states:</p><blockquote><p>INFORMATIVE (NON-NORMATIVE) — statements provided for informational purposes, intended to assist the understanding or use of the specification and shall not contain provisions that are required for conformance.</p></blockquote></div></div><p>Conventions used within this document include:</p><div class="box"><div class="normativeHead"><a name="d3e483"></a>[Definition: <term>]</div><div class="sub"><p>A formal definition of a term associated with NIEM.</p></div></div><p>Definitions are <a name="d3e491"></a><a href="#definition_normative"><span class="termRef">normative</span></a>. Uses of these terms are given special formatting, using raised dots to identify the term, for example this use of the term <a name="d3e494"></a><a href="#definition_conformance_target"><span class="termRef">conformance target</span></a>.</p><div class="box"><div class="normativeHead">[Principle <number>]</div><div class="sub"><p>A guiding principle for NIEM.</p></div></div><p>The principles represent requirements, concepts, and goals that have helped shape NIEM. Principles are informative, not normative, but act as the basis on which the rules are defined.</p><p>Accompanying each principle is a short discussion that justifies the application of the principle to NIEM design.</p><p>Principles are numbered in the order in which they appear in the document.</p><div class="section"><div class="heading"><a name="section-rules"></a><a name="section_2.4.1"></a>2.4.1. Rules</div><p>A rule states a specific requirement on an artifact or on the interpretation of an artifact. The classes of artifacts are identified by <a name="d3e521"></a><a href="#definition_conformance_target"><span class="termRef">conformance targets</span></a> that are enumerated by this document in <a href="#section_4.1">Section 4.1, <em>Conformance targets defined</em>, below</a>. The rules are normative. Human-readable text in rules uses <a href="#BCP14" class="ref">[BCP 14]</a> terminology as described in <a href="#section_3.1">Section 3.1, <em>IETF Best Current Practice 14 terminology</em>, below,</a> for normative requirements and recommendations.</p><div class="box"><div class="normativeHead">[Rule <section>-<number>] (<applicability>) (<classification>)</div><p>An enforceable rule for NIEM.</p></div><p>Each rule has a <em>classification</em>, which is either <q>Constraint</q> or <q>Interpretation</q>. If the classification is <q>Constraint</q>, then the rule is a <a name="d3e551"></a><a href="#definition_constraint_rule"><span class="termRef">constraint rule</span></a>. If the classification is <q>Interpretation</q>, then the rule is an <a name="d3e558"></a><a href="#definition_interpretation_rule"><span class="termRef">interpretation rule</span></a>.</p><div class="box"><div class="normativeHead"><a name="definition_constraint_rule"></a>[Definition: <dfn>constraint rule</dfn>]</div><div class="sub"><p>A <strong>constraint rule</strong> is a rule that sets a requirement on an artifact with respect to its conformance to a <a name="d3e569"></a><a href="#definition_conformance_target"><span class="termRef">conformance target</span></a>.</p></div></div><div class="box"><div class="normativeHead"><a name="definition_interpretation_rule"></a>[Definition: <dfn>interpretation rule</dfn>]</div><div class="sub"><p>An <strong>interpretation rule</strong> is a rule that sets the methodology, pattern, or procedure for understanding some aspect of an instance of a conformance target.</p></div></div><p>Each rule identifies its <em>applicability</em>. This identifies the conformance targets to which the rule applies. Each entry in the list is a code from <a href="#table_4-1">Table 4-1, <em>Codes representing conformance targets</em>, below</a>. If a code appears in the applicability list for a rule, then the rule applies to the corresponding conformance target. The conformance targets are defined in <a href="#section_4">Section 4, <em>Conformance targets</em>, below</a>. For example, a rule with applicability <q>(REF, EXT)</q> would be applicable to a <a name="d3e596"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a>, as well as to an <a name="d3e600"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>.</p><p>Rules are stated with the help of XML Infoset terminology (e.g., elements and attributes), as described by <a href="#section_3.3">Section 3.3, <em>XML Information Set terminology</em>, below</a>, and XML Schema terminology (e.g., schema components), as described by <a href="#section_3.4">Section 3.4, <em>XML Schema terminology</em>, below</a>. The choice of terminology is driven by which terms best express a concept. Certain concepts are more clearly expressed using XML Infoset terms items, others using XML Schema terms; still others are best expressed using a combination of terminology drawn from each standard.</p><p>Rules are numbered according to the section in which they appear and the order in which they appear within that section. For example, the first rule in Section 7 is Rule 7-1.</p></div><div class="section"><div class="heading"><a name="section_2.4.2"></a>2.4.2. Use of normative Schematron</div><p>This document defines many normative rules using Schematron rule-based validation syntax, as defined by <a href="#Schematron" class="ref">[Schematron]</a>. For example, see <a href="#rule_9-29">Rule 9-29, <em>Complex type content is explicitly simple or complex</em> (REF, EXT), below</a>. Effort has been made to make the rules precise and unambiguous. Very detailed text descriptions of rules can introduce ambiguity, and they are not directly executable by users. Providing NDR rules that are expressed as Schematron rules ensures that the rules are precise, and that they are directly executable through commercially-available and free tools.</p><p>Many rules herein do not have executable Schematron supporting them. Some are not fit for automatic validation, and others may be difficult or cumbersome to express in Schematron. In neither case are such rules any less normative. A rule that has no Schematron is just as normative as a rule that does have Schematron. The level of requirements and recommendations within a rule is expressed using terminology from <a href="#BCP14" class="ref">[BCP 14]</a> as described in <a href="#section_3.1">Section 3.1, <em>IETF Best Current Practice 14 terminology</em>, below</a>.</p><p>The Schematron rules are written using XPath2 as defined by <a href="#XPath2" class="ref">[XPath 2]</a>. These executable rules are normative.</p><p>An execution of a Schematron pattern that issues a failed assertion (represented via <code>sch:assert</code>) represents a validation error, and signifies that the assessed artifact violates a requirement (i.e., a <q>MUST</q>) of a conformance rule. An example of a constraint rule that uses Schematron is <a href="#rule_9-10">Rule 9-10, <em>Simple type definition is top-level</em> (REF, EXT), below</a>.</p><p>An execution of a Schematron pattern that issues a report (represented via <code>sch:report</code>) indicates a warning. This may be an indication that an automated rule has found that the assessed artifact violates a recommendation of the specification (i.e., a <q>SHOULD</q>, rather than a <q>MUST</q>), and that attention should be paid to ensure that the artifact maintains the spirit of the specification. For example, see <a href="#rule_10-42">Rule 10-42, <em>Name of element that ends in <q>Representation</q> is abstract</em> (REF, EXT), below</a>.</p><p>In addition to the exclusive use of <code>sch:report</code> for warnings, this document annotates <code>sch:report</code> elements with attribute <code>role="warning"</code>, which is interpreted by some Schematron platforms to indicate that a failure indicates a warning, rather than an error.</p><p>In either case, a diagnostic report generated by testing an XML document against the Schematron rules may identify specific locations (e.g., line numbers) within the document that need further attention.</p></div><div class="section"><div class="heading"><a name="section-normative-xpath-functions"></a><a name="section_2.4.3"></a>2.4.3. Normative XPath functions</div><p>The Schematron within this document is supported by functions, to make the rules more comprehensible, and to abstract away process-specific operations. Each function has a normative XPath interface and a normative text definition. Any implementation provided for these functions should be considered informative, not normative, but may be useful for certain implementations of the rules.</p><p>The following XPath functions are defined normatively when used within Schematron by this specification:</p><ul><li><pre>nf:get-document-element($context as element()) as element()</pre><p>Yields the document element of the XML document in which <code>$context</code> occurs.</p><p>This function provides the ability for a validator to consolidate multiple XML Schema documents and XML instance documents into a single XML document, which may simplify validation, and allow for preprocessing of <code>xs:include</code> elements.</p></li><li><pre>nf:get-target-namespace($element as element()) as xs:anyURI?</pre><p>Yields the target namespace of the XML Schema document in which <var>$element</var> appears. If it is a <a name="d3e721"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> with no target namespace defined, then it yields the zero-length <code>xs:anyURI</code> value (<code>xs:anyURI('')</code>). If the <a name="d3e730"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> in which <var>$element</var> appears is not a <a name="d3e737"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a>, then the function yields the empty sequence (<code>()</code>).</p></li><li><pre>nf:resolve-namespace($context as element(), $namespace-uri as xs:anyURI) as element(xs:schema)?</pre><p>Yields the document element of the first available <a name="d3e752"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> that has the target namespace <var>$namespace-uri</var>. If there is no such <a name="d3e758"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> available, it yields the empty sequence (<code>()</code>).</p></li><li><pre>nf:resolve-type($context as element(), $qname as xs:QName) as element()?</pre><p>Yields the first occurrence of an element <code>xs:simpleType</code> or <code>xs:complexType</code> that defines a type with a {target namespace} and {name} matching <var>$qname</var>, that is a [child] of the element yielded by <code>nf:resolve-namespace()</code>, above. If there is no such occurrence, it yields the empty sequence (<code>()</code>).</p></li><li><pre>nf:resolve-element($context as element(), $qname as xs:QName) as element(xs:element)?</pre><p>Yields the first occurrence of an element <code>xs:element</code> that declares an element with a {target namespace} and {name} matching <var>$qname</var>, that is a [child] of the element yielded by <code>nf:resolve-namespace()</code>, above. If there is no occurrence available, it yields the empty sequence. (<code>()</code>)</p></li><li><pre>nf:has-effective-conformance-target-identifier($context as element(), $match as xs:anyURI) as xs:boolean</pre><p>Yields true if and only if an <a name="d3e819"></a><a href="#definition_effective_conformance_target_identifier"><span class="termRef">effective conformance target identifier</span></a> of the XML document containing <var>$context</var> is <var>$match</var>.</p></li></ul></div><div class="section"><div class="heading"><a name="section_2.4.4"></a>2.4.4. Normative Schematron namespace declarations</div><p>The following Schematron namespace declarations are normative for the Schematron rules and supporting Schematron code within this specification:</p><div class="figure"><div class="caption"><a name="figure_2-1"></a>Figure 2-1: Normative Schematron namespace declarations</div><div class="box"><pre><sch:ns prefix="xs" uri="http://www.w3.org/2001/XMLSchema"/>
<sch:ns prefix="xsl" uri="http://www.w3.org/1999/XSL/Transform"/>
<sch:ns prefix="nf" uri="http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#NDRFunctions"/>
<sch:ns prefix="ct" uri="http://release.niem.gov/niem/conformanceTargets/3.0/"/>
<sch:ns prefix="xsi" uri="http://www.w3.org/2001/XMLSchema-instance"/>
<sch:ns prefix="appinfo" uri="http://release.niem.gov/niem/appinfo/5.0/"/>
<sch:ns prefix="structures" uri="http://release.niem.gov/niem/structures/5.0/"/></pre></div></div><p>Note that the binding of the prefix <code>xml</code> to the XML namespace (<q><code>http://www.w3.org/XML/1998/namespace</code></q>) is implicit.</p></div></div><div class="section"><div class="heading"><a name="section_2.5"></a>2.5. Additional formatting</div><p>In addition to the special formatting above, this document uses additional formatting conventions.</p><p>[square brackets]: Terms in plain [square brackets] are properties of XML information set information items, as defined by <a href="#XMLInfoset" class="ref">[XML Infoset]</a>. The information items and many of the information items’ properties are defined in that document. <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> defines additional information item properties that are contributed by validation of an <a name="d3e894"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> against an <a name="d3e897"></a><a href="#definition_XML_Schema"><span class="termRef">XML Schema</span></a>.</p><p>{curly brackets}: Terms in plain {curly brackets} are properties of <a name="d3e903"></a><a href="#definition_schema_component"><span class="termRef">schema components</span></a>, as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a>.</p><p><code>Courier</code>: All words appearing in <code>Courier</code> font are values, objects, keywords, or literal XML text.</p><p><em>Italics</em>: A phrase appearing in <em>italics</em> is one of:</p><ul><li>a title of a section of document or a rule,</li><li>a locally-defined term, often one that is not normatively defined, or</li><li>is emphasized for importance or prominence.</li></ul><p><strong>Bold</strong>: A phrase appearing in <strong>bold</strong> is one of:</p><ul><li>a term being defined within a definition,</li><li>a term that was bold in the original source text for a quote</li><li>a heading, such as for a section, a figure, a principle, definition, or rule, or</li><li>a cross-reference within the document, to a reference to an outside document, or to a normative heading.</li></ul><p>Throughout the document, fragments of XML Schema or XML instances are used to clarify a principle or rule. These fragments are specially formatted in <code>Courier</code> font and appear in text boxes. An example of such a fragment follows:</p><div class="figure"><div class="caption"><a name="figure_2-2"></a>Figure 2-2: Example of an XML fragment</div><div class="box"><pre><xs:complexType name="PersonType">
...
</xs:complexType></pre></div></div></div></div><div class="section"><div class="heading"><a name="section_3"></a>3. Terminology</div><p>This document uses standard terminology from other standards to explain the principles and rules that describe NIEM. In addition, it defines terms related to these other standards. This section enumerates this externally-dependent terminology.</p><div class="section"><div class="heading"><a name="section-terminology-bcp-14"></a><a name="section_3.1"></a>3.1. IETF Best Current Practice 14 terminology</div><p>The key words <q>MUST</q>, <q>MUST NOT</q>, <q>REQUIRED</q>, <q>SHALL</q>, <q>SHALL NOT</q>, <q>SHOULD</q>, <q>SHOULD NOT</q>, <q>RECOMMENDED</q>, <q>NOT RECOMMENDED</q>, <q>MAY</q>, and <q>OPTIONAL</q> in this document are to be interpreted as described in <a href="#BCP14" class="ref">[BCP 14]</a> <a href="#RFC2119" class="ref">[RFC 2119]</a> <a href="#RFC8174" class="ref">[RFC 8174]</a> when, and only when, they appear in all capitals, as shown here.</p></div><div class="section"><div class="heading"><a name="section_3.2"></a>3.2. XML terminology</div><div class="box"><div class="normativeHead"><a name="definition_XML_document"></a>[Definition: <dfn>XML document</dfn>]</div><div class="sub"><p>The term <q>XML document</q> is as defined by <a href="#XML" class="ref">[XML]</a> <a target="_blank" href="http://www.w3.org/TR/2008/REC-xml-20081126/#dt-xml-doc">Section 2, <em>Documents</em></a>, which states:</p><blockquote><p>A data object is an XML document if it is well-formed, as defined in this specification. In addition, the XML document is valid if it meets certain further constraints.</p></blockquote></div></div></div><div class="section"><div class="heading"><a name="SectionTerminologyXMLInfoset"></a><a name="section_3.3"></a>3.3. XML Information Set terminology</div><p>When discussing XML documents, this document uses terminology and language as defined by <a href="#XMLInfoset" class="ref">[XML Infoset]</a>.</p><p><a href="#XMLInfoset" class="ref">[XML Infoset]</a> uses the term <q>information item</q> to describe pieces of XML documents. Documents, elements, and attributes are types of information items. The use of the term <q>element information item</q>, for example, refers to the term as defined by <a href="#XMLInfoset" class="ref">[XML Infoset]</a>. Shorthand terms may also be used to refer to information items, such as <a name="d3e1092"></a><a href="#definition_element"><span class="termRef">element</span></a>, as defined below. The information items are identified and defined by <a href="#XMLInfoset" class="ref">[XML Infoset]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem">Section 2, <em>Information Items</em></a>.</p><div class="box"><div class="normativeHead"><a name="definition_element"></a>[Definition: <dfn>element</dfn>]</div><div class="sub"><p>An <em>element</em> is an <em>element information item</em>, as defined by <a href="#XMLInfoset" class="ref">[XML Infoset]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.element">Section 2.2, <em>Element Information Items</em></a></p></div></div><div class="box"><div class="normativeHead"><a name="definition_attribute"></a>[Definition: <dfn>attribute</dfn>]</div><div class="sub"><p>An <em>attribute</em> is an <em>attribute information item</em>, as defined by <a href="#XMLInfoset" class="ref">[XML Infoset]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.element">Section 2.3, <em>Attribute Information Items</em></a></p></div></div><p><a href="#XMLInfoset" class="ref">[XML Infoset]</a> also describes properties of information items. Each class of information item carries a set of properties. Each property has a name, and the property is identified by putting the name into square brackets. For example, the element that contains an attribute is described as the [owner element] of an attribute information item, as defined in <a href="#XMLInfoset" class="ref">[XML Infoset]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xml-infoset-20040204/#infoitem.attribute">Section 2.3, <em>Attribute Information Items</em></a>.</p><p>Shorthand terms for properties of information items include:</p><ul><li>parent (of an element): the value of the [parent] property of an element information item</li><li>child (of an element): a member of the list of information items that is the value of the [children] property of an element information item</li><li>owner (of an attribute): the value of the [owner element] property of an attribute information item</li><li><a name="definition_document_element"></a><dfn>document element</dfn>: the value of the [document element] property of a document information item; preferred over the term <q>root element</q>.</li></ul></div><div class="section"><div class="heading"><a name="SectionTerminologyXMLSchema"></a><a name="section_3.4"></a>3.4. XML Schema terminology</div><p>This document uses many terms from <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> and <a href="#XMLSchema-2" class="ref">[XML Schema Datatypes]</a> in a normative way.</p><div class="box"><div class="normativeHead"><a name="definition_schema_component"></a>[Definition: <dfn>schema component</dfn>]</div><div class="sub"><p>The term <q>schema component</q> is as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-component">Section 2.2, <em>XML Schema Abstract Data Model</em></a>, which states:</p><blockquote><p><strong>Schema component</strong> is the generic term for the building blocks that comprise the abstract data model of the schema.</p></blockquote></div></div><p>Note that this defines an abstract concept. This is not a direct reference to elements that are defined by the <a name="d3e1219"></a><a href="#definition_XML_Schema_definition_language"><span class="termRef">XML Schema definition language</span></a>; this is an abstract concept that might be realized within a tool as an in-memory model of data objects.</p><div class="box"><div class="normativeHead"><a name="definition_XML_Schema"></a>[Definition: <dfn>XML Schema</dfn>]</div><div class="sub"><p>The term <q>XML Schema</q> is as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-schema">Section 2.2, <em>XML Schema Abstract Data Model</em></a>, which states:</p><blockquote><p>An <strong>XML Schema</strong> is a set of schema components.</p></blockquote></div></div><p>Note, again, that this is an abstract concept: the set of abstract <a name="d3e1251"></a><a href="#definition_schema_component"><span class="termRef">schema components</span></a> that are put together to define a schema against which an XML document might be validated.</p><div class="box"><div class="normativeHead"><a name="definition_XML_Schema_definition_language"></a>[Definition: <dfn>XML Schema definition language</dfn>]</div><div class="sub"><p>The term <q>XML Schema definition language</q> is as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#abstract">subsection <em>Abstract</em></a>, which states:</p><blockquote><p>XML Schema: Structures specifies the XML Schema definition language, which offers facilities for describing the structure and constraining the contents of XML 1.0 documents, including those which exploit the XML Namespace facility. The schema language, which is itself represented in XML 1.0 and uses namespaces, substantially reconstructs and considerably extends the capabilities found in XML 1.0 document type definitions (DTDs).</p></blockquote></div></div><p>This describes the XML syntax (and related semantics) defined by the XML Schema specifications. It is through the <a name="d3e1279"></a><a href="#definition_XML_Schema_definition_language"><span class="termRef">XML Schema definition language</span></a> that a complex type definition schema component is created using the <code>xs:complexType</code> element.</p><div class="box"><div class="normativeHead"><a name="definition_schema_document"></a>[Definition: <dfn>schema document</dfn>]</div><div class="sub"><p>The term <q>schema document</q> is as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-schemaDoc">Section 3.1.2, <em>XML Representations of Components</em></a>, which states:</p><blockquote><p>A document in this form (i.e. a <schema> element information item) is a <strong>schema document</strong>.</p></blockquote></div></div><p>This definition describes an <a name="d3e1313"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> that follows the syntax of the <a name="d3e1316"></a><a href="#definition_XML_Schema_definition_language"><span class="termRef">XML Schema definition language</span></a>.</p><div class="box"><div class="normativeHead"><a name="definition_valid"></a>[Definition: <dfn>valid</dfn>]</div><div class="sub"><p>The term <q>valid</q> is as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-vn">Section 2.1, <em>Overview of XML Schema</em></a>, which states:</p><blockquote><p>[Definition:] the word <strong>valid</strong> and its derivatives are used to refer to clause 1 above, the determination of local schema-validity.</p></blockquote><p>The referenced clause 1 is a part of a description of schema-validity:</p><blockquote><p>Schema-validity assessment has two aspects:</p><ol><li>Determining local schema-validity, that is whether an element or attribute information item satisfies the constraints embodied in the relevant components of an XML Schema;</li><li>Synthesizing an overall validation outcome for the item, combining local schema-validity with the results of schema-validity assessments of its descendants, if any, and adding appropriate augmentations to the infoset to record this outcome.</li></ol></blockquote></div></div><p>In addition, this specification locally defines terms relevant to XML Schema concepts:</p><div class="box"><div class="normativeHead"><a name="definition_instance_document"></a>[Definition: <dfn>instance document</dfn>]</div><div class="sub"><p>An <em>instance document</em> (of an <a name="d3e1376"></a><a href="#definition_XML_Schema"><span class="termRef">XML Schema</span></a>) is an <a name="d3e1379"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> that is <a name="d3e1382"></a><a href="#definition_valid"><span class="termRef">valid</span></a> against the <a name="d3e1385"></a><a href="#definition_XML_Schema"><span class="termRef">XML Schema</span></a>.</p></div></div><p>The term <q>instance document</q> is used with <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a>, but is not defined therein.</p><div class="box"><div class="normativeHead"><a name="definition_XML_Schema_document_set"></a>[Definition: <dfn>XML Schema document set</dfn>]</div><div class="sub"><p>An <em>XML Schema document set</em> is a set of <a name="d3e1405"></a><a href="#definition_schema_document"><span class="termRef">schema documents</span></a> that together define an <a name="d3e1408"></a><a href="#definition_XML_Schema"><span class="termRef">XML Schema</span></a> suitable for assessing the <a name="d3e1411"></a><a href="#definition_valid"><span class="termRef">validity</span></a> of an <a name="d3e1414"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a>.</p></div></div><p>Schema assembly is a tricky topic that is not resolved by this document. Other specifications may express specifics about the process of turning a set of <a name="d3e1421"></a><a href="#definition_schema_document"><span class="termRef">schema documents</span></a> into an <a name="d3e1424"></a><a href="#definition_XML_Schema"><span class="termRef">XML Schema</span></a>. Methods used may include use of tool-specific schema caches and mappings, use of XML catalogs and entity resolvers, use of <code>schemaLocation</code> attributes on <code>xs:import</code> elements, and <code>xsi:schemaLocation</code> attributes in XML documents, among others. The topic of schema assembly is discussed in <a href="#section_6.2.10">Section 6.2.10, <em>Schema locations provided in schema documents are hints</em>, below</a>. This specification abstracts away details of schema assembly through the use of XPath functions described by <a href="#section_2.4.3">Section 2.4.3, <em>Normative XPath functions</em>, above</a>.</p><div class="section"><div class="heading"><a name="section_3.4.1"></a>3.4.1. Schema components</div><p>In this document, the name of a referenced schema component may appear without the suffix <q>schema component</q> to enhance readability of the text. For example, the term <q>complex type definition</q> may be used instead of <q>complex type definition schema component</q>.</p><div class="box"><div class="normativeHead"><a name="definition_base_type_definition"></a>[Definition: <dfn>base type definition</dfn>]</div><div class="sub"><p>The term <q>base type definition</q> is as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-baseTypeDefinition">Section 2.2.1.1, <em>Type Definition Hierarchy</em></a>, which states:</p><blockquote><p>A type definition used as the basis for an extension or restriction is known as the base type definition of that definition.</p></blockquote></div></div><div class="box"><div class="normativeHead"><a name="definition_simple_type_definition"></a>[Definition: <dfn>simple type definition</dfn>]</div><div class="sub"><p>The term <q>simple type definition</q> is as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Simple_Type_Definition">Section 2.2.1.2, <em>Simple Type Definition</em></a>.</p></div></div><div class="box"><div class="normativeHead"><a name="definition_complex_type_definition"></a>[Definition: <dfn>complex type definition</dfn>]</div><div class="sub"><p>The term <q>complex type definition</q> is as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Complex_Type_Definition">Section 2.2.1.3, <em>Complex Type Definition</em></a>.</p></div></div><div class="box"><div class="normativeHead"><a name="definition_element_declaration"></a>[Definition: <dfn>element declaration</dfn>]</div><div class="sub"><p>The term <q>element declaration</q> is as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Element_Declaration">Section 2.2.2.1, <em>Element Declaration</em></a>.</p></div></div></div><div class="section"><div class="heading"><a name="section_3.4.2"></a>3.4.2. Schema information set contributions</div><p>As described in <a href="#section_3.3">Section 3.3, <em>XML Information Set terminology</em>, above</a>, the XML Information Set specification defined properties of the content of XML documents. The XML Schema specification also provides properties of the content of XML documents. These properties are called Schema information set contribution, as described by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#gloss-sic">Section 2.3, <em>Constraints and Validation Rules</em></a>, which defines them as:</p><blockquote><p>Augmentations to post-schema-validation infosets expressed by schema components, which follow as a consequence of validation and/or assessment.</p></blockquote><p>This document uses these property terms within definitions and other text. Terms used include:</p><ul><li><a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#e-type_definition">[type definition] (of an element)</a>: The type of the element as determined at run-time. This will reflect the use of the attribute <code>xsi:type</code> in an XML document.</li></ul></div></div><div class="section"><div class="heading"><a name="section_3.5"></a>3.5. XML Namespaces terminology</div><p>This document uses XML Namespaces as defined by <a href="#XMLNamespaces" class="ref">[XML Namespaces]</a>.</p></div><div class="section"><div class="heading"><a name="section_3.6"></a>3.6. Conformance Targets Attribute Specification terminology</div><p><a href="#CTAS" class="ref">[CTAS]</a> defines several terms used normatively within this specification.</p><div class="box"><div class="normativeHead"><a name="definition_conformance_target"></a>[Definition: <dfn>conformance target</dfn>]</div><div class="sub"><p>The term <q>conformance target</q> is as defined by <a href="#CTAS" class="ref">[CTAS]</a>, which states:</p><blockquote><p>A <em>conformance target</em> is a class of artifact, such as an interface, protocol, document, platform, process or service, that is the subject of conformance clauses and normative statements. There may be several conformance targets defined within a specification, and these targets may be diverse so as to reflect different aspects of a specification. For example, a protocol message and a protocol engine may be different conformance targets.</p></blockquote></div></div><div class="box"><div class="normativeHead"><a name="definition_conformance_target_identifier"></a>[Definition: <dfn>conformance target identifier</dfn>]</div><div class="sub"><p>The term <q>conformance target identifier</q> is as defined by <a href="#CTAS" class="ref">[CTAS]</a>, which states:</p><blockquote><p>A <em>conformance target identifier</em> is an internationalized resource identifier that uniquely identifies a conformance target.</p></blockquote></div></div><div class="box"><div class="normativeHead"><a name="definition_effective_conformance_target_identifier"></a>[Definition: <dfn>effective conformance target identifier</dfn>]</div><div class="sub"><p>The term <q>effective conformance target identifier</q> is as defined by <a href="#CTAS" class="ref">[CTAS]</a> <a target="_blank" href="http://reference.niem.gov/niem/specification/conformance-targets-attribute/3.0/NIEM-CTAS-3.0-2014-07-31.html#definition_effective_conformance_target_identifier">Section 4, <em>Semantics and Use</em></a>, which states:</p><blockquote><p>An <em>effective conformance target identifier</em> of a conformant document is an internationalized resource identifier reference that occurs in the document’s effective conformance targets attribute.</p></blockquote></div></div></div></div><div class="section"><div class="heading"><a name="SectionNIEMConformanceTargets"></a><a name="section_4"></a>4. Conformance targets</div><div class="section"><div class="heading"><a name="SectionConformanceTargetsDefined"></a><a name="section_4.1"></a>4.1. Conformance targets defined</div><p>This section defines and describes conformance targets of this specification. Each conformance target has a formal definition, along with a notional description of the characteristics and intent of each. These include:</p><ul><li><a href="#section_4.1.1">Section 4.1.1, <em>Reference schema document</em></a></li><li><a href="#section_4.1.2">Section 4.1.2, <em>Extension schema document</em></a></li><li><a href="#section_4.1.3">Section 4.1.3, <em>Schema document set</em></a></li><li><a href="#section_4.1.4">Section 4.1.4, <em>Instance documents and elements</em></a></li></ul><div class="section"><div class="heading"><a name="section_4.1.1"></a>4.1.1. Reference schema document</div><div class="box"><div class="normativeHead"><a name="definition_reference_schema_document"></a>[Definition: <dfn>reference schema document</dfn>]</div><div class="sub"><p>A <strong>reference schema document</strong> is a <a name="d3e1685"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> that is intended to provide the authoritative definitions of broadly reusable <a name="d3e1688"></a><a href="#definition_schema_component"><span class="termRef">schema components</span></a>. It is a <a name="d3e1691"></a><a href="#definition_conformance_target"><span class="termRef">conformance target</span></a> of this specification. A reference schema document MUST conform to all rules of this specification that apply to this conformance target. An <a name="d3e1694"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> with a <a name="d3e1698"></a><a href="#definition_conformance_target_identifier"><span class="termRef">conformance target identifier</span></a> of <code>http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ReferenceSchemaDocument</code> MUST be a conformant reference schema document.</p></div></div><p>A <a name="d3e1708"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> is a <a name="d3e1711"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> that is intended to be the authoritative definition schema for a namespace. Examples include NIEM Core and NIEM domains.</p><p>Some characteristics of a <a name="d3e1717"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a>:</p><ul><li>It is explicitly designated as a reference schema via the conformance targets attribute, per <a href="#rule_4-5">Rule 4-5, <em>Schema claims reference schema conformance target</em> (REF), below</a>.</li><li>It provides the broadest, most fundamental definitions of components in its namespace.</li><li>It provides the authoritative definition of business semantics for components in its namespace.</li><li>It is intended to serve as the basis for components in information exchanges and extension schema documents.</li><li>It satisfies all rules specified in the Naming and Design Rules for reference schemas.</li></ul><p>Any schema that defines components that are intended to be incorporated into NIEM Core or a NIEM domain will be defined as a reference schema.</p><p>The rules for reference schema documents are more stringent than are the rules for other classes of NIEM-conformant schemas. Reference schema documents are intended to support the broadest reuse. They are very uniform in their structure. As they are the primary definitions for schema components, they do not need to restrict other data definitions, and they are not allowed to use XML Schema’s restriction mechanism (e.g., <a href="#rule_9-30">Rule 9-30, <em>Complex content uses extension</em> (REF), below</a>). Reference schema documents are intended to be as regular and simple as possible.</p><p>Many reference schemas are <strong>optional and over-inclusive</strong>. Data definitions in namespaces defined by reference schemas are designed with parts that are intended to be omitted or refined as needed for a particular exchange. Many reference schemas define more complex types than any individual exchange will need and define complex types that have more properties, with broader cardinality, than an individual exchange will need. Data definitions within reference schemas are designed to be a basis that is refined and specialized for a particular exchange. Developers of information exchanges are expected to subset, profile, and extend reference schemas to construct precise data definitions to match their information exchange requirements.</p></div><div class="section"><div class="heading"><a name="section_4.1.2"></a>4.1.2. Extension schema document</div><div class="box"><div class="normativeHead"><a name="definition_extension_schema_document"></a>[Definition: <dfn>extension schema document</dfn>]</div><div class="sub"><p>An <strong>extension schema document</strong> is a <a name="d3e1775"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> that is intended to provide definitions of <a name="d3e1778"></a><a href="#definition_schema_component"><span class="termRef">schema components</span></a> that are intended for reuse within a more narrow scope than those defined by a <a name="d3e1781"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a>. It is a <a name="d3e1784"></a><a href="#definition_conformance_target"><span class="termRef">conformance target</span></a> of this specification. An extension schema document MUST conform to all rules of this specification that apply to this conformance target. An XML document with a <a name="d3e1788"></a><a href="#definition_conformance_target_identifier"><span class="termRef">conformance target identifier</span></a> of <code>http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ExtensionSchemaDocument</code> MUST be an extension schema document.</p></div></div><p>Characteristics of an <a name="d3e1798"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a> include:</p><ul><li>It is explicitly designated as an <a name="d3e1807"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a> via the conformance targets attribute.</li><li>It provides the authoritative definition of business semantics for components in its namespace.</li><li>It contains components that, when appropriate, use or are derived from the components in <a name="d3e1818"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema documents</span></a>.</li><li>It is intended to express the additional vocabulary required for an information exchange, above and beyond the vocabulary available from reference schemas, and to also support additional XML Schema validation requirements for an exchange.</li><li>It satisfies all rules specified in this document for <a name="d3e1829"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema documents</span></a>.</li></ul><p>An extension schema in an information exchange specification serves several functions. First, it defines new content within a new namespace, which may be an exchange-specific namespace or a namespace shared by several exchanges. This content is NIEM-conformant but has fewer restrictions on it than do <a name="d3e1836"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema documents</span></a>. Second, the <a name="d3e1839"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a> bases its content on content from <a name="d3e1842"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema documents</span></a>, where appropriate. Methods of deriving content include using (by reference) existing <a name="d3e1845"></a><a href="#definition_schema_component"><span class="termRef">schema components</span></a>, as well as creating extensions and restrictions of existing components.</p><p>For example, an information exchange specification may define a type for an exchange-specific phone number and base that type on a type defined by the NIEM Core reference schema document. This exchange-specific phone number type may restrict the NIEM Core type to limit those possibilities that are permitted of the base type. Exchange extensions and restrictions must include annotations and documentation to be conformant, but they are allowed to use restriction, choice, and some other constructs that are not allowed in <a name="d3e1851"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema documents</span></a>.</p><p>Note that exchange specifications may define schemas that meet the criteria of reference schemas for those components that its developers wish to nominate for later inclusion in NIEM Core or in domains.</p></div><div class="section"><div class="heading"><a name="section_4.1.3"></a>4.1.3. Schema document set</div><p>A <a name="d3e1867"></a><a href="#definition_conformant_schema_document_set"><span class="termRef">conformant schema document set</span></a> is a set of schema documents that are capable of validating XML documents.</p><div class="box"><div class="normativeHead"><a name="definition_conformant_schema_document_set"></a>[Definition: <dfn>conformant schema document set</dfn>]</div><div class="sub"><p>A <strong>conformant schema document set</strong> is a collection of <a name="d3e1878"></a><a href="#definition_schema_document"><span class="termRef">schema documents</span></a> that together are capable of <a name="d3e1881"></a><a href="#definition_valid"><span class="termRef">validating</span></a> a <a name="d3e1884"></a><a href="#definition_conformant_instance_XML_document"><span class="termRef">conformant instance XML document</span></a>. It is a <a name="d3e1887"></a><a href="#definition_conformance_target"><span class="termRef">conformance target</span></a> of this specification. A conformant schema document set MUST conform to all rules of this specification that apply to this conformance target.</p></div></div></div><p>A <a name="d3e1895"></a><a href="#definition_conformant_schema_document_set"><span class="termRef">conformant schema document set</span></a> has strong dependencies on <a name="d3e1898"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema documents</span></a> and <a name="d3e1901"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema documents</span></a>. Without the guarantees provided by those conformance targets, the rules for a <a name="d3e1904"></a><a href="#definition_conformant_schema_document_set"><span class="termRef">conformant schema document set</span></a> would not be helpful. Those schemas in a schema set that are marked as reference or extension schemas are required to conform to the appropriate conformance targets.</p><div class="rule-section"><div class="heading"><a name="rule_4-1"></a>Rule 4-1. Schema marked as reference schema document must conform</div><div class="box"><div class="normativeHead">[Rule 4-1] (<a href="#conformance_target_SET">SET</a>) (Constraint)</div><p>Any <a name="d3e1917"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> with an <a name="d3e1920"></a><a href="#definition_effective_conformance_target_identifier"><span class="termRef">effective conformance target identifier</span></a> of <code>http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ReferenceSchemaDocument</code> MUST be a <a name="d3e1926"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a>.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_4-2"></a>Rule 4-2. Schema marked as extension schema document must conform</div><div class="box"><div class="normativeHead">[Rule 4-2] (<a href="#conformance_target_SET">SET</a>) (Constraint)</div><p>Any <a name="d3e1941"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> with an <a name="d3e1944"></a><a href="#definition_effective_conformance_target_identifier"><span class="termRef">effective conformance target identifier</span></a> of <code>http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ExtensionSchemaDocument</code> MUST be an <a name="d3e1950"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>.</p></div></div><div class="section"><div class="heading"><a name="section_4.1.4"></a>4.1.4. Instance documents and elements</div><p>This document has specific rules about how NIEM content should be used in XML documents. As well as containing rules for XML Schema documents, this NDR contains rules for NIEM-conformant XML content at a finer granularity than the XML document.</p><div class="box"><div class="normativeHead"><a name="definition_conformant_instance_XML_document"></a>[Definition: <dfn>conformant instance XML document</dfn>]</div><div class="sub"><p>A <strong>conformant instance XML document</strong> is an <a name="d3e1971"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> that is an <a name="d3e1974"></a><a href="#definition_instance_document"><span class="termRef">instance document</span></a> <a name="d3e1977"></a><a href="#definition_valid"><span class="termRef">valid</span></a> to a <a name="d3e1980"></a><a href="#definition_conformant_schema_document_set"><span class="termRef">conformant schema document set</span></a>. It is a <a name="d3e1984"></a><a href="#definition_conformance_target"><span class="termRef">conformance target</span></a> of this specification. A conformant instance XML document MUST conform to all rules of this specification that apply to this conformance target.</p></div></div><p>Characteristics of a <a name="d3e1991"></a><a href="#definition_conformant_instance_XML_document"><span class="termRef">conformant instance XML document</span></a> include:</p><ul><li>The <a name="d3e2000"></a><a href="#definition_document_element"><span class="termRef">document element</span></a> is locally schema-valid.</li><li>Each element information item within the <a name="d3e2007"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> that has property [namespace name] matching the target namespace of a <a name="d3e2010"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or <a name="d3e2013"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a> is a <a name="d3e2016"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a>.</li></ul><p>Schema-validity may be assessed against a single set of schemas or against multiple sets of schemas.</p><p>Assessment against schemas may be directed by a message specification, such as an information exchange package description (IEPD), model package description (MPD), or information exchange specification, or by other instructions or tools.</p><p>Note that this specification does not require the <a name="d3e2030"></a><a href="#definition_document_element"><span class="termRef">document element</span></a> of a <a name="d3e2033"></a><a href="#definition_conformant_instance_XML_document"><span class="termRef">conformant instance XML document</span></a> to be a <a name="d3e2036"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a>. Other specifications may add additional conformance constraints for elements within an exchange.</p><div class="box"><div class="normativeHead"><a name="definition_conformant_element_information_item"></a>[Definition: <dfn>conformant element information item</dfn>]</div><div class="sub"><p>A <em>conformant element information item</em> is an element information item that satisfies all of the following criteria:</p><ul><li>Its [namespace name] and [local name] matches an element declared by a <a name="d3e2053"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or <a name="d3e2056"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>.</li><li>It occurs within a <a name="d3e2063"></a><a href="#definition_conformant_instance_XML_document"><span class="termRef">conformant instance XML document</span></a>.</li><li>It is locally schema-valid.</li><li>It satisfies all rules specified in this document applicable to an element in a <a name="d3e2074"></a><a href="#definition_conformant_instance_XML_document"><span class="termRef">conformant instance XML document</span></a>.</li></ul></div></div><p>Because each NIEM-conformant element information item must be locally schema-valid, each element must validate against the schema definition of the element, even if the element information item is allowed within the document because of a wildcard that the {process contents} with a value of <q>skip</q>. As described by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#process_contents">Section 3.10.1, <em>The Wildcard Schema Component</em></a>, the content of an element introduced by a wildcard with {process contents} set to <q>skip</q> does not have any schema validity constraint; it is only required to be well-formed XML. Within a NIEM-conformant XML document, each element that is from a NIEM namespace conforms to its schema specification.</p></div></div><div class="section"><div class="heading"><a name="section_4.2"></a>4.2. Applicability of rules to conformance targets</div><p>Each rule within this document is applicable to one or more of the conformance targets identified by <a href="#section_4.1">Section 4.1, <em>Conformance targets defined</em>, above</a>. Each rule identifies its applicability as described in <a href="#section_2.4.1">Section 2.4.1, <em>Rules</em>, above</a>. The applicability field of each rule will contain one or more code values from <a href="#table_4-1">Table 4-1, <em>Codes representing conformance targets</em>, below</a>. A rule is applicable to the identified conformance targets.</p><div class="table"><div class="caption"><a name="table_4-1"></a>Table 4-1: Codes representing conformance targets</div><table><thead><tr><th>Code</th><th>Conformance target</th></tr></thead><tbody><tr><td><a name="conformance_target_REF"></a>REF</td><td><a name="d3e2133"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a></td></tr><tr><td><a name="conformance_target_EXT"></a>EXT</td><td><a name="d3e2144"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a></td></tr><tr><td><a name="conformance_target_SET"></a>SET</td><td><a name="d3e2155"></a><a href="#definition_conformant_schema_document_set"><span class="termRef">conformant schema document set</span></a></td></tr><tr><td><a name="conformance_target_INS"></a>INS</td><td><a name="d3e2167"></a><a href="#definition_conformant_instance_XML_document"><span class="termRef">conformant instance XML document</span></a></td></tr></tbody></table></div></div><div class="section"><div class="heading"><a name="section_4.3"></a>4.3. Conformance target identifiers</div><p>A conformant schema document claims to be conformant thorough the use of a set of <a name="d3e2179"></a><a href="#definition_conformance_target_identifier"><span class="termRef">conformance target identifiers</span></a>.</p><div class="rule-section"><div class="heading"><a name="is-ctas-conformant-document"></a><a name="rule_4-3"></a>Rule 4-3. Schema is CTAS-conformant</div><div class="box"><div class="normativeHead">[Rule 4-3] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><p>The schema document MUST be a conformant document as defined by the NIEM Conformance Targets Attribute Specification.</p></div><p>The term <q>conformant document</q> is defined by <a href="#CTAS" class="ref">[CTAS]</a> <a target="_blank" href="http://reference.niem.gov/niem/specification/conformance-targets-attribute/3.0/NIEM-CTAS-3.0-2014-07-31.html#section_3.2">Section 3.2, <em>Conformance to this Specification</em></a>.</p></div><div class="rule-section"><div class="heading"><a name="req-ct"></a><a name="rule_4-4"></a>Rule 4-4. Document element has attribute <code>ct:conformanceTargets</code></div><div class="box"><div class="normativeHead">[Rule 4-4] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="*[. is nf:get-document-element(.)
or exists(@ct:conformanceTargets)]">
<sch:assert test="(. is nf:get-document-element(.)) = exists(@ct:conformanceTargets)"
>The [document element] of the XML document, and only the [document element], MUST own an attribute {http://release.niem.gov/niem/conformanceTargets/3.0/}conformanceTargets.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="req-ct-ref"></a><a name="rule_4-5"></a>Rule 4-5. Schema claims reference schema conformance target</div><div class="box"><div class="normativeHead">[Rule 4-5] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="*[. is nf:get-document-element(.)]">
<sch:assert test="nf:has-effective-conformance-target-identifier(., xs:anyURI('http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ReferenceSchemaDocument'))"
>The document MUST have an effective conformance target identifier of http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ReferenceSchemaDocument.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document defines the term <a name="d3e2252"></a><a href="#definition_effective_conformance_target_identifier"><span class="termRef">effective conformance target identifier</span></a>.</p></div><div class="rule-section"><div class="heading"><a name="req-ct-ext"></a><a name="rule_4-6"></a>Rule 4-6. Schema claims extension conformance target</div><div class="box"><div class="normativeHead">[Rule 4-6] (<a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="*[. is nf:get-document-element(.)]">
<sch:assert test="nf:has-effective-conformance-target-identifier(., xs:anyURI('http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ExtensionSchemaDocument'))"
>The document MUST have an effective conformance target identifier of http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ExtensionSchemaDocument.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document defines the term <a name="d3e2279"></a><a href="#definition_effective_conformance_target_identifier"><span class="termRef">effective conformance target identifier</span></a>.</p></div></div></div><div class="section"><div class="heading"><a name="section-conceptual-model"></a><a name="section_5"></a>5. The NIEM conceptual model</div><p>This section describes aspects of the RDF model, and provides a mapping between NIEM concepts and the RDF model.</p><ul><li><a href="#section_5.1">Section 5.1, <em>Purpose of the NIEM conceptual model</em></a></li><li><a href="#section_5.2">Section 5.2, <em>The RDF model</em></a></li><li><a href="#section_5.3">Section 5.3, <em>NIEM in terms of RDF</em></a></li><li><a href="#section_5.4">Section 5.4, <em>Unique identification of data objects</em></a></li><li><a href="#section_5.5">Section 5.5, <em>NIEM data is explicit, not implicit</em></a></li><li><a href="#section_5.6">Section 5.6, <em>Mapping of NIEM concepts to RDF concepts</em></a></li></ul><div class="section"><div class="heading"><a name="section_5.1"></a>5.1. Purpose of the NIEM conceptual model</div><p>Each release of NIEM provides a concrete data model, in the form of a set of <a name="d3e2302"></a><a href="#definition_schema_document"><span class="termRef">schema documents</span></a>. These schema documents may be used to build messages and information exchanges. The schema documents spell out what kinds of objects exist and how those objects may be related. A set of XML data that follows the rules of NIEM implies specific meaning. The varieties of <a name="d3e2305"></a><a href="#definition_schema_component"><span class="termRef">schema components</span></a> used within conformant schema documents are selected to clarify the meaning of XML data. That is, schema components that do not have a clear meaning have been avoided. NIEM provides a framework within which XML data has a specific meaning.</p><p>One limitation of XML and XML Schema is that they do not describe the meaning of an XML document. The XML specification defines XML documents and defines their syntax but does not address the meaning of those documents. The XML Schema specification defines the XML Schema definition language, which describes the structure and constrains the contents of XML documents through the construction and use of schema components.</p><p>In a schema, the meaning of a schema component may be described using the <code>xs:documentation</code> element, or additional information may be included via use of the <code>xs:appinfo</code> element. Although this may enable humans to understand XML data, more information is needed to support the machine-understandable meaning of XML data. In addition, inconsistency among the ways that schema components may be put together may be a source of confusion.</p><p>The RDF Core Working Group of the World Wide Web consortium has developed a simple, consistent conceptual model, the RDF model. The RDF model is described and specified through a set of W3C Recommendations, the Resource Description Framework (RDF) specifications, making it a very well defined standard. The NIEM model and the rules contained in this NDR are based on the RDF model. This provides numerous advantages:</p><ul><li>NIEM’s conceptual model is defined by a recognized standard.</li><li>NIEM’s conceptual model is very well defined.</li><li>NIEM’s conceptual model provides a consistent basis for relating attributes, elements, types, and other XML Schema components.</li><li>NIEM’s use of the RDF model defines what a set of NIEM data means. The RDF specification provides a detailed description of what a statement means. This meaning is leveraged by NIEM.</li><li>NIEM’s use of the RDF model provides a basis for inferring and reasoning about XML data that uses NIEM. That is, using the rules defined for the RDF model, programs can determine implications of relationships between NIEM-defined objects.</li></ul><p>With the exception of this section, NIEM rules are explained in this document without reference to RDF or RDF concepts. Understanding RDF is not required to understand NIEM-conformant schemas or data based on NIEM. However, understanding RDF concepts may deepen understanding of NIEM.</p><p>This section defines the meaning of NIEM-conformant XML data and schemas through the definition of mappings from XML data and schema to RDF data and schema.</p><div class="rule-section"><div class="heading"><a name="rule-meaning-of-xml"></a><a name="rule_5-1"></a>Rule 5-1. <code>structures:uri</code> denotes resource identifier</div><div class="box"><div class="normativeHead">[Rule 5-1] (<a href="#conformance_target_INS">INS</a>) (Interpretation)</div><p>The interpretation of a <a name="d3e2375"></a><a href="#definition_conformant_instance_XML_document"><span class="termRef">conformant instance XML document</span></a> MUST be consistent with an RDFS interpretation of the RDF graph composed of the RDF entailed by the XML document and the RDF entailed by the schema.</p></div></div><p>The interpretation of NIEM-conformant data and schemas are in place to ensure that a precise meaning can be derived from data. That is, the data makes specific assertions, which are well understood since they are derived from the data, the schema, and the NIEM rules.</p></div><div class="section"><div class="heading"><a name="section_5.2"></a>5.2. The RDF model</div><p>This section identifies features of RDF and RDFS, in order to establish a mapping between RDF semantics and NIEM. A reader should read the referenced source documents to obtain a full understanding of the concepts mentioned in this section.</p><p>RDF establishes a graph-based data model, as described by <a href="#RDFConcepts" class="ref">[RDF Concepts]</a> <a target="_blank" href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#data-model">Section 1.1, <em>Graph-based Data Model</em></a>, which states:</p><blockquote><p>The core structure of the abstract syntax is a set of triples, each consisting of a subject, a predicate and an object. A set of such triples is called an RDF graph.</p></blockquote><p><a href="#RDFConcepts" class="ref">[RDF Concepts]</a> also states:</p><blockquote><p>There can be three kinds of nodes in an RDF graph: IRIs, literals, and blank nodes.</p></blockquote><p><a href="#RDFConcepts" class="ref">[RDF Concepts]</a> <a target="_blank" href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#resources-and-statements">Section 1.2, <em>Resources and Statements</em></a> describes resources:</p><blockquote><p>Any IRI or literal <strong>denotes</strong> something in the world (the <q>universe of discourse</q>). These things are called <strong>resources</strong>. Anything can be a resource, including physical things, documents, abstract concepts, numbers and strings; the term is synonymous with <q>entity</q> as it is used in the RDF Semantics specification. The resource denoted by an IRI is called its referent, and the resource denoted by a literal is called its literal value.</p></blockquote><p><a href="#RDFConcepts" class="ref">[RDF Concepts]</a> also describes relationships and blank nodes.</p><blockquote><p>Asserting an RDF triple says that some relationship, indicated by the predicate, holds between the resources denoted by the subject and object. This statement corresponding to an RDF triple is known as an RDF statement. The predicate itself is an IRI and denotes a property, that is, a resource that can be thought of as a binary relation. (Relations that involve more than two entities can only be indirectly expressed in RDF.)</p><p>Unlike IRIs and literals, blank nodes do not identify specific resources. Statements involving blank nodes say that something with the given relationships exists, without explicitly naming it.</p></blockquote><p><a href="#RDFConcepts" class="ref">[RDF Concepts]</a> <a target="_blank" href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#dfn-logical-expression">Section 1.7, <em>Equivalence, Entailment and Inconsistency</em></a> describes the meaning of an RDF triple:</p><blockquote><p>An RDF triple encodes a statement—a simple logical expression, or claim about the world. An RDF graph is the conjunction (logical AND) of its triples.</p></blockquote><p><a href="#RDFConcepts" class="ref">[RDF Concepts]</a> <a target="_blank" href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#dfn-rdf-triple">Section 3.1, <em>Triples</em></a> defines an RDF triple:</p><blockquote><p>An RDF triple consists of three components:</p><ul><li>the subject, which is an IRI or a blank node</li><li>the predicate, which is an IRI</li><li>the object, which is an IRI, a literal or a blank node</li></ul><p>An RDF triple is conventionally written in the order subject, predicate, object.</p></blockquote><p><a href="#RDFConcepts" class="ref">[RDF Concepts]</a> <a target="_blank" href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#dfn-rdf-dataset">Section 4, <em>RDF Datasets</em></a> defines an RDF dataset:</p><blockquote><p>An RDF dataset is a collection of RDF graphs, and comprises:</p><ul><li>Exactly one <strong>default graph</strong>, being an RDF graph. The default graph does not have a name and MAY be empty.</li><li>Zero or more <strong>named graphs</strong>. Each named graph is a pair consisting of an IRI or a blank node (the <strong>graph name</strong>), and an RDF graph. Graph names are unique within an RDF dataset.</li></ul></blockquote></div><div class="section"><div class="heading"><a name="section_5.3"></a>5.3. NIEM in terms of RDF</div><p>The RDF view of the meaning of data carries into NIEM: NIEM elements form statements that make claims about the world: that a person has a name, a residence location, a spouse, etc. The assertion of one set of facts does not necessarily rule out other statements: A person could have multiple names, could have moved, or could be divorced. Each statement is a claim asserted to be true by the originator of the statement.</p><p>This NDR discusses NIEM data in XML terminology, complex types and elements, rather than using RDF terms, resources and properties. NIEM objects and associations coincide with RDF resources; both objects and associations correspond to RDF resources with additional constraints:</p><p>NIEM associations are defined as n-ary properties, as described in <a href="#N-ary" class="ref">[N-ary]</a>, <a target="_blank" href="http://www.w3.org/TR/2006/NOTE-swbp-n-aryRelations-20060412/#useCase3"><q>Use Case 3: N-ary relation with no distinguished participant</q></a>. NIEM associations are defined in <a href="#section_10.3">Section 10.3, <em>Associations</em>, below</a>. Assertions are made via NIEM-conformant XML data, described by <a href="#section_12">Section 12, <em>XML instance document rules</em>, below</a>.</p><p>The XML Schema types that define NIEM objects and associations are related to each other via elements and attributes. That is, a type contains elements and attributes, and an element or attribute has a value that is an instance of an XML Schema type. These elements and attributes are XML Schema representations, which correspond to RDF properties. NIEM-conformant XML Schemas describe things and their properties. NIEM-conformant data contains elements and attributes. These correspond to RDF resources and their properties, which describe their characteristics and relationships.</p><p>Although within an XML document, the XML element children of a parent element have a specific order, that element order is not reflected in the NIEM conceptual model. NIEM provides for the order of properties relative to each other to be expressed using the attribute <code>structures:sequenceID</code>, as defined by <a href="#section_12.3">Section 12.3, <em>Property order and sequence identifiers</em>, below</a>. Without the use of <code>structures:sequenceID</code>, the NIEM conceptual model does not define relative order of properties of an object, which means that processors may present properties in whatever order is most convenient, natural, or appropriate. Should a particular order of elements be desired, it should be expressed using <code>structures:sequenceID</code>. Should a data set include <code>structures:sequenceID</code>, it must be respected. This specification does not define a mapping for this mechanism to RDF.</p><p>This document describes most RDF data as triples, omitting a graph name. Users of NIEM data may assign these triples to a named graph, as needed. NIEM data only explicitly assigns triples into specific named graphs to support the use of <code>structures:relationshipMetadata</code>, which attributes metadata to triples using named graphs identified by metadata objects.</p></div><div class="section"><div class="heading"><a name="section-unique-object-ids"></a><a name="section_5.4"></a>5.4. Unique identification of data objects</div><p>A NIEM data exchange may be ephemeral and ad hoc. That is, a message may be transmitted without any expectation of persistence. Such a message exists only to exchange data and may not have any universal meaning beyond that specific exchange. As such, a message may or may not have a URI as an identifier. NIEM was designed with the assumption that a given exchange need not have any unique identifier; NIEM does not require a unique identifier. NIEM also does not require any object carried by a message to be identified by a URI.</p><p>A NIEM-conformant instance XML document may carry any of these attributes to identify objects within messages:</p><ul><li><p>Attribute <strong><code>xml:base</code></strong> (of type <code>xs:anyURI</code>) is defined by <a href="#XMLBase" class="ref">[XML Base]</a> <a target="_blank" href="http://www.w3.org/TR/2009/REC-xmlbase-20090128/#syntax">Section 3, <em><code>xml:base</code> Attribute</em></a>, which states:</p><blockquote><p>The attribute <code>xml:base</code> may be inserted in XML documents to specify a base URI other than the base URI of the document or external entity.</p></blockquote><p>An XML document has an implicit base URI, the identifier of the document itself. This attribute allows the base URI to be made explicit within a NIEM XML document.</p></li><li>Attribute <strong><code>structures:uri</code></strong> (of type <code>xs:anyURI</code>) may appear within an XML element to define a URI for that element. This may be an absolute URI (e.g., <code>http://example.org/incident182#person12</code>), or may be a relative URI (e.g., <code>#person12</code>). Relative URIs are resolved against a URI determined by the <code>xml:base</code> attributes in scope, falling back to the base URI of the containing document.</li><li>Attribute <strong><code>structures:id</code></strong> (of type <code>xs:ID</code>) provides a document-relative identifier for an element. Semantically, <q><code>structures:id="abe92"</code></q> is equivalent to <q><code>structures:uri="#abe92"</code></q>.</li><li>Attribute <strong><code>structures:ref</code></strong> (of type <code>xs:IDREF</code>) provides a reference to another element within a document, by providing a value of a <code>structures:id</code> attribute within the document. Semantically, <q><code>structures:ref="abe92"</code></q> is equivalent to <q><code>structures:uri="#abe92"</code></q></li></ul><p>The values of URIs and IDs within NIEM XML documents are not presumed to have any particular significance. XML requires every ID to be unique within its XML document, and for every IDREF to refer to an ID within the same document. The mapping of IDs and IDREFs to URIs does not mean that the identifiers are persistent or significant.</p><p>These attributes provide the identifiers of objects. The properties of an object may be spread across several XML elements that have the same identifier. These properties must be merged together to provide all the properties of a single object, as described by <a href="#JSONLD" class="ref">[JSON LD]</a> <a target="_blank" href="https://www.w3.org/TR/2014/REC-json-ld-20140116/#node-objects">Section 8.2, <em>Node Objects</em></a>:</p><blockquote><p>The properties of a node in a graph may be spread among different node objects within a document. When that happens, the keys of the different node objects need to be merged to create the properties of the resulting node.</p></blockquote><p>Mapping of NIEM data to RDF frequently involves the use of blank nodes, instead of universally-meaningful resource IRIs.</p><p>The identifier of an object is constructed using the above attributes; if the above attributes do not appear on an object, then an object may be treated as a blank node, and assigned a blank node identifier.</p></div><div class="section"><div class="heading"><a name="section_5.5"></a>5.5. NIEM data is explicit, not implicit</div><p>In NIEM data, that which is not stated is not implied. If data says a person’s name is <q>John,</q> it is not implicitly saying that he does not have other names, or that <q>John</q> is his legal name, or that he is different from a person known as <q>Bob.</q> The only assertion being made is that one of the names by which this person is known is <q>John</q>.</p><p>This is one reason that definitions of NIEM content are so important. The definitions must state exactly what any given statement implies. The concept of <q>legal name</q> may be defined that makes additional assertions about a name of a person. Such assertions must be made explicit in the definition of the relationship.</p></div><div class="section"><div class="heading"><a name="section_5.6"></a>5.6. Mapping of NIEM concepts to RDF concepts</div><p>This section provides RDF implementations for many aspects of NIEM-conformant schemas and instance documents.</p><p><a href="#N-Quads" class="ref">[N-Quads]</a> <a target="_blank" href="https://www.w3.org/TR/2014/REC-n-quads-20140225/#n-quads-language">Section 2, <em>N-Quads Language</em></a> defines a plain text format for encoding an RDF dataset:</p><blockquote><p>The simplest statement is a sequence of (subject, predicate, object) terms forming an RDF triple and an optional blank node label or IRI labeling what graph in a dataset the triple belongs to, all are separated by whitespace and terminated by <q>.</q> after each statement.</p><pre><http://example.org/#spiderman> <http://www.perceive.net/schemas/relationship/enemyOf> <http://example.org/#green-goblin> <http://example.org/graphs/spiderman> .</pre><p>The graph label IRI can be omitted, in which case the triples are considered part of the default graph of the RDF dataset.</p></blockquote><p>RDF examples and templates within this document are provided using a modified N-Quads format, where qualified names (e.g., <code>nc:PersonType</code>) and variables (e.g., <var>$object</var> may be substituted for full URIs and their surrounding angle brackets. Within this section, the following substitutions apply:</p><ul><li><p>Prefix <code>rdf</code> denotes <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#</code>.</p><ul><li><code>rdf:type</code> denotes IRI <code><code>http://www.w3.org/1999/02/22-rdf-syntax-ns#</code>type</code>.</li><li><code>rdf:value</code> denotes IRI <code><code>http://www.w3.org/1999/02/22-rdf-syntax-ns#</code>value</code>.</li></ul></li><li><p>Prefix <code>rdfs</code> denotes <code>http://www.w3.org/2000/01/rdf-schema#</code>.</p><ul><li><code>rdfs:subClassOf</code> denotes IRI <code><code>http://www.w3.org/2000/01/rdf-schema#</code>subClassOf</code>.</li><li><code>rdfs:subPropertyOf</code> denotes IRI <code><code>http://www.w3.org/2000/01/rdf-schema#</code>subPropertyOf</code>.</li><li><code>rdfs:range</code> denotes IRI <code><code>http://www.w3.org/2000/01/rdf-schema#</code>range</code>.</li></ul></li><li><p>Prefix <code>structures</code> denotes <code>http://release.niem.gov/niem/structures/5.0/</code>.</p><ul><li><code>structures:metadata</code> denotes IRI <code><code>http://release.niem.gov/niem/structures/5.0/</code>metadata</code>.</li></ul></li></ul><div class="section"><div class="heading"><a name="section_5.6.1"></a>5.6.1. Resource IRIs for XML Schema components and information items</div><p>The term <q>qualified name</q> is defined by <a href="#XMLNamespaces" class="ref">[XML Namespaces]</a> <a target="_blank" href="http://www.w3.org/TR/2009/REC-xml-names-20091208/#dt-qualname">Section 2.1, <em>Basic Concepts</em></a>, which states:</p><blockquote><p>A <strong>qualified name</strong> is a name subject to namespace interpretation.</p></blockquote><p>A QName is used to represent a qualified name, as described by <a href="#XMLSchema-2" class="ref">[XML Schema Datatypes]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#QName">Section 3.2.18, <em>QName</em></a>, which states:</p><blockquote><p>The value space of QName is the set of tuples {namespace name, local part}, where namespace name is an anyURI and local part is an NCName.</p></blockquote><p>Certain components defined by NIEM schemas and instances have corresponding resource IRIs. Each IRI is taken from a qualified name, as follows:</p><ul><li>If namespace name ends with <q>#</q>: concatenate(namespace name, local part)</li><li>Otherwise: concatenate(namespace name, <q>#</q>, local part)</li></ul><p>Note that this is only meaningful when the namespace name is not empty and is an absolute URI.</p><p>The corresponding RDF resource IRIs for information items and schema components are:</p><ul><li>element information item or attribute information item: the resource IRI is built from the qualified name constructed from its [namespace name] and [local name] properties.</li><li>schema component: the resource IRI is built from the qualified name constructed from its {target namespace} and {name} properties.</li></ul></div><div class="section"><div class="heading"><a name="sec-rdf-literals"></a><a name="section_5.6.2"></a>5.6.2. RDF Literals</div><p>A simple value may be incorporated into a <a name="d3e2998"></a><a href="#definition_conformant_instance_XML_document"><span class="termRef">conformant instance XML document</span></a> as the value of an attribute information item, or as a child of an element information item. This section describes how a simple value is mapped to an RDF literal. Note that there is no mapping for the simple content of an element that is not a <a name="d3e3001"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a>, nor for attributes defined by non-conformant schema documents, so there is no accommodation of mixed content, untyped values, or other cases outside of what conformant schema documents define.</p><p>For each occurrence of a simple value, the following may be relevant:</p><ul><li>The value of the literal, which is a normalized value of an attribute or element information item processed in accordance with <a href="#XML" class="ref">[XML]</a> <a target="_blank" href="http://www.w3.org/TR/2008/REC-xml-20081126/#sec-white-space">Section 2.10, <em>White Space Handling</em></a> and <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#d0e1654">Section 3.1.4, <em>White Space Normalization during Validation</em></a>.</li><li>The occurrence of an attribute <code>xml:lang</code> applicable to the value (described by <a href="#XML" class="ref">[XML]</a> <a target="_blank" href="http://www.w3.org/TR/2008/REC-xml-20081126/#sec-lang-tag">Section 2.12, <em>Language Identification</em></a>), which may entail a language tag on the literal (described by <a href="#RDFConcepts" class="ref">[RDF Concepts]</a> <a target="_blank" href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#dfn-language-tag">Section 3.3, <em>Literal</em></a>).</li><li>The XML Schema-defined base type of the simple value, which may be an attribute’s {type definition}, or a simple type base type of an element’s {type definition}.</li></ul><p>The literal for a simple value <var>$value</var> is:</p><ul><li><p>If <var>$value</var> has a base type definition that is derived from type <code>xs:string</code> (and not an XML Schema-defined type derived from <code>xs:string</code>), and a non-empty language specification is applied to <var>$value</var> using <code>xml:lang</code>, as described by <a href="#XML" class="ref">[XML]</a> <a target="_blank" href="http://www.w3.org/TR/2008/REC-xml-20081126/#sec-lang-tag">Section 2.12, <em>Language Identification</em></a>, then the literal is a language-tagged string, as described by <a href="#RDFConcepts" class="ref">[RDF Concepts]</a> <a target="_blank" href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#dfn-language-tagged-string">Section 3.3, <em>Literals</em></a>:</p><div class="sub"><pre>"$lexical-form"@$language-tag</pre><p>Where:</p><ul><li><var>$lexical-form</var> is a Unicode string for <var>$value</var>.</li><li><var>$language-tag</var> is the in-scope value of attribute <code>xml:lang</code>.</li></ul></div></li><li><p>Otherwise, if <var>$value</var> has a base type definition <var>$base-type</var> that is listed as an RDF-compatible XSD type in <a href="#RDFConcepts" class="ref">[RDF Concepts]</a> <a target="_blank" href="http://www.w3.org/TR/2014/REC-rdf11-concepts-20140225/#xsd-datatypes">Section 5.1, <em>The XML Schema Built-in Datatypes</em></a>, and <var>$base-type</var> is not <code>xs:string</code>, then the literal is:</p><div class="sub"><pre>"$lexical-form"^^$datatype-IRI</pre><p>Where:</p><ul><li><var>$lexical-form</var> is a Unicode string for <var>$value</var>.</li><li><var>$datatype-IRI</var> is the QName of <var>$base-type</var>.</li></ul></div></li><li><p>Otherwise, the literal is a simple literal, which is:</p><div class="sub"><pre>"$lexical-form"</pre><p>Where: <var>$lexical-form</var> is a Unicode string for <var>$value</var>.</p></div></li></ul></div><div class="section"><div class="heading"><a name="section-instance-rdf-mapping"></a><a name="section_5.6.3"></a>5.6.3. Instance document mapped to RDF</div><p>This section has the following subsections:</p><ul><li><a href="#section_5.6.3.1">Section 5.6.3.1, <em>Instance document</em></a></li><li><a href="#section_5.6.3.2">Section 5.6.3.2, <em>Element as a simple property without relationship metadata</em></a></li><li><a href="#section_5.6.3.3">Section 5.6.3.3, <em>Element as a simple property with relationship metadata</em></a></li><li><a href="#section_5.6.3.4">Section 5.6.3.4, <em>Element simple value without relationship metadata</em></a></li><li><a href="#section_5.6.3.5">Section 5.6.3.5, <em>Element simple value with relationship metadata</em></a></li><li><a href="#section_5.6.3.6">Section 5.6.3.6, <em>Attribute as a simple property without relationship metadata</em></a></li><li><a href="#section_5.6.3.7">Section 5.6.3.7, <em>Attribute as a simple property, with relationship metadata</em></a></li><li><a href="#section_5.6.3.8">Section 5.6.3.8, <em>Elements and attributes via an augmentation type</em></a></li><li><a href="#section_5.6.3.9">Section 5.6.3.9, <em>Properties applied via <code>structures:metadata</code></em></a></li></ul><div class="section"><div class="heading"><a name="section_5.6.3.1"></a>5.6.3.1. Instance document</div><p>A <a name="d3e3225"></a><a href="#definition_conformant_instance_XML_document"><span class="termRef">conformant instance XML document</span></a> entails a dataset, described by mappings of its content to RDF triples and quads.</p></div><div class="section"><div class="heading"><a name="section_5.6.3.2"></a>5.6.3.2. Element as a simple property without relationship metadata</div><p>Given:</p><ul><li><var>$predicate-element</var> is a <a name="d3e3244"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a>, and is an instance of an <a name="d3e3247"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> or <a name="d3e3250"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>.</li><li><var>$context-element</var> is parent of <var>$predicate-element</var>, is a <a name="d3e3262"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a>, and is an instance of an <a name="d3e3265"></a><a href="#definition_object_type"><span class="termRef">object type</span></a>, <a name="d3e3268"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>, or <a name="d3e3271"></a><a href="#definition_metadata_type"><span class="termRef">metadata type</span></a>.</li><li><var>$predicate-element</var> either owns has no attribute <code>structures:relationshipMetadata</code> or it owns an attribute <code>structures:relationshipMetadata</code> that contains no items.</li></ul><p>The following RDF is entailed:</p><div class="sub"><pre>$context-node-id $predicate-id $predicate-node-id .</pre><p>Where:</p><ul><li><var>$context-node-id</var> is a node identifier for the object held by <var>$context-element</var>.</li><li><var>$predicate-id</var> is the IRI for <var>$predicate-element</var>.</li><li><var>$predicate-node-id</var> is a node identifier for the object held by <var>$predicate-element</var>.</li></ul></div></div><div class="section"><div class="heading"><a name="section_5.6.3.3"></a>5.6.3.3. Element as a simple property with relationship metadata</div><p>Given:</p><ul><li><var>$predicate-element</var> is a <a name="d3e3345"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a>, and is an instance of an <a name="d3e3348"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> or <a name="d3e3351"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>.</li><li><var>$context-element</var> is parent of <var>$predicate-element</var>, is a <a name="d3e3363"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a>, and is an instance of an <a name="d3e3366"></a><a href="#definition_object_type"><span class="termRef">object type</span></a>, <a name="d3e3369"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>, or <a name="d3e3372"></a><a href="#definition_metadata_type"><span class="termRef">metadata type</span></a>.</li><li><var>$predicate-element</var> owns attribute <var>$relationship-metadata-attribute</var> that has name <code>structures:relationshipMetadata</code>, and that contains one or more references to metadata objects.</li></ul><p>For each item <var>$metadata-reference</var> in the list held by <var>$relationship-metadata-attribute</var>, the following RDF quad is entailed:</p><div class="sub"><pre>$context-node-id $predicate-id $predicate-node-id $metadata-node-id .</pre><p>Where:</p><ul><li><var>$context-node-id</var> is a node identifier for the object held by <var>$context-element</var>.</li><li><var>$predicate-id</var> is the IRI for <var>$predicate-element</var>.</li><li><var>$predicate-node-id</var> is a node identifier for the object held by <var>$predicate-element</var>.</li><li><var>$metadata-node-id</var> is a node identifier for the object referenced by <var>$metadata-reference</var>.</li></ul></div></div><div class="section"><div class="heading"><a name="section_5.6.3.4"></a>5.6.3.4. Element simple value without relationship metadata</div><p>Given:</p><ul><li><var>$context-element</var> is a <a name="d3e3462"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> that is an instance of an <a name="d3e3465"></a><a href="#definition_object_type"><span class="termRef">object type</span></a>.</li><li><var>$context-element</var> either owns has no attribute <code>structures:relationshipMetadata</code> or it owns an attribute <code>structures:relationshipMetadata</code> that contains no items.</li><li><var>$context-element</var> has a non-empty simple value.</li></ul><p>The following RDF is entailed:</p><div class="sub"><pre>$context-node-id rdf:value $literal .</pre><p>Where:</p><ul><li><var>$context-node-id</var> is a node identifier for the object held by <var>$context-element</var>.</li><li><code>rdf:value</code> denotes IRI <code><code>http://www.w3.org/1999/02/22-rdf-syntax-ns#</code>value</code>.</li><li><var>$literal</var> is the literal value for <var>$context-element</var>, as described in <a href="#section_5.6.2">Section 5.6.2, <em>RDF Literals</em>, above</a>.</li></ul></div></div><div class="section"><div class="heading"><a name="section_5.6.3.5"></a>5.6.3.5. Element simple value with relationship metadata</div><p>Given:</p><ul><li><var>$context-element</var> is a <a name="d3e3549"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> that is an instance of an <a name="d3e3552"></a><a href="#definition_object_type"><span class="termRef">object type</span></a>.</li><li><var>$context-element</var> owns attribute <var>$relationship-metadata-attribute</var> that has name <code>structures:relationshipMetadata</code>, and that contains one or more references to metadata objects.</li><li><var>$context-element</var> has a non-empty simple value.</li></ul><p>For each item <var>$metadata-reference</var> in the list held by <var>$relationship-metadata-attribute</var>, the following RDF quad is entailed:</p><div class="sub"><pre>$context-node-id rdf:value $literal $metadata-node-id .</pre><p>Where:</p><ul><li><var>$context-node-id</var> is a node identifier for the object held by <var>$context-element</var>.</li><li><code>rdf:value</code> denotes IRI <code><code>http://www.w3.org/1999/02/22-rdf-syntax-ns#</code>value</code>.</li><li><var>$literal</var> is the literal value for <var>$context-element</var>, as described in <a href="#section_5.6.2">Section 5.6.2, <em>RDF Literals</em>, above</a>.</li><li><var>$metadata-node-id</var> is a node identifier for the object referenced by <var>$metadata-reference</var>.</li></ul></div></div><div class="section"><div class="heading"><a name="section_5.6.3.6"></a>5.6.3.6. Attribute as a simple property without relationship metadata</div><p>Given:</p><ul><li><var>$context-element</var> is a <a name="d3e3651"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> and is an instance of an <a name="d3e3654"></a><a href="#definition_object_type"><span class="termRef">object type</span></a>, <a name="d3e3657"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>, or <a name="d3e3660"></a><a href="#definition_metadata_type"><span class="termRef">metadata type</span></a>.</li><li><var>$predicate-attribute</var> is a attribute that has owner <var>$context-element</var>, and has property [attribute declaration] that is defined by a <a name="d3e3672"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or an <a name="d3e3675"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>.</li><li><var>$context-element</var> either owns has no attribute <code>structures:relationshipMetadata</code> or it owns an attribute <code>structures:relationshipMetadata</code> that contains no items.</li></ul><p>The following RDF is entailed:</p><div class="sub"><pre>$context-node-id $predicate-id $literal .</pre><p>Where:</p><ul><li><var>$context-node-id</var> is a node identifier for the object held by <var>$context-element</var>.</li><li><var>$predicate-id</var> is the resource IRI for <var>$predicate-attribute</var>.</li><li><var>$literal</var> is the literal value for <var>$attribute</var>, as described in <a href="#section_5.6.2">Section 5.6.2, <em>RDF Literals</em>, above</a>.</li></ul></div></div><div class="section"><div class="heading"><a name="section_5.6.3.7"></a>5.6.3.7. Attribute as a simple property, with relationship metadata</div><p>Given:</p><ul><li><var>$context-element</var> is a <a name="d3e3751"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> and is an instance of an <a name="d3e3754"></a><a href="#definition_object_type"><span class="termRef">object type</span></a>, <a name="d3e3757"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>, or <a name="d3e3760"></a><a href="#definition_metadata_type"><span class="termRef">metadata type</span></a>.</li><li><var>$predicate-attribute</var> is a attribute that has owner <var>$context-element</var>, and has property [attribute declaration] that is defined by a <a name="d3e3772"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or an <a name="d3e3775"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>.</li><li><var>$context-element</var> owns attribute <var>$relationship-metadata-attribute</var> that has name <code>structures:relationshipMetadata</code>, and that contains one or more references to metadata objects.</li></ul><p>For each item <var>$metadata-reference</var> in <var>$metadata-list</var>, the following RDF quad is entailed:</p><div class="sub"><pre>$context-node-id $predicate-id $literal $metadata-node-id .</pre><p>Where:</p><ul><li><var>$context-node-id</var> is a node identifier for the object held by <var>$context-element</var>.</li><li><var>$predicate-id</var> is the resource IRI for <var>$predicate-attribute</var>.</li><li><var>$literal</var> is the literal value for <var>$attribute</var>, as described in <a href="#section_5.6.2">Section 5.6.2, <em>RDF Literals</em>, above</a>.</li><li><var>$metadata-node-id</var> is a node identifier for the object referenced by <var>$metadata-reference</var>.</li></ul></div></div><div class="section"><div class="heading"><a name="section_5.6.3.8"></a>5.6.3.8. Elements and attributes via an augmentation type</div><p>Given:</p><ul><li><var>$base</var> is a <a name="d3e3868"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> and is an instance of an <a name="d3e3871"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> or <a name="d3e3874"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>.</li><li><var>$augmentation-element</var> is a <a name="d3e3883"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a>, is a child of <var>$base</var>, and is an instance of an <a name="d3e3889"></a><a href="#definition_augmentation_type"><span class="termRef">augmentation type</span></a>.</li><li><var>$augmentation-identifier</var> is a node identifier for the object help by <var>$augmentation-element</var>.</li></ul><p>For each <var>$resolved-element</var> that is a <a name="d3e3908"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> holding an object with node identifier <var>$augmentation-identifier</var>:</p><div class="sub"><p>Each element child of <var>$resolved-element</var> entails RDF as if it were an element child of <var>$base</var>.</p><p>Each attribute that has property [attribute owner] equal to <var>$resolved-element</var> entails RDF as if it were an attribute with property [attribute owner] equal to <var>$base</var>.</p></div></div><div class="section"><div class="heading"><a name="section_5.6.3.9"></a>5.6.3.9. Properties applied via <code>structures:metadata</code></div><p>Given a <a name="d3e3946"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> <var>$context</var> that has attribute <code>structures:metadata</code> with a value that is a list of references, each item <var>$item</var> in the list entails the RDF:</p><div class="sub"><pre>$subject structures:metadata $object .</pre><p>Where:</p><ul><li><var>$subject</var> is a node identifier for the object held by <var>$context</var>.</li><li><var>$object</var> is a node identifier for the object referenced by <var>$item</var>.</li></ul></div></div></div><div class="section"><div class="heading"><a name="section_5.6.4"></a>5.6.4. Type information for instance documents</div><p>A <a name="d3e3998"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> <var>$element</var> that is an instance of an <a name="d3e4004"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> or <a name="d3e4007"></a><a href="#definition_association_type"><span class="termRef">association type</span></a> entails the following RDF:</p><div class="sub"><pre>$element-object rdf:type $element-type .</pre><p>Where:</p><ul><li><var>$element-object</var> is a node identifier for the object held by <var>$element</var>.</li><li><var>$element-type</var> is resource IRI for the value of the [type definition] property of <var>$element</var>.</li></ul></div></div><div class="section"><div class="heading"><a name="section_5.6.5"></a>5.6.5. NIEM schema component definitions to RDF</div><p>The definition of schema components within NIEM-conformant schemas a parallel representation in RDF. This section describes the mapping of selected XML Schema constructs to RDF.</p><p>This section has the following subsections:</p><ul><li><a href="#section_5.6.5.1">Section 5.6.5.1, <em>NIEM complex type definitions to RDF</em></a></li><li><a href="#section_5.6.5.2">Section 5.6.5.2, <em>NIEM element declaration mappings to RDF</em></a></li><li><a href="#section_5.6.5.3">Section 5.6.5.3, <em>NIEM attribute declarations to RDF</em></a></li></ul><div class="section"><div class="heading"><a name="section_5.6.5.1"></a>5.6.5.1. NIEM complex type definitions to RDF</div><p>The following RDF mappings apply to the content of a <a name="d3e4060"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or <a name="d3e4063"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>.</p><p>An <a name="d3e4069"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> or <a name="d3e4072"></a><a href="#definition_association_type"><span class="termRef">association type</span></a> $type entails the following RDF:</p><div class="sub"><pre>$resource rdf:type rdf:Class .</pre><p>Where <var>$resource</var> is the resource IRI for <var>$type</var>.</p></div><p>An <a name="d3e4093"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> or <a name="d3e4096"></a><a href="#definition_association_type"><span class="termRef">association type</span></a> <var>$type</var> that has property {base type definition} <var>$base</var> also entails the RDF:</p><div class="sub"><pre>$resource rdfs:subClassOf $base-resource .</pre><p>Where <var>$base-resource</var> is the resource IRI for <var>$base</var>.</p></div></div><div class="section"><div class="heading"><a name="section_5.6.5.2"></a>5.6.5.2. NIEM element declaration mappings to RDF</div><p>The following RDF mappings apply to the content of a <a name="d3e4128"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or <a name="d3e4131"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>.</p><p>A top-level element declaration schema component <var>$element-declaration</var> that has property {type definition} that is</p><ul><li>the ur-type, or</li><li>is, or is derived from, <code>structures:ObjectType</code>, or</li><li>is, or is derived from, <code>structures:AssociationType</code></li></ul><p>entails the RDF:</p><div class="sub"><pre>$element-resource rdf:type rdf:Property .</pre><p>Where <var>$element-resource</var> is the resource IRI for <var>$element-declaration</var>.</p></div><p>If <var>$element-declaration</var> has property {substitution group affiliation} with a value of element declaration <var>$base</var>, then it entails the RDF:</p><div class="sub"><pre>$element-resource rdfs:subPropertyOf $base-resource .</pre><p>Where:</p><ul><li><var>$element-resource</var> is the resource IRI for <var>$element-declaration</var>.</li><li><var>$base-resource</var> is the resource IRI for <var>$base</var>.</li></ul></div><p>If <var>$element-declaration</var> has property {type definition} with a value <var>$type</var> that is an <a name="d3e4227"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> or <a name="d3e4230"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>, then it entails the RDF:</p><div class="sub"><pre>$element-resource rdfs:range $type-resource .</pre><p>Where:</p><ul><li><var>$element-resource</var> is the resource IRI for <var>$element-declaration</var>.</li><li><var>$type-resource</var> is the resource IRI for <var>$type</var>.</li></ul></div></div><div class="section"><div class="heading"><a name="section_5.6.5.3"></a>5.6.5.3. NIEM attribute declarations to RDF</div><p>The following RDF mappings apply to the content of a <a name="d3e4272"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or <a name="d3e4275"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>.</p><p>A top-level attribute declaration schema component <var>$attribute-declaration</var> that has property {type definition} that is a simple type definition defined within a <a name="d3e4284"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or an <a name="d3e4287"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>, then it entails the RDF:</p><div class="sub"><pre>$attribute-resource rdf:type rdf:Property .</pre><p>Where <var>$attribute-resource</var> is the resource IRI for <var>$attribute-declaration</var>.</p></div></div></div></div></div><div class="section"><div class="heading"><a name="section_6"></a>6. Guiding principles</div><p>Principles in this specification provide a foundation for the rules. These principles are generally applicable in most cases. They should not be used as a replacement for common sense or appropriate special cases.</p><p>The principles are not operationally enforceable; they do not specify constraints on XML Schema documents and instances. The rules are the normative and enforceable manifestation of the principles.</p><p>The principles discussed in this section are organized as follows:</p><ul><li><a href="#section_6.1">Section 6.1, <em>Specification guidelines</em></a></li><li><a href="#section_6.2">Section 6.2, <em>XML Schema design guidelines</em></a></li><li><a href="#section_6.3">Section 6.3, <em>Modeling design guidelines</em></a></li><li><a href="#section_6.4">Section 6.4, <em>Implementation guidelines</em></a></li><li><a href="#section_6.5">Section 6.5, <em>Modeling guidelines</em></a></li></ul><div class="section"><div class="heading"><a name="section_6.1"></a>6.1. Specification guidelines</div><p>The principles in this section address what material should be included in this NDR and how it should be represented.</p><div class="section"><div class="heading"><a name="section_6.1.1"></a>6.1.1. Keep specification to a minimum</div><p>This specification should state what is required for interoperability, not all that could be specified. Certain decisions (such as normative XML comments) could create roadblocks for interoperability, making heavy demands on systems for very little gain. The goal is not standardization for standardization’s sake. The goal is to maximize interoperability and reuse.</p><div class="box"><div class="normativeHead"><a name="principle_1"></a>[Principle 1]</div><div class="sub"><p>This specification SHOULD specify what is necessary for semantic interoperability and no more.</p></div></div><p>The term <strong>semantic interoperability</strong> is here defined as <q>the ability of two or more computer systems to exchange information and have the meaning of that information automatically interpreted by the receiving system accurately enough to produce useful results.</q> </p></div><div class="section"><div class="heading"><a name="section_6.1.2"></a>6.1.2. Focus on rules for schemas</div><p>This specification should try, as much as is possible, to specify schema-level content. This is a specification for schemas, and so it should specify schemas and their instance documents. It should avoid specifying complex data models or data dictionaries.</p><div class="box"><div class="normativeHead"><a name="principle_2"></a>[Principle 2]</div><div class="sub"><p>This specification SHOULD focus on specifying characteristics of schema documents, their instance documents, and their interpretation.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.1.3"></a>6.1.3. Use specific, concise rules</div><p>A rule should be as precise and specific as possible to avoid broad, hard-to-modify rules. Putting multiple clauses in a rule makes it harder to enforce. Using separate rules allows specific conditions to be clearly stated.</p><div class="box"><div class="normativeHead"><a name="principle_3"></a>[Principle 3]</div><div class="sub"><p>This specification SHOULD feature rules that are specific, precise, and concise.</p></div></div></div></div><div class="section"><div class="heading"><a name="section_6.2"></a>6.2. XML Schema design guidelines</div><p>The principles in this section address how XML Schema technology should be used in designing NIEM-conformant schemas and instances.</p><div class="section"><div class="heading"><a name="section_6.2.1"></a>6.2.1. Purpose of XML Schemas</div><div class="box"><div class="normativeHead"><a name="principle_4"></a>[Principle 4]</div><div class="sub"><p>The specification SHOULD focus on rules for XML Schemas in order to support:</p><ol><li>the expression of interface specifications for exchange of information between data producers and consumers,</li><li>validation of XML documents against interface specifications,</li><li>comprehension and understanding of XML documents, including the use of post-schema-validation infoset as defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#key-psvi">Section 2.1, <em>Overview of XML Schema</em></a>, and</li><li>development of implementations supported by tools that use XML Schemas.</li></ol></div></div></div><div class="section"><div class="heading"><a name="section-principle-no-infoset-mods"></a><a name="section_6.2.2"></a>6.2.2. Prohibit XML parsing from constructing values</div><p>XML Schema has features that can make the data provided by an XML Schema validating parser differ from that provided by a non-validating XML parser. For example, if an XML Schema attribute declaration has a <code>default</code> value, and if an XML document omits the attribute where it might appear, an XML Schema validating parser will <em>construct</em> the attribute with the default value in the infoset that it provides to its caller. Without schema validation, there would be no attribute value, but after processing, the attribute value exists in the parsed data provided to the caller. <a href="#section_8.4">Section 8.4, <em>Ensure XML parsing does not construct values</em>, below,</a> provides more detail.</p><p>Within NIEM, the purpose of processing instances against schemas is primarily validation: testing that data instances match desired constraints and guidelines. It should not be used to alter the content of data passing through the parser.</p><div class="box"><div class="normativeHead"><a name="principle_5"></a>[Principle 5]</div><div class="sub"><p>The data of a NIEM-conformant XML document provided by an XML parser SHOULD NOT be modified by the process of validating the data against an XML Schema.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.2.3"></a>6.2.3. Use XML validating parsers for content validation</div><p>NIEM is designed for XML Schema validation. One goal is to maximize the amount of validation that may be performed by XML Schema-validating parsers.</p><p>XML Schema validates content using content models: descriptions of what elements and attributes may be contained within an element, and what values are allowable. It is the XML element hierarchy (elements with attributes and unstructured content, contained by other elements) that the XML Schema definition language specifies and that XML Schema validating parsers can validate.</p><p>Mechanisms involving linking using attribute and element values are useful, but they should only be relied on when absolutely necessary, as XML Schema-validating parsers cannot readily validate them. For example, if a link is established via attribute values, an XML Schema-validating parser cannot determine that participants have appropriate type definitions. Whenever possible, NIEM content should rely on XML syntax that can be validated with XML Schema.</p><div class="box"><div class="normativeHead"><a name="principle_6"></a>[Principle 6]</div><div class="sub"><p>NIEM-conformant schemas and NIEM-conformant XML documents SHOULD use features supported by XML Schema validating parsers for validation of XML content.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.2.4"></a>6.2.4. Validate for conformance to schema</div><p>Systems that operate on XML data have the opportunity to perform multiple layers of processing. Middleware, XML libraries, schemas, and application software may process data. The primary purpose of validation against schemas is to restrict processed data to that data that conforms to agreed-upon rules. This restriction is achieved by marking as invalid that data that does not conform to the rules defined by the schema.</p><div class="box"><div class="normativeHead"><a name="principle_7"></a>[Principle 7]</div><div class="sub"><p>Systems that use NIEM-conformant data SHOULD mark as invalid data that does not conform to the rules defined by applicable XML Schema documents.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.2.5"></a>6.2.5. Allow multiple schemas for XML constraints</div><p>NIEM does not attempt to create a one-size-fits-all schema to perform all validation. Instead, it creates a set of reference schemas, on which additional constraints may be placed. Although NIEM is principally expressed as a set of reference schemas for a NIEM release, additional validation may be conducted through other mechanisms, which may include XML Schemas that express additional constraints, and business rules and structure-specifying languages other than the <a name="d3e4508"></a><a href="#definition_XML_Schema_definition_language"><span class="termRef">XML Schema definition language</span></a>.</p><div class="box"><div class="normativeHead"><a name="principle_8"></a>[Principle 8]</div><div class="sub"><p>Constraints on XML instances MAY be validated by multiple validation passes, using multiple schemas and specifications for different aspects of each namespace.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.2.6"></a>6.2.6. Define one reference schema per namespace</div><p>NIEM uses the concept of a <em>reference schema</em>, which defines the structure and content of a namespace. For each NIEM-conformant namespace, there is exactly one NIEM reference schema. A user may use a subset schema or constraint schema in place of a reference schema, but all NIEM-conformant XML documents must validate against a single reference schema for each namespace.</p><div class="box"><div class="normativeHead"><a name="principle_9"></a>[Principle 9]</div><div class="sub"><p>Each NIEM-conformant namespace SHOULD be defined by exactly one reference schema.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.2.7"></a>6.2.7. Disallow mixed content</div><p>XML data that use mixed content are difficult to specify and complicate the task of data processing. Much of the payload carried by mixed content is unchecked and does not facilitate data standardization or validation.</p><div class="box"><div class="normativeHead"><a name="principle_10"></a>[Principle 10]</div><div class="sub"><p>NIEM-conformant schemas SHOULD NOT specify data that uses mixed content.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.2.8"></a>6.2.8. Specify types for all constructs</div><p>Every schema component defined by a NIEM-conformant schema that can have a name has a name. This means that there are no anonymous types, elements, or other components defined by NIEM. Once an application has determined the name (i.e., namespace and local name) of an attribute or element used in NIEM-conformant instances, it will also know the type of that attribute or element.</p><p>There are no local attributes or elements defined by NIEM, only global attributes and elements. This maximizes the ability of application developers to extend, restrict, or otherwise derive definitions of local components from NIEM-conformant components. Using named global components in schemas maximizes the capacity for reuse.</p><div class="box"><div class="normativeHead"><a name="principle_11"></a>[Principle 11]</div><div class="sub"><p>NIEM-conformant schemas SHOULD NOT use or define local or anonymous components, as they adversely affect reuse.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.2.9"></a>6.2.9. Avoid wildcards in reference schemas</div><p>Wildcards in NIEM-conformant schemas work in opposition to standardization. The goal of creating harmonized, standard schemas is to standardize definitions of data. The use of wildcard mechanisms (such as <code>xs:any</code>, which allows insertion of arbitrary elements) allows unstandardized data to be passed via otherwise standardized exchanges.</p><p>Avoidance of wildcards in the standard schemas encourages the separation of standardized and unstandardized data. It encourages users to incorporate their data into NIEM in a standardized way. It also encourages users to extend in a way that may be readily incorporated into NIEM.</p><div class="box"><div class="normativeHead"><a name="principle_12"></a>[Principle 12]</div><div class="sub"><p>NIEM-conformant components SHOULD NOT incorporate wildcards unless absolutely necessary, as they hinder standardization by encouraging use of unstandardized data rather than standardized data.</p></div></div></div><div class="section"><div class="heading"><a name="section-principle-schema-locations-are-hints"></a><a name="section_6.2.10"></a>6.2.10. Schema locations provided in schema documents are hints</div><p><a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> provides several mechanisms for acquiring components of an <a name="d3e4600"></a><a href="#definition_XML_Schema"><span class="termRef">XML Schema</span></a> for the purpose of assessing validity of an instance. <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#schema_reference">Section 4.3.2, <em>How schema definitions are located on the Web</em></a> includes:</p><ul><li>Use schema definitions already known to the processor.</li><li>Use a location URI or namespace name to identify a schema document from a network location or local schema repository.</li><li>Attempt to resolve a location URI or namespace name to locate a schema document.</li></ul><p>In addition, there are several ways for a processor to determine schema locations:</p><ul><li>Use schema locations identified by user direction.</li><li>Use locations provided via <code>xsi:schemaLocation</code> or <code>xsi:noNamespaceSchemaLocation</code> attributes in an <a name="d3e4644"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> under assessment.</li><li>Use schema locations provided by <code>xs:import</code> elements.</li></ul><p><a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> characterizes several of these methods as <em>hints</em> of where to acquire a schema document for assessment. <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#xsi_schemaLocation">Section 2.6.3, <em>xsi:schemaLocation, xsi:noNamespaceSchemaLocation</em></a> states:</p><blockquote><p>The <code>xsi:schemaLocation</code> and <code>xsi:noNamespaceSchemaLocation</code> attributes can be used in a document to provide hints as to the physical location of schema documents which may be used for assessment.</p></blockquote><p><a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#composition-schemaImport">Section 4.2.3, <em>References to schema components across namespaces</em></a> states:</p><blockquote><p>The actual value of the <code>schemaLocation</code>, if present, gives a hint as to where a serialization of a schema document with declarations and definitions for that namespace (or none) may be found.</p></blockquote><p>The specification explicitly maintains that schema location provided in schemas or instances may be overridden by applications or by user direction.</p><div class="box"><div class="normativeHead"><a name="principle_13"></a>[Principle 13]</div><div class="sub"><p>Schema locations specified within NIEM-conformant reference schemas SHOULD be interpreted as hints and as default values by processing applications.</p></div></div><p>In accordance with <a href="#section_1.1">Section 1.1, <em>Scope</em>, above</a>, this document does not provide normative guidance for location of <a name="d3e4715"></a><a href="#definition_schema_document"><span class="termRef">schema documents</span></a> or for schema assembly.</p></div><div class="section"><div class="heading"><a name="section_6.2.11"></a>6.2.11. Use open standards</div><p>The cooperative efforts of many knowledgeable individuals have resulted in many important published information standards. Where appropriate and applicable, NIEM ought to leverage these standards.</p><div class="box"><div class="normativeHead"><a name="principle_14"></a>[Principle 14]</div><div class="sub"><p>NIEM standards and schemas SHOULD leverage and enable use of other open standards.</p></div></div></div></div><div class="section"><div class="heading"><a name="section_6.3"></a>6.3. Modeling design guidelines</div><p>The principles in this section address the design philosophy used in designing the NIEM conceptual model.</p><div class="section"><div class="heading"><a name="section_6.3.1"></a>6.3.1. Namespaces enhance reuse</div><p>NIEM is designed to maximize reuse of namespaces and the schemas that define them. When referring to a concept defined by a NIEM-conformant schema, a user should ensure that instances and schemas refer to the namespace defined by NIEM. User-defined namespaces should be used for specializations and extension of NIEM constructs but should not be used when the NIEM structures are sufficient.</p><div class="box"><div class="normativeHead"><a name="principle_15"></a>[Principle 15]</div><div class="sub"><p>NIEM-conformant instances and schemas SHOULD reuse components from NIEM distribution schemas when possible.</p></div></div><p>NIEM relies heavily on XML namespaces to prevent naming conflicts and clashes. Reuse of any component is always by reference to both its namespace and its local name. All NIEM component names have global scope. An instance document or schema should use or reuse a NIEM component by referencing its NIEM-defined namespace and local name. An application that validates an instance document that contains a component in a NIEM namespace should conduct that validation using NIEM reference schema documents or profiles of NIEM reference schema documents, to ensure consistency across exchanges and implementations.</p><p>Example:</p><div class="figure"><div class="caption"><a name="figure_6-1"></a>Figure 6-1: Example of the use of a namespace</div><div class="box"><pre><xs:element ref="nc:BinaryCaptureDate" minOccurs="0" maxOccurs="unbounded"/></pre></div></div><p>In this example, <code>nc:BinaryCaptureDate</code> is reused by referencing its element declaration through both its namespace (which is bound to the prefix <code>nc:</code>) and its local name (<code>BinaryCaptureDate</code>). If an element named <code>BinaryCaptureDate</code> is declared in another namespace, it is an entirely different element than <code>nc:BinaryCaptureDate</code>. There is no implicit relationship to <code>nc:BinaryCaptureDate</code>.</p><p>From a business perspective, the two elements are likely to be <em>related</em> in the sense that they may have very similar semantic meanings. They may have essentially the same meaning, but slightly different properties. Such a relationship may commonly exist. However, any relationship between the two elements must be made explicit using methods outlined in this document.</p><div class="box"><div class="normativeHead"><a name="principle_16"></a>[Principle 16]</div><div class="sub"><p>A component SHOULD be identified by its local name together with its namespace. A namespace SHOULD be a required part of the name of a component. A component’s local name SHOULD NOT imply a relationship to components with similar names from other namespaces.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.3.2"></a>6.3.2. Design NIEM for extensibility</div><p>NIEM is designed to be extended. Numerous methods are considered acceptable in creating extended and specialized components.</p><div class="box"><div class="normativeHead"><a name="principle_17"></a>[Principle 17]</div><div class="sub"><p>NIEM-conformant schemas and standards SHOULD be designed to encourage and ease extension and augmentation by users and developers outside the NIEM governance process.</p></div></div></div></div><div class="section"><div class="heading"><a name="section_6.4"></a>6.4. Implementation guidelines</div><p>The principles in this section address issues pertaining to the implementation of applications that use NIEM.</p><div class="section"><div class="heading"><a name="section_6.4.1"></a>6.4.1. Avoid displaying raw XML data</div><p>XML data should be made human-understandable when possible, but it is not targeted at human consumers. HTML is intended for browsers. Browsers and similar technology provide human interfaces to XML and other structured content. Structured XML content does not belong in places targeting humans. Human-targeted information should be of a form suitable for presentation.</p><div class="box"><div class="normativeHead"><a name="principle_18"></a>[Principle 18]</div><div class="sub"><p>XML data SHOULD be designed for automatic processing. XML data SHOULD NOT be designed for literal presentation to people. NIEM specifications and schemas SHOULD NOT use literal presentation of XML data to people as a design criterion.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.4.2"></a>6.4.2. Leave implementation decisions to implementers</div><p>NIEM is intended to be an open specification supported by many diverse implementations. It was designed from data requirements and not from or for any particular system or implementation. Use of NIEM should not depend on specific software, other than XML Schema-validating parsers.</p><div class="box"><div class="normativeHead"><a name="principle_19"></a>[Principle 19]</div><div class="sub"><p>NIEM SHOULD NOT depend on specific software packages, software frameworks, or software systems for interpretation of XML instances.</p></div></div><div class="box"><div class="normativeHead"><a name="principle_20"></a>[Principle 20]</div><div class="sub"><p>NIEM schemas and standards SHOULD be designed such that software systems that use NIEM may be built with a variety of off-the-shelf and free software products.</p></div></div></div></div><div class="section"><div class="heading"><a name="section_6.5"></a>6.5. Modeling guidelines</div><p>The NIEM Naming and Design Rules (NDR) specify NIEM-conformant components, schemas, and instances. These guidelines influence and shape the more-specific principles and rules in this document. They are derived from best practices and from discussions within the NIEM Business Architecture Committee (NBAC) and the NIEM Technical Architecture Committee (NTAC). This list may grow and evolve as NIEM matures.</p><p>The principles in this section address decisions that data modelers must face when creating NIEM-conformant schema representations of domain data. These guidelines are not absolute (the key word is SHOULD). It may not be possible to apply all guidelines in every case. However, they should always be considered.</p><div class="section"><div class="heading"><a name="section_6.5.1"></a>6.5.1. Documentation</div><p>As will be described in later sections of this document, all NIEM components are documented through their definitions and names. Although it is often very difficult to apply, a schema component’s <a name="d3e4890"></a><a href="#definition_data_definition"><span class="termRef">data definition</span></a> should be drafted before the data component name is finalized.</p><p>Drafting the definition for a data component first ensures that the author understands the exact nature of the entity or concept that the data component represents. The component name should subsequently be composed to summarize the definition. Reversing this sequence often results in <a name="d3e4896"></a><a href="#definition_data_definition"><span class="termRef">data definitions</span></a> that very precisely describe the component name but do not adequately describe the entity or concept that the component is designed to represent. This can lead to the ambiguous use of such components.</p><div class="box"><div class="normativeHead"><a name="principle_21"></a>[Principle 21]</div><div class="sub"><p>The <a name="d3e4904"></a><a href="#definition_data_definition"><span class="termRef">data definition</span></a> of a component SHOULD be drafted before the component’s name is composed.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.5.2"></a>6.5.2. Consistent naming</div><p>Components in NIEM should be given names that are consistent with names of other NIEM components. Having consistent names for components has several advantages:</p><ol><li>It is easier to determine the nature of a component when it has a name that conveys the meaning and use of the component.</li><li>It is easier to find a component when it is named predictably.</li><li>It is easier to create a name for a component when clear guidelines exist.</li></ol><div class="box"><div class="normativeHead"><a name="principle_22"></a>[Principle 22]</div><div class="sub"><p>Components in NIEM SHOULD be given names that are consistent with names of other NIEM components. Such names SHOULD be based on simple rules.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.5.3"></a>6.5.3. Reflect the real world</div><p>NIEM provides a standard for data exchange. To help facilitate unambiguous understanding of NIEM reusable components, the names and structures should represent and model the informational aspects of objects and concepts that users are most familiar with. Types should not simply model collections of data.</p><div class="box"><div class="normativeHead"><a name="principle_23"></a>[Principle 23]</div><div class="sub"><p>Component definitions in NIEM-conformant schemas SHOULD reflect real-world concepts.</p></div></div><p>Different users often have their own local practices for arranging components together, such as grouping components into sets and segments, or building in extra layers to help categorize components and make them easier to find when drilling down through an object. Since the broader community may not share the same practices, and grouping structures add additional complexity to both schemas and instances, NIEM components should model the real world as simply and closely as possible.</p></div><div class="section"><div class="heading"><a name="section_6.5.4"></a>6.5.4. Be consistent</div><p>There should be no conflicts of meaning among types. This holds for types within a namespace, as well as types in different namespaces. A type should be used consistently in similar situations for similar purposes. Types should be defined for clear understanding and ease of intended use.</p><div class="box"><div class="normativeHead"><a name="principle_24"></a>[Principle 24]</div><div class="sub"><p>Component definitions in NIEM-conformant schemas SHOULD have semantic consistency.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.5.5"></a>6.5.5. Reserve inheritance for specialization</div><p>Specialization should not be applied simply for the sake of achieving property inheritance. Specialization should be applied only where it is meaningful and appropriate to model permanent sibling subclasses of a base class that are mutually exclusive of one another.</p><div class="box"><div class="normativeHead"><a name="principle_25"></a>[Principle 25]</div><div class="sub"><p>Complex type definitions in NIEM-conformant schemas SHOULD use type inheritance only for specialization.</p></div></div><p>Note that the use of <a name="d3e4998"></a><a href="#definition_augmentation"><span class="termRef">augmentations</span></a> allows developers to avoid type specialization in many cases; see <a href="#section_10.4">Section 10.4, <em>Augmentations</em>, below</a>.</p></div><div class="section"><div class="heading"><a name="section_6.5.6"></a>6.5.6. Do not duplicate definitions</div><p>A real-world entity should be modeled in only one way. The definition of a type or element should appear once and only once. Multiple components of identical or closely similar semantics hinder interoperability because too many valid methods exist for representing the same data. For each data concept that must be represented, there should be only one component (and associated type) to represent it.</p><p>Components with very similar semantics may exist in different contexts. For example, a complex type created for a particular exchange may appear to have identical or closely similar semantics to a complex type defined in the NIEM Core schema. However, the type defined at the exchange level will have much more precise business requirements and syntax, compared with the broad definitions that are heavily reused. Specific contextual definitions should be considered semantic changes.</p><p>Two components may have the same definition while having different representations. For example, a string may hold the complete name of a person, or the name may be represented by a structure that separates the components of the name into first, last, etc. The definition of alternative representations should not be considered duplication.</p><div class="box"><div class="normativeHead"><a name="principle_26"></a>[Principle 26]</div><div class="sub"><p>Multiple components with identical or undifferentiated semantics SHOULD NOT be defined. Component definitions SHOULD have clear, explicit distinctions.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.5.7"></a>6.5.7. Keep it simple</div><p>All NIEM content and structure is fundamentally based on business requirements for information exchange. To encourage adoption and use in practice, NIEM must implement business requirements in simple, consistent, practical ways.</p><div class="box"><div class="normativeHead"><a name="principle_27"></a>[Principle 27]</div><div class="sub"><p>NIEM-conformant schemas SHOULD have the simplest possible structure, content, and architecture consistent with real business requirements.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.5.8"></a>6.5.8. Be aware of scope</div><p>The scope of components defined in NIEM-conformant schemas should be carefully considered. Some components represent simple data values, while others represent complex objects with many parts and relationships. Components should exist in layers. Components should exist as small, narrowly scoped, atomic entities that are used to consistently construct more broadly scoped, complex components (and so on).</p><div class="box"><div class="normativeHead"><a name="principle_28"></a>[Principle 28]</div><div class="sub"><p>Components defined by NIEM-conformant schemas SHOULD be defined appropriate for their scope.</p></div></div></div><div class="section"><div class="heading"><a name="section_6.5.9"></a>6.5.9. Be mindful of namespace cohesion</div><p>Namespaces should maximize cohesion. The namespace methodology helps prevent name clashes among communities or domains that have different business perspectives and may choose identical data names to represent different data concepts. A namespace should be designed so that its components are consistent, may be used together, and may be updated at the same time.</p><div class="box"><div class="normativeHead"><a name="principle_29"></a>[Principle 29]</div><div class="sub"><p>XML namespaces defined by NIEM-conformant schemas SHOULD encapsulate data components that are coherent, consistent, and internally related as a set. A namespace SHOULD encapsulate components that tend to change together.</p></div></div></div></div></div><div class="section"><div class="heading"><a name="section_7"></a>7. Conformance to standards</div><p>There are numerous XML standards to which the instance and schema documents that constitute information exchanges must conform. This section applies XML specifications to the conformance targets of this document.</p><div class="section"><div class="heading"><a name="section_7.1"></a>7.1. Conformance to XML</div><p>The XML specification <a href="#XML" class="ref">[XML]</a> defines the term <a name="d3e5091"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a>. NIEM XML documents, including instance documents and schema documents, must conform to the definition of this term.</p><div class="rule-section"><div class="heading"><a name="well-formed-xml"></a><a name="rule_7-1"></a>Rule 7-1. Document is an XML document</div><div class="box"><div class="normativeHead">[Rule 7-1] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>, <a href="#conformance_target_INS">INS</a>) (Constraint)</div><p>The document MUST be an XML document.</p></div><p>This document establishes the term <a name="d3e5107"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a>, by reference to <a href="#XML" class="ref">[XML]</a>.</p></div></div><div class="section"><div class="heading"><a name="section_7.2"></a>7.2. Conformance to XML Namespaces</div><p>The XML namespaces specification defines correct use of XML namespaces; NIEM-conformant XML artifacts (instance documents and schema documents) must use namespaces properly.</p><div class="rule-section"><div class="heading"><a name="ns-valid"></a><a name="rule_7-2"></a>Rule 7-2. Document uses XML namespaces properly</div><div class="box"><div class="normativeHead">[Rule 7-2] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>, <a href="#conformance_target_INS">INS</a>) (Constraint)</div><p>The document MUST be namespace-well-formed and namespace-valid.</p></div><p>The terms <em>namespace-well-formed</em> and <em>namespace-valid</em> are normatively defined by <a href="#XMLNamespaces" class="ref">[XML Namespaces]</a>.</p></div></div><div class="section"><div class="heading"><a name="section_7.3"></a>7.3. Conformance to XML Schema</div><p>The XML Schema specification part 1 <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> defines the syntax of the <a name="d3e5155"></a><a href="#definition_XML_Schema_definition_language"><span class="termRef">XML Schema definition language</span></a>, and identifies an <a name="d3e5158"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> that follows that syntax as a <a name="d3e5161"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a>. This section requires that NIEM reference and extension schema documents be <a name="d3e5164"></a><a href="#definition_schema_document"><span class="termRef">schema documents</span></a>.</p><div class="rule-section"><div class="heading"><a name="is-schema-doc"></a><a name="rule_7-3"></a>Rule 7-3. Document is a schema document</div><div class="box"><div class="normativeHead">[Rule 7-3] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><p>The [XML document] MUST be a [schema document].</p></div><p>This document establishes the term <a name="d3e5181"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a>, by reference to <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a>.</p></div><div class="rule-section"><div class="heading"><a name="rule-doc-element-is-xs-schema"></a><a name="rule_7-4"></a>Rule 7-4. Document element is <code>xs:schema</code></div><div class="box"><div class="normativeHead">[Rule 7-4] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="*[. is nf:get-document-element(.)]">
<sch:assert test="self::xs:schema"
>The [document element] of the [XML document] MUST have the name xs:schema.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document establishes the terms <a name="d3e5212"></a><a href="#definition_document_element"><span class="termRef">document element</span></a> by reference to <a href="#XMLInfoset" class="ref">[XML Infoset]</a>, and <a name="d3e5217"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a> by reference to <a href="#XML" class="ref">[XML]</a>.</p></div></div><div class="section"><div class="heading"><a name="section_7.4"></a>7.4. ISO 11179 Part 4</div><p>Good data definitions are fundamental to data interoperability. You cannot effectively exchange what you cannot understand. NIEM employs the guidance of <a href="#ISO11179-4" class="ref">[ISO 11179-4]</a> as a baseline for its data component definitions.</p><p>To advance the goal of creating semantically rich NIEM-conformant schemas, it is necessary that data definitions be descriptive, meaningful, and precise. <a href="#ISO11179-4" class="ref">[ISO 11179-4]</a> provides standard structure and rules for defining data definitions. NIEM uses this standard for component definitions.</p><p>Note that the metadata maintained for each NIEM component contains additional details, including domain-specific usage examples and keywords. Such metadata is used to enhance search and discovery of components in a registry, and therefore, is not included in schemas.</p><p>For convenience and reference, the summary requirements and recommendations in <a href="#ISO11179-4" class="ref">[ISO 11179-4]</a> are reproduced here:</p><blockquote><p><strong>ISO 11179 Requirements</strong></p><p>A data definition SHALL:</p><ul><li>Be stated in the singular.</li><li>State what the concept is, not only what it is not.</li><li>Be stated as a descriptive phrase or sentence(s).</li><li>Contain only commonly understood abbreviations.</li><li>Be expressed without embedding definitions of other data or underlying concepts.</li></ul><p><strong>ISO 11179 Recommendations</strong></p><p>A data definition SHOULD:</p><ul><li>State the essential meaning of the concept.</li><li>Be precise and unambiguous.</li><li>Be concise.</li><li>Be able to stand alone.</li><li>Be expressed without embedding rationale, functional usage, or procedural information.</li><li>Avoid circular reasoning.</li><li>Use the same terminology and consistent logical structure for related definitions.</li><li>Be appropriate for the type of metadata item being defined.</li></ul></blockquote><p>In addition to the requirements and recommendations of <a href="#ISO11179-4" class="ref">[ISO 11179-4]</a>, NIEM applies additional rules to data definitions. These rules are detailed in <a href="#section_11.6.1">Section 11.6.1, <em>Human-readable documentation</em>, below</a>.</p><p>These definitions leverage the term <q>definition</q> as defined by <a href="#ISO11179-4" class="ref">[ISO 11179-4]</a>:</p><blockquote><p>representation of a concept by a descriptive statement which serves to differentiate it from related concepts</p></blockquote><div class="box"><div class="normativeHead"><a name="definition_data_definition"></a>[Definition: <dfn>data definition</dfn>]</div><div class="sub"><p>The <strong>data definition</strong> of a <a name="d3e5354"></a><a href="#definition_schema_component"><span class="termRef">schema component</span></a> is the content of the first occurrence of the element <code>xs:documentation</code> that is an immediate child of an occurrence of an element <code>xs:annotation</code> that is an immediate child of the element that defines the component.</p></div></div><div class="box"><div class="normativeHead"><a name="definition_documented_component"></a>[Definition: <dfn>documented component</dfn>]</div><div class="sub"><p>In a NIEM-conformant schema, a <strong>documented component</strong> is <a name="d3e5372"></a><a href="#definition_schema_component"><span class="termRef">schema component</span></a> that has an associated <a name="d3e5375"></a><a href="#definition_data_definition"><span class="termRef">data definition</span></a>. Each documented component has a textual definition, so that the component may be well-understood.</p></div></div><p>An example of a data definition is provided in <a href="#figure_7-1">Figure 7-1, <em>Example of data definition of element <code>nc:Activity</code></em>, below</a>.</p><div class="figure"><div class="caption"><a name="figure_7-1"></a>Figure 7-1: Example of data definition of element <code>nc:Activity</code></div><div class="box"><pre><xs:element name="Activity" type="nc:ActivityType" nillable="true">
<xs:annotation>
<xs:documentation>A single or set of related actions, events, or process steps.</xs:documentation>
</xs:annotation>
</xs:element></pre></div></div><p>See <a href="#rule_11-28">Rule 11-28, <em>Data definition follows 11179-4 requirements</em> (REF, EXT), below,</a> and <a href="#rule_11-29">Rule 11-29, <em>Data definition follows 11179-4 recommendations</em> (REF, EXT), below,</a> for application of <a href="#ISO11179-4" class="ref">[ISO 11179-4]</a> to constrain NIEM <a name="d3e5415"></a><a href="#definition_data_definition"><span class="termRef">data definitions</span></a>.</p></div><div class="section"><div class="heading"><a name="section_7.5"></a>7.5. ISO 11179 Part 5</div><p>Names are a simple but incomplete means of providing semantics to data components. Data definitions, structure, and context help to fill the gap left by the limitations of naming. The goals for data component names should be syntactic consistency, semantic precision, and simplicity. In many cases, these goals conflict and it is sometimes necessary to compromise or to allow exceptions to ensure clarity and understanding. To the extent possible, NIEM applies <a href="#ISO11179-5" class="ref">[ISO 11179-5]</a> to construct NIEM data component names.</p><p>The set of NIEM data components is a collection of data representations for real-world objects and concepts, along with their associated properties and relationships. Thus, names for these components would consist of the terms (words) for object classes or that describe object classes, their characteristic properties, subparts, and relationships.</p><div class="rule-section"><div class="heading"><a name="rule_7-5"></a>Rule 7-5. Component name follows ISO 11179 Part 5 Annex A</div><div class="box"><div class="normativeHead">[Rule 7-5] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><p>A NIEM component name SHOULD be formed by applying the informative guidelines and examples detailed in Annex A of <a href="#ISO11179-5" class="ref">[ISO 11179-5]</a>, with exceptions as specified in this document.</p></div><p>The guidelines and examples of <a href="#ISO11179-5" class="ref">[ISO 11179-5]</a> provide a simple, consistent syntax for data names that captures context and thereby imparts a reasonable degree of semantic precision.</p><p>NIEM uses the guidelines and examples of <a href="#ISO11179-5" class="ref">[ISO 11179-5]</a> as a baseline for normative naming rules. However, some NIEM components require bending of these rules. Special naming rules for these classes of components are presented and discussed in the relevant sections. In spite of these exceptions, most NIEM component names can be disassembled into their <a href="#ISO11179-5" class="ref">[ISO 11179-5]</a> constituent words or terms.</p></div><p>Example:</p><p>The NIEM component name <code>AircraftFuselageColorCode</code> disassembles as follows:</p><ul><li>Object class term = <q><code>Aircraft</code></q></li><li>Qualifier term = <q><code>Fuselage</code></q></li><li>Property term = <q><code>Color</code></q></li><li>Representation term = <q><code>Code</code></q></li></ul><p><a href="#section_10.8">Section 10.8, <em>Naming rules</em>, below,</a> details the specific rules for each kind of term and how to construct NIEM component names from it.</p></div><div class="section"><div class="heading"><a name="section-ism-ntk"></a><a name="section_7.6"></a>7.6. IC-ISM and IC-NTK</div><p>The Office of the Director of National Intelligence manages and maintains a set of specifications that support the requirements of the Intelligence Community (IC) to share and manage data across the IC enterprise. These specifications are available at <a class="url" target="_blank" href="http://purl.org/ic/standards/public">http://purl.org/ic/standards/public</a>. The design of NIEM supports the use of NIEM-conformant data across the IC.</p><p>The following features have been provided to support the use of NIEM-conformant data definitions across the IC, by supporting the use of IC-ISM and IC-NTK within NIEM-defined data:</p><ul><li>NIEM base types defined by the <a name="d3e5523"></a><a href="#definition_structures_namespace"><span class="termRef">structures namespace</span></a> incorporate <code>xs:anyAttribute</code> declarations, which allow the use of attributes from the ISM and NTK namespaces. See <a href="#appendix_B">Appendix B, <em>Structures namespace</em>, below,</a> for the reference schema.</li><li><a href="#rule_11-23">Rule 11-23, <em>Schema uses only known attribute groups</em> (REF, EXT), below,</a> allows conformant data types to reference attribute groups defined in the ISM and NTK namespaces.</li><li>Complex types may be constructed that use external attributes, including attributes from the ISM and NTK namespaces. Each such attribute use must be a <a name="d3e5540"></a><a href="#definition_documented_component"><span class="termRef">documented component</span></a>, as specified by <a href="#rule_10-14">Rule 10-14, <em>External attribute use has data definition</em> (REF, EXT), below</a>.</li></ul><p>These features ensure that payloads that correctly use IC-ISM AND IC-NTK are supported by NIEM-conformant schema definitions.</p></div></div><div class="section"><div class="heading"><a name="section_8"></a>8. Strategy for a NIEM profile of XML Schema</div><div class="section"><div class="heading"><a name="section_8.1"></a>8.1. Wildcards</div><p>There are many constructs within XML Schema that act as wildcards. That is, they introduce buckets that may carry arbitrary or otherwise not-validated content. Such constructs violate <a href="#principle_12"><strong>[Principle 12]</strong>, above</a>, and as such provide implicit workarounds for the difficult task of agreeing on the content of data models. Such workarounds should be made explicitly, outside the core data model.</p><p>The following restrictions help to ban wildcards and arbitrary data:</p><ul><li>Use of the type <code>xs:anyType</code> is prohibited.</li><li>Use of the type <code>xs:anySimpleType</code> is prohibited in most cases.</li><li>Use of the element <code>xs:any</code> is prohibited in reference schemas.</li><li>Use of the element <code>xs:anyAttribute</code> is prohibited in reference schemas.</li></ul></div><div class="section"><div class="heading"><a name="section_8.2"></a>8.2. Components are globally reusable</div><p>Each component defined by a NIEM-conformant schema may be reused from outside the schema document. Every type definition, element declaration, or attribute declaration schema component that is defined by a NIEM-conformant schema is given an explicit name. These schema components are not defined as local or anonymous. These components are defined at the top level, as children of element <code>xs:schema</code>.</p><p>This is supported by the rules:</p><ul><li><a href="#rule_9-10">Rule 9-10, <em>Simple type definition is top-level</em> (REF, EXT), below</a></li><li><a href="#rule_9-25">Rule 9-25, <em>Complex type definition is top-level</em> (REF, EXT), below</a></li><li><a href="#rule_9-36">Rule 9-36, <em>Element declaration is top-level</em> (REF, EXT), below</a></li><li><a href="#rule_9-48">Rule 9-48, <em>Attribute declaration is top-level</em> (REF, EXT), below</a></li></ul><p>Additional restrictions ensure that NIEM components are also defined such that new components may be derived from them and substituted for them. Reference schemas are defined to maximize reuse, while extension schemas are defined to enable a developer to customize schema definitions to match her exchange needs. In reference schemas, the following restrictions help enforce reusability through extension and substitution:</p><ul><li>A <a name="d3e5644"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or <a name="d3e5647"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a> may not use <code>blockDefault</code> (per <a href="#rule_9-86">Rule 9-86, <em>No disallowed substitutions</em> (REF), below</a>) or <code>finalDefault</code> (per <a href="#rule_9-87">Rule 9-87, <em>No disallowed derivations</em> (REF), below</a>).</li><li><p>Element declarations and type definitions in a <a name="d3e5667"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> may not use <code>block</code> or <code>final</code>, per the rules:</p><ul><li><a href="#rule_9-34">Rule 9-34, <em>No complex type disallowed substitutions</em> (REF), below</a></li><li><a href="#rule_9-35">Rule 9-35, <em>No complex type disallowed derivation</em> (REF), below</a></li><li><a href="#rule_9-43">Rule 9-43, <em>No element disallowed substitutions </em> (REF), below</a></li><li><a href="#rule_9-44">Rule 9-44, <em>No element disallowed derivation</em> (REF), below</a></li></ul></li></ul></div><div class="section"><div class="heading"><a name="section_8.3"></a>8.3. Avoid recursive model groups</div><p>XML Schema provides the capability for model groups to be recursively defined. This means that a sequence may contain a sequence, and a choice may contain a choice. The rules in this document restrict the use of nested model groups, in order to keep content models simple, comprehensive, and reusable: The content of an element should boil down to a simple list of elements, defined in as straightforward a manner as is possible to meet requirements.</p></div><div class="section"><div class="heading"><a name="sec-no-infoset-mods"></a><a name="section_8.4"></a>8.4. Ensure XML parsing does not construct values</div><p>An XML document expresses an infoset (see <a href="#XMLInfoset" class="ref">[XML Infoset]</a>); the infoset is the data carried by the XML document, and is expressed as a set of information items (e.g., element information items, attribute information items, etc.). <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#d0e504">Section 2.1, <em>Overview of XML Schema</em></a> describes the process followed by an XML Schema validating parser. Beyond the actions of a plain XML parser, which provides the data from an XML document to its caller in a structured way, an XML Schema validating parser does the following:</p><blockquote><ol><li>Determining local schema-validity, that is whether an element or attribute information item satisfies the constraints embodied in the relevant components of an XML Schema;</li><li>Synthesizing an overall validation outcome for the item, combining local schema-validity with the results of schema-validity assessments of its descendants, if any, and adding appropriate augmentations to the infoset to record this outcome.</li></ol></blockquote><p>In short, not only does an XML Schema validating parser yield data from an XML document to its caller, it determines whether the XML document is valid against an XML Schema, and also provides an <strong>augmented infoset</strong> to the caller, constructed to reflect information implied by the schema, which may not appear in the original XML document.</p><p>XML Schema allows element and attribute declarations to provide default values. When an XML document does not contain a value for a component that has a default, the XML Schema validating parser will <em>construct</em> a value for the component. This is done through the use of the attributes <code>default</code> and <code>fixed</code>, both of which provide default values to attributes and element content. An XML Schema validating parser that validates an XML document against a schema that uses <code>default</code> or <code>fixed</code> may yield an infoset that is augmented, constructing values in the provided XML infoset where none existed in the original XML document.</p><p>NIEM schemas should not produce constructed values in the infoset. The process of XML Schema validation against NIEM schemas should provide for marking data as valid or invalid, but should not modify original infoset data with constructed values. The XML infoset yielded by a non-validating XML parser should be the same as that yielded by an XML Schema validating parser. Turning on schema validation should not alter the data received by the caller of the parser.</p><p>The prohibition of constructed values is supported by <a href="#section_6.2.2">Section 6.2.2, <em>Prohibit XML parsing from constructing values</em>, above</a>. It is also supported through a prohibition on all uses of <code>default</code>, and most uses of <code>fixed</code> on attributes and elements defined by NIEM-conformant schema documents.</p></div><div class="section"><div class="heading"><a name="section_8.5"></a>8.5. Use namespaces rigorously</div><p>Every component defined by or used in a NIEM schema has a target namespace.</p><p>XML Schema requires that namespaces used in external references be imported using the <code>xs:import</code> element. The <code>xs:import</code> element appears as an immediate child of the <code>xs:schema</code> element. A schema must import any namespace which is not the local namespace, and which is referenced from the schema.</p><p>The behavior of import statements is not necessarily intuitive. In short, the import introduces a namespace into the schema document in which the import appears; it has no transitive effect. If the namespace introduced by an import statement are not referenced from that schema document, then the import statement has no effect. </p><p>Certain tools have been seen introducing transitive behavior on imports, which is not portable across XML Schema validating parsers. If namespace 1 imports namespace 2 which imports namespace 3, a reference from namespace 1 to namespace 3 is not legal; namespace 1 must explicitly import namespace 3. A tool that imports transitively may allow schema 1 to reference 3 without a direct import of namespace 3. This is prohibited by rules which require imports of namespaces of referenced components.</p></div><div class="section"><div class="heading"><a name="section_8.6"></a>8.6. Documentation is for people; appinfo is for machines</div><p>The XML Schema specification defines two types of annotations: <em>user information</em> and <em>application information</em>. It defines that user information is for human consumption, while application information is for automatic processing. </p><p><a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#cAnnotations">Section 3.13, <em>Annotations</em></a> states:</p><blockquote><p>Annotations provide for human- and machine-targeted annotations of schema components.</p></blockquote><p><a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Annotation_details">Section 3.13.1, <em>The Annotation Schema Component</em></a> states:</p><blockquote><p>{user information} is intended for human consumption, {application information} for automatic processing.</p></blockquote><p>The two types: human-targeted and machine-targeted, are kept separate by the use of two separate container elements defined by XML Schema: <code>xs:documentation</code> and <code>xs:appinfo</code>.</p><p><code>xs:documentation</code> elements express <q>user information</q>. This information is targeted for reading by humans. The XML Schema specification does not say what form human-targeted information should take. Since it is intended for human consumption, <code>xs:documentation</code> elements in conformant schemas do not contain structured XML data. As such, any XML content appearing within a documentation element should be human-targeted examples, and should be escaped (e.g., using <code>&lt;</code> and <code>&gt;</code>, or using CDATA blocks). Documentation within conformant schemas should be plain text; whitespace formatting may not be preserved across processing.</p><p><code>xs:appinfo</code> elements express <q>application information</q>. This is generally information supporting automatic processing of schemas. Application information is addressed in <a href="#section_10.9">Section 10.9, <em>Machine-readable annotations</em>, below</a>.</p><p><a name="d3e5888">XML comment</a>s are not XML Schema constructs and are not specifically associated with any schema-based component; they are not considered semantically meaningful by NIEM and may not be retained through processing of NIEM schemas.</p></div></div><div class="section"><div class="heading"><a name="section-profile-of-xml-schema"></a><a name="section_9"></a>9. Rules for a NIEM profile of XML Schema</div><p>NIEM-conformant schemas use a profile of XML Schema. The W3C XML Schema Language provides many features that allow a developer to represent a data model many different ways. A number of XML Schema constructs are not used within NIEM-conformant schemas. Many of these constructs provide capability that is not currently needed within NIEM. Some of these constructs create problems for interoperability, with tool support, or with clarity or precision of data model definition.</p><p>This section establishes a profile of XML Schema for NIEM-conformant schemas. Because the XML Schema specifications are flexible, comprehensive rules are needed to achieve a balance between establishing uniform schema design and providing developers flexibility to solve novel data modeling problems.</p><p>Note that external schema documents (i.e., non-NIEM-conformant schema documents) do not need to obey the rules set forth in this section. So long as schema components from external schema documents are adapted for use with NIEM according to the modeling rules in <a href="#section_10.2.3">Section 10.2.3, <em>External adapter types and external components</em>, below</a>, they may be used as they appear in the external standard, even if the schema components themselves violate the rules for NIEM-conformant schemas.</p><p>The following sections are broken down in the order provided by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#concepts-data-model">Section 2.2, <em>XML Schema Abstract Data Model</em></a>, followed by a section on a schema document as a whole and a section on schema namespaces and assembly:</p><ul><li><a href="#section_9.1">Section 9.1, <em>Type definition components</em></a></li><li><a href="#section_9.2">Section 9.2, <em>Declaration components</em></a></li><li><a href="#section_9.3">Section 9.3, <em>Model group components</em></a></li><li><a href="#section_9.4">Section 9.4, <em>Identity-constraint definition components</em></a></li><li><a href="#section_9.5">Section 9.5, <em>Group definition components</em></a></li><li><a href="#section_9.6">Section 9.6, <em>Annotation components</em></a></li><li><a href="#section_9.7">Section 9.7, <em>Schema as a whole</em></a></li><li><a href="#section_9.8">Section 9.8, <em>Schema assembly</em></a></li></ul><div class="section"><div class="heading"><a name="section_9.1"></a>9.1. Type definition components</div><div class="section"><div class="heading"><a name="section_9.1.1"></a>9.1.1. Type definition hierarchy</div><div class="section"><div class="heading"><a name="section_9.1.1.1"></a>9.1.1.1. Types prohibited as base types</div><div class="rule-section"><div class="heading"><a name="rule-base-type-not-xml-ns"></a><a name="rule_9-1"></a>Rule 9-1. No base type in the XML namespace</div><p>Although the XML namespace is to be imported as if it is conformant, types from that namespace may not be the <a name="d3e5942"></a><a href="#definition_base_type_definition"><span class="termRef">base type definition</span></a> of any type.</p><div class="box"><div class="normativeHead">[Rule 9-1] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@base)]">
<sch:assert test="namespace-uri-from-QName(resolve-QName(@base, .)) != xs:anyURI('http://www.w3.org/XML/1998/namespace')"
>A schema component must not have a base type definition with a {target namespace} that is the XML namespace.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The term <a name="d3e5964"></a><a href="#definition_base_type_definition"><span class="termRef">base type definition</span></a> has a normative definition.</p></div><div class="rule-section"><div class="heading"><a name="no-base-xs-id"></a><a name="rule_9-2"></a>Rule 9-2. No base type of <code>xs:ID</code></div><div class="box"><div class="normativeHead">[Rule 9-2] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@base)]">
<sch:assert test="resolve-QName(@base, .) != xs:QName('xs:ID')"
>A schema component MUST NOT have an attribute {}base with a value of xs:ID.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-base-xs-idref"></a><a name="rule_9-3"></a>Rule 9-3. No base type of <code>xs:IDREF</code></div><div class="box"><div class="normativeHead">[Rule 9-3] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@base)]">
<sch:assert test="resolve-QName(@base, .) != xs:QName('xs:IDREF')"
>A schema component MUST NOT have an attribute {}base with a value of xs:IDREF.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-base-xs-idrefs"></a><a name="rule_9-4"></a>Rule 9-4. No base type of <code>xs:IDREFS</code></div><div class="box"><div class="normativeHead">[Rule 9-4] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@base)]">
<sch:assert test="resolve-QName(@base, .) != xs:QName('xs:IDREFS')"
>A schema component MUST NOT have an attribute {}base with a value of xs:IDREFS.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-base-xs-anyType"></a><a name="rule_9-5"></a>Rule 9-5. No base type of <code>xs:anyType</code></div><div class="box"><div class="normativeHead">[Rule 9-5] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@base)]">
<sch:assert test="resolve-QName(@base, .) != xs:QName('xs:anyType')"
>A schema component MUST NOT have an attribute {}base with a value of xs:anyType.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>XML Schema has the concept of the <q>ur-type,</q> a type that is the root of all other types. This type is realized in schemas as <code>xs:anyType</code>.</p><p>NIEM-conformant schemas must not use <code>xs:anyType</code>, because this feature permits the introduction of arbitrary content (i.e., untyped and unconstrained data) into an XML instance. NIEM intends that the schemas describing that instance describe all constructs within the instance.</p></div><div class="rule-section"><div class="heading"><a name="no-base-xs-anySimpleType"></a><a name="rule_9-6"></a>Rule 9-6. No base type of <code>xs:anySimpleType</code></div><div class="box"><div class="normativeHead">[Rule 9-6] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@base)]">
<sch:assert test="resolve-QName(@base, .) != xs:QName('xs:anySimpleType')"
>A schema component MUST NOT have an attribute {}base with a value of xs:anySimpleType.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>XML Schema provides a restriction of the <q>ur-type</q> that contains only simple content. This provides a wildcard for arbitrary text. It is realized in XML Schema as <code>xs:anySimpleType</code>.</p><p>NIEM-conformant schemas must not use <code>xs:anySimpleType</code> because this feature is insufficiently constrained to provide a meaningful starting point for content definitions. Instead, content should be based on one of the more specifically defined simple types defined by XML Schema.</p></div><div class="rule-section"><div class="heading"><a name="rule-section-no-base-xs-NOTATION"></a><a name="no-base-xs-NOTATION"></a><a name="rule_9-7"></a>Rule 9-7. No base type of <code>xs:NOTATION</code></div><div class="box"><div class="normativeHead">[Rule 9-7] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@base)]">
<sch:assert test="resolve-QName(@base, .) != xs:QName('xs:NOTATION')"
>A schema component MUST NOT have an attribute {}base with a value of xs:NOTATION.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>XML Schema notations allow the attachment of system and public identifiers on fields of data. The notation mechanism does not play a part in validation of instances and is not supported by NIEM.</p></div><div class="rule-section"><div class="heading"><a name="rule-section-no-base-xs-ENTITY"></a><a name="no-base-xs-ENTITY"></a><a name="rule_9-8"></a>Rule 9-8. No base type of <code>xs:ENTITY</code></div><div class="box"><div class="normativeHead">[Rule 9-8] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@base)]">
<sch:assert test="resolve-QName(@base, .) != xs:QName('xs:ENTITY')"
>A schema component MUST NOT have an attribute {}base with a value of xs:ENTITY.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="rule-section-no-base-xs-ENTITIES"></a><a name="no-base-xs-ENTITIES"></a><a name="rule_9-9"></a>Rule 9-9. No base type of <code>xs:ENTITIES</code></div><div class="box"><div class="normativeHead">[Rule 9-9] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@base)]">
<sch:assert test="resolve-QName(@base, .) != xs:QName('xs:ENTITIES')"
>A schema component MUST NOT have an attribute {}base with a value of xs:ENTITIES.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div></div><div class="section"><div class="heading"><a name="section_9.1.2"></a>9.1.2. Simple type definition</div><div class="rule-section"><div class="heading"><a name="st-top-level"></a><a name="rule_9-10"></a>Rule 9-10. Simple type definition is top-level</div><div class="box"><div class="normativeHead">[Rule 9-10] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:simpleType">
<sch:assert test="exists(parent::xs:schema)"
>A simple type definition MUST be top-level.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>NIEM does not support anonymous types in NIEM-conformant schemas. All XML Schema <q>top-level</q> types (children of the document element) are required by XML Schema to be named. By requiring NIEM type definitions to be top level, they are forced to be named and are globally reusable.</p></div><div class="rule-section"><div class="heading"><a name="no-st-final"></a><a name="rule_9-11"></a>Rule 9-11. No simple type disallowed derivation</div><div class="box"><div class="normativeHead">[Rule 9-11] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:simpleType">
<sch:assert test="empty(@final)"
>An element xs:simpleType MUST NOT have an attribute {}final.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="st-has-dd"></a><a name="rule_9-12"></a>Rule 9-12. Simple type has data definition</div><div class="box"><div class="normativeHead">[Rule 9-12] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:simpleType">
<sch:assert test="some $definition in xs:annotation/xs:documentation[1] satisfies
string-length(normalize-space(string($definition))) &gt; 0"
>A simple type MUST have a data definition.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document defines the term <a name="d3e6274"></a><a href="#definition_data_definition"><span class="termRef">data definition</span></a>.</p></div><div class="rule-section"><div class="heading"><a name="no-facet-fixed"></a><a name="rule_9-13"></a>Rule 9-13. No use of <q>fixed</q> on simple type facets</div><p>An attribute <code>fixed</code> on a constraining facet (e.g., <code>xs:maxInclusive</code>) of a simple type <var>$base</var> prevents a simple type derived from <var>$base</var> from further restricting that facet. For example, if simpleType <code>nc:LatitudeDegreeSimpleType</code> uses an <code>xs:maxInclusive</code> facet that limits the maximum value to 90, a simple type derived from that type could not further restrict the type to limit the maximum value to 45.</p><p>The use of <code>fixed</code> on simple type facets violates <a href="#principle_17"><strong>[Principle 17]</strong>, above</a>, since it prevents an extension schema from constraining a base type. As a result, the <code>fixed</code> on simple type facets in reference schemas is prohibited.</p><div class="box"><div class="normativeHead">[Rule 9-13] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[self::xs:length or self::xs:minLength or self::xs:maxLength or self::xs:whiteSpace
or self::xs:maxInclusive or self::xs:maxExclusive or self::xs:minExclusive or self::xs:minInclusive
or self::xs:totalDigits or self::xs:fractionDigits]">
<sch:assert test="empty(@fixed)"
>A simple type constraining facet MUST NOT have an attribute {}fixed.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="enum-has-dd"></a><a name="rule_9-14"></a>Rule 9-14. Enumeration has data definition</div><div class="box"><div class="normativeHead">[Rule 9-14] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:enumeration">
<sch:assert test="some $definition in xs:annotation/xs:documentation[1] satisfies
string-length(normalize-space(string($definition))) &gt; 0"
>An enumeration facet MUST have a data definition.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document defines the term <a name="d3e6361"></a><a href="#definition_data_definition"><span class="termRef">data definition</span></a>.</p></div><div class="section"><div class="heading"><a name="section_9.1.2.1"></a>9.1.2.1. Simple types prohibited as list item types</div><p>There is no explicit prohibition on the use of xs:NOTATION as list item type, because it is prohibited by <a href="#XMLSchema-2" class="ref">[XML Schema Datatypes]</a>.</p><p>There is no prohibition on <code>xs:anyType</code> as a list item type, because xs:anyType is not a simple type.</p><div class="rule-section"><div class="heading"><a name="no-itemType-xs-id"></a><a name="rule_9-15"></a>Rule 9-15. No list item type of <code>xs:ID</code></div><div class="box"><div class="normativeHead">[Rule 9-15] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@itemType)]">
<sch:assert test="resolve-QName(@itemType, .) != xs:QName('xs:ID')"
>A schema component MUST NOT have an attribute {}itemType with a value of xs:ID.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-itemType-xs-idref"></a><a name="rule_9-16"></a>Rule 9-16. No list item type of <code>xs:IDREF</code></div><div class="box"><div class="normativeHead">[Rule 9-16] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@itemType)]">
<sch:assert test="resolve-QName(@itemType, .) != xs:QName('xs:IDREF')"
>A schema component MUST NOT have an attribute {}itemType with a value of xs:IDREF.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-itemType-xs-anySimpleType"></a><a name="rule_9-17"></a>Rule 9-17. No list item type of <code>xs:anySimpleType</code></div><div class="box"><div class="normativeHead">[Rule 9-17] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@itemType)]">
<sch:assert test="resolve-QName(@itemType, .) != xs:QName('xs:anySimpleType')"
>A schema component MUST NOT have an attribute {}itemType with a value of xs:anySimpleType.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-itemType-xs-entity"></a><a name="rule_9-18"></a>Rule 9-18. No list item type of <code>xs:ENTITY</code></div><div class="box"><div class="normativeHead">[Rule 9-18] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@itemType)]">
<sch:assert test="resolve-QName(@itemType, .) != xs:QName('xs:ENTITY')"
>A schema component MUST NOT have an attribute {}itemType with a value of xs:ENTITY.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="section"><div class="heading"><a name="section_9.1.2.2"></a>9.1.2.2. Simple types prohibited as union member types</div><p>There is no explicit prohibition on the use of xs:NOTATION as a union member type, because it is prohibited by <a href="#XMLSchema-2" class="ref">[XML Schema Datatypes]</a>.</p><p>There is no prohibition on <code>xs:anyType</code> as a union member type, because xs:anyType is not a simple type.</p><div class="rule-section"><div class="heading"><a name="no-memberTypes-xs-id"></a><a name="rule_9-19"></a>Rule 9-19. No union member types of <code>xs:ID</code></div><div class="box"><div class="normativeHead">[Rule 9-19] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@memberTypes)]">
<sch:assert test="every $type-qname
in tokenize(normalize-space(@memberTypes), ' ')
satisfies resolve-QName($type-qname, .) != xs:QName('xs:ID')"
>A schema component MUST NOT have an attribute {}memberTypes that includes a value of xs:ID.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-memberTypes-xs-idref"></a><a name="rule_9-20"></a>Rule 9-20. No union member types of <code>xs:IDREF</code></div><div class="box"><div class="normativeHead">[Rule 9-20] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@memberTypes)]">
<sch:assert test="every $type-qname
in tokenize(normalize-space(@memberTypes), ' ')
satisfies resolve-QName($type-qname, .) != xs:QName('xs:IDREF')"
>A schema component MUST NOT have an attribute {}memberTypes that includes a value of xs:IDREF.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-memberTypes-xs-idrefs"></a><a name="rule_9-21"></a>Rule 9-21. No union member types of <code>xs:IDREFS</code></div><div class="box"><div class="normativeHead">[Rule 9-21] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@memberTypes)]">
<sch:assert test="every $type-qname
in tokenize(normalize-space(@memberTypes), ' ')
satisfies resolve-QName($type-qname, .) != xs:QName('xs:IDREFS')"
>A schema component MUST NOT have an attribute {}memberTypes that includes a value of xs:IDREFS.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-memberTypes-xs-anySimpleType"></a><a name="rule_9-22"></a>Rule 9-22. No union member types of <code>xs:anySimpleType</code></div><div class="box"><div class="normativeHead">[Rule 9-22] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@memberTypes)]">
<sch:assert test="every $type-qname
in tokenize(normalize-space(@memberTypes), ' ')
satisfies resolve-QName($type-qname, .) != xs:QName('xs:anySimpleType')"
>A schema component MUST NOT have an attribute {}memberTypes that includes a value of xs:anySimpleType.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-memberTypes-xs-entity"></a><a name="rule_9-23"></a>Rule 9-23. No union member types of <code>xs:ENTITY</code></div><div class="box"><div class="normativeHead">[Rule 9-23] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@memberTypes)]">
<sch:assert test="every $type-qname
in tokenize(normalize-space(@memberTypes), ' ')
satisfies resolve-QName($type-qname, .) != xs:QName('xs:ENTITY')"
>A schema component MUST NOT have an attribute {}memberTypes that includes a value of xs:ENTITY.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-memberTypes-xs-entities"></a><a name="rule_9-24"></a>Rule 9-24. No union member types of <code>xs:ENTITIES</code></div><div class="box"><div class="normativeHead">[Rule 9-24] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[exists(@memberTypes)]">
<sch:assert test="every $type-qname
in tokenize(normalize-space(@memberTypes), ' ')
satisfies resolve-QName($type-qname, .) != xs:QName('xs:ENTITIES')"
>A schema component MUST NOT have an attribute {}memberTypes that includes a value of xs:ENTITIES.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div></div><div class="section"><div class="heading"><a name="section_9.1.3"></a>9.1.3. Complex type definition</div><div class="rule-section"><div class="heading"><a name="ct-top-level"></a><a name="rule_9-25"></a>Rule 9-25. Complex type definition is top-level</div><div class="box"><div class="normativeHead">[Rule 9-25] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType">
<sch:assert test="exists(parent::xs:schema)"
>A complex type definition MUST be top-level.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Note that this implies that every <code>xs:complexType</code> element has a <code>name</code> attribute.</p></div><div class="rule-section"><div class="heading"><a name="ct-has-dd"></a><a name="rule_9-26"></a>Rule 9-26. Complex type has data definition</div><div class="box"><div class="normativeHead">[Rule 9-26] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType">
<sch:assert test="some $definition in xs:annotation/xs:documentation[1] satisfies
string-length(normalize-space(string($definition))) &gt; 0"
>A complex type MUST have a data definition.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document defines the term <a name="d3e6702"></a><a href="#definition_data_definition"><span class="termRef">data definition</span></a>.</p></div><div class="section"><div class="heading"><a name="section_9.1.3.1"></a>9.1.3.1. No mixed content</div><div class="rule-section"><div class="heading"><a name="ct-not-mixed"></a><a name="rule_9-27"></a>Rule 9-27. No mixed content on complex type</div><div class="box"><div class="normativeHead">[Rule 9-27] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType[exists(@mixed)]">
<sch:assert test="xs:boolean(@mixed) = false()"
>A complex type definition MUST NOT have mixed content.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Mixed content allows the mixing of data tags with text. Languages such as XHTML use this syntax for markup of text. NIEM-conformant schemas define XML that is for data exchange, not text markup. Mixed content creates complexity in processing, defining, and constraining content.</p><p>Well-defined markup languages exist outside NIEM and may be used with NIEM data. External schema documents may include mixed content and may be used with NIEM. However, mixed content must not be defined by NIEM-conformant schemas in keeping with <a href="#principle_10"><strong>[Principle 10]</strong>, above</a>.</p></div><div class="rule-section"><div class="heading"><a name="cc-not-mixed"></a><a name="rule_9-28"></a>Rule 9-28. No mixed content on complex content</div><div class="box"><div class="normativeHead">[Rule 9-28] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexContent[exists(@mixed)]">
<sch:assert test="xs:boolean(@mixed) = false()"
>A complex type definition with complex content MUST NOT have mixed content.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>See <a href="#rule_9-27">Rule 9-27, <em>No mixed content on complex type</em> (REF, EXT), above,</a> for the rationale for this rule.</p></div></div><div class="rule-section"><div class="heading"><a name="ct-has-content-type"></a><a name="rule_9-29"></a>Rule 9-29. Complex type content is explicitly simple or complex</div><div class="box"><div class="normativeHead">[Rule 9-29] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType">
<sch:assert test="exists(xs:simpleContent) or exists(xs:complexContent)"
>An element xs:complexType MUST have a child element xs:simpleContent or xs:complexContent.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>XML Schema provides shorthand to defining complex content of a complex type, which is to define the complex type with immediate children that specify elements, or other groups, and attributes. In the desire to normalize schema representation of types and to be explicit, NIEM forbids the use of that shorthand.</p></div><div class="section"><div class="heading"><a name="section_9.1.3.2"></a>9.1.3.2. Complex content</div><div class="rule-section"><div class="heading"><a name="ct-cc-is-extension"></a><a name="rule_9-30"></a>Rule 9-30. Complex content uses extension</div><div class="box"><div class="normativeHead">[Rule 9-30] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexContent">
<sch:assert test="exists(xs:extension)"
>An element xs:complexContent MUST have a child xs:extension.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>NIEM does not support the use of complex type restriction in reference schemas. The use of restriction in a reference schema would reduce the ability for that schema to be reused. Restriction may be used in extension schemas.</p></div><div class="section"><div class="heading"><a name="section_9.1.3.2.1"></a>9.1.3.2.1. Base type of complex type with complex content has complex content</div><p>These two rules addresses a peculiarity of the <a name="d3e6833"></a><a href="#definition_XML_Schema_definition_language"><span class="termRef">XML Schema definition language</span></a>, which allows a complex type to be constructed using <code>xs:complexContent</code>, and yet is derived from a complex type that uses <code>xs:simpleContent</code>. These rules ensure that each type has the content style indicated by the schema. An example is included in the following figure. Note that type <code>niem-xs:integer</code> is a complex type with simple content.</p><div class="figure"><div class="caption"><a name="figure_9-1"></a>Figure 9-1: Example of complex type with simple content that claims to have complex content</div><div class="box"><pre><xs:complexType name="TreeCountType">
<xs:annotation>
<xs:documentation>A data type for a number of trees</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="niem-xs:integer"/>
</xs:complexContent>
</xs:complexType></pre></div></div><p>The first rule handles cases that can be determined within a single schema document, while the SET version handles cases that require cross-schema resolution.</p><div class="rule-section"><div class="heading"><a name="rule-ref-ccc-base-has-cc"></a><a name="rule_9-31"></a>Rule 9-31. Base type of complex type with complex content must have complex content</div><div class="box"><div class="normativeHead">[Rule 9-31] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType/xs:complexContent/xs:*[
(self::xs:extension or self::xs:restriction)
and (some $base-qname in resolve-QName(@base, .) satisfies
namespace-uri-from-QName($base-qname) = nf:get-target-namespace(.))]">
<sch:assert test="some $base-type in nf:resolve-type(., resolve-QName(@base, .)) satisfies
empty($base-type/self::xs:complexType/xs:simpleContent)"
>The base type of complex type that has complex content MUST be a complex type with complex content.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="rule-set-ccc-base-has-cc"></a><a name="rule_9-32"></a>Rule 9-32. Base type of complex type with complex content must have complex content</div><div class="box"><div class="normativeHead">[Rule 9-32] (<a href="#conformance_target_SET">SET</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType[
nf:has-effective-conformance-target-identifier(., xs:anyURI('http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ReferenceSchemaDocument'))
or nf:has-effective-conformance-target-identifier(., xs:anyURI('http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ExtensionSchemaDocument'))
]/xs:complexContent">
<sch:assert test="some $derivation in xs:*[self::xs:extension or self::xs:restriction],
$base-qname in resolve-QName($derivation/@base, $derivation),
$base-type in nf:resolve-type($derivation, $base-qname) satisfies
empty($base-type/self::xs:complexType/xs:simpleContent)"
>The base type of complex type that has complex content MUST have complex content.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div></div><div class="section"><div class="heading"><a name="section_9.1.3.3"></a>9.1.3.3. Simple content</div><div class="rule-section"><div class="heading"><a name="ct-sc-has-extension"></a><a name="rule_9-33"></a>Rule 9-33. Simple content uses extension</div><div class="box"><div class="normativeHead">[Rule 9-33] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:simpleContent">
<sch:assert test="exists(xs:extension)"
>A complex type definition with simple content schema component MUST have a derivation method of extension.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This rule ensures that the definition of a complex type with simple content will use XML Schema extension. Under this rule, the structure of these types will be more uniform, as alternate formats are prohibited. The above rule allows for use of <code>xs:restriction</code> within <code>xs:simpleContent</code> in extension schemas.</p></div></div><div class="rule-section"><div class="heading"><a name="no-ct-block"></a><a name="rule_9-34"></a>Rule 9-34. No complex type disallowed substitutions</div><div class="box"><div class="normativeHead">[Rule 9-34] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType">
<sch:assert test="empty(@block)"
>An element xs:complexType MUST NOT have an attribute {}block.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-ct-final"></a><a name="rule_9-35"></a>Rule 9-35. No complex type disallowed derivation</div><div class="box"><div class="normativeHead">[Rule 9-35] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType">
<sch:assert test="empty(@final)"
>An element xs:complexType MUST NOT have an attribute {}final.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div></div><div class="section"><div class="heading"><a name="section_9.2"></a>9.2. Declaration components</div><div class="section"><div class="heading"><a name="section_9.2.1"></a>9.2.1. Element declaration</div><p>Every element declaration in a NIEM-conformant schema document is a top-level element; rules prohibit the declaration of local elements.</p><p>Within a NIEM-conformant schema document, an element may be declared as abstract. Elements may be defined without a type, but any element declaration that has no type must be declared abstract, as specified by <a href="#rule_9-38">Rule 9-38, <em>Untyped element is abstract</em> (REF, EXT), below</a>.</p><p>Within an element declaration, the attributes <code>fixed</code>, <code>nillable</code>, and <code>substitutionGroup</code> may be used as per the XML Schema specification. The attribute <code>form</code> is irrelevant to NIEM, as NIEM-conformant schemas may not contain local element declarations, as specified by <a href="#rule_9-36">Rule 9-36, <em>Element declaration is top-level</em> (REF, EXT), below</a>.</p><div class="rule-section"><div class="heading"><a name="el-top-level"></a><a name="rule_9-36"></a>Rule 9-36. Element declaration is top-level</div><div class="box"><div class="normativeHead">[Rule 9-36] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@name)]">
<sch:assert test="exists(parent::xs:schema)"
>An element declaration MUST be top-level.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>All schema components defined by NIEM-conformant schemas must be named, accessible from outside the defining schema, and reusable across schemas. Local element declarations provide named elements that are not reusable outside the context in which they are defined. Requiring named NIEM elements to be top level ensures that they are globally reusable.</p></div><div class="rule-section"><div class="heading"><a name="el-has-dd"></a><a name="rule_9-37"></a>Rule 9-37. Element declaration has data definition</div><div class="box"><div class="normativeHead">[Rule 9-37] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@name)]">
<sch:assert test="some $definition in xs:annotation/xs:documentation[1] satisfies
string-length(normalize-space(string($definition))) &gt; 0"
>An element declaration MUST have a data definition.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document defines the term <a name="d3e7081"></a><a href="#definition_data_definition"><span class="termRef">data definition</span></a>.</p></div><div class="rule-section"><div class="heading"><a name="el-with-no-type-is-abstract"></a><a name="rule_9-38"></a>Rule 9-38. Untyped element is abstract</div><div class="box"><div class="normativeHead">[Rule 9-38] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:schema/xs:element[empty(@type)]">
<sch:assert test="exists(@abstract)
and xs:boolean(@abstract) = true()"
>A top-level element declaration that does not set the {type definition} property via the attribute "type" MUST have the {abstract} property with a value of "true".</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Untyped element declarations act as wildcards that may carry arbitrary data. By declaring such types abstract, NIEM allows the creation of type independent semantics without allowing arbitrary content to appear in XML instances.</p></div><div class="rule-section"><div class="heading"><a name="el-with-type-xs-anysimpletype-is-abstract"></a><a name="rule_9-39"></a>Rule 9-39. Element of type <code>xs:anySimpleType</code> is abstract</div><p>The type <code>xs:anySimpleType</code> does not have any concrete semantics; The use of <code>xs:anySimpleType</code> is limited to the case where an abstract element is of type <code>xs:anySimpleType</code>, to act as a base for concrete implementations of the element.</p><div class="box"><div class="normativeHead">[Rule 9-39] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@type)
and resolve-QName(@type, .) = xs:QName('xs:anySimpleType')]">
<sch:assert test="exists(@abstract)
and xs:boolean(@abstract) = true()"
>An element declaration that has a type xs:anySimpleType MUST have the {abstract} property with a value of "true".</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="el-type-not-xs"></a><a name="rule_9-40"></a>Rule 9-40. Element type not in the XML Schema namespace</div><div class="box"><div class="normativeHead">[Rule 9-40] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@type)]">
<sch:assert test="for $type-qname in resolve-QName(@type, .) return
$type-qname = xs:QName('xs:anySimpleType')
or namespace-uri-from-QName($type-qname) != xs:anyURI('http://www.w3.org/2001/XMLSchema')"
>An element type that is not xs:anySimpleType MUST NOT have a namespace name http://www.w3.org/2001/XMLSchema.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The prohibition of element types having the XML Schema namespace subsumes a prohibition of the type <code>xs:anyType</code>.</p></div><div class="rule-section"><div class="heading"><a name="el-type-ns-not-special"></a><a name="rule_9-41"></a>Rule 9-41. Element type not in the XML namespace</div><p>The XML namespace may be imported into a conformant schema document as if it were conformant. This specification does not enable a reference to any types that may be defined by any implementation of a schema for that namespace.</p><div class="box"><div class="normativeHead">[Rule 9-41] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@type)]">
<sch:assert test="namespace-uri-from-QName(resolve-QName(@type, .)) != 'http://www.w3.org/XML/1998/namespace'"
>An element type MUST NOT have a namespace name that is in the XML namespace.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="el-type-not-st"></a><a name="rule_9-42"></a>Rule 9-42. Element type is not simple type</div><div class="box"><div class="normativeHead">[Rule 9-42] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[@type]">
<sch:assert test="every $type-qname in resolve-QName(@type, .),
$type-ns in namespace-uri-from-QName($type-qname),
$type-local-name in local-name-from-QName($type-qname) satisfies (
$type-qname = xs:QName('xs:anySimpleType')
or (($type-ns = nf:get-target-namespace(.)
or exists(nf:get-document-element(.)/xs:import[
xs:anyURI(@namespace) = $type-ns
and empty(@appinfo:externalImportIndicator)]))
and not(ends-with($type-local-name, 'SimpleType'))))"
>An element type that is not xs:anySimpleType MUST NOT be a simple type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-el-block"></a><a name="rule_9-43"></a>Rule 9-43. No element disallowed substitutions </div><div class="box"><div class="normativeHead">[Rule 9-43] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element">
<sch:assert test="empty(@block)"
>An element xs:element MUST NOT have an attribute {}block.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-el-final"></a><a name="rule_9-44"></a>Rule 9-44. No element disallowed derivation</div><div class="box"><div class="normativeHead">[Rule 9-44] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element">
<sch:assert test="empty(@final)"
>An element xs:element MUST NOT have an attribute {}final.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="section"><div class="heading"><a name="section_9.2.1.1"></a>9.2.1.1. No element value constraints</div><div class="rule-section"><div class="heading"><a name="no-el-default"></a><a name="rule_9-45"></a>Rule 9-45. No element default value</div><div class="box"><div class="normativeHead">[Rule 9-45] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element">
<sch:assert test="empty(@default)"
>An element xs:element MUST NOT have an attribute {}default.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-el-fixed"></a><a name="rule_9-46"></a>Rule 9-46. No element fixed value</div><div class="box"><div class="normativeHead">[Rule 9-46] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element">
<sch:assert test="empty(@fixed)"
>An element xs:element MUST NOT have an attribute {}fixed.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="rule-section"><div class="heading"><a name="el-is-nillable"></a><a name="rule_9-47"></a>Rule 9-47. Element declaration is nillable</div><p>All elements declared by reference schemas allow a nil value. This enables the ID/IDREF mechanism linking <code>structures:ref</code> and <code>structures:id</code>, as described by <a href="#section_12.2">Section 12.2, <em>Identifiers and references</em>, below</a>.</p><p>A developer may constrain the use of <code>nil</code> in an instance by setting <code>nillable</code> to false in subset schemas, or by use of non-XML Schema mechanisms, such as Schematron.</p><div class="box"><div class="normativeHead">[Rule 9-47] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[@name and (empty(@abstract)
or xs:boolean(@abstract) = false())]">
<sch:assert test="exists(@nillable)
and xs:boolean(@nillable) = true()"
>An element declaration MUST have the {nillable} property with a value of true.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document defines the term <a name="d3e7361"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a>.</p></div></div><div class="section"><div class="heading"><a name="section_9.2.2"></a>9.2.2. Element substitution group</div><p>This section is intentionally blank. It is present in order to ensure that section numbers correspond to <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#concepts-data-model">Section 2.2, <em>XML Schema Abstract Data Model</em></a>, as described by <a href="#section_9">Section 9, <em>Rules for a NIEM profile of XML Schema</em>, above</a>.</p></div><div class="section"><div class="heading"><a name="section_9.2.3"></a>9.2.3. Attribute declaration</div><p>Within an attribute declaration, the attribute <code>form</code> is irrelevant to NIEM, as NIEM-conformant schemas may not contain local attribute declarations.</p><div class="rule-section"><div class="heading"><a name="att-top-level"></a><a name="rule_9-48"></a>Rule 9-48. Attribute declaration is top-level</div><div class="box"><div class="normativeHead">[Rule 9-48] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[exists(@name)]">
<sch:assert test="exists(parent::xs:schema)"
>An attribute declaration MUST be top-level.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>All schema components defined by NIEM-conformant schemas are named, accessible from outside the defining schema, and reusable across schemas. Local attribute declarations provide named attributes that are not reusable outside the context in which they are defined. Requiring named NIEM attributes to be top level ensures that they are globally reusable.</p></div><div class="rule-section"><div class="heading"><a name="at-has-dd"></a><a name="rule_9-49"></a>Rule 9-49. Attribute declaration has data definition</div><div class="box"><div class="normativeHead">[Rule 9-49] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[exists(@name)]">
<sch:assert test="some $definition in xs:annotation/xs:documentation[1] satisfies
string-length(normalize-space(string($definition))) &gt; 0"
>An attribute declaration MUST have a data definition.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document defines the term <a name="d3e7443"></a><a href="#definition_data_definition"><span class="termRef">data definition</span></a>.</p></div><div class="rule-section"><div class="heading"><a name="attr-has-type"></a><a name="rule_9-50"></a>Rule 9-50. Attribute declaration has type</div><div class="box"><div class="normativeHead">[Rule 9-50] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[exists(@name)]">
<sch:assert test="exists(@type)"
>A top-level attribute declaration MUST have a type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Untyped XML Schema attributes allow arbitrary content, with no semantics. Attributes must have a type so that specific syntax and semantics will be provided.</p></div><div class="section"><div class="heading"><a name="section_9.2.3.1"></a>9.2.3.1. Prohibited attribute types</div><p>There is no explicit prohibition on the use of xs:NOTATION as an attribute type, because it is prohibited by <a href="#XMLSchema-2" class="ref">[XML Schema Datatypes]</a>.</p><p>These types are only explicitly prohibited from attributes, not elements, because the case is covered by a general prohibition against elements having simple types.</p><div class="rule-section"><div class="heading"><a name="no-type-xs-id"></a><a name="rule_9-51"></a>Rule 9-51. No attribute type of <code>xs:ID</code></div><div class="box"><div class="normativeHead">[Rule 9-51] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[exists(@type)]">
<sch:assert test="resolve-QName(@type, .) != xs:QName('xs:ID')"
>A schema component MUST NOT have an attribute {}type with a value of xs:ID.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-type-xs-idref"></a><a name="rule_9-52"></a>Rule 9-52. No attribute type of <code>xs:IDREF</code></div><div class="box"><div class="normativeHead">[Rule 9-52] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[exists(@type)]">
<sch:assert test="resolve-QName(@type, .) != xs:QName('xs:IDREF')"
>A schema component MUST NOT have an attribute {}type with a value of xs:IDREF.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-type-xs-idrefs"></a><a name="rule_9-53"></a>Rule 9-53. No attribute type of <code>xs:IDREFS</code></div><div class="box"><div class="normativeHead">[Rule 9-53] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[exists(@type)]">
<sch:assert test="resolve-QName(@type, .) != xs:QName('xs:IDREFS')"
>A schema component MUST NOT have an attribute {}type with a value of xs:IDREFS.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-type-xs-entity"></a><a name="rule_9-54"></a>Rule 9-54. No attribute type of <code>xs:ENTITY</code></div><div class="box"><div class="normativeHead">[Rule 9-54] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[exists(@type)]">
<sch:assert test="resolve-QName(@type, .) != xs:QName('xs:ENTITY')"
>A schema component MUST NOT have an attribute {}type with a value of xs:ENTITY.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-type-xs-entities"></a><a name="rule_9-55"></a>Rule 9-55. No attribute type of <code>xs:ENTITIES</code></div><div class="box"><div class="normativeHead">[Rule 9-55] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[exists(@type)]">
<sch:assert test="resolve-QName(@type, .) != xs:QName('xs:ENTITIES')"
>A schema component MUST NOT have an attribute {}type with a value of xs:ENTITIES.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-type-xs-anySimpleType"></a><a name="rule_9-56"></a>Rule 9-56. No attribute type of <code>xs:anySimpleType</code></div><div class="box"><div class="normativeHead">[Rule 9-56] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[exists(@type)]">
<sch:assert test="resolve-QName(@type, .) != xs:QName('xs:anySimpleType')"
>A schema component MUST NOT have an attribute {}type with a value of xs:anySimpleType.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="section"><div class="heading"><a name="section_9.2.3.2"></a>9.2.3.2. No attribute value constraints</div><div class="rule-section"><div class="heading"><a name="no-at-default"></a><a name="rule_9-57"></a>Rule 9-57. No attribute default values</div><div class="box"><div class="normativeHead">[Rule 9-57] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute">
<sch:assert test="empty(@default)"
>An element xs:attribute MUST NOT have an attribute {}default.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This rule helps to ensure that schema processing does not alter processed data, as described in <a href="#section_8.4">Section 8.4, <em>Ensure XML parsing does not construct values</em>, above</a>.</p></div><div class="rule-section"><div class="heading"><a name="no-at-fixed"></a><a name="rule_9-58"></a>Rule 9-58. No fixed values for optional attributes</div><p>The <code>fixed</code> attribute is described by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Attribute_Declaration_details">Section 3.2.1, <em>The Attribute Declaration Schema Component</em></a>:</p><blockquote><p><em>default</em> specifies that the attribute is to appear unconditionally in the post-schema-validation infoset, with the supplied value used whenever the attribute is not actually present; <em>fixed</em> indicates that the attribute value if present must equal the supplied constraint value, and if absent receives the supplied value as for <em>default</em>.</p></blockquote><div class="box"><div class="normativeHead">[Rule 9-58] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[exists(@ref) and @use eq 'required']">
<sch:report test="false()" role="warning">This rule does not constrain attribute uses that are required</sch:report>
</sch:rule>
<sch:rule context="xs:attribute">
<sch:assert test="empty(@fixed)"
>An element xs:attribute that is not a required attribute use MUST NOT have an attribute {}fixed.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This rule helps to ensure that schema processing does not alter processed data, as described in <a href="#section_8.4">Section 8.4, <em>Ensure XML parsing does not construct values</em>, above</a>. The use of the <code>fixed</code> attribute may result in alteration of the post-schema-validation infoset, like the use of <code>default</code> does. This behavior is described by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Attribute_Declaration_details">Section 3.2.1, <em>The Attribute Declaration Schema Component</em></a>.</p></div></div></div><div class="section"><div class="heading"><a name="section-profile-notation-declaration"></a><a name="section_9.2.4"></a>9.2.4. Notation declaration</div><div class="rule-section"><div class="heading"><a name="no-el-notation"></a><a name="rule_9-59"></a>Rule 9-59. No use of element <code>xs:notation</code></div><div class="box"><div class="normativeHead">[Rule 9-59] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:notation">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:notation.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>See <a href="#rule_9-7">Rule 9-7, <em>No base type of <code>xs:NOTATION</code></em> (REF, EXT), above,</a> for comments about the use of notations.</p></div></div></div><div class="section"><div class="heading"><a name="section_9.3"></a>9.3. Model group components</div><div class="section"><div class="heading"><a name="section-profile-model-group"></a><a name="section_9.3.1"></a>9.3.1. Model group</div><p>Complex content definitions in XML Schema use model group schema components. These schema components, <code>xs:all</code>, <code>xs:choice</code> and <code>xs:sequence</code>, also called compositors, provide for ordering and selection of particles within a model group.</p><p>XML Schema defines a <strong>particle</strong> as an occurrence of <code>xs:element</code>, <code>xs:sequence</code>, <code>xs:choice</code>, <code>xs:any</code> (wildcard) and <code>xs:group</code> (model group) within a content model. For example, an <code>xs:sequence</code> within an XML Schema complex type is a particle. An <code>xs:element</code> occurring within an <code>xs:sequence</code> is also a particle.</p><div class="rule-section"><div class="heading"><a name="rule_9-60"></a>Rule 9-60. Model group does not affect meaning</div><div class="box"><div class="normativeHead">[Rule 9-60] (<a href="#conformance_target_EXT">EXT</a>) (Interpretation)</div><p>The use of model groups <code>xs:all</code>, <code>xs:sequence</code>, and <code>xs:choice</code> MUST NOT define the semantics of an instance. The meaning of an element occurrence within an element occurrence MUST be identical, regardless of the model group used to define a <a name="d3e7847"></a><a href="#definition_schema_component"><span class="termRef">schema component</span></a>.</p></div></div><div class="rule-section"><div class="heading"><a name="no-all"></a><a name="rule_9-61"></a>Rule 9-61. No <code>xs:all</code></div><div class="box"><div class="normativeHead">[Rule 9-61] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:all">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:all</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The element <code>xs:all</code> provides a set of particles (e.g., elements) that may be included in an instance, in no particular order. This compositor does not support a variety of cardinalities, has shown to be confusing in practice, and has functionality that overlaps with NIEM’s use of substitution groups. Use of substitution groups is the preferred method in NIEM schemas for obtaining flexible content models.</p></div><div class="section"><div class="heading"><a name="section_9.3.1.1"></a>9.3.1.1. Sequence</div><div class="rule-section"><div class="heading"><a name="seq-in-ext"></a><a name="rule_9-62"></a>Rule 9-62. <code>xs:sequence</code> must be child of <code>xs:extension</code></div><div class="box"><div class="normativeHead">[Rule 9-62] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:sequence">
<sch:assert test="exists(parent::xs:extension)"
>An element xs:sequence MUST be a child of element xs:extension.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="seq-in-restr"></a><a name="rule_9-63"></a>Rule 9-63. <code>xs:sequence</code> must be child of <code>xs:extension</code> or <code>xs:restriction</code></div><div class="box"><div class="normativeHead">[Rule 9-63] (<a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:sequence">
<sch:assert test="exists(parent::xs:extension) or exists(parent::xs:restriction)"
>An element xs:sequence MUST be a child of element xs:extension or xs:restriction.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="section"><div class="heading"><a name="section_9.3.1.2"></a>9.3.1.2. Choice</div><div class="rule-section"><div class="heading"><a name="no-choice"></a><a name="rule_9-64"></a>Rule 9-64. No <code>xs:choice</code></div><div class="box"><div class="normativeHead">[Rule 9-64] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:choice">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:choice</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The element <code>xs:choice</code> provides an exclusive set of particles, one of which may appear in an instance. This can greatly complicate processing and may be difficult to comprehend, satisfy, and reuse.</p><p>The element <code>xs:choice</code> may be used in extension schemas, as it presents a simple way for a schema writer to represent a set of optional content.</p></div><div class="rule-section"><div class="heading"><a name="req-seq-choice"></a><a name="rule_9-65"></a>Rule 9-65. <code>xs:choice</code> must be child of <code>xs:sequence</code></div><div class="box"><div class="normativeHead">[Rule 9-65] (<a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:choice">
<sch:assert test="exists(parent::xs:sequence)"
>An element xs:choice MUST be a child of element xs:sequence.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div></div><div class="section"><div class="heading"><a name="section_9.3.2"></a>9.3.2. Particle</div><p>In NIEM schemas, an element use is an element declaration acting as a particle within a content model. Each such element declaration must reference a top-level named element declaration.</p><p>Element declarations acting as a particle (particles formed by <code>xs:element</code>) may have any cardinality. NIEM does not provide additional constraints on the values of the XML Schema properties {min occurs} and {max occurs} on element uses. These properties are described by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#Particle_details">Section 3.9.1, <em>The Particle Schema Component</em></a>.</p><div class="section"><div class="heading"><a name="section_9.3.2.1"></a>9.3.2.1. Sequence cardinality</div><p>XML Schema allows each particle to specify cardinality (how many times the particle may appear in an instance). NIEM restricts the cardinality of <code>xs:sequence</code> particles to exactly one, to ensure that content model definitions are defined in as straightforward a manner as possible.</p><p>A schema developer who requires the instance syntax that would be obtained from the use of specific cardinality on sequences should define cardinality on individual element uses.</p><div class="rule-section"><div class="heading"><a name="seq-minOccurs"></a><a name="rule_9-66"></a>Rule 9-66. Sequence has minimum cardinality 1</div><div class="box"><div class="normativeHead">[Rule 9-66] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:sequence">
<sch:assert test="empty(@minOccurs) or xs:integer(@minOccurs) = 1"
>An element xs:sequence MUST either not have the attribute {}minOccurs, or that attribute MUST have a value of 1.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="seq-maxOccurs"></a><a name="rule_9-67"></a>Rule 9-67. Sequence has maximum cardinality 1</div><div class="box"><div class="normativeHead">[Rule 9-67] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:sequence">
<sch:assert test="empty(@maxOccurs) or (@maxOccurs instance of xs:integer
and 1 = xs:integer(@maxOccurs))"
>An element xs:sequence MUST either not have the attribute {}maxOccurs, or that attribute MUST have a value of 1.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="section"><div class="heading"><a name="section_9.3.2.2"></a>9.3.2.2. Choice cardinality</div><div class="rule-section"><div class="heading"><a name="choice-minOccurs"></a><a name="rule_9-68"></a>Rule 9-68. Choice has minimum cardinality 1</div><div class="box"><div class="normativeHead">[Rule 9-68] (<a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:choice">
<sch:assert test="empty(@minOccurs) or 1 = xs:integer(@minOccurs)"
>An element xs:choice MUST either not have the attribute {}minOccurs, or that attribute MUST have a value of 1.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="choice-maxOccurs"></a><a name="rule_9-69"></a>Rule 9-69. Choice has maximum cardinality 1</div><div class="box"><div class="normativeHead">[Rule 9-69] (<a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:choice">
<sch:assert test="empty(@maxOccurs) or (@maxOccurs instance of xs:integer
and 1 = xs:integer(@maxOccurs))"
>An element xs:choice MUST either not have the attribute {}maxOccurs, or that attribute MUST have a value of 1.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div></div><div class="section"><div class="heading"><a name="section_9.3.3"></a>9.3.3. Attribute use</div><p>An attribute use has an {attribute declaration} property that is a top-level, named attribute declaration. NIEM-conformant schemas do not define local named attributes within type definitions. Within an attribute use, the attribute <code>use</code> may be used as per the XML Schema specification.</p></div><div class="section"><div class="heading"><a name="section-profile-wildcard"></a><a name="section_9.3.4"></a>9.3.4. Wildcard</div><div class="rule-section"><div class="heading"><a name="no-xs-any"></a><a name="rule_9-70"></a>Rule 9-70. No use of <code>xs:any</code></div><div class="box"><div class="normativeHead">[Rule 9-70] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:any">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:any.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The <code>xs:any</code> particle (see Model Group Restrictions for an informative definition of particle) provides a wildcard that may carry arbitrary content. The particle <code>xs:any</code> may appear within an <a name="d3e8194"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>.</p></div><div class="rule-section"><div class="heading"><a name="no-anyattribute"></a><a name="rule_9-71"></a>Rule 9-71. No use of <code>xs:anyAttribute</code></div><div class="box"><div class="normativeHead">[Rule 9-71] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:anyAttribute">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:anyAttribute.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The <code>xs:anyAttribute</code> element provides a wildcard, where arbitrary attributes may appear.</p></div></div></div><div class="section"><div class="heading"><a name="section-profile-identity-constraint"></a><a name="section_9.4"></a>9.4. Identity-constraint definition components</div><p>XML Schema provides NIEM with the ability to apply uniqueness constraints to schema-validated content. These mechanisms, however, establish relationships in a way that is very difficult to understand, extend, and keep consistent through schema reuse.</p><p>Note that there is no prohibition on the use of <code>xs:selector</code> and <code>xs:field</code>, since according to the rules of the <a name="d3e8247"></a><a href="#definition_XML_Schema_definition_language"><span class="termRef">XML Schema definition language</span></a>, they can only appear within <code>xs:key</code>, <code>xs:keyref</code>, and <code>xs:unique</code>, which are themselves prohibited.</p><div class="rule-section"><div class="heading"><a name="no-xs-unique"></a><a name="rule_9-72"></a>Rule 9-72. No use of <code>xs:unique</code></div><div class="box"><div class="normativeHead">[Rule 9-72] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:unique">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:unique.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-xs-key"></a><a name="rule_9-73"></a>Rule 9-73. No use of <code>xs:key</code></div><div class="box"><div class="normativeHead">[Rule 9-73] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:key">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:key.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-xs-keyref"></a><a name="rule_9-74"></a>Rule 9-74. No use of <code>xs:keyref</code></div><div class="box"><div class="normativeHead">[Rule 9-74] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:keyref">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:keyref.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="section"><div class="heading"><a name="section_9.5"></a>9.5. Group definition components</div><div class="section"><div class="heading"><a name="section-profile-model-group-definitions"></a><a name="section_9.5.1"></a>9.5.1. Model group definition</div><div class="rule-section"><div class="heading"><a name="no-xs-group"></a><a name="rule_9-75"></a>Rule 9-75. No use of <code>xs:group</code></div><div class="box"><div class="normativeHead">[Rule 9-75] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:group">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:group.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>NIEM does not allow groups of elements to be named other than as named complex types. A group in XML Schema creates a named entity that may be included in multiple types, and which consists of a sequence of or choice between element particles. NIEM has not developed a semantic model for these components, and they are not integrated into NIEM’s design.</p></div></div><div class="section"><div class="heading"><a name="section-profile-attribute-group-definition"></a><a name="section_9.5.2"></a>9.5.2. Attribute group definition</div><div class="rule-section"><div class="heading"><a name="no-def-attr-grp"></a><a name="rule_9-76"></a>Rule 9-76. No definition of attribute groups</div><p>Per <a href="#rule_11-23">Rule 11-23, <em>Schema uses only known attribute groups</em> (REF, EXT), below</a>, the only attribute groups used in NIEM-conformant schemas are <code>structures:SimpleObjectAttributeGroup</code> and attribute groups defined by the IC-ISM and IC-NTK schemas. Therefore, NIEM-conformant schemas do not define additional attribute groups.</p><div class="box"><div class="normativeHead">[Rule 9-76] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attributeGroup[@name]">
<sch:assert test="false()"
>The schema MUST NOT contain an attribute group definition schema component.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div></div><div class="section"><div class="heading"><a name="section_9.6"></a>9.6. Annotation components</div><div class="rule-section"><div class="heading"><a name="no-comments"></a><a name="rule_9-77"></a>Rule 9-77. Comment is not recommended</div><p>Note that this rule is written with a context that is not as precise as it could be. Its context is the parent node of the comment node, in order to avoid error messages when executed with common Schematron implementations.</p><div class="box"><div class="normativeHead">[Rule 9-77] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="node()[comment()]">
<sch:report test="true()" role="warning"
>An XML Comment is not an XML Schema annotation component; an XML comment SHOULD NOT appear in the schema.</sch:report>
</sch:rule>
</sch:pattern></pre></div><p>Since <a name="d3e8443">XML comment</a>s are not associated with any specific XML Schema construct, there is no standard way to interpret comments. XML Schema annotations should be preferred for meaningful information about components. NIEM specifically defines how information should be encapsulated in NIEM-conformant schemas via <code>xs:annotation</code> elements.</p></div><div class="rule-section"><div class="heading"><a name="doc-has-no-els"></a><a name="rule_9-78"></a>Rule 9-78. Documentation element has no element children</div><div class="box"><div class="normativeHead">[Rule 9-78] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:documentation/node()">
<sch:assert test="self::text() or self::comment()"
>A child of element xs:documentation MUST be text or an XML comment.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="section"><div class="heading"><a name="section_9.6.1"></a>9.6.1. Application information annotation</div><p>XML Schema provides special annotations for support of automatic processing. The XML Schema specification provides the element <code>xs:appinfo</code> to carry such content and does not specify what style of content they should carry. In NIEM, <code>xs:appinfo</code> elements carry structured XML content.</p><div class="rule-section"><div class="heading"><a name="appinfo-has-els"></a><a name="rule_9-79"></a>Rule 9-79. <code>xs:appinfo</code> children are comments, elements, or whitespace</div><div class="box"><div class="normativeHead">[Rule 9-79] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:appinfo/node()">
<sch:assert test="self::comment()
or self::element()
or self::text()[string-length(normalize-space(.)) = 0]"
>A child of element xs:appinfo MUST be an element, a comment, or whitespace text.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Application information elements are intended for automatic processing; the meaning of an appinfo annotation is provided via elements.</p></div><div class="rule-section"><div class="heading"><a name="appinfo-el-has-ns"></a><a name="rule_9-80"></a>Rule 9-80. Appinfo child elements have namespaces</div><div class="box"><div class="normativeHead">[Rule 9-80] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:appinfo/*">
<sch:assert test="namespace-uri() != xs:anyURI('')"
>An element that is a child of xs:appinfo MUST have a namespace name.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The XML namespaces specification includes the concept of content not in a namespace. Use of elements without namespaces can lead to conflicting data definitions, and makes it difficult to identify relevant data definitions.</p></div><div class="rule-section"><div class="heading"><a name="no-xs-in-appinfo"></a><a name="rule_9-81"></a>Rule 9-81. Appinfo descendants are not XML Schema elements</div><div class="box"><div class="normativeHead">[Rule 9-81] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:appinfo//xs:*">
<sch:assert test="false()"
>An element with a namespace name of xs: MUST NOT have an ancestor element xs:appinfo.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>NIEM-conformant schemas are designed to be very easily processed. Although uses of XML Schema elements as content of <code>xs:appinfo</code> elements could be contrived, it is not current practice and complicates the processing of XML elements by their namespaces and names. Forbidding the use of XML Schema elements outside valid uses of schema simplifies such processing.</p></div></div></div><div class="section"><div class="heading"><a name="section_9.7"></a>9.7. Schema as a whole</div><p>The XML Schema language defines that the document element <code>xs:schema</code> may contain the optional attributes <code>attributeFormDefault</code> and <code>elementFormDefault</code>. The values of these attributes are not material to a conformant schema, as each attribute and element defined by a conformant schema is defined as a top-level component, and so each is qualified by its target namespace.</p><div class="rule-section"><div class="heading"><a name="rule-schema-has-dd"></a><a name="rule_9-82"></a>Rule 9-82. Schema has data definition</div><div class="box"><div class="normativeHead">[Rule 9-82] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:schema">
<sch:assert test="some $definition in (xs:annotation/xs:documentation)[1] satisfies
string-length(normalize-space(string($definition))) &gt; 0"
>An element xs:schema MUST have a data definition.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="req-target-ns"></a><a name="rule_9-83"></a>Rule 9-83. Schema document defines target namespace</div><div class="box"><div class="normativeHead">[Rule 9-83] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:schema">
<sch:assert test="exists(@targetNamespace)"
>The schema MUST define a target namespace.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Schemas without defined namespaces provide definitions that are ambiguous, in that they are not universally identifiable.</p></div><div class="rule-section"><div class="heading"><a name="target-ns-is-rfc3986"></a><a name="rule_9-84"></a>Rule 9-84. Target namespace is absolute URI</div><div class="box"><div class="normativeHead">[Rule 9-84] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><p>The value of the attribute targetNamespace MUST match the production <absolute-URI> as defined by RFC 3986.</p></div><p>Absolute URIs are the only universally meaningful URIs. URIs include both URLs and URNs. Finding the target namespace using standard XML Base technology is complicated and not specified by XML Schema. Relative URIs are not universally identifiable, as they are context-specific. <code><absolute-URI></code> is a grammar production defined by <a href="#RFC3986" class="ref">[RFC 3986]</a> <a target="_blank" href="http://tools.ietf.org/html/rfc3986#section-4.3">Section 4.3, <em>Absolute URI</em></a>. </p></div><div class="rule-section"><div class="heading"><a name="has-version"></a><a name="rule_9-85"></a>Rule 9-85. Schema has version</div><p>It is very useful to be able to tell one version of a schema from another. Apart from the use of namespaces for versioning, it is sometimes necessary to release multiple versions of schema documents. Such use might include:</p><ul><li>Subset schemas and constraint schemas</li><li>Error corrections or bug fixes</li><li>Documentation changes</li><li>Contact information updates</li></ul><p>In such cases, a different value for the <code>version</code> attribute implies a different version of the schema. No specific meaning is assigned to specific version identifiers.</p><p>An author of an application schema or exchange may use the <code>version</code> attribute for these purposes within their schemas.</p><div class="box"><div class="normativeHead">[Rule 9-85] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:schema">
<sch:assert test="some $version in @version satisfies
string-length(normalize-space(@version)) &gt; 0"
>An element xs:schema MUST have an attribute {}version that MUST NOT be empty.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-blockdefault"></a><a name="rule_9-86"></a>Rule 9-86. No disallowed substitutions</div><div class="box"><div class="normativeHead">[Rule 9-86] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:schema">
<sch:assert test="empty(@blockDefault)"
>An element xs:schema MUST NOT have an attribute {}blockDefault.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="no-finalDefault"></a><a name="rule_9-87"></a>Rule 9-87. No disallowed derivations</div><div class="box"><div class="normativeHead">[Rule 9-87] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:schema">
<sch:assert test="empty(@finalDefault)"
>An element xs:schema MUST NOT have an attribute {}finalDefault.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="section"><div class="heading"><a name="section_9.8"></a>9.8. Schema assembly</div><div class="rule-section"><div class="heading"><a name="no-redefine"></a><a name="rule_9-88"></a>Rule 9-88. No use of <code>xs:redefine</code></div><div class="box"><div class="normativeHead">[Rule 9-88] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:redefine">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:redefine.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The <code>xs:redefine</code> element allows an XML Schema document to restrict and extend components from a namespace, in a separate schema document from the one that initially defined that namespace. Such redefinition introduces duplication of definitions, allowing multiple definitions to exist for components from a single namespace. This violates <a href="#principle_9"><strong>[Principle 9]</strong>, above</a>, that a single reference schema defines a NIEM-conformant namespace.</p></div><div class="rule-section"><div class="heading"><a name="no-include"></a><a name="rule_9-89"></a>Rule 9-89. No use of <code>xs:include</code></div><div class="box"><div class="normativeHead">[Rule 9-89] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:include">
<sch:assert test="false()"
>The schema MUST NOT contain the element xs:include.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Element <code>xs:include</code> brings schemas defined in separate files into the current namespace. It breaks a namespace up into arbitrary partial schemas, which needlessly complicates the schema structure, making it harder to reuse and process, and also increases the likelihood of conflicting definitions.</p><p>Inclusion of schemas that do not have namespaces also complicates schema understanding. This inclusion makes it difficult to find the realization of a specific schema artifact and create aliases for schema components that should be reused. Inclusion of schemas also violates <a href="#principle_9"><strong>[Principle 9]</strong>, above</a>, as it uses multiple schemas to construct a namespace.</p></div><div class="rule-section"><div class="heading"><a name="xs-import-has-ns"></a><a name="rule_9-90"></a>Rule 9-90. <code>xs:import</code> must have namespace</div><div class="box"><div class="normativeHead">[Rule 9-90] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:import">
<sch:assert test="exists(@namespace)"
>An element xs:import MUST have an attribute {}namespace.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>An import that does not specify a namespace is enabling references to components without namespaces. NIEM requires that all components have a defined namespace. It is important that the namespace declared by a schema be universally defined and unambiguous.</p></div><div class="rule-section"><div class="heading"><a name="rule-set-is-closed"></a><a name="rule_9-91"></a>Rule 9-91. XML Schema document set must be complete</div><p>An <a name="d3e8866"></a><a href="#definition_XML_Schema_document_set"><span class="termRef">XML Schema document set</span></a> defines an <a name="d3e8869"></a><a href="#definition_XML_Schema"><span class="termRef">XML Schema</span></a> that may be used to validate an <a name="d3e8872"></a><a href="#definition_XML_document"><span class="termRef">XML document</span></a>. This rule ensures that a schema document set under consideration contains definitions for everything that it references; it has everything necessary to do a complete validation of XML documents, without any unresolved references. Note that some tools may allow validation of documents using partial schemas, when components that are not present are not exercised by the XML document under validation. Such a schema does not meet qualify as a <a name="d3e8875"></a><a href="#definition_conformant_schema_document_set"><span class="termRef">conformant schema document set</span></a>.</p><div class="box"><div class="normativeHead">[Rule 9-91] (<a href="#conformance_target_SET">SET</a>) (Constraint)</div><p>The schema document set must constitute a complete XML Schema; it must contain the definition of every schema component referenced by any component defined by the schema set.</p></div></div><div class="section"><div class="heading"><a name="section_9.8.1"></a>9.8.1. Namespaces for referenced components are imported</div><p>The <a name="d3e8893"></a><a href="#definition_XML_Schema_definition_language"><span class="termRef">XML Schema definition language</span></a> requires that, when a <a name="d3e8896"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> references a component in some other namespace, it must use <code>xs:import</code> to import the namespace of the referenced component. The use of <code>xs:import</code> is described by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#nsi-schema_components">Section 4.2.3, <em>References to schema components across namespaces</em></a>.</p><p>Some tools do not enforce this constraint; one such tool carries imports from a <a name="d3e8916"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> into <a name="d3e8919"></a><a href="#definition_schema_document"><span class="termRef">schema documents</span></a> that it imports. This has the potential to introduce incompatibility into schema documents and schema document sets that exercise this bug. To maintain compatibility across tool sets, this requirement is an explicit rule for NIEM-conformant schemas.</p><div class="rule-section"><div class="heading"><a name="xs-import-referenced-namespaces-type"></a><a name="rule_9-92"></a>Rule 9-92. Namespace referenced by attribute <code>type</code> is imported</div><div class="box"><div class="normativeHead">[Rule 9-92] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[@type]">
<sch:assert test="every $namespace in namespace-uri-from-QName(resolve-QName(@type, .)) satisfies (
$namespace = nf:get-target-namespace(.)
or $namespace = xs:anyURI('http://www.w3.org/2001/XMLSchema')
or nf:get-document-element(.)/xs:import[xs:anyURI(@namespace) = $namespace])"
>The namespace of a type referenced by @type MUST be the target namespace, the XML Schema namespace, or be imported.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="xs-import-referenced-namespaces-base"></a><a name="rule_9-93"></a>Rule 9-93. Namespace referenced by attribute <code>base</code> is imported</div><div class="box"><div class="normativeHead">[Rule 9-93] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[@base]">
<sch:assert test="every $namespace in namespace-uri-from-QName(resolve-QName(@base, .)) satisfies (
$namespace = nf:get-target-namespace(.)
or $namespace = xs:anyURI('http://www.w3.org/2001/XMLSchema')
or nf:get-document-element(.)/xs:import[xs:anyURI(@namespace) = $namespace])"
>The namespace of a type referenced by @base MUST be the target namespace, the XML Schema namespace, or be imported.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="xs-import-referenced-namespaces-itemType"></a><a name="rule_9-94"></a>Rule 9-94. Namespace referenced by attribute <code>itemType</code> is imported</div><div class="box"><div class="normativeHead">[Rule 9-94] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[@itemType]">
<sch:assert test="every $namespace in namespace-uri-from-QName(resolve-QName(@itemType, .)) satisfies (
$namespace = nf:get-target-namespace(.)
or $namespace = xs:anyURI('http://www.w3.org/2001/XMLSchema')
or nf:get-document-element(.)/xs:import[xs:anyURI(@namespace) = $namespace])"
>The namespace of a type referenced by @itemType MUST be the target namespace, the XML Schema namespace, or be imported.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="xs-import-referenced-namespaces-memberTypes"></a><a name="rule_9-95"></a>Rule 9-95. Namespaces referenced by attribute <code>memberTypes</code> is imported</div><div class="box"><div class="normativeHead">[Rule 9-95] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[@memberTypes]">
<sch:assert test="every $type in tokenize(normalize-space(@memberTypes), ' '),
$namespace in namespace-uri-from-QName(resolve-QName($type, .)) satisfies (
$namespace = nf:get-target-namespace(.)
or $namespace = xs:anyURI('http://www.w3.org/2001/XMLSchema')
or nf:get-document-element(.)/xs:import[xs:anyURI(@namespace) = $namespace])"
>The namespace of a type referenced by @memberTypes MUST be the target namespace, the XML Schema namespace, or be imported.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="xs-import-referenced-namespaces-ref"></a><a name="rule_9-96"></a>Rule 9-96. Namespace referenced by attribute <code>ref</code> is imported</div><div class="box"><div class="normativeHead">[Rule 9-96] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[@ref]">
<sch:assert test="every $namespace in namespace-uri-from-QName(resolve-QName(@ref, .)) satisfies
$namespace = nf:get-target-namespace(.)
or nf:get-document-element(.)/xs:import[xs:anyURI(@namespace) = $namespace]"
>The namespace of a component referenced by @ref MUST be the target namespace or be imported.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="xs-import-referenced-namespaces-sg"></a><a name="rule_9-97"></a>Rule 9-97. Namespace referenced by attribute <code>substitutionGroup</code> is imported</div><div class="box"><div class="normativeHead">[Rule 9-97] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[@substitutionGroup]">
<sch:assert test="every $namespace in namespace-uri-from-QName(resolve-QName(@substitutionGroup, .)) satisfies
$namespace = nf:get-target-namespace(.)
or nf:get-document-element(.)/xs:import[xs:anyURI(@namespace) = $namespace]"
>The namespace of a component referenced by @substitutionGroup MUST be the target namespace or be imported.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div></div></div><div class="section"><div class="heading"><a name="section_10"></a>10. Rules for NIEM modeling, by NIEM concept</div><p>This section focuses on building NIEM data models using the <a name="d3e9084"></a><a href="#definition_XML_Schema_definition_language"><span class="termRef">XML Schema definition language</span></a>. Whereas <a href="#section_9">Section 9, <em>Rules for a NIEM profile of XML Schema</em>, above,</a> addressed shrinking the XML Schema definition language to a smaller set of features, this section constructs new NIEM-specific features to address modeling and interoperability problems. This includes naming rules, categories of types, and augmentations.</p><p>NIEM provides a framework for modeling concepts and relationships as XML artifacts. The data model is implemented via XML Schema. However, XML Schema does not provide sufficient structure and constraint to enable translating from a conceptual model to a schema and then to instances of the concepts. NIEM provides additional support for modeling concepts as schemas and provides rules for creating and connecting data that realizes those concepts.</p><p>Underlying the NIEM data model are two namespaces: the <a name="d3e9095"></a><a href="#definition_structures_namespace"><span class="termRef">structures namespace</span></a> and the <a name="d3e9098"></a><a href="#definition_appinfo_namespace"><span class="termRef">appinfo namespace</span></a>. These two namespaces provide schema components that serve two functions:</p><ol><li>They provide support for connecting structural definitions to concepts.</li><li>They provide base components from which to derive structural definitions.</li></ol><p>These namespaces are distributed with the NIEM data model content but are not themselves considered to be <em>content</em> of the data model. They are, instead, part of the <em>structure</em> on which the data model is built.</p><p>This section is organized by concept, rather than component type. This section is integrated with the following sections:</p><ul><li><a href="#section_11">Section 11, <em>Rules for NIEM modeling, by XML Schema component</em>, below,</a> is organized by component type, and provides a majority of the constraint rules for schemas that define NIEM models.</li><li><a href="#section_12">Section 12, <em>XML instance document rules</em>, below,</a> provides rules for XML documents that are instances of NIEM models.</li></ul><p>Concepts covered by this section include:</p><ul><li><a href="#section_10.1">Section 10.1, <em>Categories of NIEM type definitions</em></a></li><li><a href="#section_10.2">Section 10.2, <em>Object</em></a></li><li><a href="#section_10.3">Section 10.3, <em>Associations</em></a></li><li><a href="#section_10.4">Section 10.4, <em>Augmentations</em></a></li><li><a href="#section_10.5">Section 10.5, <em>Metadata</em></a></li><li><a href="#section_10.6">Section 10.6, <em>Container elements</em></a></li><li><a href="#section_10.7">Section 10.7, <em>The <q>Representation</q> pattern</em></a></li><li><a href="#section_10.8">Section 10.8, <em>Naming rules</em></a></li><li><a href="#section_10.9">Section 10.9, <em>Machine-readable annotations</em></a></li><li><a href="#section_10.10">Section 10.10, <em>NIEM structural facilities</em></a></li></ul><div class="section"><div class="heading"><a name="section_10.1"></a>10.1. Categories of NIEM type definitions</div><p>The rules in this document use the name of a type as the key indicator of the type’s category. This makes the rules much simpler than doing a deep examination of each type (and its base types) to identify its category. For example, for complex types, the names follow a pattern:</p><ul><li>Name ends with <q>AssociationType</q> → type is an association type.</li><li>Name ends with <q>MetadataType</q> → type is a metadata type.</li><li>Name ends with <q>AugmentationType</q> → type is an augmentation type.</li><li>Otherwise → type is an object type.</li></ul><div class="rule-section"><div class="heading"><a name="code-classes"></a><a name="rule_10-1"></a>Rule 10-1. Complex type has a category</div><div class="box"><div class="normativeHead">[Rule 10-1] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><p>Within the schema, a complex type definition MUST be one of the following:</p><ol><li>An object type.</li><li>An association type.</li><li>A metadata type.</li><li>An augmentation type.</li></ol></div><p>This rule establishes the categories of NIEM complex types. It is a limited set, and each category has distinct semantics, as described by following sections.</p></div></div><div class="section"><div class="heading"><a name="section_10.2"></a>10.2. Object</div><p>The categories of objects are covered by the following sections:</p><ul><li><a href="#section_10.2.1">Section 10.2.1, <em>General object types</em></a></li><li><a href="#section_10.2.2">Section 10.2.2, <em>Role types and roles</em></a></li><li><a href="#section_10.2.3">Section 10.2.3, <em>External adapter types and external components</em></a></li><li><a href="#section_10.2.4">Section 10.2.4, <em>Code types</em></a></li><li><a href="#section_10.2.5">Section 10.2.5, <em>Proxy types</em></a></li></ul><div class="section"><div class="heading"><a name="section_10.2.1"></a>10.2.1. General object types</div><div class="box"><div class="normativeHead"><a name="definition_object_type"></a>[Definition: <dfn>object type</dfn>]</div><div class="sub"><p>In a NIEM-conformant schema, an <strong>object type</strong> is a complex type definition, an instance of which asserts the existence of an object. An object type represents some kind of object: a thing with its own lifespan that has some existence. The object may or may not be a physical object. It may be a conceptual object.</p></div></div><div class="section"><div class="heading"><a name="section_10.2.1.1"></a>10.2.1.1. Object types with complex content</div><div class="rule-section"><div class="heading"><a name="object-with-cc-derived-from-object"></a><a name="rule_10-2"></a>Rule 10-2. Object type with complex content is derived from <code>structures:ObjectType</code></div><div class="box"><div class="normativeHead">[Rule 10-2] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType[exists(xs:complexContent)
and not(ends-with(@name, 'AssociationType')
or ends-with(@name, 'MetadataType')
or ends-with(@name, 'AugmentationType'))]">
<sch:assert test="
every $derivation-method in (xs:complexContent/xs:extension, xs:complexContent/xs:restriction),
$base in $derivation-method/@base,
$base-qname in resolve-QName($base, $derivation-method),
$base-local-name in local-name-from-QName($base-qname) satisfies (
$base-qname = xs:QName('structures:ObjectType')
or not(ends-with($base-local-name, 'AssociationType')
or ends-with($base-local-name, 'MetadataType')
or ends-with($base-local-name, 'AugmentationType')))"
>An object type with complex content MUST be derived from structures:ObjectType or from another object type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>A <a name="d3e9275"></a><a href="#definition_base_type_definition"><span class="termRef">base type definition</span></a> with a {target namespace} that is the XML namespace is prohibited by <a href="#rule_9-1">Rule 9-1, <em>No base type in the XML namespace</em> (REF, EXT), above</a>. A <a name="d3e9280"></a><a href="#definition_base_type_definition"><span class="termRef">base type definition</span></a> with a {target namespace} that is not imported as conformant is prohibited by <a href="#rule_11-3">Rule 11-3, <em>Base type definition defined by conformant schema</em> (REF, EXT), below</a>.</p></div></div></div><div class="section"><div class="heading"><a name="section_10.2.2"></a>10.2.2. Role types and roles</div><p>NIEM differentiates between an object and a role of the object. The term <q>role</q> is used here to mean a function or part played by some object. The simplest way to represent a role of an object is to use an element. The following element declaration models the role of a person who undergoes an assessment:</p><div class="figure"><div class="caption"><a name="figure_10-1"></a>Figure 10-1: An element declaration that constitutes a role without the use of a role type</div><div class="box"><pre><xs:element name="AssessmentPerson" type="nc:PersonType" nillable="true">
<xs:annotation>
<xs:documentation>A person who undergoes an assessment.</xs:documentation>
</xs:annotation>
</xs:element></pre></div></div><p>In many cases, there is a further need to represent characteristics and additional information associated with a role of an object. In such cases, the above element is insufficient. When a role must be modeled with additional information, a <a name="d3e9320"></a><a href="#definition_role_type"><span class="termRef">role type</span></a> is called for.</p><p>For example, when a person is a driver involved in an automotive crash, that person has a particular role in the crash, which is modeled by the element <code>j:CrashDriver</code>.</p><div class="figure"><div class="caption"><a name="figure_10-2"></a>Figure 10-2: Element <code>j:CrashDriver</code>, modeling the role of a driver in a crash</div><div class="box"><pre><xs:element name="CrashDriver" type="j:CrashDriverType" nillable="true">
<xs:annotation>
<xs:documentation>A motor vehicle driver involved into a traffic accident.</xs:documentation>
</xs:annotation>
</xs:element></pre></div></div><p>There is more information associated with this role of the driver than just his identity as a person. Information associated with this role include the drivers license, contributing circumstances, distractions, and other properties. These characteristics are modeled as shown in the following figure. The role is modeled as a <a name="d3e9354"></a><a href="#definition_role_type"><span class="termRef">role type</span></a>:</p><div class="figure"><div class="caption"><a name="figure_10-3"></a>Figure 10-3: Role type <code>j:CrashDriverType</code>, modeling a driver involved in a crash</div><div class="box"><pre><xs:complexType name="CrashDriverType">
<xs:annotation>
<xs:documentation>A data type for a motor vehicle driver involved in a traffic accident.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="structures:ObjectType">
<xs:sequence>
<xs:element ref="nc:RoleOfPerson" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="j:DriverLicense" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="j:CrashDriverContributingCircumstances" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="j:CrashDriverDistraction" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="j:CrashDriverViolation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="j:CrashDrivingViolation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="j:CrashDriverAugmentationPoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType></pre></div></div><p>Role types were introduced into NIEM after XML Schema extension proved to be insufficient in certain situations. An object may have multiple functions in the same instance document, each with associated data. For example, a person might be both a <code>j:CrashDriver</code> and a <code>j:ArrestSubject</code>. Without roles, information about the person would be duplicated in extensions, or would be left ambiguously blank in some places.</p><p>Role types and RoleOf elements enable more precise semantics. With roles, a single base object (e.g., a person) can have multiple roles or functions within a message (e.g., a victim, a witness, and a subject). A role type can reference a base object, rather than duplicate it. Role types allow function information to be defined once for multiple base objects, such as a single <code>j:VictimType</code>, which represents victim information for persons, organizations, and items (e.g., via <code>nc:RoleOfPerson</code>, <code>nc:RoleOfOrganization</code>, and <code>nc:RoleOfItem</code>).</p><p>The term <a name="d3e9430"></a><a href="#definition_role_type"><span class="termRef">role type</span></a> has a normative definition:</p><div class="box"><div class="normativeHead"><a name="definition_role_type"></a>[Definition: <dfn>role type</dfn>]</div><div class="sub"><p>A <strong>role type</strong> is an <a name="d3e9441"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> that represents a particular function, purpose, usage, or role of one or more objects of its base type.</p></div></div><p>A <a name="d3e9449"></a><a href="#definition_role_type"><span class="termRef">role type</span></a> describes a role of a thing. A role is a function or position played by something in a particular situation or context. A <a name="d3e9452"></a><a href="#definition_role_type"><span class="termRef">role type</span></a> holds information that is specific to the role, but that is not specific to the context, and is not specific to thing that plays the role.</p><p>In the example (<a href="#figure_10-5">Figure 10-5, <em>An XML instance of a role type</em>, below</a>), a person (John Doe) has the role of being a driver in a crash. Associated with this role are descriptions of a law violation related to him and a law violation related to his driving behavior. These are properties of his role as a driver in a crash.</p><p>This data is described by a <a name="d3e9463"></a><a href="#definition_role_type"><span class="termRef">role type</span></a>, <code>j:CrashDriverType</code> (described by <a href="#figure_10-3">Figure 10-3, <em>Role type <code>j:CrashDriverType</code>, modeling a driver involved in a crash</em>, above</a>), which carries elements and attributes that are properties of the role. The role type also carries a <a name="d3e9471"></a><a href="#definition_RoleOf_element"><span class="termRef">RoleOf element</span></a>, which indicates the base type for the role. The <a name="d3e9474"></a><a href="#definition_role_type"><span class="termRef">role type</span></a> describes a role of the base type, which in this case is <code>nc:PersonType</code>, as identified by the type of <code>nc:RoleOfPerson</code> defined by <a href="#figure_10-4">Figure 10-4, <em>Declaration of RoleOf element <code>nc:RoleOfPerson</code></em>, below</a>.</p><p>Developers of NIEM-conformant schemas and exchanges should create and use role types whenever they have information specific to a base object’s function. Such information is a characteristic of the role, and not of the base object. Information that is a characteristic of a base object probably does not belong in a role type.</p><div class="box"><div class="normativeHead"><a name="definition_RoleOf_element"></a>[Definition: <dfn>RoleOf element</dfn>]</div><div class="sub"><p>A <strong>RoleOf element</strong> is an <a name="d3e9499"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a> that</p><ul><li>is defined by a <a name="d3e9508"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or an <a name="d3e9511"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>, and</li><li>has a {name} that begins with <q>RoleOf</q>.</li></ul><p>A RoleOf element represents a base type for a <a name="d3e9525"></a><a href="#definition_role_type"><span class="termRef">role type</span></a>.</p></div></div><p>We saw the use of <a name="d3e9532"></a><a href="#definition_RoleOf_element"><span class="termRef">RoleOf element</span></a> <code>nc:RoleOfPerson</code> in <a href="#figure_10-3">Figure 10-3, <em>Role type <code>j:CrashDriverType</code>, modeling a driver involved in a crash</em>, above</a>. Its definition is the following figure:</p><div class="figure"><div class="caption"><a name="figure_10-4"></a>Figure 10-4: Declaration of RoleOf element <code>nc:RoleOfPerson</code></div><div class="box"><pre><xs:element name="RoleOfPerson" type="nc:PersonType" substitutionGroup="nc:RoleOf" nillable="true">
<xs:annotation>
<xs:documentation>A person of whom the role object is a function.</xs:documentation>
</xs:annotation>
</xs:element></pre></div></div><p>Here is an example of the <code>j:CrashDriver</code> role type used in an instance:</p><div class="figure"><div class="caption"><a name="figure_10-5"></a>Figure 10-5: An XML instance of a role type</div><div class="box"><pre><j:CrashDriver>
<nc:RoleOfPerson structures:ref="BRAVO" xsi:nil="true"/>
<j:CrashDriverViolationCode>A10</j:CrashDriverViolationCode>
<j:CrashDrivingViolationCode>S16</j:CrashDrivingViolationCode>
</j:CrashDriver>
<nc:Person structures:id="BRAVO">
<nc:PersonBirthDate>
<nc:Date>1966-06-06</nc:Date>
</nc:PersonBirthDate>
<nc:PersonName>
<nc:PersonFullName>John Doe</nc:PersonFullName>
</nc:PersonName>
</nc:Person></pre></div></div><p>Note that the value of the <code>j:CrashPerson</code> element was indicated above using a reference; it could have been shown as a content element, instead.</p><div class="rule-section"><div class="heading"><a name="rule-roleOf-is-object-type"></a><a name="rule_10-3"></a>Rule 10-3. RoleOf element type is an object type</div><div class="box"><div class="normativeHead">[Rule 10-3] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[@name[starts-with(., 'RoleOf')]]">
<sch:assert test="every $type in @type,
$type-local-name in local-name-from-QName(resolve-QName($type, .)) satisfies
not(ends-with($type-local-name, 'AssociationType')
or ends-with($type-local-name, 'MetadataType')
or ends-with($type-local-name, 'AugmentationType'))"
>The type definition of a RoleOf element MUST be an object type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Note that by <a href="#rule_11-13">Rule 11-13, <em>Element type is from conformant namespace</em> (REF, EXT), below</a>, the element’s type must be from a conformant namespace.</p></div><div class="rule-section"><div class="heading"><a name="rule-ct-has-roleOf-is-object-type"></a><a name="rule_10-4"></a>Rule 10-4. Only object type has RoleOf element</div><div class="box"><div class="normativeHead">[Rule 10-4] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType[
empty(@appinfo:externalAdapterTypeIndicator)
and exists(descendant::xs:element[
exists(@ref[
starts-with(local-name-from-QName(resolve-QName(., ..)), 'RoleOf')])])]">
<sch:assert test="not(ends-with(@name, 'AssociationType')
or ends-with(@name, 'MetadataType')
or ends-with(@name, 'AugmentationType'))"
>A complex type that includes a RoleOf element in its content model MUST be an object type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Note that <a name="d3e9661"></a><a href="#definition_RoleOf_element"><span class="termRef">RoleOf element</span></a> and <a name="d3e9664"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> are defined terms.</p></div><div class="rule-section"><div class="heading"><a name="rule_10-5"></a>Rule 10-5. RoleOf elements indicate the base types of a role type</div><div class="box"><div class="normativeHead">[Rule 10-5] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>, <a href="#conformance_target_INS">INS</a>) (Interpretation)</div><p>An <a name="d3e9678"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a> that has a local name that begins with the string <q>RoleOf</q> MUST represent a base type, of which the containing element instance represents a role.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_10-6"></a>Rule 10-6. Instance of RoleOf element indicates a role object</div><div class="box"><div class="normativeHead">[Rule 10-6] (<a href="#conformance_target_INS">INS</a>) (Interpretation)</div><p>When a parent element has a child element valid to an <a name="d3e9695"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a> that is a <a name="d3e9698"></a><a href="#definition_RoleOf_element"><span class="termRef">RoleOf element</span></a>,</p><ul><li>The value of the parent element is a role object.</li><li>The value of the child element is a base object of the role object.</li></ul></div><p>An instance of a <a name="d3e9716"></a><a href="#definition_RoleOf_element"><span class="termRef">RoleOf element</span></a> indicates the base object of a role. The prefix <q>RoleOf</q> on the element ensures that a role object may be distinguished from other objects and that its link to the base object is also distinguishable from the additional properties that are characteristics or other data of the role.</p></div><p>NIEM does not require that there be only one <a name="d3e9726"></a><a href="#definition_RoleOf_element"><span class="termRef">RoleOf element</span></a> within a single type, nor does it require that a particular role object have only a single occurrence of a <a name="d3e9729"></a><a href="#definition_RoleOf_element"><span class="termRef">RoleOf element</span></a>. However, the use of multiple <a name="d3e9732"></a><a href="#definition_RoleOf_element"><span class="termRef">RoleOf elements</span></a> may not make sense in all cases. An exchange specification may restrict <a name="d3e9735"></a><a href="#definition_RoleOf_element"><span class="termRef">RoleOf elements</span></a> to a single occurrence within a type.</p><p>This specification does not require that a <a name="d3e9741"></a><a href="#definition_RoleOf_element"><span class="termRef">RoleOf element</span></a> occur in an instance of a <a name="d3e9744"></a><a href="#definition_role_type"><span class="termRef">role type</span></a>. In such a case, the instance of the role type behaves like any other type; it simply does not have a reference to its base object. For example, we may talk about a weapon’s use in an incident without referring to the car that acted as the weapon.</p></div><div class="section"><div class="heading"><a name="section-external-adapter-types"></a><a name="section_10.2.3"></a>10.2.3. External adapter types and external components</div><p>There are a variety of commonly used standards that are represented in XML Schema. Such schemas are generally not NIEM-conformant. NIEM-conformant schemas may reference components defined by these external schema documents. This section provides rules under which NIEM-conformant components may be constructed from schema components that are not NIEM-conformant.</p><div class="box"><div class="normativeHead"><a name="definition_external_schema_document"></a>[Definition: <dfn>external schema document</dfn>]</div><div class="sub"><p>An <strong>external schema document</strong> is any <a name="d3e9765"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> that is not one of</p><ul><li>a <a name="d3e9774"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a>,</li><li>an <a name="d3e9781"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>, or</li><li>a <a name="d3e9788"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a> that has the <a name="d3e9791"></a><a href="#definition_structures_namespace"><span class="termRef">structures namespace</span></a> as its target namespace.</li></ul></div></div><p>Note that, although the schema document for the <a name="d3e9799"></a><a href="#definition_structures_namespace"><span class="termRef">structures namespace</span></a> is not conformant, it is not considered an external schema document because it defines the fundamental framework on which NIEM is built; it is considered a supporting namespace. It is not considered an external schema document because of its supporting nature and is thus a special case of this definition.</p><p>A <a name="d3e9805"></a><a href="#definition_schema_component"><span class="termRef">schema component</span></a> defined by an <a name="d3e9808"></a><a href="#definition_external_schema_document"><span class="termRef">external schema document</span></a> may be called an <em>external component</em>. A NIEM-conformant type may use external components in its definition. There are two ways to integrate external components into a NIEM-conformant schema:</p><ol><li>An external adapter type may be constructed from externally-defined elements and attributes. A goal of this method is to represent, as a single unit, a set of data that embodies a single concept from an external standard. This is an <a name="d3e9820"></a><a href="#definition_external_adapter_type"><span class="termRef">external adapter type</span></a>.</li><li>A type that is not an external adapter type, and which is defined by an extension schema document, may incorporate externally-defined attributes.</li></ol><div class="figure"><div class="caption"><a name="figure_10-6"></a>Figure 10-6: Use of external components to create a NIEM-conformant type</div><div class="box"><div class="img"><img src="data:image/png;base64,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"></div></div></div><p>For example, a NIEM-conformant type may be created to represent a bibliographic reference from an external standard. Such an object may be composed of multiple elements (of multiple types) from the external standard. These pieces are put together to form a single NIEM-conformant <a name="d3e9840"></a><a href="#definition_external_adapter_type"><span class="termRef">external adapter type</span></a>. For example, an author element, a book element, and a publisher element may be used to define a single bibliographic entry type.</p><p>A NIEM-conformant type built from these components may be used as any other NIEM-conformant type. That is, elements may be constructed from such a type, and those elements are fully NIEM-conformant.</p><p>To construct such a component, a NIEM-conformant schema must import the namespace defined by the <a name="d3e9849"></a><a href="#definition_external_schema_document"><span class="termRef">external schema document</span></a>.</p><p><a href="#rule_11-50">Rule 11-50, <em>Reference schema document imports reference schema document</em> (SET), below,</a> and <a href="#rule_11-51">Rule 11-51, <em>Extension schema document imports reference or extension schema document</em> (SET), below,</a> require that <code>xs:import</code> elements be consistent with an importing <a name="d3e9861"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a>.</p><p>A NIEM-conformant schema has well-known documentation points. Therefore, a schema that imports a NIEM-conformant namespace need not provide additional documentation for the imported namespace. However, when an external schema document is imported, appropriate documentation must be provided on the <code>xs:import</code> element. This ensures that documentation for all external schema documents will be both available and accessible in a consistent manner.</p><div class="section"><div class="heading"><a name="section_10.2.3.1"></a>10.2.3.1. Import of external namespace</div><div class="rule-section"><div class="heading"><a name="rule-external-import-has-dd"></a><a name="rule_10-7"></a>Rule 10-7. Import of external namespace has data definition</div><div class="box"><div class="normativeHead">[Rule 10-7] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:import[@appinfo:externalImportIndicator]">
<sch:assert test="some $definition in xs:annotation/xs:documentation[1] satisfies
string-length(normalize-space(string($definition))) &gt; 0"
>An element xs:import that is annotated as importing an external schema document MUST be a documented component.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="section"><div class="heading"><a name="section_10.2.3.2"></a>10.2.3.2. External adapter types</div><div class="box"><div class="normativeHead"><a name="definition_external_adapter_type"></a>[Definition: <dfn>external adapter type</dfn>]</div><div class="sub"><p>An <strong>external adapter type</strong> is a NIEM-conformant type that adapts external components for use within NIEM. An external adapter type creates a new class of object that embodies a single concept composed of external components. A NIEM-conformant schema defines an external adapter type.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_10-8"></a>Rule 10-8. External adapter type has indicator</div><div class="box"><div class="normativeHead">[Rule 10-8] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Interpretation)</div><p>A type is an <a name="d3e9921"></a><a href="#definition_external_adapter_type"><span class="termRef">external adapter type</span></a> if and only if it is a complex type with application information of attribute <code>appinfo:externalAdapterTypeIndicator</code> with a value of <code>true</code>.</p></div></div><p>An external adapter type should contain the information from an external standard to express a complete concept. This expression should be composed of content entirely from an external schema document. Most likely, the external schema document will be based on an external standard with its own legacy support.</p><p>In the case of an external expression that is in the form of model groups, attribute groups, or types, additional elements and type components may be created in an external schema document, and the external adapter type may use those components.</p><p>In normal (conformant) type definition, a reference to an attribute or element is a reference to a documented component. Within an external adapter type, the references to the attributes and elements being adapted are references to undocumented components. These components must be documented to provide comprehensibility and interoperability. Since documentation made available by nonconformant schemas is undefined and variable, documentation of these components is required at their point of use, within the conformant schema.</p><div class="rule-section"><div class="heading"><a name="rule-adapter-type-structure"></a><a name="rule_10-9"></a>Rule 10-9. Structure of external adapter type definition follows pattern</div><div class="box"><div class="normativeHead">[Rule 10-9] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType[@appinfo:externalAdapterTypeIndicator]">
<sch:assert test="xs:complexContent/xs:extension[
resolve-QName(@base, .) = xs:QName('structures:ObjectType')
]/xs:sequence"
>An external adapter type definition MUST be a complex type definition with complex content that extends structures:ObjectType, and that uses xs:sequence as its top-level compositor.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="el-ref-from-external"></a><a name="rule_10-10"></a>Rule 10-10. Element use from external adapter type defined by external schema documents</div><div class="box"><div class="normativeHead">[Rule 10-10] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[@ref
and exists(ancestor::xs:complexType[exists(@appinfo:externalAdapterTypeIndicator)])]">
<sch:assert test="some $ref-namespace in namespace-uri-from-QName(resolve-QName(@ref, .)) satisfies
nf:get-document-element(.)/xs:import[
$ref-namespace = xs:anyURI(@namespace)
and @appinfo:externalImportIndicator]"
>An element reference that appears within an external adapter type MUST have a target namespace that is imported as external.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="rule-ref-extadapt-not-base"></a><a name="rule_10-11"></a>Rule 10-11. External adapter type not a base type</div><div class="box"><div class="normativeHead">[Rule 10-11] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[(self::xs:extension or self::xs:restriction)
and (some $base-qname in resolve-QName(@base, .),
$base-namespace in namespace-uri-from-QName($base-qname) satisfies
nf:get-target-namespace(.) = $base-namespace)]">
<sch:assert test="nf:resolve-type(., resolve-QName(@base, .))[
empty(@appinfo:externalAdapterTypeIndicator)]"
>An external adapter type definition MUST NOT be a base type definition.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="rule-set-extadapt-not-base"></a><a name="rule_10-12"></a>Rule 10-12. External adapter type not a base type</div><div class="box"><div class="normativeHead">[Rule 10-12] (<a href="#conformance_target_SET">SET</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[(self::xs:extension or self::xs:restriction)
and (nf:has-effective-conformance-target-identifier(., xs:anyURI('http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ReferenceSchemaDocument'))
or nf:has-effective-conformance-target-identifier(., xs:anyURI('http://reference.niem.gov/niem/specification/naming-and-design-rules/5.0/#ExtensionSchemaDocument')))
and (some $base-qname in resolve-QName(@base, .),
$base-namespace in namespace-uri-from-QName($base-qname) satisfies
not($base-namespace = (nf:get-target-namespace(.), xs:anyURI('http://www.w3.org/2001/XMLSchema'))))]">
<sch:assert test="nf:resolve-type(., resolve-QName(@base, .))[
empty(@appinfo:externalAdapterTypeIndicator)]"
>An external adapter type definition MUST NOT be a base type definition.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Each external adapter type is meant to stand alone; each type expresses a single concept, and is built from schema components from one or more external schema documents.</p></div></div><div class="section"><div class="heading"><a name="section_10.2.3.3"></a>10.2.3.3. External attribute use</div><div class="rule-section"><div class="heading"><a name="rule-ext-attr-use-in-eat"></a><a name="rule_10-13"></a>Rule 10-13. External attribute use only in external adapter type</div><p>A complex type that is defined by a <a name="d3e10043"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> is permitted to contain an attribute use schema component only if it is an <a name="d3e10046"></a><a href="#definition_external_adapter_type"><span class="termRef">external adapter type</span></a>. This does not apply to a complex type defined by an <a name="d3e10049"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>, which is permitted to use external attributes, as long as each attribute use is a <a name="d3e10052"></a><a href="#definition_documented_component"><span class="termRef">documented component</span></a>, per <a href="#rule_10-14">Rule 10-14, <em>External attribute use has data definition</em> (REF, EXT), below</a>.</p><div class="box"><div class="normativeHead">[Rule 10-13] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[some $ref-namespace in namespace-uri-from-QName(resolve-QName(@ref, .)),
$import in ancestor::xs:schema[1]/xs:import satisfies (
xs:anyURI($import/@namespace) = $ref-namespace
and exists($import/@appinfo:externalImportIndicator))]">
<sch:assert test="exists(ancestor::xs:complexType[1]/@appinfo:externalAdapterTypeIndicator)"
>An external attribute use MUST be in an external adapter type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document defines the term <a name="d3e10076"></a><a href="#definition_external_adapter_type"><span class="termRef">external adapter type</span></a>.</p></div><div class="rule-section"><div class="heading"><a name="ext-attr-use-has-dd"></a><a name="rule_10-14"></a>Rule 10-14. External attribute use has data definition</div><div class="box"><div class="normativeHead">[Rule 10-14] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:attribute[some $ref-namespace in namespace-uri-from-QName(resolve-QName(@ref, .)),
$import in ancestor::xs:schema[1]/xs:import satisfies (
xs:anyURI($import/@namespace) = $ref-namespace
and exists(@appinfo:externalImportIndicator))]">
<sch:assert test="some $documentation in xs:annotation/xs:documentation[1] satisfies
string-length(normalize-space(string($documentation))) &gt; 0"
>An external attribute use MUST be a documented component with a non-empty data definition.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The terms <a name="d3e10103"></a><a href="#definition_documented_component"><span class="termRef">documented component</span></a> and <a name="d3e10106"></a><a href="#definition_data_definition"><span class="termRef">data definition</span></a> are defined.</p></div><div class="rule-section"><div class="heading"><a name="ext-attr-not-id"></a><a name="rule_10-15"></a>Rule 10-15. External attribute use not an ID</div><p>NIEM schemas use <code>structures:id</code> to enable references between components. Each NIEM-defined complex type must incorporate a definition for <code>structures:id</code>. <a href="#XML" class="ref">[XML]</a> <a target="_blank" href="http://www.w3.org/TR/2008/REC-xml-20081126/#one-id-per-el">Section 3.3.1, <em>Attribute Types</em></a> entails that a complex type may have no more than one ID attribute. This means that an external attribute use must not be an ID attribute.</p><div class="box"><div class="normativeHead">[Rule 10-15] (<a href="#conformance_target_SET">SET</a>) (Constraint)</div><p>An attribute use schema component MUST NOT have an {attribute declaration} with an ID type.</p></div><p>The term <q>attribute use schema component</q> is defined by <a href="#XMLSchema-1" class="ref">[XML Schema Structures]</a> <a target="_blank" href="http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#AU_details">Section 3.5.1, <em>The Attribute Use Schema Component</em></a>. Attribute type ID is defined by <a href="#XML" class="ref">[XML]</a> <a target="_blank" href="http://www.w3.org/TR/2008/REC-xml-20081126/#sec-attribute-types">Section 3.3.1, <em>Attribute Types</em></a>.</p></div></div><div class="section"><div class="heading"><a name="section_10.2.3.4"></a>10.2.3.4. External element use</div><div class="rule-section"><div class="heading"><a name="rule-ext-element-use-has-dd"></a><a name="rule_10-16"></a>Rule 10-16. External element use has data definition</div><div class="box"><div class="normativeHead">[Rule 10-16] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[
some $ref-namespace in namespace-uri-from-QName(resolve-QName(@ref, .)) satisfies
nf:get-document-element(.)/self::xs:schema//xs:import[
xs:anyURI(@namespace) = $ref-namespace
and @appinfo:externalImportIndicator]]">
<sch:assert test="some $documentation in xs:annotation/xs:documentation[1] satisfies
string-length(normalize-space(string($documentation))) &gt; 0"
>An external attribute use MUST be a documented component with a non-empty data definition.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The terms <a name="d3e10185"></a><a href="#definition_documented_component"><span class="termRef">documented component</span></a> and <a name="d3e10188"></a><a href="#definition_data_definition"><span class="termRef">data definition</span></a> are defined.</p></div></div></div><div class="section"><div class="heading"><a name="section_10.2.4"></a>10.2.4. Code types</div><div class="box"><div class="normativeHead"><a name="definition_code_type"></a>[Definition: <dfn>code type</dfn>]</div><div class="sub"><p>A <strong>code type</strong> is a NIEM object type for which each simple value carried by the type corresponds to an entry in a list of distinct conceptual entities.</p></div></div><p>These types represent lists of values, each of which has a known meaning beyond the text representation. These values may be meaningful text or may be a string of alphanumeric identifiers that represent abbreviations for literals.</p><p>Many code types have simple content composed of <code>xs:enumeration</code> values. Code types may also be constructed using the <em><a target="_blank" href="https://reference.niem.gov/niem/specification/code-lists/4.0/niem-code-lists-4.0.html">NIEM Code Lists Specification</a></em> <a href="#code-lists-spec" class="ref">[Code Lists]</a>, which supports code lists defined using a variety of methods, including CSV spreadsheets.</p><div class="rule-section"><div class="heading"><a name="rule-code-type-name-suffix"></a><a name="rule_10-17"></a>Rule 10-17. Name of code type ends in <q>CodeType</q></div><div class="box"><div class="normativeHead">[Rule 10-17] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType[exists(xs:simpleContent[
exists(xs:*[local-name() = ('extension', 'restriction')
and (ends-with(@base, 'CodeSimpleType')
or ends-with(@base, 'CodeType'))])])]">
<sch:report role="warning"
test="not(ends-with(@name, 'CodeType'))"
>A complex type definition with a {base type definition} of a code type or code simple type SHOULD have a {name} that ends in 'CodeType'.</sch:report>
</sch:rule>
</sch:pattern></pre></div><p>See <a href="#section_11.1.2.3">Section 11.1.2.3, <em>Code simple types</em>, below,</a> for the definition of <a name="d3e10250"></a><a href="#definition_code_simple_type"><span class="termRef">code simple type</span></a>.</p></div><div class="rule-section"><div class="heading"><a name="code-type-has-list"></a><a name="rule_10-18"></a>Rule 10-18. Code type corresponds to a code list</div><div class="box"><div class="normativeHead">[Rule 10-18] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><p>A complex type SHOULD have a name ending in <q>CodeType</q> if and only if it has a correspondence to a list of distinct conceptual entities.</p></div></div><div class="rule-section"><div class="heading"><a name="rule-element-of-code-type-has-code-rep-term"></a><a name="rule_10-19"></a>Rule 10-19. Element of code type has code representation term</div><div class="box"><div class="normativeHead">[Rule 10-19] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@name) and exists(@type) and ends-with(@type, 'CodeType')]">
<sch:report role="warning"
test="not(ends-with(@name, 'Code'))"
>An element with a type that is a code type SHOULD have a name with representation term "Code"</sch:report>
</sch:rule>
</sch:pattern></pre></div></div><p>Using the qualifier <code>Code</code> (e.g. <code>CodeType</code>, <code>CodeSimpleType</code>) immediately identifies that a data component may carry values from a fixed list of codes. These types may be handled in specific ways, as lists of codes are expected to have their own lifecycles, including versions and periodic updates. Codes may also have responsible authorities behind them who provide concrete semantic bindings for the code values.</p></div><div class="section"><div class="heading"><a name="section-proxy-types"></a><a name="section_10.2.5"></a>10.2.5. Proxy types</div><p>The NIEM 5.0 release schema <code>http://release.niem.gov/niem/proxy/niem-xs/5.0/</code> provides complex type bases for some of the simple types in the XML Schema namespace. The complex types in this schema reuse the local names of the XML Schema simple types they extend, even though those names don’t follow the naming structure of most conformant complex types. There is a special exception to naming rules to allow the reuse of the XML Schema simple type names in conformant schemas. This is done to make conformant schemas more understandable to people that are familiar with the names of the XML Schema namespace simple types.</p><p>A complex type that is a direct extension of a simple type from the XML Schema namespace (e.g., <code>xs:string</code>, <code>xs:integer</code>, <code>xs:boolean</code>) is allowed to have the same local name as the XML Schema simple type, if and only if the extension adds no content other than the attribute group <code>structures:SimpleObjectAttributeGroup</code>. This allows for an intuitive name when using an XML Schema simple type in a conformant schema.</p><div class="rule-section"><div class="heading"><a name="proxy-type-structure"></a><a name="rule_10-20"></a>Rule 10-20. Proxy type has designated structure</div><div class="box"><div class="normativeHead">[Rule 10-20] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType[some $name in @name,
$extension in xs:simpleContent/xs:extension,
$base-qname in resolve-QName($extension/@base, $extension) satisfies
$base-qname = QName('http://www.w3.org/2001/XMLSchema', $name)]">
<sch:assert test="xs:simpleContent[
xs:extension[
empty(xs:attribute)
and count(xs:attributeGroup) = 1
and xs:attributeGroup[
resolve-QName(@ref, .) = xs:QName('structures:SimpleObjectAttributeGroup')]]]"
>A proxy type MUST have the designated structure. It MUST use xs:extension. It MUST NOT use xs:attribute. It MUST include exactly one xs:attributeGroup reference, which must be to structures:SimpleObjectAttributeGroup.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div></div><div class="section"><div class="heading"><a name="section-associations"></a><a name="section_10.3"></a>10.3. Associations</div><p>Within NIEM data, an <a name="d3e10363"></a><a href="#definition_association"><span class="termRef">association</span></a> is a specific relationship between objects. Associations are used when a simple NIEM property is insufficient to model the relationship clearly, or when you want to model properties of the relationship itself.</p><p>Here is an example of an association in an XML instance:</p><div class="figure"><div class="caption"><a name="figure_10-7"></a>Figure 10-7: An association in an instance</div><div class="box"><pre><scr:PersonPhoneAssociation>
<nc:Person>
<nc:PersonName>
<nc:PersonFullName>John Doe</nc:PersonFullName>
</nc:PersonName>
</nc:Person>
<nc:TelephoneNumber>
<nc:FullTelephoneNumber>
<nc:TelephoneNumberFullID>(212)555-1212</nc:TelephoneNumberFullID>
</nc:FullTelephoneNumber>
</nc:TelephoneNumber>
</scr:PersonPhoneAssociation></pre></div></div><p>This example shows an association between a person and a phone number. This relationship is defined by the <a name="d3e10403"></a><a href="#definition_association_element_declaration"><span class="termRef">association element declaration</span></a> <code>scr:PersonPhoneAssociation</code>, the structure of which is defined by the <a name="d3e10409"></a><a href="#definition_association_type"><span class="termRef">association type</span></a> <code>scr:PersonPhoneAssociationType</code>. In practice, an <a name="d3e10415"></a><a href="#definition_association_type"><span class="termRef">association type</span></a> usually defines what kinds of things the association relates, while the association element may refine the meaning of the association.</p><p>An example of an association type defined by an XML Schema document follows, in <a href="#figure_10-8">Figure 10-8, <em>A definition of an association type</em>, below</a>.</p><p>Note that the NIEM Core schema in NIEM 5.0 defines a type <code>nc:AssociationType</code>, which acts as the base type for all of the other association types defined within NIEM Core. This is a convention adopted by that version of NIEM Core namespace, but is not a requirement of this document. An implementer of a NIEM-conformant schema is not required by this specification to base a new association type on <code>nc:AssociationType</code>.</p><div class="figure"><div class="caption"><a name="figure_10-8"></a>Figure 10-8: A definition of an association type</div><div class="box"><pre> <xs:complexType name="PersonPhoneAssociationType">
<xs:annotation>
<xs:documentation>A data type for a relationship between a PERSON and a PHONE.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="nc:AssociationType">
<xs:sequence>
<xs:element ref="nc:Person" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:TelephoneNumber" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="PersonPhoneAssociation" type="scr:PersonPhoneAssociationType" nillable="true">
<xs:annotation>
<xs:documentation>An association between a PERSON and a PHONE.</xs:documentation>
</xs:annotation>
</xs:element></pre></div></div><p>This schema fragment shows the definition of an association type that defines a relationship between a person and a telephone number. This is followed by the definition of an association element declaration that uses the association type.</p><div class="box"><div class="normativeHead"><a name="definition_association"></a>[Definition: <dfn>association</dfn>]</div><div class="sub"><p>An <em>association</em> is a <a name="d3e10485"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> that establishes a relationship between two or more objects, optionally including properties of that relationship. An association is an instance of an <a name="d3e10488"></a><a href="#definition_association_element_declaration"><span class="termRef">association element declaration</span></a>, and has a type that is an <a name="d3e10491"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>. </p></div></div><div class="box"><div class="normativeHead"><a name="definition_association_element_declaration"></a>[Definition: <dfn>association element declaration</dfn>]</div><div class="sub"><p>An <strong>association element declaration</strong> is an <a name="d3e10503"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a> declared in a <a name="d3e10506"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or <a name="d3e10509"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a> that describes a relationship between two or more objects, optionally including properties of that relationship.</p></div></div><div class="box"><div class="normativeHead"><a name="definition_association_type"></a>[Definition: <dfn>association type</dfn>]</div><div class="sub"><p>In a NIEM-conformant schema, an <strong>association type</strong> is a <a name="d3e10521"></a><a href="#definition_complex_type_definition"><span class="termRef">complex type definition</span></a> defined in a <a name="d3e10524"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or <a name="d3e10527"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a> that establishes a relationship between two or more objects, optionally including the properties of that relationship.</p></div></div><div class="section"><div class="heading"><a name="section_10.3.1"></a>10.3.1. Association types</div><div class="rule-section"><div class="heading"><a name="rule-association-type-derived-from-association-type"></a><a name="rule_10-21"></a>Rule 10-21. Association type derived from <code>structures:AssociationType</code></div><div class="box"><div class="normativeHead">[Rule 10-21] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType">
<sch:let name="is-association-type" value="exists(@name[ends-with(., 'AssociationType')])"/>
<sch:let name="has-association-base-type" value="
exists(xs:complexContent[
exists(xs:*[local-name() = ('extension', 'restriction')
and exists(@base[ends-with(., 'AssociationType')])])])"/>
<sch:assert test="$is-association-type = $has-association-base-type"
>A type MUST have an association type name if and only if it is derived from an association type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Associations types are easily identifiable as such and have a common base type, <code>structures:AssociationType</code>. Using the qualifier <code>Association</code> immediately identifies a type as an <a name="d3e10571"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>.</p></div></div><div class="section"><div class="heading"><a name="section_10.3.2"></a>10.3.2. Association element declarations</div><div class="rule-section"><div class="heading"><a name="rule-association-el-type-is-association-type"></a><a name="rule_10-22"></a>Rule 10-22. Association element type is an association type</div><div class="box"><div class="normativeHead">[Rule 10-22] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@name)]">
<sch:assert test="exists(@type[ends-with(., 'AssociationType')])
= exists(@name[ends-with(., 'Association')])"
>An element MUST have a name that ends in 'Association' if and only if it has a type that is an association type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Using the qualifier <code>Association</code> immediately identifies an element as representing an association. This document defines the term <a name="d3e10606"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>.</p></div></div></div><div class="section"><div class="heading"><a name="section-augmentations"></a><a name="section_10.4"></a>10.4. Augmentations</div><p>Developers of domain schemas and other schemas that build on and extend the NIEM release schemas need to be able to define additional characteristics of common types. For example, the JXDM domain, which addresses justice and public safety concerns, considers the following elements to be characteristics of a person, as defined by <code>nc:PersonType</code>:</p><ul><li><code>j:PersonMedicalInsuranceIndicator</code></li><li><code>j:PersonProfessionalCertificateText</code></li><li><code>j:PersonSightedIndicator</code></li><li><code>j:PersonFBIIdentification</code></li></ul><p>There are several approaches that could be used by a domain to add elements to a common type. One method is to have each domain create an extension of <code>nc:PersonType</code> (using <code>xs:extension</code>) that adds elements and attributes for the needed content. Some of the problems with this approach include:</p><ul><li>It results in numerous, domain-specific specializations of <code>nc:PersonType</code>, each with common content and extension-specific content.</li><li>There is no method for the developer of an information exchange package description (IEPD) to bring these types back together into a single type that carries the attributes desired for the IEPD. XML Schema does not support multiple inheritance, so there would be no way to join together <code>nc:PersonType</code>, <code>j:PersonType</code>, and <code>im:PersonType</code>.</li><li>There is no standard or easy way for the developer to express that the various element instances of the various person types represent the same person, or which parts of those instances are required to be populated; does each person restate the name and birth-date, or is that handled by just one instance?</li></ul><p>This approach turns into a morass that is difficult to use and maintain, and which does not scale to support the breadth of the NIEM community.</p><p>To handle this need, NIEM has adopted augmentations. There are several parts that fit together for the definition and use of augmentations:</p><ul><li><p>Each object type and association type carries an augmentation point element, which provides a place for domain- and extension-specific content in the type. Augmentation points are optional in extension schema documents, but must appear in reference schema documents. Augmentation points are also defined for the base types for <a name="d3e10694"></a><a href="#definition_object_type"><span class="termRef">object types</span></a> and <a name="d3e10697"></a><a href="#definition_association_type"><span class="termRef">association types</span></a>:</p><ul><li><code>structures:ObjectType</code> has augmentation point <code>structures:ObjectAugmentationPoint</code>.</li><li><code>structures:AssociationType</code> has augmentation point <code>structures:AssociationAugmentationPoint</code>.</li></ul></li><li>A developer of a domain or other schema that extends common types may define elements that are substitutable for an augmentation point. Each of these elements expresses an additional characteristic or relationship of the base type.</li><li>A developer may also define an augmentation type, and a corresponding augmentation element of that type, which acts as a container of elements that apply to the base type. An augmentation element is defined to be substitutable for an augmentation point, which enables it to appear in instances of that base type.</li><li><p>A developer of an information exchange may choose, through selection and subsetting reference schemas:</p><ul><li>Which types will carry augmentation point elements, and the cardinality (i.e. minOccurs, maxOccurs) of those augmentation point elements</li><li>Which elements will be included that substitute for an augmentation point. Some of these may be direct elements, while others may have an augmentation type, and carry multiple elements for the base type.</li><li>Which elements will be carried within the augmentation types; each of these will apply to its base type.</li></ul></li><li>Augmentation point elements also appear on <code>structures:ObjectType</code> and <code>structures:AssociationType</code>. This allows schema developers to define elements that may be applied to <em>any</em> object or association.</li></ul><p>In addition, a developer may create an extension of a base type and have it carry augmentation elements, in order to avoid element substitution and flexible content models; whether to substitute or concretely use the elements is at the discretion of the developers and implementers of an information exchange.</p><p>The term <a name="d3e10770"></a><a href="#definition_augmentation"><span class="termRef">augmentation</span></a> describes any element in a NIEM-conformant instance XML document that appears as a result of being substituted for an augmentation point element. Such an element may have a type that is an <a name="d3e10773"></a><a href="#definition_augmentation_type"><span class="termRef">augmentation type</span></a>, or it may be a direct element that represents a property.</p><div class="box"><div class="normativeHead"><a name="definition_augmentation"></a>[Definition: <dfn>augmentation</dfn>]</div><div class="sub"><p>An <strong>augmentation</strong> is a <a name="d3e10784"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> that:</p><ol><li>is an instance of an <a name="d3e10793"></a><a href="#definition_augmentation_element_declaration"><span class="termRef">augmentation element declaration</span></a>,</li><li>is a child of a <a name="d3e10800"></a><a href="#definition_conformant_element_information_item"><span class="termRef">conformant element information item</span></a> that is an instance of an <a name="d3e10803"></a><a href="#definition_augmentable_type"><span class="termRef">augmentable type</span></a>, and</li><li>appears in the instance as a substitution for an augmentation point element.</li></ol></div></div><p>As an example, here is a definition for <code>nc:PersonType</code>, which includes its augmentation point element:</p><div class="figure"><div class="caption"><a name="figure_10-9"></a>Figure 10-9: Definition of augmentable type <code>nc:PersonType</code></div><div class="box"><pre><xs:complexType name="PersonType">
<xs:annotation>
<xs:documentation>A data type for a human being.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="structures:ObjectType">
<xs:sequence>
<xs:element ref="nc:PersonBirthDate" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonName" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:PersonAugmentationPoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType></pre></div></div><p>Note that the augmentation point element has the same namespace and name as the type, with the suffix <q>Type</q> replaced by <q>AugmentationPoint</q>. The augmentation point is also defined with cardinality (minOccurs 0, maxOccurs unbounded) to ensure that it can support an arbitrary number of augmentations, and can be subset or constrained as needed. The augmentation point is the last element used by its type; it is always last in the sequence. The definition of the augmentation point is pretty simple:</p><div class="figure"><div class="caption"><a name="figure_10-10"></a>Figure 10-10: Declaration of augmentation point element <code>nc:PersonAugmentationPoint</code></div><div class="box"><pre><xs:element name="PersonAugmentationPoint" abstract="true">
<xs:annotation>
<xs:documentation>An augmentation point for PersonType.</xs:documentation>
</xs:annotation>
</xs:element></pre></div></div><p>The augmentation point element is abstract and typeless. This enables the substitution of elements that have simple content, elements that have complex content, or elements that are of an augmentation type. The JXDM domain defines an augmentation type and a corresponding augmentation element that substitutes for this augmentation point:</p><div class="figure"><div class="caption"><a name="figure_10-11"></a>Figure 10-11: Declaration of augmentation type and element</div><div class="box"><pre><xs:complexType name="PersonAugmentationType">
<xs:annotation>
<xs:documentation>A data type for additional information about a person.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="structures:AugmentationType">
<xs:sequence>
<xs:element ref="j:PersonMedicalInsuranceIndicator" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="j:PersonProfessionalCertificateText" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="j:PersonSightedIndicator" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="j:PersonFBIIdentification" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="PersonAugmentation" type="j:PersonAugmentationType"
substitutionGroup="nc:PersonAugmentationPoint">
<xs:annotation>
<xs:documentation>Additional information about a person.</xs:documentation>
</xs:annotation>
</xs:element></pre></div></div><p>The augmentation type is derived from <code>structures:AugmentationType</code> and has a name ending in <q>AugmentationType</q>. The augmentation element uses the type, and has a name ending in <q>Augmentation</q>. Note that the thing that binds the augmentation type to the augmentation point is the augmentation element’s use of the augmentation point element as its substitution group. This means that an augmentation type can be reused for multiple types, by creating more augmentation elements that have that type, each with its own substitution group for a different augmentation point.</p><p>In addition to defining elements that use an augmentation type, a schema document may define an element that substitutes for an augmentation point element, but does not use an augmentation type. For example, the following CBRN namespace defines an augmentation to <code>nc:ScheduleType</code>. While an element of an augmentation type acts as a container, holding elements that apply to an augmented object, this element is a direct property of a schedule, providing a meaningful characteristic (hours of operation) for a schedule. The resulting syntax is briefer than it would be using an augmentation type; the resulting instance looks similar to how it might look if the schedule type had been extended, rather than augmented.</p><div class="figure"><div class="caption"><a name="figure_10-12"></a>Figure 10-12: An augmentation that is not an augmentation type</div><div class="box"><pre><xs:element name="OperatingSchedule" type="cbrn:OperatingScheduleType"
substitutionGroup="nc:ScheduleAugmentationPoint">
<xs:annotation>
<xs:documentation>A schedule providing the beginning and ending hours of operation by weekday, for a designated time period.</xs:documentation>
</xs:annotation>
</xs:element></pre></div></div><p>The type of this element is not an augmentation type. Instead, it is its own object, not meant to just add to another type:</p><div class="figure"><div class="caption"><a name="figure_10-13"></a>Figure 10-13: A type used for an augmentation</div><div class="box"><pre><xs:complexType name="OperatingScheduleType">
<xs:annotation>
<xs:documentation>A data type for a schedule providing the beginning and ending hours of operation by weekday, for a designated time period.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="structures:ObjectType">
<xs:sequence>
<xs:element ref="cbrn:ScheduleStartDateTime" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="cbrn:ScheduleEndDateTime" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="cbrn:OperatingScheduleAugmentationPoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType></pre></div></div><p>This method can be used by an information exchange developer to define individual attributes that can be applied to any augmentable type.</p><p>Note that the augmentation method can introduce an additional element into every <a name="d3e11014"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> or <a name="d3e11017"></a><a href="#definition_association_type"><span class="termRef">association type</span></a> in an exchange, which provides opportunity for some errors in schema development. It is important that developers of exchanges not introduce elements substitutable for an augmentation point into complex types multiple ways, as it can introduce XML Schema’s Unique Particle Attribution errors. A single complex type should not introduce an element via both element substitution and element reference. This constraint is also supported by <a href="#rule_11-20">Rule 11-20, <em>Element or attribute declaration introduced only once into a type</em> (REF, EXT), below</a>.</p><div class="section"><div class="heading"><a name="section_10.4.1"></a>10.4.1. Augmentable types</div><div class="box"><div class="normativeHead"><a name="definition_augmentable_type"></a>[Definition: <dfn>augmentable type</dfn>]</div><div class="sub"><p>An <em>augmentable type</em> is <a name="d3e11037"></a><a href="#definition_complex_type_definition"><span class="termRef">complex type definition</span></a> that</p><ul><li>is defined by either a <a name="d3e11046"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or by an <a name="d3e11049"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a>, and</li><li><p>is either</p><ul><li>an <a name="d3e11062"></a><a href="#definition_association_type"><span class="termRef">association type</span></a>, or</li><li>an <a name="d3e11069"></a><a href="#definition_object_type"><span class="termRef">object type</span></a> that has complex content and is not an external adapter type.</li></ul></li></ul></div></div><div class="rule-section"><div class="heading"><a name="augmentable-type-has-aug-point"></a><a name="rule_10-23"></a>Rule 10-23. Augmentable type has augmentation point element</div><div class="box"><div class="normativeHead">[Rule 10-23] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType[
@name[not(ends-with(., 'MetadataType'))
and not(ends-with(., 'AugmentationType'))]
and empty(@appinfo:externalAdapterTypeIndicator)
and xs:complexContent]">
<sch:let name="augmentation-point-qname"
value="QName(string(nf:get-target-namespace(.)),
replace(./@name, 'Type$', 'AugmentationPoint'))"/>
<sch:assert test="xs:complexContent/xs:extension/xs:sequence/xs:element[
@ref[resolve-QName(., ..) = $augmentation-point-qname]]"
>An augmentable type MUST contain an element use of its corresponding augmentation point element.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="augmentable-type-has-at-most-one-aug-point"></a><a name="rule_10-24"></a>Rule 10-24. Augmentable type has at most one augmentation point element</div><div class="box"><div class="normativeHead">[Rule 10-24] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType[
@name[not(ends-with(., 'MetadataType'))
and not(ends-with(., 'AugmentationType'))]
and empty(@appinfo:externalAdapterTypeIndicator)
and xs:complexContent]">
<sch:let name="augmentation-point-qname"
value="QName(string(nf:get-target-namespace(.)),
replace(./@name, 'Type$', 'AugmentationPoint'))"/>
<sch:assert test="count(xs:complexContent/xs:extension/xs:sequence/xs:element[
@ref[resolve-QName(., ..) = $augmentation-point-qname]]) le 1"
>An augmentable type MUST contain no more than one element use of its corresponding augmentation point element.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="section"><div class="heading"><a name="section_10.4.2"></a>10.4.2. Augmentation point element declarations</div><div class="rule-section"><div class="heading"><a name="aug-el-matches-aug-type"></a><a name="rule_10-25"></a>Rule 10-25. Augmentation point element corresponds to its base type</div><div class="box"><div class="normativeHead">[Rule 10-25] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@name[
matches(., 'AugmentationPoint$')])]">
<sch:let name="element-name" value="@name"/>
<sch:assert test="exists(
parent::xs:schema/xs:complexType[
@name = replace($element-name, 'AugmentationPoint$', 'Type')
and exists(@name[
not(ends-with(., 'MetadataType'))
and not(ends-with(., 'AugmentationType'))])
and empty(@appinfo:externalAdapterTypeIndicator)
and exists(child::xs:complexContent)])"
>A schema document containing an element declaration for an augmentation point element MUST also contain a type definition for its base type, a corresponding augmentable type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This document defines the terms <a name="d3e11154"></a><a href="#definition_schema_document"><span class="termRef">schema document</span></a>, <a name="d3e11157"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a>, and <a name="d3e11160"></a><a href="#definition_augmentable_type"><span class="termRef">augmentable type</span></a>.</p></div><div class="rule-section"><div class="heading"><a name="aug-pt-untyped"></a><a name="rule_10-26"></a>Rule 10-26. An augmentation point element has no type</div><div class="box"><div class="normativeHead">[Rule 10-26] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@name[
matches(., 'AugmentationPoint$')])]">
<sch:assert test="empty(@type)"
>An augmentation point element MUST have no type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Because an augmentation point element has no type, it will be abstract, per <a href="#rule_9-38">Rule 9-38, <em>Untyped element is abstract</em> (REF, EXT), above</a></p></div><div class="rule-section"><div class="heading"><a name="aug-pt-no-subst-grp"></a><a name="rule_10-27"></a>Rule 10-27. An augmentation point element has no substitution group</div><div class="box"><div class="normativeHead">[Rule 10-27] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@name[
matches(., 'AugmentationPoint$')])]">
<sch:assert test="empty(@substitutionGroup)"
>An augmentation point element MUST have no substitution group.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="section"><div class="heading"><a name="section_10.4.3"></a>10.4.3. Augmentation point element use</div><div class="rule-section"><div class="heading"><a name="aug-el-in-type"></a><a name="rule_10-28"></a>Rule 10-28. Augmentation point element is only referenced by its base type</div><div class="box"><div class="normativeHead">[Rule 10-28] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType//xs:element[exists(@ref[
matches(local-name-from-QName(resolve-QName(., ..)), 'AugmentationPoint$')]) ]">
<sch:assert test="QName(string(nf:get-target-namespace(ancestor::xs:complexType[1])), ancestor::xs:complexType[1]/@name)
= QName(string(namespace-uri-from-QName(resolve-QName(@ref, .))),
replace(local-name-from-QName(resolve-QName(@ref, .)), 'AugmentationPoint$', 'Type'))"
>An augmentation point element MUST only be referenced by its base type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="aug-el-is-optional"></a><a name="rule_10-29"></a>Rule 10-29. Augmentation point element use is optional</div><div class="box"><div class="normativeHead">[Rule 10-29] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType//xs:element[exists(@ref[
matches(local-name-from-QName(resolve-QName(., ..)), 'AugmentationPoint$')]) ]">
<sch:assert test="exists(@minOccurs) and xs:integer(@minOccurs) = 0"
>An augmentation point element particle MUST have attribute minOccurs equal to 0.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="aug-el-is-unbounded"></a><a name="rule_10-30"></a>Rule 10-30. Augmentation point element use is unbounded</div><div class="box"><div class="normativeHead">[Rule 10-30] (<a href="#conformance_target_REF">REF</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType//xs:element[exists(@ref[
matches(local-name-from-QName(resolve-QName(., ..)), 'AugmentationPoint$')]) ]">
<sch:assert test="exists(@maxOccurs) and string(@maxOccurs) = 'unbounded'"
>An augmentation point element particle MUST have attribute maxOccurs set to unbounded.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div><div class="rule-section"><div class="heading"><a name="aug-ref-is-last"></a><a name="rule_10-31"></a>Rule 10-31. Augmentation point element use must be last element in its base type</div><div class="box"><div class="normativeHead">[Rule 10-31] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType//xs:element[exists(@ref[
matches(local-name-from-QName(resolve-QName(., ..)), 'AugmentationPoint$')]) ]">
<sch:assert test="empty(following-sibling::*)"
>An augmentation point element particle MUST be the last element occurrence in its content model.</sch:assert>
</sch:rule>
</sch:pattern></pre></div></div></div><div class="section"><div class="heading"><a name="section_10.4.4"></a>10.4.4. Augmentation types</div><div class="box"><div class="normativeHead"><a name="definition_augmentation_type"></a>[Definition: <dfn>augmentation type</dfn>]</div><div class="sub"><p>An <strong>augmentation type</strong> is a <a name="d3e11318"></a><a href="#definition_complex_type_definition"><span class="termRef">complex type definition</span></a> that</p><ol><li>provides elements that establish relationships to a base object or association, rather than to the instance of the augmentation type itself, and</li><li>is designed to be the type of an <a name="d3e11331"></a><a href="#definition_augmentation_element_declaration"><span class="termRef">augmentation element declaration</span></a>.</li></ol></div></div><div class="box"><div class="normativeHead"><a name="definition_augmentation_element_declaration"></a>[Definition: <dfn>augmentation element declaration</dfn>]</div><div class="sub"><p>An <em>augmentation element declaration</em> is an <a name="d3e11344"></a><a href="#definition_element_declaration"><span class="termRef">element declaration</span></a> that</p><ol><li>has a type that is an <a name="d3e11353"></a><a href="#definition_augmentation_type"><span class="termRef">augmentation type</span></a>, and</li><li>carries elements that establish a relationship to its parent object or association</li><li>is designed to be used as an <a name="d3e11364"></a><a href="#definition_augmentation"><span class="termRef">augmentation</span></a> of its parent object or association</li></ol></div></div><p>This term may be mistaken for the term <a name="d3e11372"></a><a href="#definition_augmentation"><span class="termRef">augmentation</span></a>. An <a name="d3e11375"></a><a href="#definition_augmentation_element_declaration"><span class="termRef">augmentation element declaration</span></a> is an element declaration defined by a schema, while an <a name="d3e11378"></a><a href="#definition_augmentation"><span class="termRef">augmentation</span></a> is an element information item within an XML document that appears as the result of being substituted for an augmentation point.</p><div class="rule-section"><div class="heading"><a name="rule_10-32"></a>Rule 10-32. Element within instance of augmentation type modifies base</div><div class="box"><div class="normativeHead">[Rule 10-32] (<a href="#conformance_target_INS">INS</a>) (Interpretation)</div><p>Given:</p><ol><li>Some element has a value <var>$base-value</var>.</li><li>Value <var>$base-value</var> contains element <var>$augmentation</var>.</li><li>Element <var>$augmentation</var> has property [element declaration] with a value that is an <a name="d3e11417"></a><a href="#definition_augmentation_element_declaration"><span class="termRef">augmentation element declaration</span></a>.</li><li>Element <var>$augmentation</var> has a value, by reference or by content.</li><li>The value of <var>$augmentation</var> contains element <var>$relationship</var>.</li><li>Element <var>$relationship</var> has a value, by reference or by content.</li></ol><p>Element <var>$relationship</var> establishes a relationship between <var>$base-value</var> and the value of <var>$relationship</var>.</p></div></div><div class="rule-section"><div class="heading"><a name="aug-type-name"></a><a name="rule_10-33"></a>Rule 10-33. Only an augmentation type name ends in <q>AugmentationType</q></div><div class="box"><div class="normativeHead">[Rule 10-33] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Interpretation)</div><p>A <a name="d3e11473"></a><a href="#definition_schema_component"><span class="termRef">schema component</span></a> that has a name that ends in <q>AugmentationType</q> MUST be an <a name="d3e11479"></a><a href="#definition_augmentation_type"><span class="termRef">augmentation type</span></a>.</p></div><p>The primary indicator that a complex type is an <a name="d3e11486"></a><a href="#definition_augmentation_type"><span class="termRef">augmentation type</span></a> is its name. Using the qualifier <code>Augmentation</code> immediately identifies a type as an augmentation type.</p></div><div class="rule-section"><div class="heading"><a name="rule-augmentation-type-structure"></a><a name="rule_10-34"></a>Rule 10-34. Schema component with name ending in <q>AugmentationType</q> is an augmentation type</div><div class="box"><div class="normativeHead">[Rule 10-34] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[ends-with(@name, 'AugmentationType')]">
<sch:assert test="self::xs:complexType/xs:complexContent/xs:*[
(self::xs:extension or self::xs:restriction)
and ends-with(@base, 'AugmentationType')]"
>An augmentation type definition schema component with {name} ending in 'AugmentationType' MUST be an augmentation type definition that is a complex type definition with complex content that extends or restricts an augmentation type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>The <a name="d3e11520"></a><a href="#definition_base_type_definition"><span class="termRef">base type definition</span></a> of an augmentation type is required to be from a conformant namespace by <a href="#rule_11-3">Rule 11-3, <em>Base type definition defined by conformant schema</em> (REF, EXT), below</a>.</p></div><div class="rule-section"><div class="heading"><a name="rule-type-derived-from-augmentation-type"></a><a name="rule_10-35"></a>Rule 10-35. Type derived from <code>structures:AugmentationType</code> is an augmentation type</div><div class="box"><div class="normativeHead">[Rule 10-35] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:*[(self::xs:restriction or self::xs:extension)
and ends-with(@base, 'AugmentationType')]">
<sch:assert test="ancestor::xs:complexType[ends-with(@name, 'AugmentationType')]"
>A type definition derived from an augmentation type MUST be an augmentation type definition</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>This rule ensures that any type that is derived from an augmentation type, including <code>structures:AugmentationType</code>, is itself an augmentation type.</p></div></div><div class="section"><div class="heading"><a name="section_10.4.5"></a>10.4.5. Augmentation element declarations</div><div class="rule-section"><div class="heading"><a name="rule-augmentation-el-type-is-augmentation-type"></a><a name="rule_10-36"></a>Rule 10-36. Augmentation element type is an augmentation type</div><div class="box"><div class="normativeHead">[Rule 10-36] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@name)]">
<sch:assert test="exists(@type[ends-with(., 'AugmentationType')])
= exists(@name[ends-with(., 'Augmentation')])"
>An element declaration MUST have a name that ends in "Augmentation" if and only if it has a type that is an augmentation type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Using the qualifier <code>Augmentation</code> immediately identifies an element as representing an augmentation.</p></div><div class="rule-section"><div class="heading"><a name="rule-aug-el-not-used"></a><a name="rule_10-37"></a>Rule 10-37. Augmentation elements are not used directly</div><div class="box"><div class="normativeHead">[Rule 10-37] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_SET">SET</a>) (Constraint)</div><p>Within a <a name="d3e11598"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a>, a complex type definition MUST NOT have an element use of</p><ul><li>an <a name="d3e11607"></a><a href="#definition_augmentation_element_declaration"><span class="termRef">augmentation element declaration</span></a>, or</li><li>an element declaration that is in the substitution group of an augmentation point element declaration.</li></ul></div></div></div></div><div class="section"><div class="heading"><a name="section_10.5"></a>10.5. Metadata</div><p>There are rules for the use of metadata in instance in <a href="#section_12.4">Section 12.4, <em>Instance metadata</em>, below</a>.</p><div class="section"><div class="heading"><a name="section_10.5.1"></a>10.5.1. Metadata types</div><p>Within NIEM, metadata is defined as <q>data about data.</q> This may include information such as the security of a piece of data or the source of the data. These pieces of metadata may be composed into a metadata type. The types of data to which metadata may be applied may be constrained.</p><div class="box"><div class="normativeHead"><a name="definition_metadata_type"></a>[Definition: <dfn>metadata type</dfn>]</div><div class="sub"><p>A <strong>metadata type</strong> describes data about data, that is, information that is not descriptive of objects and their relationships, but is descriptive of the data itself. It is useful to provide a general mechanism for data about data. This provides required flexibility to precisely represent information.</p></div></div><div class="rule-section"><div class="heading"><a name="rule_10-38"></a>Rule 10-38. Metadata type has data about data</div><div class="box"><div class="normativeHead">[Rule 10-38] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><p>Within the schema, a metadata type MUST contain elements appropriate for a specific class of data about data.</p></div></div><p>A metadata type establishes a specific, named aggregation of data about data. Any type transitively derived from <code>structures:MetadataType</code> is a metadata type. Such metadata types should be used as is and additional metadata types defined for additional content.</p><div class="rule-section"><div class="heading"><a name="rule-metadata-type-derived-from-metadata-type"></a><a name="rule_10-39"></a>Rule 10-39. Metadata types are derived from <code>structures:MetadataType</code></div><div class="box"><div class="normativeHead">[Rule 10-39] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:complexType">
<sch:let name="is-metadata-type" value="exists(@name[ends-with(., 'MetadataType')])"/>
<sch:let name="has-metadata-base-type" value="exists(xs:complexContent[
exists(xs:*[local-name() = ('extension', 'restriction')
and exists(@base[ends-with(., 'MetadataType')])])])"/>
<sch:assert test="$is-metadata-type = $has-metadata-base-type"
>A type MUST be a metadata type if and only if it is derived from a metadata type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>A metadata type is derived from another metadata type, terminating in the base type <code>structures:MetadataType</code>. A type is easily identified as a metadata type by its name, qualified with the term <code>Metadata</code>.</p></div></div><div class="section"><div class="heading"><a name="section_10.5.2"></a>10.5.2. Metadata element declarations</div><div class="box"><div class="normativeHead"><a name="definition_metadata_element_declaration"></a>[Definition: <dfn>metadata element declaration</dfn>]</div><div class="sub"><p>A <em>metadata element declaration</em> is an element declaration defined by a <a name="d3e11716"></a><a href="#definition_reference_schema_document"><span class="termRef">reference schema document</span></a> or an <a name="d3e11719"></a><a href="#definition_extension_schema_document"><span class="termRef">extension schema document</span></a> that defines a metadata object. A metadata element declaration has a name ending in <q>Metadata</q>, and a {type definition} that is a <a name="d3e11725"></a><a href="#definition_metadata_type"><span class="termRef">metadata type</span></a>.</p></div></div><p> There are limitations on the meaning of a metadata element in an instance; it does not establish existence of an object, nor is it a property of its containing object.</p><div class="rule-section"><div class="heading"><a name="rule-metadata-el-type-is-metadata-type"></a><a name="rule_10-40"></a>Rule 10-40. Metadata element declaration type is a metadata type</div><div class="box"><div class="normativeHead">[Rule 10-40] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>) (Constraint)</div><pre><sch:pattern>
<sch:rule context="xs:element[exists(@name)]">
<sch:assert test="exists(@type[ends-with(., 'MetadataType')])
= exists(@name[ends-with(., 'Metadata')])"
>An element MUST have a name that ends in 'Metadata' if and only if it has a type that is a metadata type.</sch:assert>
</sch:rule>
</sch:pattern></pre></div><p>Using the qualifier <code>Metadata</code> immediately identifies an element as representing metadata. This document defines the term <a name="d3e11758"></a><a href="#definition_metadata_type"><span class="termRef">metadata type</span></a>.</p></div><div class="rule-section"><div class="heading"><a name="rule-metadata-applicable-elements"></a><a name="rule_10-41"></a>Rule 10-41. Metadata element has applicable elements</div><p>Each metadata element declaration may be applied to a set of elements. Any element to which a metadata element may be validly applied is called an <q>applicable element</q> for the metadata element. A metadata element that does not explicitly specify applicability information may be applied to any NIEM-conformant element.</p><div class="box"><div class="normativeHead">[Rule 10-41] (<a href="#conformance_target_REF">REF</a>, <a href="#conformance_target_EXT">EXT</a>, <a href="#conformance_target_SET">SET</a>) (Interpretation)</div><p>The set of applicable elements for a metadata element declaration are as follows:</p><ul><li>A metadata element declaration that has neither an attribute <code>appinfo:appliesToTypes</code> nor an attribute <code>appinfo:appliesToElements</code> may be applied to any element.</li><li><p>A metadata element declaration that has either an attribute <code>appinfo:appliesToTypes</code> or an attribute <code>appinfo:appliesToElements</code> may be applied to</p><ul><li>any element whose qualified name is in the value of <code>appinfo:appliesToElements</code>, or any element with a declaration that is in the substitution group of the declaration of such an element, and to</li><li>any element with a type with a qualified name that is in the value of <code>appinfo:appliesToTypes</code>, or any element with a type that is validly derived from such a type.</li></ul></li></ul></div></div><p><a href="#figure_10-14">Figure 10-14, <em>Sample use of <code>appinfo:appliesToTypes</code></em>, below,</a> shows an example of <code>appinfo:appliesToTypes</code>, defining a metadata element that is applicable to all objects and all associations.</p><div class="figure"><div class="caption"><a name="figure_10-14"></a>Figure 10-14: Sample use of <code>appinfo:appliesToTypes</code></div><div class="box"><pre><xs:element name="Metadata" type="nc:MetadataType" nillable="true"
appinfo:appliesToTypes="structures:ObjectType structures:AssociationType">
<xs:annotation>
<xs:documentation>Information that further qualifies primary data; data about data.</xs:documentation>
</xs:annotation>
</xs:element></pre></div></div></div></div><div class="section"><div class="heading"><a name="section_10.6"></a>10.6. Container elements</div><p>All NIEM properties establish a relationship between the object holding the property and the value of the property. For example, an activity object of type <code>nc:ActivityType</code> may have an element <code>nc:ActivityDescriptionText</code>. This element will be of type <code>nc:TextType</code> and represents a NIEM property owned by that activity object. An occurrence of this element within an activity object establishes a relationship between the activity object and the text: the text is the description of the activity.</p><p>In a NIEM-conformant instance, an element establishes a relationship between the object that contains it and the element’s value. This relationship between the object and the element may be semantically strong, such as the text description of an activity in the previous example, or it may be semantically weak, with its exact meaning left unstated. In NIEM, the contained element involved in a weakly defined semantic relationship is commonly referred to as a <strong>container element</strong>.</p><p>A container element establishes a weakly defined relationship with its containing element. For example, an object of type <code>nc:ItemDispositionType</code> may have a container element <code>nc:Item</code> of type <code>nc:ItemType</code>. The container element <code>nc:Item</code> does not establish what relationship exists between the object of <code>nc:ItemDispositionType</code> and itself. There could be any of a number of possible semantics between an object and the value of a container element. It could be a contained object, a subpart, a characteristic, or some other relationship. The appearance of this container element inside the <code>nc:ItemDispositionType</code> merely establishes that the disposition has an item.</p><p>The name of the container element is usually based on the NIEM type that defines it: <code>nc:PersonType</code> uses a container element <code>nc:Person</code>, while <code>nc:ActivityType</code> uses a container element <code>nc:Activity</code>. The concept of an element as a container element is a notional one.</p><p>There are no formalized rules addressing what makes up a container element. A container element is vaguely defined and carries very little semantics about its context and its contents. Accordingly, there is no formal definition of container elements in NIEM: There are no specific artifacts that define a container element; there are no <code>appinfo</code> or other labels for container elements.</p><p>The appearance of a container element within a NIEM type carries no additional semantics about the relationship between the property and the containing type. The use of container elements indicates only that there is a relationship; it does not provide any semantics for interpreting that relationship.</p><p>For example, a NIEM container element <code>nc:Person</code> would be associated with the NIEM type <code>nc:PersonType</code>. The use of the NIEM container element <code>nc:Person</code> in a containing NIEM type indicates that a person has some association with the instances of the containing NIEM type. But because the <code>nc:Person</code> container element is used, there is no additional meaning about the association of the person and the instance containing it. While there is a person associated with the instance, nothing is known about the relationship except its existence.</p><p>The use of the Person container element is in contrast to a NIEM property named <code>nc:AssessmentPerson</code>, also of NIEM type <code>nc:PersonType</code>. When the NIEM property <code>nc:AssessmentPerson</code> is contained within an instance of a NIEM type, it is clear that the person referenced by this property was responsible for an assessment of some type, relevant to the exchange being modeled. The more descriptive name, <code>nc:AssessmentPerson</code>, gives more information about the relationship of the person with the containing instance, as compared with the semantic-free implications associated with the use of the <code>nc:Person</code> container element.</p><p>When a NIEM-conformant schema requires a new container element, it may define a new element with a concrete type and a general name, with general semantics. Any schema may define a container element when it requires one.</p></div><div class="section"><div class="heading"><a name="section-representation-pattern"></a><a name="section_10.7"></a>10.7. The <q>Representation</q> pattern</div><p>One need frequently faced by schema developers is for multiple representations for a single concept. For example, for a general concept of <em>a point in time</em>, there are numerous base representations, and innumerable ways to combine them. For example, the <a name="d3e11974"></a><a href="#definition_XML_Schema_definition_language"><span class="termRef">XML Schema definition language</span></a> defines the types <code>xs:dateTime</code>, <code>xs:time</code>, <code>xs:date</code>, <code>xs:gYearMonth</code>, <code>xs:gYear</code>, <code>xs:gMonthDay</code>, <code>xs:gDay</code>, and <code>xs:gMonth</code>, each representing a point in time, or perhaps a span of time. There is a need in XML Schema to be able to represent a general concept like <em>a point in time</em>, along with a variety of representations for the concept.</p><p>Note that this need is a bit different than specialization of relationships (e.g., <code>rdfs:subPropertyOf</code>), in that it specifically is to be used to describe and carry the variety of representations for a particular concept. The need is to be able to represent an abstract point in time using a single type, and then to add a set of specific representations for that basic concept.</p><p>There are a variety of methods that could be used to satisfy this need. A method could be devised that uses an abstract type, along with a set of concrete extensions of that abstract type. However, there would still be a need for a set of concrete elements to carry the types, as type substitution (distinct from <em>element substitution</em>) is not widely adopted across the NIEM community. As well, it is difficult to create a network of complex types with complex content and complex types with simple content that all substitute for a base type; the XML Schema syntax is complicated. Other alternatives each have their pros and cons.</p><p>To handle this need, NIEM has adopted the <q>Representation</q> pattern, in which a type contains a representation element, and the various representations for that type are in the substitution group for that representation element.</p><p>For example, the definition of <code>nc:DateType</code> uses this pattern:</p><div class="figure"><div class="caption"><a name="figure_10-15"></a>Figure 10-15: A type definition that uses the <q>Representation</q> pattern</div><div class="box"><pre><xs:complexType name="DateType">
<xs:annotation>
<xs:documentation>A data type for a calendar date.</xs:documentation>
</xs:annotation>
<xs:complexContent>
<xs:extension base="structures:ObjectType">
<xs:sequence>
<xs:element ref="nc:DateRepresentation" minOccurs="0" maxOccurs="unbounded"/>
<xs:element ref="nc:DateAccuracy" minOccurs="0" maxOccurs="1"/>
<xs:element ref="nc:DateMarginOfErrorDuration" minOccurs="0" maxOccurs="1"/>
<xs:element ref="nc:DateAugmentationPoint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType></pre></div></div><p>The type has elements that represent accuracy and margin of error, as well as an augmentation point. The actual date value, however, is carried by an element that substitutes for <code>nc:DateRepresentation</code>. That base element, and several substitutions are defined by the NIEM Core namespace:</p><div class="figure"><div class="caption"><a name="figure_10-16"></a>Figure 10-16: Element declarations that implement representations</div><div class="box"><pre><xs:element name="DateRepresentation" abstract="true">
<xs:annotation>
<xs:documentation>A data concept for a representation of a date.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="Date" type="niem-xs:date" substitutionGroup="nc:DateRepresentation" nillable="true">
<xs:annotation>
<xs:documentation>A full date.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="DateTime" type="niem-xs:dateTime" substitutionGroup="nc:DateRepresentation">