(tar-summarize-buffer): Fix reporter initialization.
[emacs.git] / etc / schema / rdfxml.rnc
blob9730322cfddf28b4ac7bf9d6091c894727bb3aa5
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.
11 namespace local = ""
12 namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
13 datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
16 start = doc
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
36 doc = 
37   RDF
39 RDF =
40   element rdf:RDF { 
41      xmllang?, xmlbase?, nodeElementList
44 nodeElementList = 
45   nodeElement*
47   # Should be something like:
48   #  ws* , (  nodeElement , ws* )*
49   # but RELAXNG does this by default, ignoring whitespace separating tags.
51 nodeElement =
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
56   }
58   # It is not possible to say "and not things
59   # beginning with _ in the rdf: namespace" in RELAX NG.
61 ws = 
62   " "
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
68 propertyEltList = 
69   propertyElt*
71   # Should be something like:
72   #  ws* , ( propertyElt , ws* )*
73   # but RELAXNG does this by default, ignoring whitespace separating tags.
75 propertyElt = 
76   resourcePropertyElt | 
77   literalPropertyElt | 
78   parseTypeLiteralPropertyElt |
79   parseTypeResourcePropertyElt |
80   parseTypeCollectionPropertyElt |
81   parseTypeOtherPropertyElt |
82   emptyPropertyElt
84 resourcePropertyElt = 
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 |
88                 xml:* ) {
89       idAttr?, xmllang?, xmlbase?, nodeElement
90   }
92 literalPropertyElt =
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 |
96                 xml:* ) {
97       (idAttr | datatypeAttr )?, xmllang?, xmlbase?, text 
98   }
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 |
104                 xml:* ) {
105       idAttr?, parseLiteral, xmllang?, xmlbase?, literal 
106   }
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 |
112                 xml:* ) {
113       idAttr?, parseResource, xmllang?, xmlbase?, propertyEltList
114   }
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 |
120                 xml:* ) {
121       idAttr?, xmllang?, xmlbase?, parseCollection, nodeElementList
122   }
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 |
128                 xml:* ) {
129       idAttr?, xmllang?, xmlbase?, parseOther, any
130   }
132 emptyPropertyElt =
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 |
136                  xml:* ) {
137        idAttr?, (resourceAttr | nodeIdAttr)?, xmllang?, xmlbase?, propertyAttr*
138    }
140 idAttr = 
141   attribute rdf:ID { 
142       IDsymbol 
143   }
145 nodeIdAttr = 
146   attribute rdf:nodeID { 
147       IDsymbol 
148   }
150 aboutAttr = 
151   attribute rdf:about { 
152       URI-reference 
153   }
155 propertyAttr = 
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 |
160                   xml:* ) {
161       string
162   }
164 resourceAttr = 
165   attribute rdf:resource {
166       URI-reference 
167   }
169 datatypeAttr = 
170   attribute rdf:datatype {
171       URI-reference 
172   }
174 parseLiteral = 
175   attribute rdf:parseType {
176       "Literal" 
177   }
179 parseResource = 
180   attribute rdf:parseType {
181       "Resource"
182   }
184 parseCollection = 
185   attribute rdf:parseType {
186       "Collection"
187   }
189 parseOther = 
190   attribute rdf:parseType {
191       text
192   }
194 URI-reference = 
195   string
197 literal =
198   any
200 IDsymbol = 
201   xsd:NMTOKEN
203 any =
204   mixed { element * { attribute * { text }*, any }* }