1 <?xml encoding="UTF-8"?>
3 SPDX-FileCopyrightText: 2024 Lady <https://www.ladys.computer/about/#lady>
4 SPDX-License-Identifier: CC0-1.0
8 <!ENTITY % blocks '(list|p|table)+'>
9 <!ENTITY % inlines 'code|em|ptr|ref|resource|strong|value'>
10 <!ELEMENT p (#PCDATA|%inlines;|note)*>
11 <!ELEMENT code (#PCDATA)>
12 <!ELEMENT em (#PCDATA)>
13 <!ELEMENT strong (#PCDATA)>
16 <!ELEMENT note (%blocks;)>
24 target CDATA #REQUIRED
25 type (class|property|individual) #IMPLIED
27 <!ELEMENT ref (#PCDATA)>
29 target CDATA #REQUIRED
30 type (class|property|individual) #IMPLIED
34 <!ELEMENT table (row)+>
35 <!ELEMENT row (cell)+>
37 role (label|data) "data"
39 <!ELEMENT cell (#PCDATA|%inlines;)*>
41 role (label|data) "data"
45 <!ELEMENT list (item)*>
47 rend (bulleted|numbered) "bulleted"
49 <!ELEMENT item (%blocks;)>
52 <!ELEMENT SpecificResource EMPTY><!-- this actually becomes anno:ResourceSelection, not anno:SpecificResource, but changing the name to match would require editing a lot of files -->
53 <!ATTLIST SpecificResource
54 source CDATA #REQUIRED
55 fragment CDATA #IMPLIED
59 <!ELEMENT inScheme (resource)>
62 <!ELEMENT declare (prefix,namespace)>
63 <!ELEMENT namespace (#PCDATA)>
64 <!ELEMENT prefix (#PCDATA)>
67 <!ENTITY % annotations '(label*,comment*,isDefinedBy*)'>
68 <!ELEMENT comment (%blocks;)>
70 xml:lang NMTOKEN #REQUIRED
72 <!ELEMENT isDefinedBy (resource|SpecificResource)>
73 <!ELEMENT label (#PCDATA)>
75 xml:lang NMTOKEN #REQUIRED
78 <!-- Helper Elements -->
79 <!ELEMENT resource (#PCDATA)>
83 <!ELEMENT value (#PCDATA)>
85 datatype CDATA #IMPLIED
86 xml:lang NMTOKEN #IMPLIED
90 <!ELEMENT allValuesFrom (Class|Datatype|Restriction|resource)>
91 <!ELEMENT assertionProperty (resource)>
92 <!ELEMENT cardinality (#PCDATA)>
93 <!ELEMENT complementOf (Class|Restriction|resource)>
94 <!ELEMENT datatypeComplementOf (Datatype|resource)>
95 <!ELEMENT differentFrom (resource)>
96 <!ELEMENT disjointUnionOf (Class|Restriction|resource)+>
97 <!ELEMENT disjointWith (Class|Datatype|Restriction|resource)>
98 <!ELEMENT domain (Class|Restriction|resource)>
99 <!ELEMENT equivalentClass (Class|Datatype|Restriction|resource)>
100 <!ELEMENT equivalentProperty (DatatypeProperty|ObjectProperty|resource)>
101 <!ELEMENT hasKey (DatatypeProperty|ObjectProperty|resource)+>
102 <!ELEMENT hasSelf EMPTY>
103 <!ELEMENT hasValue (resource|value)>
104 <!ELEMENT intersectionOf (Class|Datatype|Restriction|resource)+>
105 <!ELEMENT inverseOf (Class|Datatype|Restriction|resource)>
106 <!ELEMENT maxCardinality (#PCDATA)>
107 <!ELEMENT maxQualifiedCardinality (#PCDATA)>
108 <!ELEMENT members (Class|Restriction|resource)+>
109 <!ELEMENT minCardinality (#PCDATA)>
110 <!ELEMENT minQualifiedCardinality (#PCDATA)>
111 <!ELEMENT onClass (Class|Restriction|resource)>
112 <!ELEMENT onDataRange (Datatype|resource)>
113 <!ELEMENT onDatatype (resource)>
114 <!ELEMENT onProperty (ObjectProperty|DatatypeProperty|resource)>
115 <!ELEMENT oneOf (Class|Datatype|Restriction|resource)+>
116 <!ELEMENT propertyChainAxiom (ObjectProperty|resource)+>
117 <!ELEMENT propertyDisjointWith (DatatypeProperty|ObjectProperty|resource)>
118 <!ELEMENT qualifiedCardinality (#PCDATA)>
119 <!ELEMENT range (Class|Datatype|Restriction|resource)>
120 <!ELEMENT sameAs (resource)>
121 <!ELEMENT someValuesFrom (Class|Datatype|Restriction|resource)>
122 <!ELEMENT sourceIndividual (resource)>
123 <!ELEMENT subClassOf (Class|Restriction|resource)>
124 <!ELEMENT subPropertyOf (DatatypeProperty|ObjectProperty|resource)>
125 <!ELEMENT superClassOf (Class|Restriction)> <!-- inverse subClassOf; only use for anonymous subclasses -->
126 <!ELEMENT targetIndividual (resource)>
127 <!ELEMENT type (Class|Restriction|resource)>
128 <!ELEMENT unionOf (Class|Datatype|Restriction|resource)+>
129 <!ELEMENT withRestrictions (langRange|length|maxExclusive|maxInclusive|maxLength|minExclusive|minInclusive|minLength|pattern)+>
131 <!-- Restrictions -->
132 <!ELEMENT langRange (#PCDATA)>
133 <!ELEMENT length (#PCDATA)>
134 <!ELEMENT maxExclusive (#PCDATA)>
135 <!ATTLIST maxExclusive
136 datatype CDATA #REQUIRED
138 <!ELEMENT maxInclusive (#PCDATA)>
139 <!ATTLIST maxInclusive
140 datatype CDATA #REQUIRED
142 <!ELEMENT maxLength (#PCDATA)>
143 <!ELEMENT minExclusive (#PCDATA)>
144 <!ATTLIST minExclusive
145 datatype CDATA #REQUIRED
147 <!ELEMENT minInclusive (#PCDATA)>
148 <!ATTLIST minInclusive
149 datatype CDATA #REQUIRED
151 <!ELEMENT minLength (#PCDATA)>
152 <!ELEMENT pattern (#PCDATA)>
154 <!-- Axiom Classes -->
155 <!ELEMENT AllDifferent (members)>
156 <!ELEMENT AllDisjointClasses (members)>
157 <!ELEMENT AllDisjointProperties (members)>
158 <!ELEMENT NegativeObjectPropertyAssertion (assertionProperty,sourceIndividual,targetIndividual)>
160 <!-- Restrictions -->
161 <!ELEMENT Restriction (onProperty,(((minQualifiedCardinality|maxQualifiedCardinality|qualifiedCardinality),(onClass|onDataRange))|allValuesFrom|cardinality|hasValue|hasSelf|minCardinality|maxCardinality|someValuesFrom))>
163 <!-- Declarations -->
164 <!ELEMENT Class (%annotations;,((equivalentClass*,subClassOf*,superClassOf*,disjointWith*,hasKey*)|complementOf|disjointUnionOf|intersectionOf|oneOf|unionOf))>
167 status (plumbing|unstable|testing|stable|archaic) #IMPLIED
169 <!ELEMENT Datatype (%annotations;,(equivalentClass|datatypeComplementOf|intersectionOf|unionOf|(onDatatype,withRestrictions)))> <!-- oneOf not supported; lists of literals are difficult -->
172 status (plumbing|unstable|testing|stable|archaic) #IMPLIED
174 <!ELEMENT AnnotationProperty (%annotations;,subPropertyOf*,domain*,range*)>
175 <!ATTLIST AnnotationProperty
177 status (plumbing|unstable|testing|stable|archaic) #IMPLIED
179 <!ELEMENT ObjectProperty (%annotations;,equivalentProperty*,subPropertyOf*,inverseOf*,propertyDisjointWith*,propertyChainAxiom*,domain*,range*)>
180 <!ATTLIST ObjectProperty
181 asymmetric (no|yes) "no"
182 functional (no|yes) "no"
183 inverseFunctional (no|yes) "no"
184 irreflexive (no|yes) "no"
186 reflexive (no|yes) "no"
187 status (plumbing|unstable|testing|stable|archaic) #IMPLIED
188 symmetric (no|yes) "no"
189 transitive (no|yes) "no"
191 <!ELEMENT DatatypeProperty (%annotations;,equivalentProperty*,subPropertyOf*,propertyDisjointWith*,domain*,range*)>
192 <!ATTLIST DatatypeProperty
193 functional (no|yes) "no"
195 status (plumbing|unstable|testing|stable|archaic) #IMPLIED
197 <!ELEMENT NamedIndividual (%annotations;,type*,sameAs*,differentFrom*,inScheme*)>
198 <!ATTLIST NamedIndividual
200 status (plumbing|unstable|testing|stable|archaic) #IMPLIED
204 <!ELEMENT Ontology (%annotations;,declare*)>