2 # RELAX NG Compact Schema for RDF/XML Syntax
4 # This schema is for information only and NON-NORMATIVE
6 # It is based on one originally written by James Clark in
7 # http://lists.w3.org/Archives/Public/www-rdf-comments/2001JulSep/0248.html
8 # and updated with later changes.
12 namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
13 datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
19 # I cannot seem to do this in RNGC so they are expanded in-line
21 # coreSyntaxTerms = rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype
22 # syntaxTerms = coreSyntaxTerms | rdf:Description | rdf:li
23 # oldTerms = rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID
24 # nodeElementURIs = * - ( coreSyntaxTerms | rdf:li | oldTerms )
25 # propertyElementURIs = * - ( coreSyntaxTerms | rdf:Description | oldTerms )
26 # propertyAttributeURIs = * - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )
28 # Also needed to allow rdf:li on all property element productions
29 # since we can't capture the rdf:li rewriting to rdf_<n> in relaxng
31 # Need to add these explicitly
32 xmllang = attribute xml:lang { text }
33 xmlbase = attribute xml:base { text }
34 # and to forbid every other xml:* attribute, element
41 xmllang?, xmlbase?, nodeElementList
47 # Should be something like:
48 # ws* , ( nodeElement , ws* )*
49 # but RELAXNG does this by default, ignoring whitespace separating tags.
52 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
53 rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
54 rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID ) {
55 (idAttr | nodeIdAttr | aboutAttr )?, xmllang?, xmlbase?, propertyAttr*, propertyEltList
58 # It is not possible to say "and not things
59 # beginning with _ in the rdf: namespace" in RELAX NG.
64 # Not used in this RELAX NG schema; but should be any legal XML
65 # whitespace defined by http://www.w3.org/TR/2000/REC-xml-20001006#NT-S
71 # Should be something like:
72 # ws* , ( propertyElt , ws* )*
73 # but RELAXNG does this by default, ignoring whitespace separating tags.
78 parseTypeLiteralPropertyElt |
79 parseTypeResourcePropertyElt |
80 parseTypeCollectionPropertyElt |
81 parseTypeOtherPropertyElt |
85 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
86 rdf:resource | rdf:nodeID | rdf:datatype |
87 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
89 idAttr?, xmllang?, xmlbase?, nodeElement
93 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
94 rdf:resource | rdf:nodeID | rdf:datatype |
95 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
97 (idAttr | datatypeAttr )?, xmllang?, xmlbase?, text
100 parseTypeLiteralPropertyElt =
101 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
102 rdf:resource | rdf:nodeID | rdf:datatype |
103 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
105 idAttr?, parseLiteral, xmllang?, xmlbase?, literal
108 parseTypeResourcePropertyElt =
109 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
110 rdf:resource | rdf:nodeID | rdf:datatype |
111 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
113 idAttr?, parseResource, xmllang?, xmlbase?, propertyEltList
116 parseTypeCollectionPropertyElt =
117 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
118 rdf:resource | rdf:nodeID | rdf:datatype |
119 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
121 idAttr?, xmllang?, xmlbase?, parseCollection, nodeElementList
124 parseTypeOtherPropertyElt =
125 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
126 rdf:resource | rdf:nodeID | rdf:datatype |
127 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
129 idAttr?, xmllang?, xmlbase?, parseOther, any
133 element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
134 rdf:resource | rdf:nodeID | rdf:datatype |
135 rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
137 idAttr?, (resourceAttr | nodeIdAttr)?, xmllang?, xmlbase?, propertyAttr*
146 attribute rdf:nodeID {
151 attribute rdf:about {
156 attribute * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
157 rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
158 rdf:Description | rdf:aboutEach |
159 rdf:aboutEachPrefix | rdf:bagID |
165 attribute rdf:resource {
170 attribute rdf:datatype {
175 attribute rdf:parseType {
180 attribute rdf:parseType {
185 attribute rdf:parseType {
190 attribute rdf:parseType {
204 mixed { element * { attribute * { text }*, any }* }