- From: Dave Beckett <dave.beckett@bristol.ac.uk>
- Date: Tue, 11 Dec 2001 17:32:25 +0000
- To: w3c-rdfcore-wg@w3.org
- Message-ID: <29621.1008091945@tatooine.ilrt.bris.ac.uk>
I attach a copy of the syntax document for your consideration for publication as a working draft. I think the following people were actioned to review it (no minutes as of this date recording it) Jeremy Carroll Jos De Roo Patrick Stickler but others, feel free :) The attached files corresponds to CVS version 1.333 of http://ilrt.org/discovery/2001/07/rdf-syntax-grammar/ (CVS http://cvs.ilrt.org/cvsweb/redland/rdfcore/syntax/index.html ) plus the attached relaxng which are for information, not part of the document, but are intended to be published with the working draft. I think I need to carry on trying to improve the very new section 2 but it could be published as is. Dave
# # RELAX NG Schema (non-XML) for RDF/XML Syntax # # This schema is for information only and NON-NORMATIVE # # It is based on one originally written by James Clark in # http://lists.w3.org/Archives/Public/www-rdf-comments/2001JulSep/0248.html # and updated with later changes. # namespace local = "" namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#" datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes" start = doc doc = RDF RDF = element rdf:RDF { nodeElementList } nodeElementList = nodeElement* # Should be something like: # ws* , ( nodeElement , ws* )* # but RELAXNG does this by default, ignoring whitespace separating tags. nodeElement = element * - (local:* |rdf:RDF |rdf:ID|rdf:about |rdf:bagID|rdf:parseType|rdf:resource |rdf:li ) { (idAttr | aboutAttr )?, bagIdAttr?, propertyAttr*, propertyEltList } # FIXME: Not sure if it is possible to say "and not things # beginning with _ in the rdf: namespace". ws = " " # Not used in this RELAX NG schema; but should be any legal XML # whitespace defined by http://www.w3.org/TR/2000/REC-xml-20001006#NT-S propertyEltList = propertyElt* # Should be something like: # ws* , ( propertyElt , ws* )* # but RELAXNG does this by default, ignoring whitespace separating tags. propertyElt = resourcePropertyElt | literalPropertyElt | parseTypeLiteralPropertyElt | parseTypeResourcePropertyElt | parseTypeOtherPropertyElt | emptyPropertyElt resourcePropertyElt = element * - (local:* |rdf:RDF|rdf:Description |rdf:ID|rdf:about |rdf:bagID|rdf:parseType|rdf:resource) { idAttr?, nodeElement } literalPropertyElt = element * - (local:* |rdf:RDF|rdf:Description |rdf:ID|rdf:about |rdf:bagID|rdf:parseType|rdf:resource) { idAttr?, text } parseTypeLiteralPropertyElt = element * - (local:* |rdf:RDF|rdf:Description |rdf:ID|rdf:about |rdf:bagID|rdf:parseType|rdf:resource) { idAttr?, parseLiteral, literal } parseTypeResourcePropertyElt = element * - (local:* |rdf:RDF|rdf:Description |rdf:ID|rdf:about |rdf:bagID|rdf:parseType|rdf:resource) { idAttr?, parseResource, propertyEltList } parseTypeOtherPropertyElt = element * - (local:* |rdf:RDF|rdf:Description |rdf:ID|rdf:about |rdf:bagID|rdf:parseType|rdf:resource) { idAttr?, parseOther, any } emptyPropertyElt = element * - (local:* |rdf:RDF|rdf:Description |rdf:ID|rdf:about |rdf:bagID|rdf:parseType|rdf:resource) { (idAttr | resourceAttr)?, bagIdAttr?, propertyAttr* } idAttr = attribute rdf:ID { IDsymbol } aboutAttr = attribute rdf:about { URI-reference } bagIdAttr = attribute rdf:bagID { IDsymbol } propertyAttr = attribute * - (local:* |rdf:RDF|rdf:Description |rdf:ID|rdf:about |rdf:bagID|rdf:parseType|rdf:resource) { string } resourceAttr = attribute rdf:resource { URI-reference } parseLiteral = attribute rdf:parseType { "Literal" } parseResource = attribute rdf:parseType { "Resource" } parseOther = attribute rdf:parseType { text } URI-reference = string literal = any IDsymbol = xsd:NMTOKEN any = mixed { element * { attribute * { text }*, any }* }
<?xml version="1.0" encoding="ISO-8859-1"?> <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <start> <ref name="doc"/> </start> <define name="doc"> <ref name="RDF"/> </define> <define name="RDF"> <element name="rdf:RDF"> <ref name="nodeElementList"/> </element> </define> <define name="nodeElementList"> <zeroOrMore> <ref name="nodeElement"/> </zeroOrMore> </define> <define name="nodeElement"> <element> <anyName> <except> <nsName ns=""/> <name>rdf:RDF</name> <name>rdf:ID</name> <name>rdf:about</name> <name>rdf:bagID</name> <name>rdf:parseType</name> <name>rdf:resource</name> <name>rdf:li</name> </except> </anyName> <optional> <choice> <ref name="idAttr"/> <ref name="aboutAttr"/> </choice> </optional> <optional> <ref name="bagIdAttr"/> </optional> <zeroOrMore> <ref name="propertyAttr"/> </zeroOrMore> <ref name="propertyEltList"/> </element> </define> <define name="ws"> <value> </value> </define> <define name="propertyEltList"> <zeroOrMore> <ref name="propertyElt"/> </zeroOrMore> </define> <define name="propertyElt"> <choice> <ref name="resourcePropertyElt"/> <ref name="literalPropertyElt"/> <ref name="parseTypeLiteralPropertyElt"/> <ref name="parseTypeResourcePropertyElt"/> <ref name="parseTypeOtherPropertyElt"/> <ref name="emptyPropertyElt"/> </choice> </define> <define name="resourcePropertyElt"> <element> <anyName> <except> <nsName ns=""/> <name>rdf:RDF</name> <name>rdf:Description</name> <name>rdf:ID</name> <name>rdf:about</name> <name>rdf:bagID</name> <name>rdf:parseType</name> <name>rdf:resource</name> </except> </anyName> <optional> <ref name="idAttr"/> </optional> <ref name="nodeElement"/> </element> </define> <define name="literalPropertyElt"> <element> <anyName> <except> <nsName ns=""/> <name>rdf:RDF</name> <name>rdf:Description</name> <name>rdf:ID</name> <name>rdf:about</name> <name>rdf:bagID</name> <name>rdf:parseType</name> <name>rdf:resource</name> </except> </anyName> <optional> <ref name="idAttr"/> </optional> <text/> </element> </define> <define name="parseTypeLiteralPropertyElt"> <element> <anyName> <except> <nsName ns=""/> <name>rdf:RDF</name> <name>rdf:Description</name> <name>rdf:ID</name> <name>rdf:about</name> <name>rdf:bagID</name> <name>rdf:parseType</name> <name>rdf:resource</name> </except> </anyName> <optional> <ref name="idAttr"/> </optional> <ref name="parseLiteral"/> <ref name="literal"/> </element> </define> <define name="parseTypeResourcePropertyElt"> <element> <anyName> <except> <nsName ns=""/> <name>rdf:RDF</name> <name>rdf:Description</name> <name>rdf:ID</name> <name>rdf:about</name> <name>rdf:bagID</name> <name>rdf:parseType</name> <name>rdf:resource</name> </except> </anyName> <optional> <ref name="idAttr"/> </optional> <ref name="parseResource"/> <ref name="propertyEltList"/> </element> </define> <define name="parseTypeOtherPropertyElt"> <element> <anyName> <except> <nsName ns=""/> <name>rdf:RDF</name> <name>rdf:Description</name> <name>rdf:ID</name> <name>rdf:about</name> <name>rdf:bagID</name> <name>rdf:parseType</name> <name>rdf:resource</name> </except> </anyName> <optional> <ref name="idAttr"/> </optional> <ref name="parseOther"/> <ref name="any"/> </element> </define> <define name="emptyPropertyElt"> <element> <anyName> <except> <nsName ns=""/> <name>rdf:RDF</name> <name>rdf:Description</name> <name>rdf:ID</name> <name>rdf:about</name> <name>rdf:bagID</name> <name>rdf:parseType</name> <name>rdf:resource</name> </except> </anyName> <optional> <choice> <ref name="idAttr"/> <ref name="resourceAttr"/> </choice> </optional> <optional> <ref name="bagIdAttr"/> </optional> <zeroOrMore> <ref name="propertyAttr"/> </zeroOrMore> </element> </define> <define name="idAttr"> <attribute name="rdf:ID"> <ref name="IDsymbol"/> </attribute> </define> <define name="aboutAttr"> <attribute name="rdf:about"> <ref name="URI-reference"/> </attribute> </define> <define name="bagIdAttr"> <attribute name="rdf:bagID"> <ref name="IDsymbol"/> </attribute> </define> <define name="propertyAttr"> <attribute> <anyName> <except> <nsName ns=""/> <name>rdf:RDF</name> <name>rdf:Description</name> <name>rdf:ID</name> <name>rdf:about</name> <name>rdf:bagID</name> <name>rdf:parseType</name> <name>rdf:resource</name> </except> </anyName> <data type="string"/> </attribute> </define> <define name="resourceAttr"> <attribute name="rdf:resource"> <ref name="URI-reference"/> </attribute> </define> <define name="parseLiteral"> <attribute name="rdf:parseType"> <value>Literal</value> </attribute> </define> <define name="parseResource"> <attribute name="rdf:parseType"> <value>Resource</value> </attribute> </define> <define name="parseOther"> <attribute name="rdf:parseType"> <text/> </attribute> </define> <define name="URI-reference"> <data type="string"/> </define> <define name="literal"> <ref name="any"/> </define> <define name="IDsymbol"> <data datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" type="NMTOKEN"/> </define> <define name="any"> <mixed> <zeroOrMore> <element> <anyName/> <zeroOrMore> <attribute> <anyName/> <text/> </attribute> </zeroOrMore> <ref name="any"/> </element> </zeroOrMore> </mixed> </define> </grammar>
Attachments
- text/html attachment: Overview.html
Received on Tuesday, 11 December 2001 12:32:33 UTC