--- a/rdf-xml/index.html Wed Feb 29 14:33:50 2012 -0500
+++ b/rdf-xml/index.html Wed Feb 29 14:34:32 2012 -0500
@@ -105,4187 +105,4233 @@
<body>
-<section id="abstract">
- <p>The Resource Description Framework
- (<abbr title="Resource Description Framework">RDF</abbr>) is a
- general-purpose language for representing information in the Web.</p>
-
- <p>This document defines an
- <a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML</a>
-
- syntax for RDF called RDF/XML in terms of
- <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">Namespaces in XML</a>,
- the
- <a href="http://www.w3.org/TR/2001/REC-xml-infoset-20011024/">XML Information Set</a>
- and <a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">XML Base</a>.
- The <a href="#section-Infoset-Grammar">formal grammar</a> for the syntax
- is annotated with actions generating triples of the
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-graph">RDF graph</a>
- as defined in
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a>.
- The triples are written using the
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
-
- RDF graph serializing format which enables more precise recording of
- the mapping in a machine processable form. The mappings are
- recorded as tests cases, gathered and published in
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/">RDF Test Cases</a>.</p>
-</section>
-
-
-<section id="section-Introduction">
- <h2>Introduction</h2>
- <a id="section-Syntax-more" name="section-Syntax-more"></a>
- <p>This document defines the
- <a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML</a>
- <a href="#ref-xml">[XML]</a>
- syntax for RDF graphs
- which was originally defined in the
- <a href="http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/">RDF Model & Syntax</a> <a href="#ref-rdfms">[RDF-MS]</a> W3C
- Recommendation. Subsequent implementations of this syntax and
- comparison of the resulting RDF graphs have shown that there was
- ambiguity — implementations generated different graphs and certain
- syntax forms were not widely implemented.</p>
-
- <p>This document revises the
- <a href="http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/#grammar">original RDF/XML grammar</a>
- in terms of
- <a href="http://www.w3.org/TR/2001/REC-xml-infoset-20011024/">XML Information Set</a>
- <a href="#ref-xml-infoset">[INFOSET]</a> information items which moves
- away from the rather low-level details of XML, such as particular
- forms of empty elements. This allows the grammar to be more
- precisely recorded and the mapping from the XML syntax to the RDF
- Graph more clearly shown. The mapping to the RDF graph is done by
- emitting statements in the form defined in the
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
- section of
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/">RDF Test Cases</a> <a href="#ref-rdf-tests">[RDF-TESTS]</a>
- which creates an RDF graph, that has semantics defined by
-
- <a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/">RDF Semantics</a> <a href="#ref-rdf-semantics">[RDF-SEMANTICS]</a>.
- </p>
-
- <p>The complete specification of RDF consists of a number of documents:</p>
-
- <ul>
- <li><a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">RDF Primer</a> <a href="#ref-rdf-primer">[RDF-PRIMER]</a></li>
- <li><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a> <a href="#ref-rdf-concepts">[RDF-CONCEPTS]</a></li>
- <li><a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/">RDF Semantics</a> <a href="#ref-rdf-semantics">[RDF-SEMANTICS]</a></li>
- <li>RDF/XML Syntax (this document)</li>
- <li><a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210/">RDF Vocabulary Description Language 1.0: RDF Schema</a> <a href="#ref-rdf-vocabulary">[RDF-VOCABULARY]</a></li>
- <li><a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/">RDF Test Cases</a> <a href="#ref-rdf-tests">[RDF-TESTS]</a></li>
- </ul>
-
- <p>For a longer introduction to the RDF/XML syntax with a historical
- perspective, see
- <a href="http://www.w3.org/2001/10/stripes/">RDF: Understanding the Striped RDF/XML Syntax</a> <a href="#ref-stripedrdf">[STRIPEDRDF]</a>.</p>
-
-</section>
-
-
-<!-- FIRST PART : THE SYNTAX -->
-
-<section id="section-Syntax">
-
- <h2>An XML Syntax for RDF</h2>
- <p>This section introduces the RDF/XML syntax, describes how it
- encodes RDF graphs and explains this with examples. If there is any
- conflict between this informal description and the formal description
- of the syntax and grammar in sections
- <a href="#section-Data-Model">6 Syntax Data Model</a> and
- <a href="#section-Infoset-Grammar">7 RDF/XML Grammar</a>, the
- latter two sections take precedence.
- </p>
-
- <!-- intro -->
- <section id="section-Syntax-intro">
- <h3>Introduction</h3>
-
- <p>The
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a> <a href="#ref-rdf-concepts">[RDF-CONCEPTS]</a>
- defines the
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-data-model">RDF Graph data model</a> (Section 3.1)
- and the
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-syntax">RDF Graph abstract syntax</a> (Section 6).
- Along with the
- <a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/">RDF Semantics</a> <a href="#ref-rdf-semantics">[RDF-SEMANTICS]</a>
-
- this provides an abstract syntax with a formal semantics for it.
- The RDF graph has
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-node">nodes</a>
- and labeled directed <em>arcs</em>
- that link pairs of nodes and this is represented as a set of
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-triple">RDF triples</a>
- where each triple contains a
- <em>subject node</em>, <em>predicate</em> and <em>object node</em>.
- Nodes are
-
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>,
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-literal">RDF literals</a>
- or are <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">blank nodes</a>.
- Blank nodes may be given
- a document-local, non-<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> identifier called a
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a>.
- Predicates are
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
- and can be interpreted as either a relationship between the two
- nodes or as defining an attribute value (object node) for some
- subject node.</p>
-
- <p>In order to encode the graph in XML, the nodes and predicates have to be
- represented in XML terms — element names, attribute names, element contents
- and attribute values.
- RDF/XML uses XML
- <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName">QNames</a>
- as defined in <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">Namespaces in XML</a> <a href="#ref-namespaces">[XML-NS]</a>
- to represent
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>.
- All QNames have a <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#dt-NSName">namespace name</a> which is a URI reference
- and a short
- <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-LocalPart">local name</a>.
- In addition, QNames can either have a short
-
- <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-Prefix">prefix</a>
- or be declared with the default namespace declaration and have none (but
- still have a namespace name)</p>
-
- <p>The
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- represented by a QName is determined by appending the
- <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-LocalPart">local name</a>
- part of the QName after the
- <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#dt-NSName">namespace name</a> (URI reference) part of the QName.
- This is used to shorten the
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
-
- of all predicates and some nodes.
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> identifying
- subject and object nodes can also be stored as XML attribute values.
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-literal">RDF literals</a>,
- which can only be object nodes,
- become either XML element text content or XML attribute values.</p>
-
- <p>A graph can be considered a collection of paths of the form node,
- predicate arc, node, predicate arc, node, predicate arc, ... node
- which cover the entire graph. In RDF/XML these turn into sequences of
- elements inside elements which alternate between elements for nodes
- and predicate arcs. This has been called a series of node/arc
- stripes. The node at the start of the sequence turns into the
- outermost element, the next predicate arc turns into a child element,
- and so on. The stripes generally start at the top of an RDF/XML
- document and always begin with nodes.
- </p>
-
- <p>Several RDF/XML examples are given in the following sections
- building up to complete RDF/XML documents. <a href="#example7">Example 7</a>
- is the first complete RDF/XML document.</p>
- </section>
-
-
- <!-- node and property elements -->
- <section id="section-Syntax-node-property-elements">
- <h3>Node Elements and Property Elements</h3>
-
-
- <div class="figure">
- <img src="figure1.png" alt="Graph for RDF/XML Example" height="202" width="600" /><br />
- <a id="figure1" name="figure1">Figure 1: Graph for RDF/XML Example</a> (<a href="figure1.svg">SVG version</a>)
- </div>
-
- <p>An RDF graph is given in <a href="#figure1">Figure 1</a>
-
- where the nodes are represented as ovals and contain their
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
- where they have them, all the predicate arcs are labeled with
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
- and
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal">plain literal</a>
- nodes have been written in rectangles.</p>
-
-
- <p>If we follow one node, predicate arc ... , node path through the
- graph shown in <a href="#figure2">Figure 2</a>:
- </p>
-
- <div class="figure">
- <img src="figure2.png" alt="One Path Through the Graph" height="212" width="600" /><br />
- <a id="figure2" name="figure2">Figure 2: One Path Through the Graph</a> (<a href="figure2.svg">SVG version</a>)
- </div>
-
- <p>The left hand side of the <a href="#figure2">Figure 2</a> graph corresponds to the node/predicate arc stripes:</p>
-
- <ol>
-
- <li>Node with <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <code>http://www.w3.org/TR/rdf-syntax-grammar</code></li>
- <li>Predicate Arc labeled with <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <code>http://example.org/terms/editor</code></li>
- <li>Node with no <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a></li>
- <li>Predicate Arc labeled with <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <code>http://example.org/terms/homePage</code></li>
-
- <li>Node with <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <code>http://purl.org/net/dajobe/</code></li>
- </ol>
-
- <p>In RDF/XML, the sequence of 5 nodes and predicate arcs on
- the left hand side of <a href="#figure2">Figure 2</a> corresponds to
- the usage of five XML elements of two types, for the graph nodes and
- predicate arcs. These are conventionally called <em>node elements</em> and
- <em>property elements</em> respectively. In the striping shown in
-
- <a href="#example1">Example 1</a>, <code>rdf:Description</code> is the
- node element (used three times for the three nodes) and
- <code>ex:editor</code> and <code>ex:homePage</code> are the two
- property elements.
- </p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example1" name="example1">Example 1: Striped RDF/XML (<span class="nodeStripe">nodes</span> and <span class="arcStripe">predicate arcs</span>)</a></div>
-
- <div class="exampleInner">
- <div class="preExample">
- <code>
- <span class="nodeStripe"><rdf:Description></span><br />
- <span class="arcStripe"><ex:editor></span><br />
- <span class="nodeStripe"><rdf:Description></span><br />
- <span class="arcStripe"><ex:homePage></span><br />
- <span class="nodeStripe"><rdf:Description></span><br />
- <span class="nodeStripe"></rdf:Description></span><br />
- <span class="arcStripe"></ex:homePage></span><br />
-
- <span class="nodeStripe"></rdf:Description></span><br />
- <span class="arcStripe"></ex:editor></span><br />
- <span class="nodeStripe"></rdf:Description></span><br />
- </code>
- </div>
- </div>
- </div>
-
- <p>The <a href="#figure2">Figure 2</a> graph consists of some nodes
- that are
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
-
- (and others that are not) and this can be added
- to the RDF/XML using the <code>rdf:about</code> attribute on node
- elements to give the result in <a href="#example2">Example 2</a>:</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example2" name="example2">Example 2: Node Elements with RDF URI references added</a></div>
- <div class="exampleInner">
- <pre>
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
- <ex:editor>
-
- <rdf:Description>
- <ex:homePage>
- <rdf:Description rdf:about="http://purl.org/net/dajobe/">
- </rdf:Description>
- </ex:homePage>
- </rdf:Description>
-
- </ex:editor>
- </rdf:Description>
-
- </pre>
- </div>
- </div>
-
- <p>Adding the other two paths through the <a href="#figure1">Figure 1</a>
- graph to the RDF/XML in
- <a href="#example2">Example 2</a>
- gives the result in <a href="#example3">Example 3</a>
-
- (this example fails to show that the blank node is
- shared between the two paths, see
- <a href="#section-Syntax-blank-nodes">2.10</a>):</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example3" name="example3">Example 3: Complete description of all graph paths</a></div>
- <div class="exampleInner">
- <pre>
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
- <ex:editor>
- <rdf:Description>
-
- <ex:homePage>
- <rdf:Description rdf:about="http://purl.org/net/dajobe/">
- </rdf:Description>
- </ex:homePage>
- </rdf:Description>
- </ex:editor>
-
- </rdf:Description>
-
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
- <ex:editor>
- <rdf:Description>
- <ex:fullName>Dave Beckett</ex:fullName>
- </rdf:Description>
-
- </ex:editor>
- </rdf:Description>
-
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
- <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
- </rdf:Description>
-
- </pre>
-
- </div>
- </div>
- </section>
-
- <!-- multiple properties -->
- <section id="section-Syntax-multiple-property-elements" >
- <h3>Multiple Property Elements</h3>
-
- <p>There are several abbreviations that can be used to make common
- uses easier to write down. In particular, it is common that a
- subject node in the RDF graph has multiple outgoing predicate arcs. RDF/XML
- provides an abbreviation for the corresponding syntax when a node
- element about a resource has multiple property elements. This can be
- abbreviated by using multiple child property elements inside the node
- element describing the subject node.</p>
-
- <p>Taking <a href="#example3">Example 3</a>, there are
- two node elements that can take multiple property elements.
- The subject node with URI reference
- <code>http://www.w3.org/TR/rdf-syntax-grammar</code>
- has property elements <code>ex:editor</code> and <code>ex:title</code>
-
- and the node element for the blank node can take <code>ex:homePage</code>
- and <code>ex:fullName</code>. This abbreviation
- gives the result shown in <a href="#example4">Example 4</a>
- (this example does show that there is a single blank node):</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example4" name="example4">Example 4: Using multiple property elements on a node element</a></div>
- <div class="exampleInner">
- <pre>
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
-
- <ex:editor>
- <rdf:Description>
- <ex:homePage>
- <rdf:Description rdf:about="http://purl.org/net/dajobe/">
- </rdf:Description>
- </ex:homePage>
-
- <ex:fullName>Dave Beckett</ex:fullName>
- </rdf:Description>
- </ex:editor>
- <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
- </rdf:Description>
-
- </pre>
- </div>
- </div>
- </section>
-
- <!-- empty property elements -->
- <section id="section-Syntax-empty-property-elements">
- <h3>Empty Property Elements</h3>
-
- <p>When a predicate arc in an RDF graph points to an object node which has no
- further predicate arcs, which appears in RDF/XML as an empty node element
- <code><rdf:Description rdf:about="..."></code>
- <code></rdf:Description></code>
- (or <code><rdf:Description rdf:about="..." /></code>)
- this form can be shortened. This is done by using the
-
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- of the object node as the value of an XML attribute <code>rdf:resource</code>
- on the containing property element and making the property element empty.
- </p>
-
- <p>In this example, the property element <code>ex:homePage</code>
- contains an empty node element with the
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- <code>http://purl.org/net/dajobe/</code>. This can be replaced with
- the empty property element form giving the result shown in
- <a href="#example5">Example 5</a>:</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example5" name="example5">Example 5: Empty property elements</a></div>
- <div class="exampleInner">
- <pre>
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
- <ex:editor>
- <rdf:Description>
- <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
-
- <ex:fullName>Dave Beckett</ex:fullName>
- </rdf:Description>
- </ex:editor>
- <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
- </rdf:Description>
-
- </pre>
- </div>
- </div>
- </section>
-
- <!-- empty property attributes -->
- <section id="section-Syntax-property-attributes">
- <h3>Property Attributes</h3>
-
- <p>When a property element's content is string literal,
- it may be possible to use it as an XML attribute on the
- containing node element.
- This can be done for multiple properties on the same node element
- only if the property element name is not repeated
- (required by XML — attribute names are unique on an XML element)
- and any in-scope <code>xml:lang</code> on the
- property element's string literal (if any) are the same (see <a href="#section-Syntax-languages">Section 2.7</a>)
- This abbreviation is known as a <em>Property Attribute</em>
-
- and can be applied to any node element.</p>
-
- <p>This abbreviation can also be used when the property element is
- <code>rdf:type</code> and it has an <code>rdf:resource</code> attribute
- the value of which is interpreted as a
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> object node.</p>
-
- <p>In <a href="#example5">Example 5</a>:,
- there are two property elements with string literal content,
- the <code>dc:title</code> and <code>ex:fullName</code>
-
- property elements. These can be replaced with property attributes
- giving the result shown in <a href="#example6">Example 6</a>:</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example6" name="example6">Example 6: Replacing property elements with string literal content into property attributes</a></div>
- <div class="exampleInner">
- <pre>
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
- dc:title="RDF/XML Syntax Specification (Revised)">
- <ex:editor>
- <rdf:Description ex:fullName="Dave Beckett">
-
- <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
- </rdf:Description>
- </ex:editor>
- </rdf:Description>
-
- </pre>
- </div>
- </div>
- </section>
-
- <!-- complete rdf/xml document -->
- <section id="section-Syntax-complete-document">
- <h3>Completing the Document: Document Element and XML Declaration</h3>
-
- <p>To create a complete RDF/XML document, the serialization of the
- graph into XML is usually contained inside an <code>rdf:RDF</code>
- XML element which becomes the top-level XML document element.
- Conventionally the <code>rdf:RDF</code> element is also used to
- declare the XML namespaces that are used, although that is not
- required. When there is only one top-level node element inside
- <code>rdf:RDF</code>, the <code>rdf:RDF</code> can be omitted
- although any XML namespaces must still be declared.</p>
-
- <p>The XML specification also permits an XML declaration at
- the top of the document with the XML version and possibly the XML
- content encoding. This is optional but recommended.</p>
-
- <p>Completing the RDF/XML could be done for any of the correct
- complete graph examples from
- <a href="#example4">Example 4</a> onwards but taking the smallest
- <a href="#example6">Example 6</a> and adding the final components,
- gives a complete RDF/XML representation of the original
- <a href="#figure1">Figure 1</a> graph
- in <a href="#example7">Example 7</a>:</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example7" name="example7">Example 7: Complete RDF/XML description of Figure 1 graph</a> (<a href="example07.rdf">example07.rdf</a> output <a href="example07.nt">example07.nt</a>)</div>
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:ex="http://example.org/stuff/1.0/">
-
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
- dc:title="RDF/XML Syntax Specification (Revised)">
- <ex:editor>
- <rdf:Description ex:fullName="Dave Beckett">
- <ex:homePage rdf:resource="http://purl.org/net/dajobe/" />
- </rdf:Description>
- </ex:editor>
-
- </rdf:Description>
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
-
- <p>It is possible to omit <code>rdf:RDF</code> in
- <a href="#example7">Example 7</a> above since there is only one
-
- <code>rdf:Description</code> inside <code>rdf:RDF</code> but this
- is not shown here.</p>
- </section>
-
- <!-- language attribute -->
- <section id="section-Syntax-languages">
- <h3>Languages: <code>xml:lang</code></h3>
-
- <p>RDF/XML permits the use of the <code>xml:lang</code> attribute as defined by
-
- <a href="http://www.w3.org/TR/REC-xml#sec-lang-tag">2.12 Language Identification</a>
- of <a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML 1.0</a> <a href="#ref-xml">[XML]</a>
- to allow the identification of content language.
- The <code>xml:lang</code> attribute can be used on any node element or property element
- to indicate that the included content is in the given language.
- <a href="#section-Syntax-datatyped-literals">Typed literals</a>
- which includes <a href="#section-Syntax-XML-literals">XML literals</a>
- are not affected by this attribute.
- The most specific in-scope language present
- (if any) is applied to property element string literal content or
- property attribute values. The <code>xml:lang=""</code> form
- indicates the absence of a language identifier.</p>
-
- <p>Some examples of marking content languages for RDF properties are shown in
- <a href="#example8">Example 8</a>:</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example8" name="example8">Example 8: Complete example of <code>xml:lang</code></a> (<a href="example08.rdf">example08.rdf</a> output <a href="example08.nt">example08.nt</a>)</div>
-
- <div class="exampleInner">
- <pre>
- <?xml version="1.0" encoding="utf-8"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
- <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
- <dc:title xml:lang="en">RDF/XML Syntax Specification (Revised)</dc:title>
-
- <dc:title xml:lang="en-US">RDF/XML Syntax Specification (Revised)</dc:title>
- </rdf:Description>
-
- <rdf:Description rdf:about="http://example.org/buecher/baum" xml:lang="de">
- <dc:title>Der Baum</dc:title>
-
- <dc:description>Das Buch ist außergewöhnlich</dc:description>
- <dc:title xml:lang="en">The Tree</dc:title>
- </rdf:Description>
- </rdf:RDF>
-
- </pre>
-
- </div>
- </div>
- </section>
-
- <!-- XML Literal -->
- <section id="section-Syntax-XML-literals">
- <h3>XML Literals: <code>rdf:parseType="Literal"</code></h3>
-
- <p>RDF allows
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-XMLLiteral">XML literals</a>
- (<a href="#ref-rdf-concepts">[RDF-CONCEPTS]</a> Section 5, <cite>XML Content within an RDF graph</cite>)
- to be given as the object node of a predicate.
- These are written in RDF/XML as content of a property element (not
- a property attribute) and indicated using the
-
- <code>rdf:parseType="Literal"</code> attribute on the containing
- property element.
- </p>
-
-
- <p>An example of writing an XML literal is given in
- <a href="#example9">Example 9</a> where
- there is a single RDF triple with the subject node
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- <code>http://example.org/item01</code>, the predicate
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- <code>http://example.org/stuff/1.0/prop</code> (from
-
- <code>ex:prop</code>) and the object node with XML literal
- content beginning <code>a:Box</code>.
- </p>
-
-
- <div class="exampleOuter">
- <div class="figure"><a id="example9" name="example9">Example 9: Complete example of <code>rdf:parseType="Literal"</code></a> (<a href="example09.rdf">example09.rdf</a> output <a href="example09.nt">example09.nt</a>)</div>
-
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:ex="http://example.org/stuff/1.0/">
- <rdf:Description rdf:about="http://example.org/item01">
- <ex:prop rdf:parseType="Literal"
- xmlns:a="http://example.org/a#"><a:Box required="true">
- <a:widget size="10" />
- <a:grommit id="23" /></a:Box>
-
- </ex:prop>
- </rdf:Description>
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
+ <section id="abstract">
+ <p>The Resource Description Framework
+ (<abbr title="Resource Description Framework">RDF</abbr>) is a
+ general-purpose language for representing information in the Web.</p>
+
+ <p>This document defines an
+ <a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML</a>
+
+ syntax for RDF called RDF/XML in terms of
+ <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">Namespaces in XML</a>,
+ the
+ <a href="http://www.w3.org/TR/2001/REC-xml-infoset-20011024/">XML Information Set</a>
+ and <a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">XML Base</a>.
+ The <a href="#section-Infoset-Grammar">formal grammar</a> for the syntax
+ is annotated with actions generating triples of the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-graph">RDF graph</a>
+ as defined in
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a>.
+ The triples are written using the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
+
+ RDF graph serializing format which enables more precise recording of
+ the mapping in a machine processable form. The mappings are
+ recorded as tests cases, gathered and published in
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/">RDF Test Cases</a>.</p>
</section>
- <!-- datatyped literals -->
- <section id="section-Syntax-datatyped-literals">
- <h3>Typed Literals: <code>rdf:datatype</code></h3>
-
- <p>RDF allows
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-typed-literal">typed literals</a>
- to be given as the object node of a predicate. Typed literals consist of a literal
- string and a datatype
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>. These are written in RDF/XML using
- the same syntax for literal string nodes in the property element form
- (not property attribute) but with an additional
- <code>rdf:datatype="</code><em>datatypeURI</em><code>"</code>
- attribute on the property element. Any
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> can be used in the attribute.
- </p>
-
- <p>An example of an RDF
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-typed-literal">typed literal</a>
- is given in <a href="#example10">Example 10</a> where
- there is a single RDF triple with the subject node
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- <code>http://example.org/item01</code>, the predicate
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- <code>http://example.org/stuff/1.0/size</code> (from
- <code>ex:size</code>) and the object node with the
-
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-typed-literal">typed literal</a>
- ("123", <code>http://www.w3.org/2001/XMLSchema#int</code>)
- to be interpreted as an
- <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">W3C XML Schema</a>
- <a href="#ref-xml-schema2">[XML-SCHEMA2]</a> datatype int.
- </p>
-
-
- <div class="exampleOuter">
- <div class="figure"><a id="example10" name="example10">Example 10: Complete example of <code>rdf:datatype</code></a> (<a href="example10.rdf">example10.rdf</a> output <a href="example10.nt">example10.nt</a>)</div>
-
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:ex="http://example.org/stuff/1.0/">
- <rdf:Description rdf:about="http://example.org/item01">
- <ex:size rdf:datatype="http://www.w3.org/2001/XMLSchema#int">123</ex:size>
- </rdf:Description>
-
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
- </section>
-
- <!-- blank nodes -->
- <section id="section-Syntax-blank-nodes">
- <h3>Identifying Blank Nodes: <code>rdf:nodeID</code></h3>
-
- <p><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">Blank nodes</a> in the RDF graph are distinct but have no
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> identifier.
- It is sometimes required that the same graph <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">blank node</a> is referred to in the
- RDF/XML in multiple places, such as at the subject and object
- of several RDF triples. In this case, a <em><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a></em>
-
- can be given to the <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">blank node</a> for identifying it
- in the document. Blank node identifiers in RDF/XML are scoped to the
- containing XML Information Set
- <a href="http://www.w3.org/TR/xml-infoset/#infoitem.document">document information item</a>.
- A <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a> is used
- on a node element to replace
- <code>rdf:about="</code><em>RDF URI reference</em><code>"</code>
- or on a property element to replace
- <code>rdf:resource="</code><em>RDF URI reference</em><code>"</code>
-
- with <code>rdf:nodeID="</code><em><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a></em><code>"</code>
- in both cases.</p>
-
- <p>Taking <a href="#example7">Example 7</a> and explicitly giving
- a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a> of <code>abc</code> to the blank node in it
- gives the result shown in <a href="#example11">Example 11</a>.
- The second <code>rdf:Description</code> property element is
- about the blank node.</p>
-
-
- <div class="exampleOuter">
- <div class="figure"><a id="example11" name="example11">Example 11: Complete RDF/XML description of graph using <code>rdf:nodeID</code> identifying the blank node</a> (<a href="example11.rdf">example11.rdf</a> output <a href="example11.nt">example11.nt</a>)</div>
- <div class="exampleInner">
- <pre>
-
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:ex="http://example.org/stuff/1.0/">
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
- dc:title="RDF/XML Syntax Specification (Revised)">
- <ex:editor rdf:nodeID="abc"/>
- </rdf:Description>
-
- <rdf:Description rdf:nodeID="abc"
- ex:fullName="Dave Beckett">
-
- <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
- </rdf:Description>
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
- </section>
-
- <!-- parsetype resource -->
- <section id="section-Syntax-parsetype-resource">
- <h3>Omitting Blank Nodes: <code>rdf:parseType="Resource"</code></h3>
-
- <p><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">Blank nodes</a> (not <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> nodes) in RDF graphs can be written
- in a form that allows the
- <code><rdf:Description></code>
- <code></rdf:Description></code> pair to be omitted.
- The omission is done by putting an
- <code>rdf:parseType="Resource"</code>
- attribute on the containing property element
- that turns the property element into a property-and-node element,
- which can itself have both property elements and property attributes.
- Property attributes and the <code>rdf:nodeID</code> attribute
- are not permitted on property-and-node elements.
-
- </p>
-
- <p>Taking the earlier <a href="#example7">Example 7</a>,
- the contents of the <code>ex:editor</code> property element
- could be alternatively done in this fashion to give
- the form shown in <a href="#example12">Example 12</a>:</p>
-
-
- <div class="exampleOuter">
- <div class="figure"><a id="example12" name="example12">Example 12: Complete example using <code>rdf:parseType="Resource"</code></a> (<a href="example12.rdf">example12.rdf</a> output <a href="example12.nt">example12.nt</a>)</div>
-
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:ex="http://example.org/stuff/1.0/">
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
- dc:title="RDF/XML Syntax Specification (Revised)">
- <ex:editor rdf:parseType="Resource">
- <ex:fullName>Dave Beckett</ex:fullName>
-
- <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
- </ex:editor>
- </rdf:Description>
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
- </section>
-
- <!-- attributes on property elements -->
- <section id="section-Syntax-property-attributes-on-property-element">
- <h3>Omitting Nodes: Property Attributes on an empty Property Element</h3>
-
- <p>If all of the property elements on a blank node element have
- string literal values with the same in-scope <code>xml:lang</code>
- value (if present) and each of these property elements appears at
- most once and there is at most one <code>rdf:type</code> property
- element with a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> object node, these can be abbreviated by
- moving them to be property attributes on the containing property
- element which is made an empty element.</p>
-
- <p>Taking the earlier <a href="#example5">Example 5</a>,
- the <code>ex:editor</code> property element contains a
- blank node element with two property elements
-
- <code>ex:fullname</code> and <code>ex:homePage</code>.
- <code>ex:homePage</code> is not suitable here since it
- does not have a string literal value, so it is being
- <em>ignored</em> for the purposes of this example.
- The abbreviated form removes the <code>ex:fullName</code> property element
- and adds a new property attribute <code>ex:fullName</code> with the
- string literal value of the deleted property element
- to the <code>ex:editor</code> property element.
- The blank node element becomes implicit in the now empty
-
- <code>ex:editor</code> property element. The result is shown in
- <a href="#example13">Example 13</a>.</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example13" name="example13">Example 13: Complete example of property attributes on an empty property element</a> (<a href="example13.rdf">example13.rdf</a> output <a href="example13.nt">example13.nt</a>)</div>
-
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:ex="http://example.org/stuff/1.0/">
- <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
- dc:title="RDF/XML Syntax Specification (Revised)">
- <ex:editor ex:fullName="Dave Beckett" />
- <!-- Note the ex:homePage property has been ignored for this example -->
- </rdf:Description>
-
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
- </section>
-
- <!-- typed nodes -->
- <section id="section-Syntax-typed-nodes">
- <h3>Typed Node Elements</h3>
-
- <p>It is common for RDF graphs to have <code>rdf:type</code> predicates
- from subject nodes. These are conventionally called <em>typed
- nodes</em> in the graph, or <em>typed node elements</em> in the
- RDF/XML. RDF/XML allows this triple to be expressed more concisely.
- by replacing the <code>rdf:Description</code> node element name with
- the namespaced-element corresponding to the
-
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> of the value of
- the type relationship. There may, of course, be multiple <code>rdf:type</code>
- predicates but only one can be used in this way, the others must remain as
- property elements or property attributes.
- </p>
-
- <p>The typed node elements are commonly used in RDF/XML with the built-in
- classes in the <a href="#section-Namespace">RDF vocabulary</a>:
- <code>rdf:Seq</code>, <code>rdf:Bag</code>, <code>rdf:Alt</code>,
-
- <code>rdf:Statement</code>, <code>rdf:Property</code> and
- <code>rdf:List</code>.</p>
-
- <p>For example, the RDF/XML in <a href="#example14">Example 14</a>
- could be written as shown in <a href="#example15">Example 15</a>.</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example14" name="example14">Example 14: Complete example with <code>rdf:type</code></a> (<a href="example14.rdf">example14.rdf</a> output <a href="example14.nt">example14.nt</a>)</div>
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:ex="http://example.org/stuff/1.0/">
-
- <rdf:Description rdf:about="http://example.org/thing">
- <rdf:type rdf:resource="http://example.org/stuff/1.0/Document"/>
- <dc:title>A marvelous thing</dc:title>
- </rdf:Description>
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example15" name="example15">Example 15: Complete example using a typed node element to replace an <code>rdf:type</code></a> (<a href="example15.rdf">example15.rdf</a> output <a href="example15.nt">example15.nt</a>)</div>
- <div class="exampleInner">
- <pre>
-
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:ex="http://example.org/stuff/1.0/">
- <ex:Document rdf:about="http://example.org/thing">
- <dc:title>A marvelous thing</dc:title>
- </ex:Document>
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
- </section>
-
- <!-- xml base -->
- <section id="section-Syntax-ID-xml-base">
- <h3>Abbreviating URIs: <code>rdf:ID</code> and <code>xml:base</code></h3>
-
- <p>RDF/XML allows further abbreviating <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> in XML attributes in two
- ways. The XML Infoset provides a base URI attribute <code>xml:base</code>
-
- that sets the base URI for resolving relative <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>, otherwise the base URI is that of the document. The base URI applies to
- all RDF/XML attributes that deal with <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> which are <code>rdf:about</code>,
- <code>rdf:resource</code>, <code>rdf:ID</code>
- and <code>rdf:datatype</code>.</p>
-
- <p>The <code>rdf:ID</code> attribute on a node element (not property
- element, that has another meaning) can be used instead of
- <code>rdf:about</code> and gives a relative <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> equivalent to <code>#</code>
- concatenated with the <code>rdf:ID</code> attribute value. So for
- example if <code>rdf:ID="name"</code>, that would be equivalent
- to <code>rdf:about="#name"</code>. <code>rdf:ID</code> provides an additional
- check since the same <em>name</em> can only appear once in the
- scope of an <code>xml:base</code> value (or document, if none is given),
- so is useful for defining a set of distinct,
- related terms relative to the same <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.</p>
-
- <p>Both forms require a base URI to be known, either from an in-scope
- <code>xml:base</code> or from the URI of the RDF/XML document.</p>
-
- <p><a href="#example16">Example 16</a> shows abbreviating the node
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> of <code>http://example.org/here/#snack</code> using an
- <code>xml:base</code> of <code>http://example.org/here/</code> and
- an <code>rdf:ID</code> on the <code>rdf:Description</code> node element.
- The object node of the <code>ex:prop</code> predicate is an
- absolute <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
-
- resolved from the <code>rdf:resource</code> XML attribute value
- using the in-scope base URI to give the
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- <code>http://example.org/here/fruit/apple</code>.</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example16" name="example16">Example 16: Complete example using <code>rdf:ID</code> and <code>xml:base</code> for shortening URIs </a> (<a href="example16.rdf">example16.rdf</a> output <a href="example16.nt">example16.nt</a>)</div>
-
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:ex="http://example.org/stuff/1.0/"
- xml:base="http://example.org/here/">
- <rdf:Description rdf:ID="snack">
- <ex:prop rdf:resource="fruit/apple"/>
- </rdf:Description>
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
- </section>
-
- <!-- list elements -->
- <section id="section-Syntax-list-elements">
- <h3>Container Membership Property Elements: <code>rdf:li</code> and <code>rdf:_</code><em>n</em></h3>
-
- <p>RDF has a set of container membership properties
- and corresponding property elements that are mostly used with
- instances of the
- <code>rdf:Seq</code>, <code>rdf:Bag</code> and <code>rdf:Alt</code>
-
- classes which may be written as typed node elements. The list properties are
- <code>rdf:_1</code>, <code>rdf:_2</code> etc. and can be written
- as property elements or property attributes as shown in
- <a href="#example17">Example 17</a>. There is an <code>rdf:li</code>
- special property element that is equivalent to
- <code>rdf:_1</code>, <code>rdf:_2</code> in order,
- explained in detail in <a href="#section-List-Expand">section 7.4</a>.
- The mapping to the container membership properties is
- always done in the order that the <code>rdf:li</code> special
- property elements appear in XML — the document order is significant.
- The equivalent RDF/XML to <a href="#example17">Example 17</a> written
- in this form is shown in <a href="#example18">Example 18</a>.
-
- </p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example17" name="example17">Example 17: Complex example using RDF list properties</a> (<a href="example17.rdf">example17.rdf</a> output <a href="example17.nt">example17.nt</a>)</div>
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-
- <rdf:Seq rdf:about="http://example.org/favourite-fruit">
- <rdf:_1 rdf:resource="http://example.org/banana"/>
- <rdf:_2 rdf:resource="http://example.org/apple"/>
- <rdf:_3 rdf:resource="http://example.org/pear"/>
- </rdf:Seq>
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example18" name="example18">Example 18: Complete example using <code>rdf:li</code> property element for list properties</a> (<a href="example18.rdf">example18.rdf</a> output <a href="example18.nt">example18.nt</a>)</div>
-
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
- <rdf:Seq rdf:about="http://example.org/favourite-fruit">
- <rdf:li rdf:resource="http://example.org/banana"/>
- <rdf:li rdf:resource="http://example.org/apple"/>
- <rdf:li rdf:resource="http://example.org/pear"/>
-
- </rdf:Seq>
- </rdf:RDF>
- </pre>
- </div>
- </div>
- </section>
-
- <!-- parsetype collection -->
- <section id="section-Syntax-parsetype-Collection">
- <h3>Collections: <code>rdf:parseType="Collection"</code></h3>
-
- <p>RDF/XML allows an <code>rdf:parseType="Collection"</code>
-
- attribute on a property element to let it contain multiple node
- elements. These contained node elements give the set of subject
- nodes of the collection. This syntax form corresponds to a set of
- triples connecting the collection of subject nodes, the exact triples
- generated are described in detail in
- <a href="#parseTypeCollectionPropertyElt">Section 7.2.19 Production parseTypeCollectionPropertyElt</a>.
- The collection construction is always done in the order that the node
- elements appear in the XML document. Whether the order of the
- collection of nodes is significant is an application issue and not
- defined here.
- </p>
-
- <p><a href="#example19">Example 19</a> shows a collection of three
- nodes elements at the end of the <code>ex:hasFruit</code>
- property element using this form.</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example19" name="example19">Example 19: Complete example of a RDF collection of nodes using <code>rdf:parseType="Collection"</code></a> (<a href="example19.rdf">example19.rdf</a> output <a href="example19.nt">example19.nt</a>)</div>
-
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:ex="http://example.org/stuff/1.0/">
- <rdf:Description rdf:about="http://example.org/basket">
- <ex:hasFruit rdf:parseType="Collection">
- <rdf:Description rdf:about="http://example.org/banana"/>
- <rdf:Description rdf:about="http://example.org/apple"/>
-
- <rdf:Description rdf:about="http://example.org/pear"/>
- </ex:hasFruit>
- </rdf:Description>
- </rdf:RDF>
- </pre>
- </div>
- </div>
- </section>
-
- <!-- reification -->
- <section id="section-Syntax-reifying">
- <h3>Reifying Statements: <code>rdf:ID</code></h3>
-
- <p>The <code>rdf:ID</code> attribute can be used on a property
- element to reify the triple that it generates (See
- <a href="#section-Reification">section 7.3 Reification Rules</a> for the
- full details).
- The identifier for the triple should be constructed as a
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- made from the relative URI reference
- <code>#</code> concatenated with the <code>rdf:ID</code> attribute
- value, resolved against the in-scope base URI. So for example if
-
- <code>rdf:ID="triple"</code>, that would be equivalent to the <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- formed from relative URI reference <code>#triple</code> against the base URI.
- Each (<code>rdf:ID</code> attribute value, base URI)
- pair has to be unique in an RDF/XML document,
- see <a href="#constraint-id">constraint-id</a>.
- </p>
-
- <p><a href="#example20">Example 20</a> shows a <code>rdf:ID</code>
-
- being used to reify a triple made from the <code>ex:prop</code>
- property element giving the reified triple the
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <code>http://example.org/triples/#triple1</code>.</p>
-
- <div class="exampleOuter">
- <div class="figure"><a id="example20" name="example20">Example 20: Complete example of <code>rdf:ID</code> reifying a property element</a> (<a href="example20.rdf">example20.rdf</a> output <a href="example20.nt">example20.nt</a>)</div>
-
- <div class="exampleInner">
- <pre>
- <?xml version="1.0"?>
- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:ex="http://example.org/stuff/1.0/"
- xml:base="http://example.org/triples/">
- <rdf:Description rdf:about="http://example.org/">
- <ex:prop rdf:ID="triple1">blah</ex:prop>
- </rdf:Description>
-
- </rdf:RDF>
-
- </pre>
- </div>
- </div>
- </section>
-
-</section>
-
-
-<!-- SECOND PART : TERMINILOGY -->
-
-<section id="section-Terminology">
- <h2>Terminology</h2>
-
- <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
- NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
- this document are to be interpreted as described in
- <a href="http://www.ietf.org/rfc/rfc2119.txt">RFC 2119</a>
- <a href="#ref-keywords">[KEYWORDS]</a>.</p>
-
- <p>All use of string without further qualification refers to
- a Unicode<a href="#ref-unicode">[UNICODE]</a> character string;
- a sequence of characters represented by a code point in Unicode.
- (Such as defined in <a href="#ref-charmod">[CHARMOD]</a> in section
- <a href="http://www.w3.org/TR/2003/WD-charmod-20030822/#sec-Strings">3.4 Strings</a>).</p>
-
-</section>
-
-
-<!-- THIRD PART : MIME Type -->
-
-<section id="section-MIME-Type">
- <h2>RDF MIME Type, File Extension and Macintosh File Type</h2>
-
- <p>The Internet media type / MIME type for RDF/XML is
- "<code>application/rdf+xml</code>" —
-
- see <a href="http://www.ietf.org/rfc/rfc3023.txt">RFC 3023</a>
- <a href="#ref-rfc3023">[RFC-3023]</a> section 8.18.
- </p>
-
- <div class="note"><p><strong>Registration Note (Informative):</strong>
- For the state of the MIME type registration, consult
- <a href="http://www.iana.org/assignments/media-types/">IANA MIME Media Types</a> <a href="#ref-iana-media-types">[IANA-MEDIA-TYPES]</a>
- </p></div>
-
- <p>It is recommended that RDF/XML files have the extension
- <code>".rdf"</code> (all lowercase) on all platforms.</p>
-
- <p>It is recommended that RDF/XML files stored on Macintosh HFS file
- systems be given a file type of <code>"rdf "</code>
- (all lowercase, with a space character as the fourth letter).</p>
-</section>
-
-
-<!-- FOURTH PART : Global Issues -->
-
-<section id="section-Global">
- <h2>Global Issues</h2>
-
- <!-- namespace -->
- <section id="section-Namespace">
-
- <h3>The RDF Namespace and Vocabulary</h3>
-
- <div class="note"><p><strong>Note (Informative):</strong>
- The names <code>aboutEach</code> and <code>aboutEachPrefix</code> were removed
- from the language and the RDF vocabulary by the RDF Core Working Group.
- See the resolution of issues
- <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-abouteach">rdfms-abouteach</a> and
-
- <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-abouteachprefix">rdfms-abouteachprefix</a>
- for further information.
- </p></div>
-
- <div class="note"><p><strong>Note (Informative):</strong>
- The names <code>List</code>, <code>first</code>,
- <code>rest</code> and <code>nil</code> were added for issue
-
- <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-seq-representation">rdfms-seq-representation</a>.
- The names <code>XMLLiteral</code> and <code>datatype</code> were added
- to support RDF datatyping.
- The name <code>nodeID</code> was added
- for issue
- <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-syntax-incomplete">rdfms-syntax-incomplete</a>.
- See the
- <a href="http://www.w3.org/2000/03/rdf-tracking/">RDF Core Issues List</a>
- for further information.
- </p></div>
-
- <p>The
- <span class="termdef"><a id="rdf-ns-uri" name="rdf-ns-uri">RDF namespace URI reference</a></span> (or namespace name) is
- <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#</code>
- and is typically used in XML with the prefix <code>rdf</code>
- although other prefix strings may be used.
- The <span class="termdef"><a id="rdf-vocabulary" name="rdf-vocabulary">RDF Vocabulary</a></span>
- is identified by this namespace name and consists of the following names only:</p>
-
- <dl>
- <dt>Syntax names — not concepts</dt>
- <dd>
- <p>
- <code>RDF Description ID about parseType resource li nodeID datatype</code>
- </p>
- </dd>
-
- <dt>Class names</dt>
- <dd>
- <p>
- <code>Seq Bag Alt Statement Property XMLLiteral List</code>
-
- </p>
- </dd>
-
- <dt>Property names</dt>
- <dd>
- <p>
- <code>subject predicate object type value first rest _</code><em>n</em><br />
- where <em>n</em> is a decimal integer greater than zero with no leading zeros.
- </p>
- </dd>
-
- <dt>Resource names</dt>
- <dd>
- <p>
- <code>nil</code>
- </p>
- </dd>
-
- </dl>
-
- <p>Any other names are not defined and SHOULD generate a warning when
- encountered, but should otherwise behave normally.</p>
-
- <p>Within RDF/XML documents it is not permitted to use XML namespaces
- whose namespace name is the
- <a href="#rdf-ns-uri" class="termref"><span class="arrow">·</span>RDF namespace URI reference<span class="arrow">·</span></a>
-
- concatenated with additional characters.</p>
-
- <p>Throughout this document the terminology <code>rdf:</code><em>name</em>
- will be used to indicate <em>name</em> is from the RDF vocabulary
- and it has a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> of the concatenation of the
- <a href="#rdf-ns-uri" class="termref"><span class="arrow">·</span>RDF namespace URI reference<span class="arrow">·</span></a> and <em>name</em>.
- For example, <code>rdf:type</code> has the <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
-
- <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code></p>
- </section>
-
-
- <!-- identifiers -->
- <section id="section-Identifiers">
- <h3>Identifiers</h3>
-
- <p>The
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-graph">RDF Graph</a>
- (<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a> Section 3)
- defines three types of nodes and one type of predicate:</p>
-
- <dl>
-
- <dt><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> nodes and predicates</dt>
- <dd>
- <p><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> (<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a> Section 3.1)
- can be either:</p>
- <ul>
- <li>given as XML attribute values interpreted as relative
- URI references that are resolved against the in-scope base URI
- as described in <a href="#section-baseURIs">section 5.3</a>
-
- to give absolute <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a></li>
- <li>transformed from XML namespace-qualified element and attribute names
- (QNames)</li>
- <li>transformed from <code>rdf:ID</code> attribute values.</li>
- </ul>
-
- <p>Within RDF/XML, XML QNames are transformed into
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
- by appending the XML local name to the namespace name (URI reference).
- For example, if the XML namespace prefix <code>foo</code> has
- namespace name (URI reference)
-
- <code>http://example.org/somewhere/</code> then the QName
- <code>foo:bar</code> would correspond to the RDF URI reference
- <code>http://example.org/somewhere/bar</code>. Note that this
- restricts which
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> can be made and the same URI can be given in multiple ways.</p>
-
- <p>The <a href="#idAttr"><code>rdf:ID</code></a> values
- are transformed into
-
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
- by appending the attribute value to the result of appending
- "#" to the in-scope base URI which is defined in
- <a href="#section-baseURIs">Section 5.3 Resolving URIs</a></p>
- </dd>
-
- <dt>Literal nodes (always object nodes)</dt>
- <dd><p>
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-literal">RDF literals</a> (<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a> 6.5) are either
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal">plain literals</a> (ibid),
- or
-
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-typed-literal">typed literals</a> (ibid).
- The latter includes <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-XMLLiteral">XML literals</a> (ibid section 5, <cite>XML Content within an RDF graph</cite>).
- </p>
- </dd>
-
- <dt>Blank Node Identifiers</dt>
- <dd><p><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">Blank nodes</a> have distinct identity in the RDF graph.
- When the graph is written in a syntax such as RDF/XML, these
- blank nodes may need graph-local identifiers and a syntax
- in order to preserve this distinction. These local identifiers are called
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifiers</a>
-
- and are used in RDF/XML as values of the <code>rdf:nodeID</code> attribute
- with the syntax given in <a href="#nodeIdAttr">Production nodeIdAttr</a>.
- Blank node identifiers in RDF/XML are scoped to the XML Information Set
- <a href="http://www.w3.org/TR/xml-infoset/#infoitem.document">document information item</a>.</p>
-
- <p>If no blank node identifier is given explicitly as an
- <code>rdf:nodeID</code> attribute value then one will need to be
- generated (using generated-blank-node-id, see section <a href="#section-Infoset-Grammar-Action">6.3.3</a>).
- Such generated blank node
- identifiers must not clash with any blank node identifiers derived
- from <code>rdf:nodeID</code> attribute values. This can be
- implemented by any method that preserves the distinct identity of all
- the blank nodes in the graph, that is, the same blank node identifier
- is not given for different blank nodes. One possible method would be
- to add a constant prefix to all the <code>rdf:nodeID</code> attribute
- values and ensure no generated blank node identifiers ever used that
- prefix. Another would be to map all <code>rdf:nodeID</code> attribute
- values to new generated blank node identifiers and perform that mapping
- on all such values in the RDF/XML document.</p>
- </dd>
- </dl>
+
+ <section id="section-Introduction">
+ <h2>Introduction</h2>
+ <a id="section-Syntax-more" name="section-Syntax-more"></a>
+ <p>This document defines the
+ <a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML</a>
+ <a href="#ref-xml">[XML]</a>
+ syntax for RDF graphs
+ which was originally defined in the
+ <a href="http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/">RDF Model & Syntax</a> <a href="#ref-rdfms">[RDF-MS]</a> W3C
+ Recommendation. Subsequent implementations of this syntax and
+ comparison of the resulting RDF graphs have shown that there was
+ ambiguity — implementations generated different graphs and certain
+ syntax forms were not widely implemented.</p>
+
+ <p>This document revises the
+ <a href="http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/#grammar">original RDF/XML grammar</a>
+ in terms of
+ <a href="http://www.w3.org/TR/2001/REC-xml-infoset-20011024/">XML Information Set</a>
+ <a href="#ref-xml-infoset">[INFOSET]</a> information items which moves
+ away from the rather low-level details of XML, such as particular
+ forms of empty elements. This allows the grammar to be more
+ precisely recorded and the mapping from the XML syntax to the RDF
+ Graph more clearly shown. The mapping to the RDF graph is done by
+ emitting statements in the form defined in the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
+ section of
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/">RDF Test Cases</a> <a href="#ref-rdf-tests">[RDF-TESTS]</a>
+ which creates an RDF graph, that has semantics defined by
+
+ <a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/">RDF Semantics</a> <a href="#ref-rdf-semantics">[RDF-SEMANTICS]</a>.
+ </p>
+
+ <p>The complete specification of RDF consists of a number of documents:</p>
+
+ <ul>
+ <li><a href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">RDF Primer</a> <a href="#ref-rdf-primer">[RDF-PRIMER]</a></li>
+ <li><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a> <a href="#ref-rdf-concepts">[RDF-CONCEPTS]</a></li>
+ <li><a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/">RDF Semantics</a> <a href="#ref-rdf-semantics">[RDF-SEMANTICS]</a></li>
+ <li>RDF/XML Syntax (this document)</li>
+ <li><a href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210/">RDF Vocabulary Description Language 1.0: RDF Schema</a> <a href="#ref-rdf-vocabulary">[RDF-VOCABULARY]</a></li>
+ <li><a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/">RDF Test Cases</a> <a href="#ref-rdf-tests">[RDF-TESTS]</a></li>
+ </ul>
+
+ <p>For a longer introduction to the RDF/XML syntax with a historical
+ perspective, see
+ <a href="http://www.w3.org/2001/10/stripes/">RDF: Understanding the Striped RDF/XML Syntax</a> <a href="#ref-stripedrdf">[STRIPEDRDF]</a>.</p>
</section>
-
- <!-- uri resolution -->
- <section id="section-baseURIs">
- <h3>Resolving URIs</h3>
-
- <p>RDF/XML supports
- <a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">XML Base</a> <a href="#ref-xml-base">[XML-BASE]</a>
- which defines a
- <a href="#eventterm-element-base-uri" class="termref"><span class="arrow">·</span>base-uri<span class="arrow">·</span></a>
-
- accessor for each
- <a href="#section-root-node"><span class="arrow">·</span>root event<span class="arrow">·</span></a> and
- <a href="#section-element-node"><span class="arrow">·</span>element event<span class="arrow">·</span></a>.
- Relative URI references are resolved into
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
- according to the algorithm specified in
- <a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">XML Base</a> <a href="#ref-xml-base">[XML-BASE]</a>
-
- (and RFC 2396).
- These specifications do not specify an algorithm for resolving a
- fragment identifier alone, such as <code>#foo</code>, or the empty
- string <code>""</code> into an
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>. In RDF/XML, a fragment identifier
- is transformed into a
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- by appending the fragment identifier to the in-scope base URI. The
- empty string is transformed
- into an
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
- by substituting the in-scope base URI.
- </p>
-
- <div class="note"><p><strong>Test:</strong>
-
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test001.rdf">test001.rdf</a> and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test001.nt">test001.nt</a>
- </p></div>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test004.rdf">test004.rdf</a> and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test004.nt">test004.nt</a>
- </p></div>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test008.rdf">test008.rdf</a> and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test008.nt">test008.nt</a>
- </p></div>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test013.rdf">test013.rdf</a> and
-
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test013.nt">test013.nt</a>
- </p></div>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test016.rdf">test016.rdf</a> and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test016.nt">test016.nt</a>
- </p></div>
-
- <p>An empty same document reference ""
- resolves against the URI part of the base URI; any fragment part
- is ignored. See
- <a href="http://www.isi.edu/in-notes/rfc2396.txt">Uniform Resource Identifiers (URI)</a> <a href="#ref-uri">[URIS]</a> section 4.2
-
- </p>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test013.rdf">test013.rdf</a> and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test013.nt">test013.nt</a>
- </p></div>
-
- <div class="note"><p><strong>Implementation Note (Informative):</strong>
- When using a hierarchical base
- URI that has no path component (/), it must be added before using as a
- base URI for resolving.
- </p></div>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test011.rdf">test011.rdf</a> and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test011.nt">test011.nt</a>
- </p></div>
- </section>
-
-
- <!-- constraints -->
- <section id="section-constraints">
- <h3>Constraints</h3>
-
- <dl>
- <dt><strong><a id="constraint-id" name="constraint-id">constraint-id</a></strong><br /></dt>
-
- <dd><p>Each application of production <a href="#idAttr">idAttr</a>
- matches an attribute. The pair formed by the
- <a href="#eventterm-attribute-string-value" class="termref"><span class="arrow">·</span>string-value<span class="arrow">·</span></a>
- accessor of the matched attribute and the
- <a href="#eventterm-element-base-uri" class="termref"><span class="arrow">·</span>base-uri<span class="arrow">·</span></a>
- accessor of the matched attribute is unique within a single RDF/XML
- document.</p>
-
- <p>The syntax of the names must match the
-
- <a href="#rdf-id">rdf-id production</a>.</p>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test014.rdf">test014.rdf</a> and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test014.nt">test014.nt</a>
- </p></div>
- </dd>
-
- </dl>
- </section>
-
-
- <!-- conformance -->
- <section id="section-conformance">
- <h3>Conformance</h3>
-
- <dl>
- <dt>Definition:<br /></dt>
- <dd>An <span class="termdef"><a id="dfn-rdf-document" name="dfn-rdf-document">RDF Document</a></span> is a serialization of an
- <a href="http://www.w3.org/TR/rdf-concepts/#dfn-rdf-graph">RDF Graph</a>
- into a concrete syntax.</dd>
-
- <dt>Definition:<br /></dt>
- <dd>An <span class="termdef"><a name="dfn-rdf-xml-document">RDF/XML Document</a></span> is an
- <a href="#dfn-rdf-document" class="termref">RDF Document</a> written in the
- recommended XML transfer syntax for RDF as defined in this document.</dd>
-
- <dt>Conformance:<br /></dt>
- <dd>An <a href="#dfn-rdf-xml-document" class="termref">RDF/XML Document</a> is a
- <span class="termdef"><a name="dfn-conforming-rdf-xml-document">conforming RDF/XML document</a></span>
-
- if it adheres to the specification defined in this document.</dd>
- </dl>
- </section>
-
-</section>
-
-
-
-<!-- FIFTH PART : Data Model -->
-
-<section id="section-Data-Model">
-
- <h2>Syntax Data Model</h2>
-
- <div>
- <p>This document specifies the syntax of RDF/XML as a grammar on an
- alphabet of symbols. The symbols are called <em>events</em> in the
- style of the <a href="#ref-xpath">[XPATH]</a> 
-
- <a href="http://www.w3.org/TR/xpath#infoset">Information Set Mapping</a>.
- A sequence of events is normally derived from an XML document, in
- which case they are in document order as defined below in
- <a href="#section-Infoset-Mapping">Section 6.2 Information Set Mapping</a>.
- The sequence these events form are intended to be similar to the sequence
- of events produced by the <a href="#ref-sax">[SAX2]</a> XML API from
- the same XML document. Sequences of events may be checked against
- the grammar to determine whether they are or are not syntactically
- well-formed RDF/XML.</p>
-
- <p>The grammar productions may include actions which fire when the
- production is recognized. Taken together these actions define a
- transformation from any syntactically well-formed RDF/XML sequence of
- events into an RDF graph represented in the
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
- language.</p>
-
- <p>The model given here illustrates one way to create a representation of
- an <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-graph">RDF Graph</a>
-
- from an RDF/XML document. It does not mandate any implementation
- method — any other method that results in a representation of the same
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-graph">RDF Graph</a>
- may be used.</p>
-
- <p>In particular:</p>
- <ul>
- <li>This specification permits any
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#implementation-note">representation</a>
- of an RDF graph (see <a href="#ref-rdf-concepts">[RDF-CONCEPTS]</a>);
- in particular, it does not require the use of
-
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>.</li>
- <li>This specification does not require the use of
- <a href="#ref-xpath">[XPATH]</a> or <a href="#ref-sax">[SAX2]</a></li>
- <li>This specification places no constraints on the order in which
- software transforming RDF/XML into a representation of a graph,
- constructs the representation of the graph.</li>
- <li>Software transforming RDF/XML into a representation of a graph
- MAY eliminate duplicate predicate arcs.</li>
- </ul>
-
- <p>The syntax does not support non-well-formed XML documents, nor
- documents that otherwise do not have an XML Information Set; for
- example, that do not conform to
- <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">Namespaces in XML</a>
-
- <a href="#ref-namespaces">[XML-NS]</a>.
- </p>
-
- <p>The Infoset requires support for
- <a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">XML Base</a> <a href="#ref-xml-base">[XML-BASE]</a>.
- RDF/XML uses the information item property [base URI], discussed in
- <a href="#section-baseURIs">section 5.3</a>
- </p>
-
- <p>This specification requires an
- XML Information Set <a href="#ref-xml-infoset">[INFOSET]</a>
- which supports at least the following information items and
- properties for RDF/XML:</p>
-
- <dl>
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.document">document information item</a></dt>
- <dd>[document element], [children], [base URI]</dd>
-
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.element">element information item</a></dt>
- <dd>[local name], [namespace name], [children], [attributes], [parent], [base URI]</dd>
-
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.attribute">attribute information item</a></dt>
- <dd>[local name], [namespace name], [normalized value]</dd>
-
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.character">character information item</a></dt>
- <dd>[character code]</dd>
- </dl>
-
- <p>There is no mapping of the following items to data model events:</p>
- <dl>
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.pi">processing instruction information item</a></dt>
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.rse">unexpanded entity reference information item</a></dt>
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.comment">comment information item</a></dt>
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.doctype">document type declaration information item</a></dt>
-
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.entity.unparsed">unparsed entity information item</a></dt>
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.notation">notation information item</a></dt>
- <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.namespace">namespace information item</a></dt>
- </dl>
-
- <p>Other information items and properties have no mapping to
- syntax data model events.
- </p>
-
- <p>Element information items with reserved XML Names
- (See <a href="http://www.w3.org/TR/2000/REC-xml-20001006#dt-name">Name</a>
- in <a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML 1.0</a>)
- are not mapped to data model element events. These are all those
- with property [prefix] beginning with <code>xml</code> (case
- independent comparison) and all those with [prefix] property
- having no value and which have [local name] beginning with
-
- <code>xml</code> (case independent comparison).
- </p>
-
- <p>All information items contained inside XML elements matching the
- <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a>
- production form
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-XMLLiteral">XML literals</a>
- and do not follow this mapping. See
- <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a>
- for further information.</p>
-
- <p>This section is intended to satisfy the requirements for
- <a href="http://www.w3.org/TR/xml-infoset/#conformance">Conformance</a>
- in the <a href="#ref-xml-infoset">[INFOSET]</a> specification.
- It specifies the information items and properties that are needed
- to implement this specification.
- </p>
- </div>
-
- <!-- events -->
- <section id="section-Nodes">
- <h3>Events</h3>
-
- <p>There are nine types of event defined in the following subsections.
- Most events are constructed from an Infoset information item (except
- for <a href="#section-identifier-node">URI reference</a>,
-
- <a href="#section-blank-nodeid-event">blank node</a>,
- <a href="#section-literal-node">plain literal</a> and
- <a href="#section-typed-literal-node">typed literal</a>). The effect
- of an event constructor is to create a new event with a unique identity,
- distinct from all other events. Events have accessor operations on them
- and most have the <em>string-value</em> accessor that may be a static value
- or computed.</p>
-
- <!-- root event -->
- <section id="section-root-node">
- <h3>Root Event</h3>
-
- <p>Constructed from a
- <a href="http://www.w3.org/TR/xml-infoset/#infoitem.document">document information item</a>
- and takes the following accessors and values.</p>
-
- <dl>
- <dt><span class="termdef"><a id="eventterm-root-document-element" name="eventterm-root-document-element">document-element</a></span><br /></dt>
- <dd>Set to the value of document information item property [document-element].</dd>
- <dt><span class="termdef"><a id="eventterm-root-children" name="eventterm-root-children">children</a></span><br /></dt>
- <dd>Set to the value of document information item property [children].</dd>
- <dt><span class="termdef"><a id="eventterm-root-base-uri" name="eventterm-root-base-uri">base-uri</a></span><br /></dt>
-
- <dd>Set to the value of document information item property [base URI].</dd>
- <dt><span class="termdef"><a id="eventterm-root-language" name="eventterm-root-language">language</a></span><br /></dt>
- <dd>Set to the empty string.</dd>
- </dl>
- </section>
-
- <!-- root event -->
- <section id="section-element-node">
- <h3>Element Event</h3>
-
- <p>Constructed from an
- <a href="http://www.w3.org/TR/xml-infoset/#infoitem.element">element information item</a>
-
- and takes the following accessors and values:
- </p>
-
-
- <dl>
- <dt><span class="termdef"><a id="eventterm-element-local-name" name="eventterm-element-local-name">local-name</a></span><br /></dt>
- <dd>Set to the value of element information item property [local name].</dd>
-
- <dt><span class="termdef"><a id="eventterm-element-namespace-name" name="eventterm-element-namespace-name">namespace-name</a></span><br /></dt>
- <dd>Set to the value of element information item property [namespace name].</dd>
-
- <dt><span class="termdef"><a id="eventterm-element-children" name="eventterm-element-children">children</a></span><br /></dt>
- <dd>Set to the value of element information item property [children].</dd>
-
- <dt><span class="termdef"><a id="eventterm-element-base-uri" name="eventterm-element-base-uri">base-uri</a></span><br /></dt>
- <dd>Set to the value of element information item property [base URI].</dd>
-
- <dt><span class="termdef"><a id="eventterm-element-attributes" name="eventterm-element-attributes">attributes</a></span><br /></dt>
-
- <dd><p>Made from the value of element information item property [attributes] which is a set of attribute information items.</p>
-
- <p>If this set contains an attribute information item <code>xml:lang</code> (
- [namespace name] property with the value
- "http://www.w3.org/XML/1998/namespace" and
- [local name] property value "lang")
- it is removed from the set of attribute information items and the
- <a href="#eventterm-element-language" class="termref"><span class="arrow">·</span>language<span class="arrow">·</span></a> accessor is set to the
- [normalized-value] property of the attribute information item.</p>
-
- <p>All remaining reserved XML Names
- (See <a href="http://www.w3.org/TR/2000/REC-xml-20001006#dt-name">Name</a>
-
- in <a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML 1.0</a>)
- are now removed from the set. These are, all
- attribute information items in the set with property [prefix]
- beginning with <code>xml</code> (case independent
- comparison) and all attribute information items with [prefix]
- property having no value and which have [local name] beginning with
- <code>xml</code> (case independent comparison) are removed.
- Note that the [base URI] accessor is computed by XML Base before any
- <code>xml:base</code> attribute information item is deleted.</p>
-
- <p>The remaining set of attribute information items are then used
- to construct a new set of
- <a href="#section-attribute-node">Attribute Events</a>
-
- which is assigned as the value of this accessor.</p>
- </dd>
-
- <dt><span class="termdef"><a id="eventterm-element-URI" name="eventterm-element-URI">URI</a></span><br /></dt>
- <dd>Set to the string value of the concatenation of the
- value of the namespace-name accessor and the value of the
- local-name accessor.
- </dd>
-
- <dt><span class="termdef"><a id="eventterm-element-URI-string-value" name="eventterm-element-URI-string-value">URI-string-value</a></span><br /></dt>
- <dd>
-
- <p>The value is the concatenation of the following in this order "<",
- the escaped value of the
- <a href="#eventterm-element-URI" class="termref"><span class="arrow">·</span>URI<span class="arrow">·</span></a>
- accessor and ">".</p>
-
- <p>The escaping of the
- <a href="#eventterm-element-URI" class="termref"><span class="arrow">·</span>URI<span class="arrow">·</span></a>
- accessor uses the N-Triples escapes for
- URI references as described in 3.3 URI References.
- </p>
-
- </dd>
-
- <dt><span class="termdef"><a id="eventterm-element-liCounter" name="eventterm-element-liCounter">li-counter</a></span><br /></dt>
- <dd>Set to the integer value 1.</dd>
-
- <dt><span class="termdef"><a id="eventterm-element-language" name="eventterm-element-language">language</a></span><br /></dt>
- <dd>Set from the
- <a href="#eventterm-element-attributes" class="termref"><span class="arrow">·</span>attributes<span class="arrow">·</span></a>
- as described above.
- If no value is given from the attributes, the value is set to the value of
- the language accessor on the parent event (either a
- <a href="#section-root-node">Root Event</a> or an
- <a href="#section-element-node">Element Event</a>), which may be the empty string.
- </dd>
-
- <dt><span class="termdef"><a id="eventterm-element-subject" name="eventterm-element-subject">subject</a></span><br /></dt>
- <dd>Has no initial value. Takes a value that is an
- <a href="#section-identifier-node">Identifier</a> event.
- This accessor is used on elements that deal with one node in the RDF graph,
- this generally being the subject of a statement.</dd>
-
- </dl>
- </section>
-
-
- <!-- end element event -->
- <section id="section-end-element-node">
- <h3>End Element Event</h3>
-
- <p>Has no accessors. Marks the end of the containing element in
- the sequence.</p>
- </section>
-
-
- <!-- attribute event -->
- <section id="section-attribute-node">
- <h3>Attribute Event</h3>
-
- <p>Constructed from an
- <a href="http://www.w3.org/TR/xml-infoset/#infoitem.attribute">attribute information item</a>
- and takes the following accessors and values:</p>
-
- <dl>
- <dt><span class="termdef"><a id="eventterm-attribute-local-name" name="eventterm-attribute-local-name">local-name</a></span><br /></dt>
- <dd>Set to the value of attribute information item property [local name].</dd>
-
- <dt><span class="termdef"><a id="eventterm-attribute-namespace-name" name="eventterm-attribute-namespace-name">namespace-name</a></span><br /></dt>
- <dd>Set to the value of attribute information item property [namespace name].</dd>
-
- <dt><span class="termdef"><a id="eventterm-attribute-string-value" name="eventterm-attribute-string-value">string-value</a></span><br /></dt>
-
- <dd>Set to the value of the attribute information item property [normalized value] as specified by
- <a href="#ref-xml">[XML]</a> (if an attribute whose normalized
- value is a zero-length string, then the string-value is also
- a zero-length string).</dd>
-
- <dt><span class="termdef"><a id="eventterm-attribute-URI" name="eventterm-attribute-URI">URI</a></span><br /></dt>
- <dd><p>If <a href="#eventterm-attribute-namespace-name" class="termref"><span class="arrow">·</span>namespace-name<span class="arrow">·</span></a> is present,
- set to a string value of the concatenation of the value of the
- <a href="#eventterm-attribute-namespace-name" class="termref"><span class="arrow">·</span>namespace-name<span class="arrow">·</span></a> accessor
- and the value of the
- <a href="#eventterm-attribute-local-name" class="termref"><span class="arrow">·</span>local-name<span class="arrow">·</span></a> accessor.
- Otherwise if <a href="#eventterm-attribute-local-name" class="termref"><span class="arrow">·</span>local-name<span class="arrow">·</span></a> is
- <code>ID</code>, <code>about</code>, <code>resource</code>, <code>parseType</code> or <code>type</code>, set to a string value of the
- concatenation of the
- <a href="#rdf-ns-uri" class="termref"><span class="arrow">·</span>RDF namespace URI reference<span class="arrow">·</span></a>
-
- and the value of the <a href="#eventterm-attribute-local-name" class="termref"><span class="arrow">·</span>local-name<span class="arrow">·</span></a> accessor. Other non-namespaced <a href="#eventterm-attribute-local-name" class="termref"><span class="arrow">·</span>local-name<span class="arrow">·</span></a> accessor values are forbidden.</p>
-
- <p>The support for a limited set of non-namespaced names is
- REQUIRED and intended to allow RDF/XML documents specified in
- <a href="#ref-rdfms">[RDF-MS]</a> to remain valid; new documents
- SHOULD NOT use these unqualified attributes and applications MAY
- choose to warn when the unqualified form is seen in a document.</p>
-
- <p>The construction of
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
- from XML attributes can generate the same
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
- from different XML attributes. This can cause ambiguity in the
- grammar when matching attribute events (such as when
- <code>rdf:about</code> and <code>about</code> XML attributes are
- both present). Documents that have this are illegal.
- </p>
-
- </dd>
-
- <dt><span class="termdef"><a id="eventterm-attribute-URI-string-value" name="eventterm-attribute-URI-string-value">URI-string-value</a></span><br /></dt>
- <dd>
- <p>The value is the concatenation of the following in this order "<",
- the escaped value of the
- <a href="#eventterm-attribute-URI" class="termref"><span class="arrow">·</span>URI<span class="arrow">·</span></a>
- accessor and ">".</p>
-
- <p>The escaping of the
- <a href="#eventterm-attribute-URI" class="termref"><span class="arrow">·</span>URI<span class="arrow">·</span></a>
- accessor uses the N-Triples escapes for
- URI references as described in 3.3 URI References.
- </p>
- </dd>
-
- </dl>
- </section>
-
-
- <!-- text event -->
- <section id="section-text-node">
- <h3>Text Event</h3>
-
- <p>Constructed from a sequence of one or more consecutive
- <a href="http://www.w3.org/TR/xml-infoset/#infoitem.character">character information items</a>.
- Has the single accessor:</p>
-
- <dl>
- <dt><span class="termdef"><a id="eventterm-text-string-value" name="eventterm-text-string-value">string-value</a></span><br /></dt>
- <dd>Set to the value of the string made from concatenating the
- [<a href="http://www.w3.org/TR/xml-infoset/#infoitem.character">character code</a>] property of each of the character information items.
- </dd>
- </dl>
- </section>
-
-
- <!-- uri reference event -->
- <section id="section-identifier-node">
- <h3>URI Reference Event</h3>
-
- <p><a id="eventterm-identifier-identifier-type" name="eventterm-identifier-identifier-type"></a>
- An event for a
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
- which has the following accessors:</p>
-
- <dl>
- <dt><span class="termdef"><a id="eventterm-identifier-identifier" name="eventterm-identifier-identifier">identifier</a></span><br /></dt>
- <dd>Takes a string value used as an
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.
- </dd>
-
- <dt><span class="termdef"><a id="eventterm-identifier-string-value" name="eventterm-identifier-string-value">string-value</a></span><br /></dt>
- <dd><p>The value is the concatenation of "<", the escaped value of the <a href="#eventterm-identifier-identifier" class="termref"><span class="arrow">·</span>identifier<span class="arrow">·</span></a> accessor and ">"</p>
-
- <p>The escaping of the <a href="#eventterm-identifier-identifier" class="termref"><span class="arrow">·</span>identifier<span class="arrow">·</span></a> accessor value
- uses the <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a> escapes for URI references as described in
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#sec-uri-encoding">3.3 URI References</a>.</p>
-
- </dd>
-
- </dl>
-
- <p>These events are constructed by giving a value for the
- <a href="#eventterm-identifier-identifier" class="termref"><span class="arrow">·</span>identifier<span class="arrow">·</span></a> accessor.
- </p>
-
- <p>For further information on identifiers in the RDF graph, see
- <a href="#section-Identifiers">section 5.2</a>.</p>
- </section>
-
-
- <!-- blank node identifier event -->
- <section id="section-blank-nodeid-event">
- <h3>Blank Node Identifier Event</h3>
-
- <p>An event for a
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a>
- which has the following accessors:</p>
-
- <dl>
- <dt><span class="termdef"><a id="eventterm-blanknodeid-identifier" name="eventterm-blanknodeid-identifier">identifier</a></span><br /></dt>
-
- <dd>Takes a string value.</dd>
-
- <dt><span class="termdef"><a id="eventterm-blanknodeid-string-value" name="eventterm-blanknodeid-string-value">string-value</a></span><br /></dt>
- <dd>The value is a function of the value of the
- <a href="#eventterm-blanknodeid-identifier" class="termref"><span class="arrow">·</span>identifier<span class="arrow">·</span></a> accessor.
- The value begins with "_:" and the entire value MUST match the
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#nodeID">nodeID</a> production.
- The function MUST preserve distinct blank node identity as discussed in in section <a href="#section-Identifiers">5.2 Identifiers</a>.</dd>
-
- </dl>
-
- <p>These events are constructed by giving a value for the
- <a href="#eventterm-blanknodeid-identifier" class="termref"><span class="arrow">·</span>identifier<span class="arrow">·</span></a> accessor.
- </p>
-
- <p>For further information on identifiers in the RDF graph, see
- <a href="#section-Identifiers">section 5.2</a>.</p>
- </section>
-
-
- <!-- plain literal event -->
- <section id="section-literal-node">
- <h3>Plain Literal Event</h3>
-
- <p>An event for a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal">plain literal</a> which can have the following accessors:</p>
-
- <dl>
- <dt><span class="termdef"><a id="eventterm-literal-literal-value" name="eventterm-literal-literal-value">literal-value</a></span><br /></dt>
- <dd>Takes a string value.</dd>
-
- <dt><span class="termdef"><a id="eventterm-literal-literal-language" name="eventterm-literal-literal-language">literal-language</a></span><br /></dt>
- <dd>Takes a string value used as a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-language-identifier">language tag</a> in an RDF plain literal.</dd>
-
- <dt><span class="termdef"><a id="eventterm-literal-string-value" name="eventterm-literal-string-value">string-value</a></span><br /></dt>
- <dd><p>The value is calculated from the other accessors as follows.</p>
-
- <p>If <a href="#eventterm-literal-literal-language" class="termref"><span class="arrow">·</span>literal-language<span class="arrow">·</span></a> is the empty string
- then the value is the concatenation of """ (1 double quote),
- the escaped value of the
- <a href="#eventterm-literal-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> accessor
- and """ (1 double quote).</p>
-
- <p>Otherwise the value is the concatenation of """ (1 double quote),
- the escaped value of the
- <a href="#eventterm-literal-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> accessor
- ""@" (1 double quote and a '@'),
- and the value of the
- <a href="#eventterm-literal-literal-language" class="termref"><span class="arrow">·</span>literal-language<span class="arrow">·</span></a> accessor.</p>
-
- <p>The escaping of the <a href="#eventterm-literal-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> accessor value uses the <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
-
- escapes for strings as described in <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntrip_strings">3.2 Strings</a>
- for escaping certain characters such as ". </p>
- </dd>
- </dl>
-
- <p>These events are constructed by giving values for the
- <a href="#eventterm-literal-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> and
-
- <a href="#eventterm-literal-literal-language" class="termref"><span class="arrow">·</span>literal-language<span class="arrow">·</span></a> accessors.</p>
-
-
- <div class="note"><p><strong>Interoperability Note (Informative):</strong>
- <a id="literal-comb-char-note1" name="literal-comb-char-note1"></a>
- Literals beginning with a Unicode combining character are
- allowed however they may cause interoperability problems.
- See <a href="#ref-charmod">[CHARMOD]</a> for further information.
- </p></div>
- </section>
-
-
- <!-- typed literal event -->
- <section id="section-typed-literal-node">
- <h3>Typed Literal Event</h3>
- <a id="section-xml-literal-node" name="section-xml-literal-node"></a> <!-- old ref -->
-
- <p>An event for a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-typed-literal">typed literal</a> which can have the following accessors:</p>
-
- <dl>
- <dt><a id="eventterm-xmlliteral-literal-value" name="eventterm-xmlliteral-literal-value"></a><span class="termdef"><a id="eventterm-typedliteral-literal-value" name="eventterm-typedliteral-literal-value">literal-value</a></span><br /></dt>
- <dd>Takes a string value.</dd>
-
- <dt><a id="eventterm-literal-literal-datatype" name="eventterm-literal-literal-datatype"></a><span class="termdef"><a id="eventterm-typedliteral-literal-datatype" name="eventterm-typedliteral-literal-datatype">literal-datatype</a></span><br /></dt>
- <dd>Takes a string value used as an <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.</dd>
-
- <dt><a id="eventterm-xmlliteral-string-value" name="eventterm-xmlliteral-string-value"></a><span class="termdef"><a id="eventterm-typedliteral-string-value" name="eventterm-typedliteral-string-value">string-value</a></span><br /></dt>
- <dd><p>The value is the concatenation of the following in this order
- """ (1 double quote),
- the escaped value of the
- <a href="#eventterm-typedliteral-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> accessor,
- """ (1 double quote), "^^<",
- the escaped value of the
- <a href="#eventterm-typedliteral-literal-datatype" class="termref"><span class="arrow">·</span>literal-datatype<span class="arrow">·</span></a> accessor
- and ">".
+
+ <!-- FIRST PART : THE SYNTAX -->
+
+ <section id="section-Syntax">
+
+ <h2>An XML Syntax for RDF</h2>
+ <p>This section introduces the RDF/XML syntax, describes how it
+ encodes RDF graphs and explains this with examples. If there is any
+ conflict between this informal description and the formal description
+ of the syntax and grammar in sections
+ <a href="#section-Data-Model">6 Syntax Data Model</a> and
+ <a href="#section-Infoset-Grammar">7 RDF/XML Grammar</a>, the
+ latter two sections take precedence.
</p>
- <p>The escaping of the <a href="#eventterm-typedliteral-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> accessor value
- uses the <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
- escapes for strings as described in <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntrip_strings">3.2 Strings</a>
- for escaping certain characters such as ".
- The escaping of the <a href="#eventterm-typedliteral-literal-datatype" class="termref"><span class="arrow">·</span>literal-datatype<span class="arrow">·</span></a> accessor value
- must use the <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a> escapes for URI references as described in
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#sec-uri-encoding">3.3 URI References</a>.</p>
-
- </dd>
- </dl>
-
- <p>These events are constructed by giving values for the
- <a href="#eventterm-typedliteral-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a>
- and
- <a href="#eventterm-typedliteral-literal-datatype" class="termref"><span class="arrow">·</span>literal-datatype<span class="arrow">·</span></a> accessors.</p>
-
- <div class="note"><p><strong>Interoperability Note (Informative):</strong>
- <a id="literal-comb-char-note2" name="literal-comb-char-note2"></a>
- Literals beginning with a Unicode combining character are
- allowed however they may cause interoperability problems.
- See <a href="#ref-charmod">[CHARMOD]</a> for further information.
- </p></div>
-
- <div class="note"><p><strong>Implementation Note (Informative):</strong>
- <a id="literal-white-space-normalization-note" name="literal-white-space-normalization-note"></a>
- In <a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">XML Schema (part 1)</a> <a href="#ref-xml-schema1">[XML-SCHEMA1]</a>,
-
- <a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#section-White-Space-Normalization-during-Validation">white space normalization</a>
- occurs during validation according to the value of the whiteSpace
- facet. The syntax mapping used in this document occurs after this,
- so the whiteSpace facet formally has no further effect.
- </p></div>
- </section>
-
- </section>
-
- <!-- infoset mapping -->
- <section id="section-Infoset-Mapping">
- <h3>Information Set Mapping</h3>
- <a id="section-Infoset-Conformance" name="section-Infoset-Conformance"></a> <!-- old ref -->
-
- <p>To transform the Infoset into the sequence of events
- in <em>document order</em>, each
- information item is transformed as described above to generate a
- tree of events with accessors and values. Each element event is
- then replaced as described below to turn the tree of events
- into a sequence in document order.</p>
-
- <ol>
- <li>The original <a href="#section-element-node">element event</a></li>
- <li>The value of the
- <a href="http://www.w3.org/TR/xml-infoset/#infoitem.element">children</a>
- accessor recursively transformed, a possibly empty ordered list of events.</li>
- <li>An <a href="#section-end-element-node">end element event</a></li>
- </ol>
- </section>
-
-
- <!-- grammar notation -->
- <section id="section-Infoset-Grammar-Notation">
- <h3>Grammar Notation</h3>
- <a id="section-Notation-Forms" name="section-Notation-Forms"></a> <!-- old ref -->
-
- <p>The following notation is used to describe matching the sequence
- of data model events as given in <a href="#section-Data-Model">Section 6</a>
- and the actions to perform for the matches.
- The RDF/XML grammar is defined in terms of mapping from these matched
- data model events to triples, using notation of the form:</p>
-
- <blockquote>
- <div class="productionOuter"><div class="productionInner"><p>
- number <em>event-type</em> <em>event-content</em>
-
- </p></div></div>
-
- <div>
- <em>action</em>...
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code>
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
- </code>
- </p></div></div>
- </div>
- </blockquote>
-
- <p>where the <em>event-content</em> is an expression matching
-
- <em>event-types</em> (as defined in <a href="#section-Nodes">Section 6.1</a>),
- using notation given in the following sections.
- The number is used for reference purposes.
- The grammar <em>action</em> may include generating
- new triples to the graph, written in
- <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
- format.
- </p>
-
- <p>The following sections describe the general notation used and that
- for event matching and actions.</p>
-
-
- <!-- general grammar notation -->
- <section id="section-Infoset-Grammar-General">
- <h4>Grammar General Notation</h4>
-
- <table border="1" summary="This table describes the general notation used the grammar.">
- <caption>Grammar General Notation.</caption>
- <tr>
- <th>Notation</th>
- <th>Meaning</th>
- </tr>
- <tr>
- <td><em>event</em>.<em>accessor</em></td>
-
- <td>The value of an event accessor.</td>
- </tr>
- <tr>
- <td><code>rdf:</code><em>X</em></td>
- <td>A URI as defined in <a href="#section-Namespace">section 5.1</a>.</td>
- </tr>
- <tr>
- <td>"ABC"</td>
- <td>A string of characters A, B, C in order.</td>
-
- </tr>
- </table>
- </section>
-
-
- <!-- grammar event matching notation -->
- <section id="section-Infoset-Grammar-Matching">
- <h4>Grammar Event Matching Notation</h4>
-
-
- <table border="1" summary="This table describes the event matching notation used in the following sections to match sequences of syntax data model events.">
- <caption>Grammar Event Matching Notation.</caption>
- <tr>
- <th>Notation</th>
- <th>Meaning</th>
-
- </tr>
- <tr>
- <td>A == B</td>
- <td>Event accessor A matches expression B.</td>
- </tr>
- <tr>
- <td>A != B</td>
- <td>A is not equal to B.</td>
- </tr>
- <tr>
- <td>A | B | ...</td>
- <td>The A, B, ... terms are alternatives.</td>
-
- </tr>
- <tr>
- <td>A - B</td>
- <td>The terms in A excluding all the terms in B.</td>
- </tr>
- <tr>
- <td><a id="anyURI" name="anyURI">anyURI</a>.</td>
- <td>Any URI.</td>
- </tr>
- <tr>
- <td><a id="anyString" name="anyString">anyString</a>.</td>
-
- <td>Any string.</td>
- </tr>
- <tr>
- <td>list(item1, item2, ...); list()</td>
- <td>An ordered list of events. An empty list.</td>
- </tr>
- <tr>
- <td>set(item1, item2, ...); set()</td>
- <td>An unordered set of events. An empty set.</td>
- </tr>
- <tr>
- <td>*</td>
-
- <td>Zero or more of preceding term.</td>
- </tr>
- <tr>
- <td>?</td>
- <td>Zero or one of preceding term.</td>
- </tr>
- <tr>
- <td>+</td>
- <td>One or more of preceding term.</td>
- </tr>
- <tr>
- <td>root(acc1 == value1,<br />
-
-     acc2 == value2, ...)</td>
- <td>Match a <a href="#section-root-node">Root Event</a> with accessors.
- </td>
- </tr>
- <tr>
- <td>start-element(acc1 == value1,<br />
-     acc2 == value2, ...)<br />
- <em>children</em><br />
- end-element()</td>
-
- <td>Match a sequence of
- <a href="#section-element-node">Element Event</a> with accessors,
- a possibly empty list of events as element content and an
- <a href="#section-end-element-node">End Element Event</a>.
- </td>
- </tr>
- <tr>
- <td>attribute(acc1 == value1,<br />
-     acc2 == value2, ...)</td>
- <td>Match an <a href="#section-attribute-node">Attribute Event</a>
- with accessors.</td>
-
- </tr>
- <tr>
- <td>text()</td>
- <td>Match a <a href="#section-text-node">Text Event</a>.</td>
- </tr>
- </table>
- </section>
-
-
- <!-- grammar action notation -->
- <section id="section-Infoset-Grammar-Action">
- <h4>Grammar Action Notation</h4>
-
- <table border="1" summary="This table describes the grammar actions notation used in the following sections to perform triple generation from syntax data model events.">
- <caption>Grammar Action Notation.</caption>
- <tr>
- <th>Notation</th>
- <th>Meaning</th>
- </tr>
- <tr>
- <td>A := B</td>
- <td>Assigns A the value B.</td>
- </tr>
- <tr>
- <td>concat(A, B, ..)</td>
-
- <td>A string created by concatenating the terms in order.</td>
- </tr>
- <tr>
- <td>resolve(<em>e</em>, <em>s</em>)</td>
- <td>A string created by interpreting string <em>s</em> as a relative URI reference to the
- <a href="#eventterm-element-base-uri" class="termref"><span class="arrow">·</span>base-uri<span class="arrow">·</span></a> accessor of <a href="#section-element-node"></a> <em>e</em>
-
- as defined in <a href="#section-baseURIs">Section 5.3 Resolving URIs</a>.
- The resulting string represents an
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.</td>
- </tr>
- <tr>
- <td>generated-blank-node-id()</td>
- <td>A string value for a new distinct generated
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a>
- as defined in <a href="#section-Identifiers">section 5.2 Identifiers</a>.
- </td>
-
- </tr>
- <tr>
- <td><em>event</em>.<em>accessor</em> := <em>value</em></td>
- <td>Sets an event accessor to the given value.</td>
- </tr>
- <tr>
- <td>uri(identifier := value)</td>
- <td>Create a new <a href="#section-identifier-node">URI Reference Event</a>.</td>
-
- </tr>
- <tr>
- <td>bnodeid(identifier := value)</td>
- <td>Create a new <a href="#section-blank-nodeid-event">Blank Node Identifier Event</a>. See also section <a href="#section-Identifiers">5.2 Identifiers</a>.</td>
- </tr>
- <tr>
- <td>literal(literal-value := string,<br />
-     literal-language := language, ...)</td>
- <td>Create a new <a href="#section-literal-node">Plain Literal Event</a>.</td>
-
- </tr>
- <tr>
- <td>typed-literal(literal-value := string, ...)</td>
- <td>Create a new <a href="#section-typed-literal-node">Typed Literal Event</a>.</td>
- </tr>
- </table>
- </section>
- </section>
- </section>
-
- <!-- RDF/XML grammar -->
- <section id="section-Infoset-Grammar">
- <h2>RDF/XML Grammar</h2>
-
-
- <!-- grammar summary -->
- <section id="section-grammar-summary">
- <h3>Grammar summary</h3>
-
- <div class="productionOuter"><div class="productionInner">
- <table>
- <tr valign="top">
- <td><a href="#coreSyntaxTerms">7.2.2</a> <a href="#coreSyntaxTerms">coreSyntaxTerms</a></td> <td><code>rdf:RDF</code> | <code>rdf:ID</code> | <code>rdf:about</code> | <code>rdf:parseType</code> | <code>rdf:resource</code> | <code>rdf:nodeID</code> | <code>rdf:datatype</code></td>
-
- </tr>
- <tr valign="top">
- <td><a href="#syntaxTerms">7.2.3</a> <a href="#syntaxTerms">syntaxTerms</a></td> <td><a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <code>rdf:li</code></td>
- </tr>
- <tr valign="top">
- <td><a href="#oldTerms">7.2.4</a> <a href="#oldTerms">oldTerms</a></td> <td><code>rdf:aboutEach</code> | <code>rdf:aboutEachPrefix</code> | <code>rdf:bagID</code></td>
-
- </tr>
- <tr valign="top">
- <td><a href="#nodeElementURIs">7.2.5</a> <a href="#nodeElementURIs">nodeElementURIs</a></td> <td><a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:li</code> | <a href="#oldTerms">oldTerms</a> )</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#propertyElementURIs">7.2.6</a> <a href="#propertyElementURIs">propertyElementURIs</a></td> <td><a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <a href="#oldTerms">oldTerms</a> )</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#propertyAttributeURIs">7.2.7</a> <a href="#propertyAttributeURIs">propertyAttributeURIs</a></td> <td><a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <code>rdf:li</code> | <a href="#oldTerms">oldTerms</a> )</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#doc">7.2.8</a> <a href="#doc">doc</a></td> <td>root(<a href="#eventterm-root-document-element">document-element</a> == <a href="#RDF">RDF</a>,
- <a href="#eventterm-root-children">children</a> == list(<a href="#RDF">RDF</a>))</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#RDF">7.2.9</a> <a href="#RDF">RDF</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <code>rdf:RDF</code>,
- <a href="#eventterm-element-attributes">attributes</a> == set())<br />
- <a href="#nodeElementList">nodeElementList</a><br />
-
- end-element()</td>
- </tr>
- <tr valign="top">
- <td><a href="#nodeElementList">7.2.10</a> <a href="#nodeElementList">nodeElementList</a></td> <td><a href="#ws">ws</a>* (<a href="#nodeElement">nodeElement</a> <a href="#ws">ws</a>* )*</td>
- </tr>
- <tr valign="top">
-
- <td><a href="#nodeElement">7.2.11</a> <a href="#nodeElement">nodeElement</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#nodeElementURIs">nodeElementURIs</a><br />
-     <a href="#eventterm-element-attributes">attributes</a> == set((<a href="#idAttr">idAttr</a> | <a href="#nodeIdAttr">nodeIdAttr</a> | <a href="#aboutAttr">aboutAttr</a> )?, <a href="#propertyAttr">propertyAttr</a>*))<br />
-
- <a href="#propertyEltList">propertyEltList</a><br />
- end-element()</td>
- </tr>
- <tr valign="top">
- <td><a href="#ws">7.2.12</a> <a href="#ws">ws</a></td> <td>A <a href="#section-text-node">text event</a> matching white space
- defined by <a href="#ref-xml">[XML]</a> definition <em>White Space</em>
-
- Rule [3] <a href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-S">S</a>
- in section
- <a href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-common-syn">Common Syntactic Constructs</a></td>
- </tr>
- <tr valign="top">
- <td><a href="#propertyEltList">7.2.13</a> <a href="#propertyEltList">propertyEltList</a></td> <td><a href="#ws">ws</a>* (<a href="#propertyElt">propertyElt</a> <a href="#ws">ws</a>* ) *</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#propertyElt">7.2.14</a> <a href="#propertyElt">propertyElt</a></td> <td><a href="#resourcePropertyElt">resourcePropertyElt</a> |
- <a href="#literalPropertyElt">literalPropertyElt</a> |
- <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a> |
- <a href="#parseTypeResourcePropertyElt">parseTypeResourcePropertyElt</a> |
-
- <a href="#parseTypeCollectionPropertyElt">parseTypeCollectionPropertyElt</a> |
- <a href="#parseTypeOtherPropertyElt">parseTypeOtherPropertyElt</a> |
- <a href="#emptyPropertyElt">emptyPropertyElt</a></td>
- </tr>
- <tr valign="top">
- <td><a href="#resourcePropertyElt">7.2.15</a> <a href="#resourcePropertyElt">resourcePropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
-
- <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?))<br />
- <a href="#ws">ws</a>* <a href="#nodeElement">nodeElement</a> <a href="#ws">ws</a>*<br />
- end-element()</td>
- </tr>
- <tr valign="top">
-
- <td><a href="#literalPropertyElt">7.2.16</a> <a href="#literalPropertyElt">literalPropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
- <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#datatypeAttr">datatypeAttr</a>?))<br />
-
- <a href="#section-text-node">text()</a><br />
- end-element()</td>
- </tr>
- <tr valign="top">
- <td><a href="#parseTypeLiteralPropertyElt">7.2.17</a> <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
-
- <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseLiteral">parseLiteral</a>))<br />
- <a href="#literal">literal</a><br />
- end-element()</td>
- </tr>
- <tr valign="top">
- <td><a href="#parseTypeResourcePropertyElt">7.2.18</a> <a href="#parseTypeResourcePropertyElt">parseTypeResourcePropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
-
- <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseResource">parseResource</a>))<br />
- <a href="#propertyEltList">propertyEltList</a><br />
- end-element()</td>
- </tr>
- <tr valign="top">
- <td><a href="#parseTypeCollectionPropertyElt">7.2.19</a> <a href="#parseTypeCollectionPropertyElt">parseTypeCollectionPropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
-
- <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseCollection">parseCollection</a>))<br />
- <a href="#nodeElementList">nodeElementList</a><br />
- end-element()</td>
- </tr>
- <tr valign="top">
- <td><a href="#parseTypeOtherPropertyElt">7.2.20</a> <a href="#parseTypeOtherPropertyElt">parseTypeOtherPropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
-
- <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseOther">parseOther</a>))<br />
- <a href="#propertyEltList">propertyEltList</a><br />
- end-element()</td>
- </tr>
- <tr valign="top">
- <td><a href="#emptyPropertyElt">7.2.21</a> <a href="#emptyPropertyElt">emptyPropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
-
- <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, ( <a href="#resourceAttr">resourceAttr</a> | <a href="#nodeIdAttr">nodeIdAttr</a> )?, <a href="#propertyAttr">propertyAttr</a>*))<br />
- end-element()</td>
- </tr>
-
- <tr valign="top">
- <td><a href="#idAttr">7.2.22</a> <a href="#idAttr">idAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:ID</code>,
- <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#rdf-id">rdf-id</a>)</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#nodeIdAttr">7.2.23</a> <a href="#nodeIdAttr">nodeIdAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:nodeID</code>,
- <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#rdf-id">rdf-id</a>)</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#aboutAttr">7.2.24</a> <a href="#aboutAttr">aboutAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:about</code>,
- <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#propertyAttr">7.2.25</a> <a href="#propertyAttr">propertyAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <a href="#propertyAttributeURIs">propertyAttributeURIs</a>,
- <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#anyString">anyString</a>)</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#resourceAttr">7.2.26</a> <a href="#resourceAttr">resourceAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:resource</code>,
- <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#datatypeAttr">7.2.27</a> <a href="#datatypeAttr">datatypeAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:datatype</code>,
- <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#parseLiteral">7.2.28</a> <a href="#parseLiteral">parseLiteral</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,
- <a href="#eventterm-attribute-string-value">string-value</a> == "Literal")</td>
- </tr>
-
- <tr valign="top">
- <td><a href="#parseResource">7.2.29</a> <a href="#parseResource">parseResource</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,
- <a href="#eventterm-attribute-string-value">string-value</a> == "Resource")</td>
- </tr>
- <tr valign="top">
-
- <td><a href="#parseCollection">7.2.30</a> <a href="#parseCollection">parseCollection</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,
- <a href="#eventterm-attribute-string-value">string-value</a> == "Collection")</td>
- </tr>
- <tr valign="top">
- <td><a href="#parseOther">7.2.31</a> <a href="#parseOther">parseOther</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,
-
- <a
- href="#eventterm-attribute-string-value">string-value</a> == <a href="#anyString">anyString</a> - ("Resource" | "Literal" | "Collection") )</td>
- </tr>
- <tr valign="top">
- <td><a href="#URI-reference">7.2.32</a> <a href="#URI-reference">URI-reference</a></td> <td>An <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.</td>
-
- </tr>
- <tr valign="top">
- <td><a href="#literal">7.2.33</a> <a href="#literal">literal</a></td> <td>Any XML element content that is allowed according to
- <a href="#ref-xml">[XML]</a> definition <em>Content of Elements</em>
- Rule [43]
- <a href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-content">content</a>.
- in section
- <a href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-starttags">3.1 Start-Tags, End-Tags, and Empty-Element Tags</a></td>
-
- </tr>
- <tr valign="top">
- <td><a href="#rdf-id">7.2.34</a> <a href="#rdf-id">rdf-id</a></td> <td>An attribute <a href="#eventterm-attribute-string-value" class="termref"><span class="arrow">·</span>string-value<span class="arrow">·</span></a>
- matching any legal
- <a href="#ref-namespaces">[XML-NS]</a> token
- <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a></td>
-
- </tr>
- </table>
-
- </div></div>
- </section>
-
- <!-- grammar productions -->
- <section id="section-grammar-productions">
- <h3>Grammar Productions</h3>
-
- <!-- grammar start -->
- <section id="start">
- <h4>Grammar start</h4>
-
- <p>If the RDF/XML is a standalone XML document
- (identified by presentation as an
- application/rdf+xml <a href="#section-MIME-Type">RDF MIME type</a> object,
- or by some other means) then the grammar may start with
- production <a href="#doc">doc</a> or
- production <a href="#nodeElement">nodeElement</a>.</p>
-
- <p>If the content is known to be RDF/XML by context, such as when
- RDF/XML is embedded inside other XML content, then the grammar
- can either start
- at <a href="#section-element-node">Element Event</a> 
- <a href="#RDF">RDF</a>
- (only when an element is legal at that point in the XML)
- or at production <a href="#nodeElementList">nodeElementList</a>
- (only when element content is legal, since this is a list of elements).
- For such embedded RDF/XML, the
- <a href="#eventterm-element-base-uri" class="termref"><span class="arrow">·</span>base-uri<span class="arrow">·</span></a>
- value on the outermost element must be initialized from the containing
- XML since no
- <a href="#section-root-node">Root Event</a>  will be available.
- Note that if such embedding occurs, the grammar may be entered
- several times but no state is expected to be preserved.</p>
+ <!-- intro -->
+ <section id="section-Syntax-intro">
+ <h3>Introduction</h3>
+
+ <p>The
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a> <a href="#ref-rdf-concepts">[RDF-CONCEPTS]</a>
+ defines the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-data-model">RDF Graph data model</a> (Section 3.1)
+ and the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Graph-syntax">RDF Graph abstract syntax</a> (Section 6).
+ Along with the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/">RDF Semantics</a> <a href="#ref-rdf-semantics">[RDF-SEMANTICS]</a>
+
+ this provides an abstract syntax with a formal semantics for it.
+ The RDF graph has
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-node">nodes</a>
+ and labeled directed <em>arcs</em>
+ that link pairs of nodes and this is represented as a set of
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-triple">RDF triples</a>
+ where each triple contains a
+ <em>subject node</em>, <em>predicate</em> and <em>object node</em>.
+ Nodes are
+
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>,
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-literal">RDF literals</a>
+ or are <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">blank nodes</a>.
+ Blank nodes may be given
+ a document-local, non-<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> identifier called a
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a>.
+ Predicates are
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+ and can be interpreted as either a relationship between the two
+ nodes or as defining an attribute value (object node) for some
+ subject node.</p>
+
+ <p>In order to encode the graph in XML, the nodes and predicates have to be
+ represented in XML terms — element names, attribute names, element contents
+ and attribute values.
+ RDF/XML uses XML
+ <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-QName">QNames</a>
+ as defined in <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">Namespaces in XML</a> <a href="#ref-namespaces">[XML-NS]</a>
+ to represent
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>.
+ All QNames have a <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#dt-NSName">namespace name</a> which is a URI reference
+ and a short
+ <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-LocalPart">local name</a>.
+ In addition, QNames can either have a short
+
+ <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-Prefix">prefix</a>
+ or be declared with the default namespace declaration and have none (but
+ still have a namespace name)</p>
+
+ <p>The
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ represented by a QName is determined by appending the
+ <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-LocalPart">local name</a>
+ part of the QName after the
+ <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/#dt-NSName">namespace name</a> (URI reference) part of the QName.
+ This is used to shorten the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+
+ of all predicates and some nodes.
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> identifying
+ subject and object nodes can also be stored as XML attribute values.
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-literal">RDF literals</a>,
+ which can only be object nodes,
+ become either XML element text content or XML attribute values.</p>
+
+ <p>A graph can be considered a collection of paths of the form node,
+ predicate arc, node, predicate arc, node, predicate arc, ... node
+ which cover the entire graph. In RDF/XML these turn into sequences of
+ elements inside elements which alternate between elements for nodes
+ and predicate arcs. This has been called a series of node/arc
+ stripes. The node at the start of the sequence turns into the
+ outermost element, the next predicate arc turns into a child element,
+ and so on. The stripes generally start at the top of an RDF/XML
+ document and always begin with nodes.
+ </p>
+
+ <p>Several RDF/XML examples are given in the following sections
+ building up to complete RDF/XML documents. <a href="#example7">Example 7</a>
+ is the first complete RDF/XML document.</p>
+ </section>
+
+
+ <!-- node and property elements -->
+ <section id="section-Syntax-node-property-elements">
+ <h3>Node Elements and Property Elements</h3>
+
+
+ <div class="figure">
+ <img src="figure1.png" alt="Graph for RDF/XML Example" height="202" width="600" /><br />
+ <a id="figure1" name="figure1">Figure 1: Graph for RDF/XML Example</a> (<a href="figure1.svg">SVG version</a>)
+ </div>
+
+ <p>An RDF graph is given in <a href="#figure1">Figure 1</a>
+
+ where the nodes are represented as ovals and contain their
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+ where they have them, all the predicate arcs are labeled with
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+ and
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal">plain literal</a>
+ nodes have been written in rectangles.</p>
+
+
+ <p>If we follow one node, predicate arc ... , node path through the
+ graph shown in <a href="#figure2">Figure 2</a>:
+ </p>
+
+ <div class="figure">
+ <img src="figure2.png" alt="One Path Through the Graph" height="212" width="600" /><br />
+ <a id="figure2" name="figure2">Figure 2: One Path Through the Graph</a> (<a href="figure2.svg">SVG version</a>)
+ </div>
+
+ <p>The left hand side of the <a href="#figure2">Figure 2</a> graph corresponds to the node/predicate arc stripes:</p>
+
+ <ol>
+
+ <li>Node with <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <code>http://www.w3.org/TR/rdf-syntax-grammar</code></li>
+ <li>Predicate Arc labeled with <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <code>http://example.org/terms/editor</code></li>
+ <li>Node with no <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a></li>
+ <li>Predicate Arc labeled with <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <code>http://example.org/terms/homePage</code></li>
+
+ <li>Node with <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <code>http://purl.org/net/dajobe/</code></li>
+ </ol>
+
+ <p>In RDF/XML, the sequence of 5 nodes and predicate arcs on
+ the left hand side of <a href="#figure2">Figure 2</a> corresponds to
+ the usage of five XML elements of two types, for the graph nodes and
+ predicate arcs. These are conventionally called <em>node elements</em> and
+ <em>property elements</em> respectively. In the striping shown in
+
+ <a href="#example1">Example 1</a>, <code>rdf:Description</code> is the
+ node element (used three times for the three nodes) and
+ <code>ex:editor</code> and <code>ex:homePage</code> are the two
+ property elements.
+ </p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example1" name="example1">Example 1: Striped RDF/XML (<span class="nodeStripe">nodes</span> and <span class="arcStripe">predicate arcs</span>)</a></div>
+
+ <div class="exampleInner">
+ <div class="preExample">
+ <code>
+ <span class="nodeStripe"><rdf:Description></span><br />
+ <span class="arcStripe"><ex:editor></span><br />
+ <span class="nodeStripe"><rdf:Description></span><br />
+ <span class="arcStripe"><ex:homePage></span><br />
+ <span class="nodeStripe"><rdf:Description></span><br />
+ <span class="nodeStripe"></rdf:Description></span><br />
+ <span class="arcStripe"></ex:homePage></span><br />
+
+ <span class="nodeStripe"></rdf:Description></span><br />
+ <span class="arcStripe"></ex:editor></span><br />
+ <span class="nodeStripe"></rdf:Description></span><br />
+ </code>
+ </div>
+ </div>
+ </div>
+
+ <p>The <a href="#figure2">Figure 2</a> graph consists of some nodes
+ that are
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+
+ (and others that are not) and this can be added
+ to the RDF/XML using the <code>rdf:about</code> attribute on node
+ elements to give the result in <a href="#example2">Example 2</a>:</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example2" name="example2">Example 2: Node Elements with RDF URI references added</a></div>
+ <div class="exampleInner">
+ <pre>
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
+ <ex:editor>
+
+ <rdf:Description>
+ <ex:homePage>
+ <rdf:Description rdf:about="http://purl.org/net/dajobe/">
+ </rdf:Description>
+ </ex:homePage>
+ </rdf:Description>
+
+ </ex:editor>
+ </rdf:Description>
+
+ </pre>
+ </div>
+ </div>
+
+ <p>Adding the other two paths through the <a href="#figure1">Figure 1</a>
+ graph to the RDF/XML in
+ <a href="#example2">Example 2</a>
+ gives the result in <a href="#example3">Example 3</a>
+
+ (this example fails to show that the blank node is
+ shared between the two paths, see
+ <a href="#section-Syntax-blank-nodes">2.10</a>):</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example3" name="example3">Example 3: Complete description of all graph paths</a></div>
+ <div class="exampleInner">
+ <pre>
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
+ <ex:editor>
+ <rdf:Description>
+
+ <ex:homePage>
+ <rdf:Description rdf:about="http://purl.org/net/dajobe/">
+ </rdf:Description>
+ </ex:homePage>
+ </rdf:Description>
+ </ex:editor>
+
+ </rdf:Description>
+
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
+ <ex:editor>
+ <rdf:Description>
+ <ex:fullName>Dave Beckett</ex:fullName>
+ </rdf:Description>
+
+ </ex:editor>
+ </rdf:Description>
+
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
+ <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
+ </rdf:Description>
+
+ </pre>
+
+ </div>
+ </div>
+ </section>
+
+ <!-- multiple properties -->
+ <section id="section-Syntax-multiple-property-elements" >
+ <h3>Multiple Property Elements</h3>
+
+ <p>There are several abbreviations that can be used to make common
+ uses easier to write down. In particular, it is common that a
+ subject node in the RDF graph has multiple outgoing predicate arcs. RDF/XML
+ provides an abbreviation for the corresponding syntax when a node
+ element about a resource has multiple property elements. This can be
+ abbreviated by using multiple child property elements inside the node
+ element describing the subject node.</p>
+
+ <p>Taking <a href="#example3">Example 3</a>, there are
+ two node elements that can take multiple property elements.
+ The subject node with URI reference
+ <code>http://www.w3.org/TR/rdf-syntax-grammar</code>
+ has property elements <code>ex:editor</code> and <code>ex:title</code>
+
+ and the node element for the blank node can take <code>ex:homePage</code>
+ and <code>ex:fullName</code>. This abbreviation
+ gives the result shown in <a href="#example4">Example 4</a>
+ (this example does show that there is a single blank node):</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example4" name="example4">Example 4: Using multiple property elements on a node element</a></div>
+ <div class="exampleInner">
+ <pre>
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
+
+ <ex:editor>
+ <rdf:Description>
+ <ex:homePage>
+ <rdf:Description rdf:about="http://purl.org/net/dajobe/">
+ </rdf:Description>
+ </ex:homePage>
+
+ <ex:fullName>Dave Beckett</ex:fullName>
+ </rdf:Description>
+ </ex:editor>
+ <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
+ </rdf:Description>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- empty property elements -->
+ <section id="section-Syntax-empty-property-elements">
+ <h3>Empty Property Elements</h3>
+
+ <p>When a predicate arc in an RDF graph points to an object node which has no
+ further predicate arcs, which appears in RDF/XML as an empty node element
+ <code><rdf:Description rdf:about="..."></code>
+ <code></rdf:Description></code>
+ (or <code><rdf:Description rdf:about="..." /></code>)
+ this form can be shortened. This is done by using the
+
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ of the object node as the value of an XML attribute <code>rdf:resource</code>
+ on the containing property element and making the property element empty.
+ </p>
+
+ <p>In this example, the property element <code>ex:homePage</code>
+ contains an empty node element with the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ <code>http://purl.org/net/dajobe/</code>. This can be replaced with
+ the empty property element form giving the result shown in
+ <a href="#example5">Example 5</a>:</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example5" name="example5">Example 5: Empty property elements</a></div>
+ <div class="exampleInner">
+ <pre>
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
+ <ex:editor>
+ <rdf:Description>
+ <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
+
+ <ex:fullName>Dave Beckett</ex:fullName>
+ </rdf:Description>
+ </ex:editor>
+ <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
+ </rdf:Description>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- empty property attributes -->
+ <section id="section-Syntax-property-attributes">
+ <h3>Property Attributes</h3>
+
+ <p>When a property element's content is string literal,
+ it may be possible to use it as an XML attribute on the
+ containing node element.
+ This can be done for multiple properties on the same node element
+ only if the property element name is not repeated
+ (required by XML — attribute names are unique on an XML element)
+ and any in-scope <code>xml:lang</code> on the
+ property element's string literal (if any) are the same (see <a href="#section-Syntax-languages">Section 2.7</a>)
+ This abbreviation is known as a <em>Property Attribute</em>
+
+ and can be applied to any node element.</p>
+
+ <p>This abbreviation can also be used when the property element is
+ <code>rdf:type</code> and it has an <code>rdf:resource</code> attribute
+ the value of which is interpreted as a
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> object node.</p>
+
+ <p>In <a href="#example5">Example 5</a>:,
+ there are two property elements with string literal content,
+ the <code>dc:title</code> and <code>ex:fullName</code>
+
+ property elements. These can be replaced with property attributes
+ giving the result shown in <a href="#example6">Example 6</a>:</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example6" name="example6">Example 6: Replacing property elements with string literal content into property attributes</a></div>
+ <div class="exampleInner">
+ <pre>
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
+ dc:title="RDF/XML Syntax Specification (Revised)">
+ <ex:editor>
+ <rdf:Description ex:fullName="Dave Beckett">
+
+ <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
+ </rdf:Description>
+ </ex:editor>
+ </rdf:Description>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- complete rdf/xml document -->
+ <section id="section-Syntax-complete-document">
+ <h3>Completing the Document: Document Element and XML Declaration</h3>
+
+ <p>To create a complete RDF/XML document, the serialization of the
+ graph into XML is usually contained inside an <code>rdf:RDF</code>
+ XML element which becomes the top-level XML document element.
+ Conventionally the <code>rdf:RDF</code> element is also used to
+ declare the XML namespaces that are used, although that is not
+ required. When there is only one top-level node element inside
+ <code>rdf:RDF</code>, the <code>rdf:RDF</code> can be omitted
+ although any XML namespaces must still be declared.</p>
+
+ <p>The XML specification also permits an XML declaration at
+ the top of the document with the XML version and possibly the XML
+ content encoding. This is optional but recommended.</p>
+
+ <p>Completing the RDF/XML could be done for any of the correct
+ complete graph examples from
+ <a href="#example4">Example 4</a> onwards but taking the smallest
+ <a href="#example6">Example 6</a> and adding the final components,
+ gives a complete RDF/XML representation of the original
+ <a href="#figure1">Figure 1</a> graph
+ in <a href="#example7">Example 7</a>:</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example7" name="example7">Example 7: Complete RDF/XML description of Figure 1 graph</a> (<a href="example07.rdf">example07.rdf</a> output <a href="example07.nt">example07.nt</a>)</div>
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:ex="http://example.org/stuff/1.0/">
+
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
+ dc:title="RDF/XML Syntax Specification (Revised)">
+ <ex:editor>
+ <rdf:Description ex:fullName="Dave Beckett">
+ <ex:homePage rdf:resource="http://purl.org/net/dajobe/" />
+ </rdf:Description>
+ </ex:editor>
+
+ </rdf:Description>
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+
+ <p>It is possible to omit <code>rdf:RDF</code> in
+ <a href="#example7">Example 7</a> above since there is only one
+
+ <code>rdf:Description</code> inside <code>rdf:RDF</code> but this
+ is not shown here.</p>
+ </section>
+
+ <!-- language attribute -->
+ <section id="section-Syntax-languages">
+ <h3>Languages: <code>xml:lang</code></h3>
+
+ <p>RDF/XML permits the use of the <code>xml:lang</code> attribute as defined by
+
+ <a href="http://www.w3.org/TR/REC-xml#sec-lang-tag">2.12 Language Identification</a>
+ of <a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML 1.0</a> <a href="#ref-xml">[XML]</a>
+ to allow the identification of content language.
+ The <code>xml:lang</code> attribute can be used on any node element or property element
+ to indicate that the included content is in the given language.
+ <a href="#section-Syntax-datatyped-literals">Typed literals</a>
+ which includes <a href="#section-Syntax-XML-literals">XML literals</a>
+ are not affected by this attribute.
+ The most specific in-scope language present
+ (if any) is applied to property element string literal content or
+ property attribute values. The <code>xml:lang=""</code> form
+ indicates the absence of a language identifier.</p>
+
+ <p>Some examples of marking content languages for RDF properties are shown in
+ <a href="#example8">Example 8</a>:</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example8" name="example8">Example 8: Complete example of <code>xml:lang</code></a> (<a href="example08.rdf">example08.rdf</a> output <a href="example08.nt">example08.nt</a>)</div>
+
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0" encoding="utf-8"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/">
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar">
+ <dc:title>RDF/XML Syntax Specification (Revised)</dc:title>
+ <dc:title xml:lang="en">RDF/XML Syntax Specification (Revised)</dc:title>
+
+ <dc:title xml:lang="en-US">RDF/XML Syntax Specification (Revised)</dc:title>
+ </rdf:Description>
+
+ <rdf:Description rdf:about="http://example.org/buecher/baum" xml:lang="de">
+ <dc:title>Der Baum</dc:title>
+
+ <dc:description>Das Buch ist außergewöhnlich</dc:description>
+ <dc:title xml:lang="en">The Tree</dc:title>
+ </rdf:Description>
+ </rdf:RDF>
+
+ </pre>
+
+ </div>
+ </div>
+ </section>
+
+ <!-- XML Literal -->
+ <section id="section-Syntax-XML-literals">
+ <h3>XML Literals: <code>rdf:parseType="Literal"</code></h3>
+
+ <p>RDF allows
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-XMLLiteral">XML literals</a>
+ (<a href="#ref-rdf-concepts">[RDF-CONCEPTS]</a> Section 5, <cite>XML Content within an RDF graph</cite>)
+ to be given as the object node of a predicate.
+ These are written in RDF/XML as content of a property element (not
+ a property attribute) and indicated using the
+
+ <code>rdf:parseType="Literal"</code> attribute on the containing
+ property element.
+ </p>
+
+
+ <p>An example of writing an XML literal is given in
+ <a href="#example9">Example 9</a> where
+ there is a single RDF triple with the subject node
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ <code>http://example.org/item01</code>, the predicate
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ <code>http://example.org/stuff/1.0/prop</code> (from
+
+ <code>ex:prop</code>) and the object node with XML literal
+ content beginning <code>a:Box</code>.
+ </p>
+
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example9" name="example9">Example 9: Complete example of <code>rdf:parseType="Literal"</code></a> (<a href="example09.rdf">example09.rdf</a> output <a href="example09.nt">example09.nt</a>)</div>
+
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/stuff/1.0/">
+ <rdf:Description rdf:about="http://example.org/item01">
+ <ex:prop rdf:parseType="Literal"
+ xmlns:a="http://example.org/a#"><a:Box required="true">
+ <a:widget size="10" />
+ <a:grommit id="23" /></a:Box>
+
+ </ex:prop>
+ </rdf:Description>
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- datatyped literals -->
+ <section id="section-Syntax-datatyped-literals">
+ <h3>Typed Literals: <code>rdf:datatype</code></h3>
+
+ <p>RDF allows
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-typed-literal">typed literals</a>
+ to be given as the object node of a predicate. Typed literals consist of a literal
+ string and a datatype
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>. These are written in RDF/XML using
+ the same syntax for literal string nodes in the property element form
+ (not property attribute) but with an additional
+ <code>rdf:datatype="</code><em>datatypeURI</em><code>"</code>
+ attribute on the property element. Any
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> can be used in the attribute.
+ </p>
+
+ <p>An example of an RDF
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-typed-literal">typed literal</a>
+ is given in <a href="#example10">Example 10</a> where
+ there is a single RDF triple with the subject node
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ <code>http://example.org/item01</code>, the predicate
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ <code>http://example.org/stuff/1.0/size</code> (from
+ <code>ex:size</code>) and the object node with the
+
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-typed-literal">typed literal</a>
+ ("123", <code>http://www.w3.org/2001/XMLSchema#int</code>)
+ to be interpreted as an
+ <a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">W3C XML Schema</a>
+ <a href="#ref-xml-schema2">[XML-SCHEMA2]</a> datatype int.
+ </p>
+
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example10" name="example10">Example 10: Complete example of <code>rdf:datatype</code></a> (<a href="example10.rdf">example10.rdf</a> output <a href="example10.nt">example10.nt</a>)</div>
+
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/stuff/1.0/">
+ <rdf:Description rdf:about="http://example.org/item01">
+ <ex:size rdf:datatype="http://www.w3.org/2001/XMLSchema#int">123</ex:size>
+ </rdf:Description>
+
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- blank nodes -->
+ <section id="section-Syntax-blank-nodes">
+ <h3>Identifying Blank Nodes: <code>rdf:nodeID</code></h3>
+
+ <p><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">Blank nodes</a> in the RDF graph are distinct but have no
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> identifier.
+ It is sometimes required that the same graph <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">blank node</a> is referred to in the
+ RDF/XML in multiple places, such as at the subject and object
+ of several RDF triples. In this case, a <em><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a></em>
+
+ can be given to the <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">blank node</a> for identifying it
+ in the document. Blank node identifiers in RDF/XML are scoped to the
+ containing XML Information Set
+ <a href="http://www.w3.org/TR/xml-infoset/#infoitem.document">document information item</a>.
+ A <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a> is used
+ on a node element to replace
+ <code>rdf:about="</code><em>RDF URI reference</em><code>"</code>
+ or on a property element to replace
+ <code>rdf:resource="</code><em>RDF URI reference</em><code>"</code>
+
+ with <code>rdf:nodeID="</code><em><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a></em><code>"</code>
+ in both cases.</p>
+
+ <p>Taking <a href="#example7">Example 7</a> and explicitly giving
+ a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a> of <code>abc</code> to the blank node in it
+ gives the result shown in <a href="#example11">Example 11</a>.
+ The second <code>rdf:Description</code> property element is
+ about the blank node.</p>
+
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example11" name="example11">Example 11: Complete RDF/XML description of graph using <code>rdf:nodeID</code> identifying the blank node</a> (<a href="example11.rdf">example11.rdf</a> output <a href="example11.nt">example11.nt</a>)</div>
+ <div class="exampleInner">
+ <pre>
+
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:ex="http://example.org/stuff/1.0/">
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
+ dc:title="RDF/XML Syntax Specification (Revised)">
+ <ex:editor rdf:nodeID="abc"/>
+ </rdf:Description>
+
+ <rdf:Description rdf:nodeID="abc"
+ ex:fullName="Dave Beckett">
+
+ <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
+ </rdf:Description>
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- parsetype resource -->
+ <section id="section-Syntax-parsetype-resource">
+ <h3>Omitting Blank Nodes: <code>rdf:parseType="Resource"</code></h3>
+
+ <p><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">Blank nodes</a> (not <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> nodes) in RDF graphs can be written
+ in a form that allows the
+ <code><rdf:Description></code>
+ <code></rdf:Description></code> pair to be omitted.
+ The omission is done by putting an
+ <code>rdf:parseType="Resource"</code>
+ attribute on the containing property element
+ that turns the property element into a property-and-node element,
+ which can itself have both property elements and property attributes.
+ Property attributes and the <code>rdf:nodeID</code> attribute
+ are not permitted on property-and-node elements.
+
+ </p>
+
+ <p>Taking the earlier <a href="#example7">Example 7</a>,
+ the contents of the <code>ex:editor</code> property element
+ could be alternatively done in this fashion to give
+ the form shown in <a href="#example12">Example 12</a>:</p>
+
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example12" name="example12">Example 12: Complete example using <code>rdf:parseType="Resource"</code></a> (<a href="example12.rdf">example12.rdf</a> output <a href="example12.nt">example12.nt</a>)</div>
+
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:ex="http://example.org/stuff/1.0/">
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
+ dc:title="RDF/XML Syntax Specification (Revised)">
+ <ex:editor rdf:parseType="Resource">
+ <ex:fullName>Dave Beckett</ex:fullName>
+
+ <ex:homePage rdf:resource="http://purl.org/net/dajobe/"/>
+ </ex:editor>
+ </rdf:Description>
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- attributes on property elements -->
+ <section id="section-Syntax-property-attributes-on-property-element">
+ <h3>Omitting Nodes: Property Attributes on an empty Property Element</h3>
+
+ <p>If all of the property elements on a blank node element have
+ string literal values with the same in-scope <code>xml:lang</code>
+ value (if present) and each of these property elements appears at
+ most once and there is at most one <code>rdf:type</code> property
+ element with a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> object node, these can be abbreviated by
+ moving them to be property attributes on the containing property
+ element which is made an empty element.</p>
+
+ <p>Taking the earlier <a href="#example5">Example 5</a>,
+ the <code>ex:editor</code> property element contains a
+ blank node element with two property elements
+
+ <code>ex:fullname</code> and <code>ex:homePage</code>.
+ <code>ex:homePage</code> is not suitable here since it
+ does not have a string literal value, so it is being
+ <em>ignored</em> for the purposes of this example.
+ The abbreviated form removes the <code>ex:fullName</code> property element
+ and adds a new property attribute <code>ex:fullName</code> with the
+ string literal value of the deleted property element
+ to the <code>ex:editor</code> property element.
+ The blank node element becomes implicit in the now empty
+
+ <code>ex:editor</code> property element. The result is shown in
+ <a href="#example13">Example 13</a>.</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example13" name="example13">Example 13: Complete example of property attributes on an empty property element</a> (<a href="example13.rdf">example13.rdf</a> output <a href="example13.nt">example13.nt</a>)</div>
+
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:ex="http://example.org/stuff/1.0/">
+ <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"
+ dc:title="RDF/XML Syntax Specification (Revised)">
+ <ex:editor ex:fullName="Dave Beckett" />
+ <!-- Note the ex:homePage property has been ignored for this example -->
+ </rdf:Description>
+
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- typed nodes -->
+ <section id="section-Syntax-typed-nodes">
+ <h3>Typed Node Elements</h3>
+
+ <p>It is common for RDF graphs to have <code>rdf:type</code> predicates
+ from subject nodes. These are conventionally called <em>typed
+ nodes</em> in the graph, or <em>typed node elements</em> in the
+ RDF/XML. RDF/XML allows this triple to be expressed more concisely.
+ by replacing the <code>rdf:Description</code> node element name with
+ the namespaced-element corresponding to the
+
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> of the value of
+ the type relationship. There may, of course, be multiple <code>rdf:type</code>
+ predicates but only one can be used in this way, the others must remain as
+ property elements or property attributes.
+ </p>
+
+ <p>The typed node elements are commonly used in RDF/XML with the built-in
+ classes in the <a href="#section-Namespace">RDF vocabulary</a>:
+ <code>rdf:Seq</code>, <code>rdf:Bag</code>, <code>rdf:Alt</code>,
+
+ <code>rdf:Statement</code>, <code>rdf:Property</code> and
+ <code>rdf:List</code>.</p>
+
+ <p>For example, the RDF/XML in <a href="#example14">Example 14</a>
+ could be written as shown in <a href="#example15">Example 15</a>.</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example14" name="example14">Example 14: Complete example with <code>rdf:type</code></a> (<a href="example14.rdf">example14.rdf</a> output <a href="example14.nt">example14.nt</a>)</div>
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:ex="http://example.org/stuff/1.0/">
+
+ <rdf:Description rdf:about="http://example.org/thing">
+ <rdf:type rdf:resource="http://example.org/stuff/1.0/Document"/>
+ <dc:title>A marvelous thing</dc:title>
+ </rdf:Description>
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example15" name="example15">Example 15: Complete example using a typed node element to replace an <code>rdf:type</code></a> (<a href="example15.rdf">example15.rdf</a> output <a href="example15.nt">example15.nt</a>)</div>
+ <div class="exampleInner">
+ <pre>
+
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:ex="http://example.org/stuff/1.0/">
+ <ex:Document rdf:about="http://example.org/thing">
+ <dc:title>A marvelous thing</dc:title>
+ </ex:Document>
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- xml base -->
+ <section id="section-Syntax-ID-xml-base">
+ <h3>Abbreviating URIs: <code>rdf:ID</code> and <code>xml:base</code></h3>
+
+ <p>RDF/XML allows further abbreviating <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> in XML attributes in two
+ ways. The XML Infoset provides a base URI attribute <code>xml:base</code>
+
+ that sets the base URI for resolving relative <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>, otherwise the base URI is that of the document. The base URI applies to
+ all RDF/XML attributes that deal with <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> which are <code>rdf:about</code>,
+ <code>rdf:resource</code>, <code>rdf:ID</code>
+ and <code>rdf:datatype</code>.</p>
+
+ <p>The <code>rdf:ID</code> attribute on a node element (not property
+ element, that has another meaning) can be used instead of
+ <code>rdf:about</code> and gives a relative <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> equivalent to <code>#</code>
+ concatenated with the <code>rdf:ID</code> attribute value. So for
+ example if <code>rdf:ID="name"</code>, that would be equivalent
+ to <code>rdf:about="#name"</code>. <code>rdf:ID</code> provides an additional
+ check since the same <em>name</em> can only appear once in the
+ scope of an <code>xml:base</code> value (or document, if none is given),
+ so is useful for defining a set of distinct,
+ related terms relative to the same <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.</p>
+
+ <p>Both forms require a base URI to be known, either from an in-scope
+ <code>xml:base</code> or from the URI of the RDF/XML document.</p>
+
+ <p><a href="#example16">Example 16</a> shows abbreviating the node
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> of <code>http://example.org/here/#snack</code> using an
+ <code>xml:base</code> of <code>http://example.org/here/</code> and
+ an <code>rdf:ID</code> on the <code>rdf:Description</code> node element.
+ The object node of the <code>ex:prop</code> predicate is an
+ absolute <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+
+ resolved from the <code>rdf:resource</code> XML attribute value
+ using the in-scope base URI to give the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ <code>http://example.org/here/fruit/apple</code>.</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example16" name="example16">Example 16: Complete example using <code>rdf:ID</code> and <code>xml:base</code> for shortening URIs </a> (<a href="example16.rdf">example16.rdf</a> output <a href="example16.nt">example16.nt</a>)</div>
+
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/stuff/1.0/"
+ xml:base="http://example.org/here/">
+ <rdf:Description rdf:ID="snack">
+ <ex:prop rdf:resource="fruit/apple"/>
+ </rdf:Description>
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- list elements -->
+ <section id="section-Syntax-list-elements">
+ <h3>Container Membership Property Elements: <code>rdf:li</code> and <code>rdf:_</code><em>n</em></h3>
+
+ <p>RDF has a set of container membership properties
+ and corresponding property elements that are mostly used with
+ instances of the
+ <code>rdf:Seq</code>, <code>rdf:Bag</code> and <code>rdf:Alt</code>
+
+ classes which may be written as typed node elements. The list properties are
+ <code>rdf:_1</code>, <code>rdf:_2</code> etc. and can be written
+ as property elements or property attributes as shown in
+ <a href="#example17">Example 17</a>. There is an <code>rdf:li</code>
+ special property element that is equivalent to
+ <code>rdf:_1</code>, <code>rdf:_2</code> in order,
+ explained in detail in <a href="#section-List-Expand">section 7.4</a>.
+ The mapping to the container membership properties is
+ always done in the order that the <code>rdf:li</code> special
+ property elements appear in XML — the document order is significant.
+ The equivalent RDF/XML to <a href="#example17">Example 17</a> written
+ in this form is shown in <a href="#example18">Example 18</a>.
+
+ </p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example17" name="example17">Example 17: Complex example using RDF list properties</a> (<a href="example17.rdf">example17.rdf</a> output <a href="example17.nt">example17.nt</a>)</div>
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+
+ <rdf:Seq rdf:about="http://example.org/favourite-fruit">
+ <rdf:_1 rdf:resource="http://example.org/banana"/>
+ <rdf:_2 rdf:resource="http://example.org/apple"/>
+ <rdf:_3 rdf:resource="http://example.org/pear"/>
+ </rdf:Seq>
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example18" name="example18">Example 18: Complete example using <code>rdf:li</code> property element for list properties</a> (<a href="example18.rdf">example18.rdf</a> output <a href="example18.nt">example18.nt</a>)</div>
+
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <rdf:Seq rdf:about="http://example.org/favourite-fruit">
+ <rdf:li rdf:resource="http://example.org/banana"/>
+ <rdf:li rdf:resource="http://example.org/apple"/>
+ <rdf:li rdf:resource="http://example.org/pear"/>
+
+ </rdf:Seq>
+ </rdf:RDF>
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- parsetype collection -->
+ <section id="section-Syntax-parsetype-Collection">
+ <h3>Collections: <code>rdf:parseType="Collection"</code></h3>
+
+ <p>RDF/XML allows an <code>rdf:parseType="Collection"</code>
+
+ attribute on a property element to let it contain multiple node
+ elements. These contained node elements give the set of subject
+ nodes of the collection. This syntax form corresponds to a set of
+ triples connecting the collection of subject nodes, the exact triples
+ generated are described in detail in
+ <a href="#parseTypeCollectionPropertyElt">Section 7.2.19 Production parseTypeCollectionPropertyElt</a>.
+ The collection construction is always done in the order that the node
+ elements appear in the XML document. Whether the order of the
+ collection of nodes is significant is an application issue and not
+ defined here.
+ </p>
+
+ <p><a href="#example19">Example 19</a> shows a collection of three
+ nodes elements at the end of the <code>ex:hasFruit</code>
+ property element using this form.</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example19" name="example19">Example 19: Complete example of a RDF collection of nodes using <code>rdf:parseType="Collection"</code></a> (<a href="example19.rdf">example19.rdf</a> output <a href="example19.nt">example19.nt</a>)</div>
+
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/stuff/1.0/">
+ <rdf:Description rdf:about="http://example.org/basket">
+ <ex:hasFruit rdf:parseType="Collection">
+ <rdf:Description rdf:about="http://example.org/banana"/>
+ <rdf:Description rdf:about="http://example.org/apple"/>
+
+ <rdf:Description rdf:about="http://example.org/pear"/>
+ </ex:hasFruit>
+ </rdf:Description>
+ </rdf:RDF>
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- reification -->
+ <section id="section-Syntax-reifying">
+ <h3>Reifying Statements: <code>rdf:ID</code></h3>
+
+ <p>The <code>rdf:ID</code> attribute can be used on a property
+ element to reify the triple that it generates (See
+ <a href="#section-Reification">section 7.3 Reification Rules</a> for the
+ full details).
+ The identifier for the triple should be constructed as a
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ made from the relative URI reference
+ <code>#</code> concatenated with the <code>rdf:ID</code> attribute
+ value, resolved against the in-scope base URI. So for example if
+
+ <code>rdf:ID="triple"</code>, that would be equivalent to the <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ formed from relative URI reference <code>#triple</code> against the base URI.
+ Each (<code>rdf:ID</code> attribute value, base URI)
+ pair has to be unique in an RDF/XML document,
+ see <a href="#constraint-id">constraint-id</a>.
+ </p>
+
+ <p><a href="#example20">Example 20</a> shows a <code>rdf:ID</code>
+
+ being used to reify a triple made from the <code>ex:prop</code>
+ property element giving the reified triple the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <code>http://example.org/triples/#triple1</code>.</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example20" name="example20">Example 20: Complete example of <code>rdf:ID</code> reifying a property element</a> (<a href="example20.rdf">example20.rdf</a> output <a href="example20.nt">example20.nt</a>)</div>
+
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0"?>
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:ex="http://example.org/stuff/1.0/"
+ xml:base="http://example.org/triples/">
+ <rdf:Description rdf:about="http://example.org/">
+ <ex:prop rdf:ID="triple1">blah</ex:prop>
+ </rdf:Description>
+
+ </rdf:RDF>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
</section>
-
- <!-- /////////////////////////////////////////////////////////////////////////////////////////////// STOPED HERE //////// -->
-
- <h4><a id="coreSyntaxTerms" name="coreSyntaxTerms">7.2.2 Production coreSyntaxTerms</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- <code>rdf:RDF</code> | <code>rdf:ID</code> | <code>rdf:about</code> | <code>rdf:parseType</code> | <code>rdf:resource</code> | <code>rdf:nodeID</code> | <code>rdf:datatype</code>
-
- </p></div></div>
-
- <p>A subset of the syntax terms from the RDF vocabulary in
- <a href="#section-Namespace">section 5.1</a>
- which are used in RDF/XML.
- </p>
-
- <h4><a id="syntaxTerms" name="syntaxTerms">7.2.3 Production syntaxTerms</a></h4>
- <div class="productionOuter"><div class="productionInner"><p>
- <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <code>rdf:li</code>
-
- </p></div></div>
-
- <p>All the syntax terms from the RDF vocabulary in
- <a href="#section-Namespace">section 5.1</a>
- which are used in RDF/XML.
- </p>
-
-
- <h4><a id="bagIdAttr" name="bagIdAttr"></a><a id="section-Bag-Expand" name="section-Bag-Expand"></a><a id="oldTerms" name="oldTerms">7.2.4 Production oldTerms</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- <code>rdf:aboutEach</code> | <code>rdf:aboutEachPrefix</code> | <code>rdf:bagID</code>
-
- </p></div></div>
-
- <p>These are the names from the <a href="#section-Namespace">RDF vocabulary</a>
- that have been withdrawn from the language. See the resolutions of
- Issue <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-aboutEach-on-object">rdfms-aboutEach-on-object</a>,
- Issue <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-abouteachprefix">rdfms-abouteachprefix</a> and
- Last Call Issue <a href="http://www.w3.org/2001/sw/RDFCore/20030123-issues/#timbl-01">timbl-01</a>
- for further information.
- </p>
-
- <div class="note"><p><strong>Error Test:</strong>
-
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-abouteach/error001.rdf">error001.rdf</a> and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-abouteach/error002.rdf">error002.rdf</a>
- </p></div>
-
-
- <h4><a id="nodeElementURIs" name="nodeElementURIs">7.2.5 Production nodeElementURIs</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- <a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:li</code> | <a href="#oldTerms">oldTerms</a> )
-
- </p></div></div>
-
- <p>The <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> that are allowed on node elements.</p>
-
-
- <h4><a id="propertyElementURIs" name="propertyElementURIs">7.2.6 Production propertyElementURIs</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- <a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <a href="#oldTerms">oldTerms</a> )
-
- </p></div></div>
-
- <p>The URIs that are allowed on property elements.</p>
-
-
- <h4><a id="propertyAttributeURIs" name="propertyAttributeURIs">7.2.7 Production propertyAttributeURIs</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- <a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <code>rdf:li</code> | <a href="#oldTerms">oldTerms</a> )
-
- </p></div></div>
-
- <p>The <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> that are allowed on property attributes.</p>
-
-
- <h4><a id="doc" name="doc">7.2.8 Production doc</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- root(<a href="#eventterm-root-document-element">document-element</a> == <a href="#RDF">RDF</a>,<br />
-
-     <a href="#eventterm-root-children">children</a> == list(<a href="#RDF">RDF</a>))
- </p></div></div>
-
-
- <h4><a id="RDF" name="RDF">7.2.9 Production RDF</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- start-element(<a href="#eventterm-element-URI">URI</a> == <code>rdf:RDF</code>,<br />
-
-     <a href="#eventterm-element-attributes">attributes</a> == set())<br />
- <a href="#nodeElementList">nodeElementList</a><br />
- end-element()
- </p></div></div>
-
-
- <h4><a id="nodeElementList" name="nodeElementList">7.2.10 Production nodeElementList</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- <a href="#ws">ws</a>* (<a href="#nodeElement">nodeElement</a> <a href="#ws">ws</a>* )*
-
- </p></div></div>
-
-
- <h4><a id="description" name="description"></a><a id="typedNode" name="typedNode"></a>
- <a id="nodeElement" name="nodeElement">7.2.11 Production nodeElement</a></h4>
-
-
- <div class="productionOuter"><div class="productionInner"><p>
- start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#nodeElementURIs">nodeElementURIs</a><br />
-     <a href="#eventterm-element-attributes">attributes</a> == set((<a href="#idAttr">idAttr</a> | <a href="#nodeIdAttr">nodeIdAttr</a> | <a href="#aboutAttr">aboutAttr</a> )?, <a href="#propertyAttr">propertyAttr</a>*))<br />
-
- <a href="#propertyEltList">propertyEltList</a><br />
- end-element()
- </p></div></div>
-
- <p>For node element <em>e</em>, the processing of some of the attributes
- has to be done before other work such as dealing with children events
- or other attributes. These can be processed in any order:</p>
-
- <ul>
-
- <li>If there is an attribute <em>a</em> with
- <em>a</em>.<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:ID</code>, then
-
- <em>e</em>.<a href="#eventterm-element-subject">subject</a> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>))).</li>
-
- <li>If there is an attribute <em>a</em> with
- <em>a</em>.<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:nodeID</code>, then
-
- <em>e</em>.<a href="#eventterm-element-subject">subject</a> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a>:=<em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>).</li>
-
- <li>If there is an attribute <em>a</em> with
-
- <em>a</em>.<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:about</code> then
- <em>e</em>.<a href="#eventterm-element-subject">subject</a> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)).</li>
-
- </ul>
-
- <p>If <em>e</em>.<a href="#eventterm-element-subject">subject</a> is empty,
- then <em>e</em>.<a href="#eventterm-element-subject">subject</a> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a> := generated-blank-node-id()).</p>
-
-
- <p>The following can then be performed in any order:</p>
-
- <ul>
-
- <li><a id="nodeElementStatement1" name="nodeElementStatement1"></a> If <em>e</em>.<a href="#eventterm-element-URI">URI</a> != <code>rdf:Description</code>
- then the following statement is added to the graph:
-
-
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>e</em>.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> .</code>
- </p></div></div>
- </li>
-
- <li><a id="nodeElementStatement2" name="nodeElementStatement2"></a> If there is an attribute <em>a</em>
- in <a href="#propertyAttr">propertyAttr</a> with
- <em>a</em>.<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:type</code>
- then
-
- <em>u</em>:=uri(identifier:=resolve(<em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>))
- and the following tiple is added to the graph:
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>e</em>.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <em>u</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
-
- </p></div></div>
- </li>
-
- <li><a id="nodeElementStatement3" name="nodeElementStatement3"></a> For each attribute <em>a</em> matching
- <a href="#propertyAttr">propertyAttr</a> (and not <code>rdf:type</code>),
- the Unicode string
- <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>
-
- SHOULD be in Normal Form C<a href="#ref-nfc">[NFC]</a>,
- <em>o</em> := literal(<a href="#eventterm-literal-literal-value">literal-value</a> := <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>, <a href="#eventterm-literal-literal-language">literal-language</a> := <em>e</em>.<a href="#eventterm-element-language">language</a>)
- and the following statement is added to the graph:
-
-
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>e</em>.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>a</em>.<a href="#eventterm-attribute-URI-string-value">URI-string-value</a> <em>o</em>.<a href="#eventterm-literal-string-value">string-value</a> .</code>
-
- </p></div></div>
- </li>
-
- <li><a id="nodeElementStatement4" name="nodeElementStatement4"></a> Handle the
- <a href="#propertyEltList">propertyEltList</a> children events
- in document order.</li>
-
- </ul>
-
-
-
- <h4><a id="ws" name="ws">7.2.12 Production ws</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- A <a href="#section-text-node">text event</a> matching white space
- defined by <a href="#ref-xml">[XML]</a> definition <em>White Space</em>
- Rule [3] <a href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-S">S</a>
- in section
- <a href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-common-syn">Common Syntactic Constructs</a>
- </p></div></div>
-
-
- <h4><a id="propertyEltList" name="propertyEltList">7.2.13 Production propertyEltList</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- <a href="#ws">ws</a>* (<a href="#propertyElt">propertyElt</a> <a href="#ws">ws</a>* ) *
- </p></div></div>
-
-
- <h4><a id="propertyElt" name="propertyElt">7.2.14 Production propertyElt</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- <a href="#resourcePropertyElt">resourcePropertyElt</a> |
- <a href="#literalPropertyElt">literalPropertyElt</a> |
- <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a> |
- <a href="#parseTypeResourcePropertyElt">parseTypeResourcePropertyElt</a> |
- <a href="#parseTypeCollectionPropertyElt">parseTypeCollectionPropertyElt</a> |
-
- <a href="#parseTypeOtherPropertyElt">parseTypeOtherPropertyElt</a> |
- <a href="#emptyPropertyElt">emptyPropertyElt</a>
- </p></div></div>
-
- <p>If element <em>e</em> has
- <em>e</em>.<a href="#eventterm-element-URI">URI</a> =
- <code>rdf:li</code> then apply the list expansion rules on element <em>e</em>.parent in
-
- <a href="#section-List-Expand">section 7.4</a>
- to give a new URI <em>u</em> and
- <em>e</em>.<a href="#eventterm-element-URI">URI</a> := <em>u</em>.
- </p>
-
- <p>The action of this production must be done before the
- actions of any sub-matches (<a
- href="#resourcePropertyElt">resourcePropertyElt</a> ... <a href="#emptyPropertyElt">emptyPropertyElt</a>).
- Alternatively the result must be equivalent to as if it this action
- was performed first, such as performing as the first
- action of all of the sub-matches.
-
- </p>
-
-
- <h4><a id="resourcePropertyElt" name="resourcePropertyElt">7.2.15 Production resourcePropertyElt</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
-     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?))<br />
-
- <a href="#ws">ws</a>* <a href="#nodeElement">nodeElement</a> <a href="#ws">ws</a>*<br />
- end-element()
- </p></div></div>
-
- <p>For element <em>e</em>, and the single contained nodeElement
- <em>n</em>, first <em>n</em> must be processed using production
-
- <a href="#nodeElement">nodeElement</a>.
- Then the following statement is added to the graph:</p>
-
- <div class="ntripleOuter"><div class="ntripleInner"><p>
-   <code> <em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>n</em>.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
-
- </p></div></div>
-
- <p>If the <code>rdf:ID</code> attribute <em>a</em> is given, the above
- statement is reified with
- <em>i</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
- using the reification rules in
-
- <a href="#section-Reification">section 7.3</a>
- and <em>e</em>.<a href="#eventterm-element-subject">subject</a> := <em>i</em></p>
-
-
- <h4><a id="literalPropertyElt" name="literalPropertyElt">7.2.16 Production literalPropertyElt</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
-
-     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#datatypeAttr">datatypeAttr</a>?))<br />
- <a href="#section-text-node">text()</a><br />
- end-element()
- </p></div></div>
-
- <p>Note that the empty literal case is defined in production
- <a href="#emptyPropertyElt">emptyPropertyElt</a>.</p>
-
- <p>For element <em>e</em>, and the text event <em>t</em>.
- The Unicode string <em>t</em>.<a href="#eventterm-text-string-value">string-value</a> SHOULD be in Normal Form C<a href="#ref-nfc">[NFC]</a>.
- If the <code>rdf:datatype</code> attribute <em>d</em> is given
- then <em>o</em> := typed-literal(<a href="#eventterm-typedliteral-literal-value">literal-value</a> := <em>t</em>.<a href="#eventterm-text-string-value">string-value</a>, <a href="#eventterm-typedliteral-literal-datatype">literal-datatype</a> := <em>d</em>.<a href="#eventterm-attribute-string-value">string-value</a>)
- otherwise
-
- <em>o</em> := literal(<a href="#eventterm-literal-literal-value">literal-value</a> := <em>t</em>.<a href="#eventterm-text-string-value">string-value</a>, <a href="#eventterm-literal-literal-language">literal-language</a> := <em>e</em>.<a href="#eventterm-element-language">language</a>)
- and the following statement is added to the graph:</p>
-
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>o</em>.<a href="#eventterm-literal-string-value">string-value</a> .</code>
-
- </p></div></div>
-
- <p>If the <code>rdf:ID</code> attribute <em>a</em> is given, the above
- statement is reified with
- <em>i</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
- using the reification rules in
-
- <a href="#section-Reification">section 7.3</a>
- and <em>e</em>.<a href="#eventterm-element-subject">subject</a> := <em>i</em>.</p>
-
-
- <h4><a id="parseTypeLiteralPropertyElt" name="parseTypeLiteralPropertyElt">7.2.17 Production parseTypeLiteralPropertyElt</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
-
- start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
-     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseLiteral">parseLiteral</a>))<br />
- <a href="#literal">literal</a><br />
-
- end-element()
- </p></div></div>
-
-
- <p>For element <em>e</em> and the literal <em>l</em>
- that is the <code>rdf:parseType="Literal"</code> content.
- <em>l</em> is not transformed by the syntax data model mapping into events
- (as noted in <a href="#section-Data-Model">6 Syntax Data Model</a>)
- but remains an XML Infoset of XML Information items.</p>
-
- <p><em>l</em> is transformed into the lexical form of an
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-XMLLiteral">XML literal</a>
- in the RDF graph <em>x</em> (a Unicode string)
- by the following algorithm. This does not mandate any implementation
- method — any other method that gives the same result may be used.</p>
-
- <ol>
- <li>Use <em>l</em> to construct an XPath<a href="#ref-xpath">[XPATH]</a> <a href="http://www.w3.org/TR/1999/REC-xpath-19991116#infoset">node-set</a>
-
- (a <a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/#def-document-subset">document subset</a>)</li>
- <li>Apply <a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/">Exclusive XML Canonicalization</a> [<a href="#ref-xml-xc14n">XML-XC14N</a>])
- with comments and with empty
- <a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/#def-InclusiveNamespaces-PrefixList">InclusiveNamespaces PrefixList</a>
- to this node-set to give a sequence of octets <em>s</em>
- </li>
- <li>This sequence of octets <em>s</em> can be considered to be
- a UTF-8 encoding of some Unicode string <em>x</em> (sequence
- of Unicode characters)</li>
-
- <li>The Unicode string <em>x</em> is used as the lexical form of <em>l</em></li>
- <li>This Unicode string
- <em>x</em> SHOULD be in NFC Normal Form C<a href="#ref-nfc">[NFC]</a></li>
- </ol>
-
-
- <p>Then <em>o</em> := typed-literal(<a href="#eventterm-typedliteral-literal-value">literal-value</a> := <em>x</em>, <a href="#eventterm-typedliteral-literal-datatype">literal-datatype</a> := <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral</code> )
- and the following statement is added to the graph:</p>
-
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>o</em>.<a href="#eventterm-typedliteral-string-value">string-value</a> .</code>
-
- </p></div></div>
-
- <div class="note"><p><strong>Test:</strong>
- Empty literal case indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test009.rdf">test009.rdf</a>
- and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test009.nt">test009.nt</a>
- </p></div>
-
- <p>If the <code>rdf:ID</code> attribute <em>a</em> is given, the above
- statement is reified with
-
- <em>i</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
- using the reification rules in
- <a href="#section-Reification">section 7.3</a>
- and <em>e</em>.<a href="#eventterm-element-subject">subject</a> := <em>i</em>.</p>
-
-
-
- <h4><a id="parseTypeResourcePropertyElt" name="parseTypeResourcePropertyElt">7.2.18 Production parseTypeResourcePropertyElt</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
-     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseResource">parseResource</a>))<br />
-
- <a href="#propertyEltList">propertyEltList</a><br />
- end-element()
- </p></div></div>
-
- <p>For element <em>e</em> with possibly empty element content <em>c</em>.</p>
-
- <p><em>n</em> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a> := generated-blank-node-id()).</p>
-
- <p>Add the following statement to the graph:
- </p>
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>n</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
-
- </p></div></div>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test004.rdf">test004.rdf</a>
- and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test004.nt">test004.nt</a>
- </p></div>
-
- <p>If the <code>rdf:ID</code> attribute <em>a</em> is given, the
- statement above is reified with
-
- <em>i</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
- using the reification rules in
- <a href="#section-Reification">section 7.3</a>
- and <em>e</em>.<a href="#eventterm-element-subject">subject</a> := <em>i</em>.</p>
-
- <p>If the element content <em>c</em> is not empty, then use event
- <em>n</em> to create a new sequence of events as follows:</p>
- <div class="productionOuter"><div class="productionInner"><p>
- start-element(<a href="#eventterm-element-URI">URI</a> := <code>rdf:Description</code>,<br />
-
-     <a href="#eventterm-element-subject">subject</a> := <em>n</em>,<br />
-     <a href="#eventterm-element-attributes">attributes</a> := set())<br />
- <em>c</em><br />
- end-element()
- </p></div></div>
-
- <p>Then
- process the resulting sequence using production
-
- <a href="#nodeElementList">nodeElement</a>.</p>
-
-
- <h4><a id="parseTypeCollectionPropertyElt" name="parseTypeCollectionPropertyElt">7.2.19 Production parseTypeCollectionPropertyElt</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
-
-     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseCollection">parseCollection</a>))<br />
- <a href="#nodeElementList">nodeElementList</a><br />
- end-element()
- </p></div></div>
-
- <p>For element event <em>e</em> with possibly empty
-
- <a href="#nodeElementList">nodeElementList</a> <em>l</em>. Set
- <em>s</em>:=list().</p>
-
- <p>For each element event <em>f</em> in <em>l</em>,
- <em>n</em> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a> := generated-blank-node-id()) and append <em>n</em> to
-
- <em>s</em> to give a sequence of events.</p>
-
- <p>If <em>s</em> is not empty, <em>n</em> is the first event identifier in
- <em>s</em> and the following statement is added to the graph:</p>
- <div class="ntripleOuter"><div class="ntripleInner"><p>
-
- <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>n</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
- </p></div></div>
-
- <p>otherwise the following statement is added to the graph:</p>
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .</code>
-
- </p></div></div>
-
- <p>If the <code>rdf:ID</code> attribute <em>a</em> is given,
- either of the the above statements is reified with
- <em>i</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
- using the reification rules in
-
- <a href="#section-Reification">section 7.3</a>.
- </p>
-
- <p>If <em>s</em> is empty, no further work is performed.</p>
-
- <p>For each event <em>n</em> in <em>s</em> and the
- corresponding element event <em>f</em> in <em>l</em>, the following
- statement is added to the graph:</p>
-
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code> <em>n</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <em>f</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
- </p></div></div>
-
- <p>For each consecutive and overlapping pair of events
- (<em>n</em>, <em>o</em>) in <em>s</em>, the following statement is
- added to the graph:</p>
-
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>n</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <em>o</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
-
- </p></div></div>
-
- <p>If <em>s</em> is not empty, <em>n</em> is the last event identifier
- in <em>s</em>, the following statement is added to the graph:</p>
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>n</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .</code>
-
- </p></div></div>
-
-
-
- <h4><a id="parseTypeOtherPropertyElt" name="parseTypeOtherPropertyElt">7.2.20 Production parseTypeOtherPropertyElt</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
-     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseOther">parseOther</a>))<br />
-
- <a href="#propertyEltList">propertyEltList</a><br />
- end-element()
- </p></div></div>
-
-
- <p>All <code>rdf:parseType</code> attribute values other than the strings
- "Resource", "Literal" or "Collection" are treated as if the value was
- "Literal". This production matches and acts as if production
- <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a>
- was matched.
- No extra triples are generated for other <code>rdf:parseType</code> values.
- </p>
-
-
- <h4><a id="emptyPropertyElt" name="emptyPropertyElt">7.2.21 Production emptyPropertyElt</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
-     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, ( <a href="#resourceAttr">resourceAttr</a> | <a href="#nodeIdAttr">nodeIdAttr</a> )?, <a href="#propertyAttr">propertyAttr</a>*))<br />
-
- end-element()
- </p></div></div>
-
-
- <ul>
-
- <li>
- <p>If there are no attributes <strong>or</strong> only the
- optional <code>rdf:ID</code> attribute <em>i</em>
- then <em>o</em> := literal(<a href="#eventterm-literal-literal-value">literal-value</a>:="", <a href="#eventterm-literal-literal-language">literal-language</a> := <em>e</em>.<a href="#eventterm-element-language">language</a>)
- and the following statement is added to the graph:</p>
-
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>o</em>.<a href="#eventterm-literal-string-value">string-value</a> .</code>
-
- </p></div></div>
-
- <p>and then if <em>i</em> is given, the above statement is reified with
- uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>i</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
- using the reification rules in
- <a href="#section-Reification">section 7.3</a>.</p>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test002.rdf">test002.rdf</a>
- and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test002.nt">test002.nt</a>
- </p></div>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test005.rdf">test005.rdf</a>
- and
-
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test005.nt">test005.nt</a>
- </p></div>
-
- </li>
-
- <li>
-
- <p>Otherwise</p>
-
- <ul>
- <li>If <code>rdf:resource</code> attribute <em>i</em> is present, then
- <em>r</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, <em>i</em>.<a href="#eventterm-attribute-string-value">string-value</a>))
- </li>
-
- <li>If <code>rdf:nodeID</code> attribute <em>i</em> is present, then
- <em>r</em> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a> := <em>i</em>.<a href="#eventterm-attribute-string-value">string-value</a>)
- </li>
-
- <li>If neither,
- <em>r</em> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a> := generated-blank-node-id())
- </li>
- </ul>
-
- <p>The following are done in any order:</p>
-
- <ul>
-
- <li><p>For all <a href="#propertyAttr">propertyAttr</a>
- attributes <em>a</em> (in any order)</p>
- <ul>
-
- <li><p>If <em>a</em>.<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:type</code>
-
- then <em>u</em>:=uri(identifier:=resolve(<em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>))
- and the following triple is added to the graph:</p>
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <em>u</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
-
- </p></div></div>
- </li>
-
- <li><p>Otherwise Unicode string
- <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>
- SHOULD be in Normal Form C<a href="#ref-nfc">[NFC]</a>,
- <em>o</em> := literal(<a href="#eventterm-literal-literal-value">literal-value</a> := <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>, <a href="#eventterm-literal-literal-language">literal-language</a> := <em>e</em>.<a href="#eventterm-element-language">language</a>)
- and the following statement is added to the graph:</p>
-
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <em>a</em>.<a href="#eventterm-attribute-URI-string-value">URI-string-value</a> <em>o</em>.<a href="#eventterm-literal-string-value">string-value</a> .</code>
-
- </p></div></div>
- </li>
-
- </ul>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test013.rdf">test013.rdf</a>
- and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test013.nt">test013.nt</a>
-
- </p></div>
-
- <div class="note"><p><strong>Test:</strong>
- Indicated by
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test014.rdf">test014.rdf</a>
- and
- <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test014.nt">test014.nt</a>
- </p></div>
-
- </li>
-
- <li><p>Add the following statement to the graph:</p>
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
-
- </p></div></div>
-
- <p>and then if <code>rdf:ID</code> attribute <em>i</em> is given, the above statement is
- reified with
- uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>i</em>.<a href="#eventterm-identifier-string-value">string-value</a>)))
- using the reification rules in
- <a href="#section-Reification">section 7.3</a>.</p>
-
- </li>
-
- </ul>
-
- </li>
- </ul>
-
-
- <!-- idAboutAttr one has gone; id is closest thing replacing it -->
- <h4><a id="idAboutAttr" name="idAboutAttr"></a>
- <a id="idAttr" name="idAttr">7.2.22 Production idAttr</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:ID</code>,<br />
-
-     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#rdf-id">rdf-id</a>)
- </p></div></div>
-
- <p><strong>Constraint:</strong>: <a href="#constraint-id">constraint-id</a>
- applies to the values of <code>rdf:ID</code> attributes</p>
-
- <h4><a id="nodeIdAttr" name="nodeIdAttr">7.2.23 Production nodeIdAttr</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:nodeID</code>,<br />
-     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#rdf-id">rdf-id</a>)
-
- </p></div></div>
-
-
- <h4><a id="aboutAttr" name="aboutAttr">7.2.24 Production aboutAttr</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:about</code>,<br />
-     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)
-
- </p></div></div>
-
-
- <h4><a id="propAttr" name="propAttr"></a><a id="typeAttr" name="typeAttr"></a>
- <a id="propertyAttr" name="propertyAttr">7.2.25 Production propertyAttr</a></h4>
-
-
- <div class="productionOuter"><div class="productionInner"><p>
- attribute(<a href="#eventterm-attribute-URI">URI</a> == <a href="#propertyAttributeURIs">propertyAttributeURIs</a>,<br />
-     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#anyString">anyString</a>)
-
- </p></div></div>
-
-
- <h4><a id="resourceAttr" name="resourceAttr">7.2.26 Production resourceAttr</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:resource</code>,<br />
-     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)
-
- </p></div></div>
-
-
- <h4><a id="datatypeAttr" name="datatypeAttr">7.2.27 Production datatypeAttr</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:datatype</code>,<br />
-     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)
-
- </p></div></div>
-
-
- <h4><a id="parseLiteral" name="parseLiteral">7.2.28 Production parseLiteral</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,<br />
-     <a href="#eventterm-attribute-string-value">string-value</a> == "Literal")
-
- </p></div></div>
-
-
- <h4><a id="parseResource" name="parseResource">7.2.29 Production parseResource</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,<br />
-     <a href="#eventterm-attribute-string-value">string-value</a> == "Resource")
-
- </p></div></div>
-
-
- <h4><a id="parseCollection" name="parseCollection">7.2.30 Production parseCollection</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,<br />
-     <a href="#eventterm-attribute-string-value">string-value</a> == "Collection")
-
- </p></div></div>
-
-
- <h4><a id="parseOther" name="parseOther">7.2.31 Production parseOther</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,<br />
-     <a
- href="#eventterm-attribute-string-value">string-value</a> == <a href="#anyString">anyString</a> - ("Resource" | "Literal" | "Collection") )
-
- </p></div></div>
-
-
- <h4><a id="URI-reference" name="URI-reference">7.2.32 Production URI-reference</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- An <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.
- </p></div></div>
-
-
- <h4><a id="literal" name="literal">7.2.33 Production literal</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
-
- Any XML element content that is allowed according to
- <a href="#ref-xml">[XML]</a> definition <em>Content of Elements</em>
- Rule [43]
- <a href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-content">content</a>.
- in section
- <a href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-starttags">3.1 Start-Tags, End-Tags, and Empty-Element Tags</a>
- </p>
-
- <p>The string-value for the resulting event is discussed in
- <a href="#parseTypeLiteralPropertyElt">section 7.2.17</a>.</p>
-
- </div></div>
-
-
- <h4><a id="rdf-id" name="rdf-id">7.2.34 Production rdf-id</a></h4>
-
- <div class="productionOuter"><div class="productionInner"><p>
- An attribute <a href="#eventterm-attribute-string-value" class="termref"><span class="arrow">·</span>string-value<span class="arrow">·</span></a>
- matching any legal
- <a href="#ref-namespaces">[XML-NS]</a> token
- <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a>
-
- </p></div></div>
-
-
- <h3><a id="section-Reification" name="section-Reification">7.3 Reification Rules</a></h3>
-
- <p>For the given URI reference event <em>r</em> and
- the statement with terms <em>s</em>, <em>p</em> and <em>o</em>
-
- corresponding to the N-Triples:</p>
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>s</em> <em>p</em> <em>o</em> .</code>
- </p></div></div>
-
- <p>add the following statements to the graph:</p>
- <div class="ntripleOuter"><div class="ntripleInner"><p>
- <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <em>s</em> .</code><br />
-
- <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <em>p</em> .</code><br />
- <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <em>o</em> .</code><br />
-
- <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .</code><br />
- </p></div></div>
-
-
- <h3><a id="section-List-Expand" name="section-List-Expand">7.4 List Expansion Rules</a></h3>
-
- <p>For the given element <em>e</em>, create a new <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <em>u</em> :=
- concat("http://www.w3.org/1999/02/22-rdf-syntax-ns#_",
-
- <em>e</em>.<a href="#eventterm-element-liCounter">li-counter</a>),
- increment the
- <em>e</em>.<a href="#eventterm-element-liCounter">li-counter</a>
- property by 1 and return <em>u</em>.</p>
-
-
-
-<h2>
-<a id="section-Serialising" name="section-Serialising">8 Serializing an RDF Graph to RDF/XML</a>
-
-</h2>
-
-<p>There are some
-<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-graph">RDF Graphs</a>
-as defined in
-<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a>
-that cannot be serialized in RDF/XML. These are those that:</p>
-
-<dl>
- <dt>Use property names that cannot be turned into XML namespace-qualified names.<br /></dt>
- <dd>An XML namespace-qualified name
- (<a href="http://www.w3.org/TR/REC-xml-names/#dt-qname">QName</a>)
- has restrictions on the legal characters such that not all property URIs
- can be expressed as these names.
- It is recommended that implementors of RDF serializers, in order to
- break a URI into a namespace name and a local name, split it after
- the last XML non-<a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a>
-
- character, ensuring that the first character of the name is a
- <a href="http://www.w3.org/TR/REC-xml#NT-Letter">Letter</a> or '_'.
- If the URI ends in a
- non-<a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a>
- character then throw a "this graph cannot be serialized in RDF/XML"
- exception or error.
- </dd>
-
- <dt>Use inappropriate reserved names as properties<br /></dt>
- <dd>For example, a property with the same URI as any of the
- <a href="#syntaxTerms">syntaxTerms</a> production.
- </dd>
-
-</dl>
-
-<div class="note"><p><strong>Implementation Note (Informative):</strong>
-When an RDF graph is serialized to RDF/XML and has an XML Schema
-Datatype (XSD), it SHOULD be written in a form that does not require
-whitespace processing. XSD support is NOT required by RDF or RDF/XML
-so this is optional.
-</p></div>
-
-
-<h2>
-<a id="section-rdf-in-HTML" name="section-rdf-in-HTML">9 Using RDF/XML with HTML and XHTML</a>
-</h2>
-
-<p>If RDF/XML is embedded inside HTML or XHTML this can
-add many new elements and attributes, many of which will not be
-in the appropriate DTD. This embedding causes validation against the DTD to fail.
-The obvious solution of changing or extending the DTD is not practical
-for most uses. This problem has been analyzed extensively by Sean B. Palmer in
-<a href="http://infomesh.net/2002/rdfinhtml/">RDF in HTML: Approaches</a>
-
-<a href="#ref-rdf-in-xhtml">[RDF-IN-XHTML]</a>
-and it concludes that there is no single embedding
-method that satisfies all applications and remains simple.
-</p>
-
-<p>The recommended approach is to not embed RDF/XML in HTML/XHTML but
-rather to use <code><link></code> element in the <code><head></code>
-element of the HTML/HTML to point at a separate RDF/XML document.
-This approach has been used for several years by the
-<a href="http://www.dublincore.org/">Dublin Core Metadata Initiative (DCMI)</a>
-on its Web site.</p>
-
-<p>To use this technique, the <code><link></code> element
-<code>href</code> should point at the URI of the RDF/XML content
-and the <code>type</code> attribute should be used with the value of
-<code>"application/rdf+xml"</code>, the proposed MIME type for
-RDF/XML, see <a href="#section-MIME-Type">Section 4</a></p>
-
-<p>The value of the <code>rel</code> attribute may also be set to
-indicate the relationship; this is an application dependent value.
-The DCMI has used and recommended <code>rel="meta"</code> when linking
-in <a href="http://www.ietf.org/rfc/rfc2731.txt">RFC 2731 — Encoding Dublin Core Metadata in HTML</a><a href="#ref-rfc2731">[RFC-2731]</a> however
-
-<code>rel="alternate"</code> may also be appropriate.
-See
-<a href="http://www.w3.org/TR/html401/types.html#type-links">HTML 4.01 link types</a>,
-<a href="http://www.w3.org/TR/xhtml-modularization/abstraction.html#dt_LinkTypes">XHTML Modularization — LinkTypes</a>
-and
-<a href="http://www.w3.org/TR/xhtml2/abstraction.html#dt_LinkTypes">XHTML 2.0 — LinkTypes</a>
-for further information on the values that may be appropriate
-for the different versions of HTML.</p>
-
-<p><a href="#example21">Example 21</a> shows using this method with
-the <code>link</code> tag inside an XHTML document to link to an
-external RDF/XML document.</p>
-
-<div class="exampleOuter">
-<div class="figure"><a id="example21" name="example21">Example 21: Using
-<code>link</code> in XHTML with an external RDF/XML document</a> (<a href="example21.html">example21.html</a> linking to <a href="example21.rdf">example21.rdf</a>)</div>
-
-<div class="exampleInner">
-<pre>
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
- <head>
- <title>My document</title>
- <meta http-equiv="Content-type" content='text/html; charset="utf-8"' />
-
- <link rel="alternate" type="application/rdf+xml" title="RDF Version" href="example21.rdf" />
- </head>
- <body>
- <h1>My document</h1>
-
- </body>
-
-</html>
-
-</pre>
-</div>
-</div>
-
-
-<h2 class="nonum">
-<a id="section-rdf-in-SVG" name="section-rdf-in-SVG"></a>10 Using RDF/XML with SVG (Informative)
-</h2>
-
-<p>There is a standardized approach for associating RDF compatible
-metadata with SVG — the metadata element which was explicitly
-designed for this purpose as defined in
-<a href="http://www.w3.org/TR/SVG/metadata.html">Section 21 Metadata</a>
-
-of the
-<a href="http://www.w3.org/TR/2001/REC-SVG-20010904/">Scalable Vector Graphics (SVG) 1.0 Specification</a>
-<a href="#ref-svg">[SVG]</a>
-and
-<a href="http://www.w3.org/TR/SVG11/metadata.html">Section 21 Metadata</a>
-of the
-<a href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">Scalable Vector Graphics (SVG) 1.1 Specification</a>
-<a href="#ref-svg11">[SVG11]</a>.
-
-</p>
-
-<p>This document contains two example graphs in SVG with such
-embedded RDF/XML inside the metadata element:
-<a href="http://www.w3.org/TR/rdf-syntax-grammar/figure1.svg">figure 1</a>
-
-and
-<a href="http://www.w3.org/TR/rdf-syntax-grammar/figure2.svg">figure 2</a>.
-</p>
-
-
-<h2 class="nonum">
-<a id="section-Acknowledgments" name="section-Acknowledgments"></a>11 Acknowledgments (Informative)
-</h2>
-
-<p>The following people provided valuable contributions to the document:</p>
-
-<ul>
- <li>Dan Brickley, W3C/ILRT</li>
-
- <li>Jeremy Carroll, HP Labs, Bristol</li>
- <li>Graham Klyne, Nine by Nine</li>
- <li>Bijan Parsia, MIND Lab at University of Maryland at College Park</li>
-</ul>
-
-<p>This document is a product of extended deliberations by the RDF
-Core working group, whose members have included: Art Barstow (W3C)
-Dave Beckett (ILRT), Dan Brickley (W3C/ILRT), Dan Connolly (W3C),
-Jeremy Carroll (Hewlett Packard), Ron Daniel (Interwoven Inc), Bill
-dehOra (InterX), Jos De Roo (AGFA), Jan Grant (ILRT), Graham Klyne
-(Clearswift and Nine by Nine), Frank Manola (MITRE Corporation),
-Brian McBride (Hewlett Packard), Eric Miller (W3C), Stephen
-Petschulat (IBM), Patrick Stickler (Nokia), Aaron Swartz (HWG), Mike
-Dean (BBN Technologies / Verizon), R. V. Guha (Alpiri Inc), Pat Hayes
-(IHMC), Sergey Melnik (Stanford University), Martyn Horner (Profium
-Ltd).</p>
-
-<p>This specification also draws upon an earlier RDF Model and Syntax
-document edited by Ora Lassilla and Ralph Swick, and RDF Schema
-edited by Dan Brickley and R. V. Guha. RDF and RDF Schema Working
-group members who contributed to this earlier work are:
-Nick Arnett (Verity), Tim Berners-Lee (W3C), Tim Bray (Textuality),
-Dan Brickley (ILRT / University of Bristol), Walter Chang (Adobe),
-Sailesh Chutani (Oracle), Dan Connolly (W3C), Ron Daniel
-(DATAFUSION), Charles Frankston (Microsoft), Patrick Gannon
-(CommerceNet), RV Guha (Epinions, previously of Netscape
-Communications), Tom Hill (Apple Computer), Arthur van Hoff
-(Marimba), Renato Iannella (DSTC), Sandeep Jain (Oracle), Kevin
-Jones, (InterMind), Emiko Kezuka (Digital Vision Laboratories), Joe
-Lapp (webMethods Inc.), Ora Lassila (Nokia Research Center), Andrew
-Layman (Microsoft), Ralph LeVan (OCLC), John McCarthy (Lawrence
-Berkeley National Laboratory), Chris McConnell (Microsoft), Murray
-Maloney (Grif), Michael Mealling (Network Solutions), Norbert Mikula
-(DataChannel), Eric Miller (OCLC), Jim Miller (W3C, emeritus), Frank
-Olken (Lawrence Berkeley National Laboratory), Jean Paoli
-(Microsoft), Sri Raghavan (Digital/Compaq), Lisa Rein (webMethods
-Inc.), Paul Resnick (University of Michigan), Bill Roberts
-(KnowledgeCite), Tsuyoshi Sakata (Digital Vision Laboratories), Bob
-Schloss (IBM), Leon Shklar (Pencom Web Works), David Singer (IBM),
-Wei (William) Song (SISU), Neel Sundaresan (IBM), Ralph Swick (W3C),
-Naohiko Uramoto (IBM), Charles Wicksteed (Reuters Ltd.), Misha Wolf
-(Reuters Ltd.), Lauren Wood (SoftQuad).
-</p>
-
-<h2 class="nonum">
-<a id="section-References" name="section-References"></a>12 References
-</h2>
-
-<h3>
-<a id="section-Normative-References" name="section-Normative-References"></a>Normative References
-</h3>
-
-<dl>
- <dt>
- <a id="ref-rdfms" name="ref-rdfms">[RDF-MS]</a>
- </dt>
-
- <dd>
- <cite><a href="http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/">Resource Description Framework (RDF) Model and Syntax Specification</a></cite>, O. Lassila and R. Swick, Editors. World Wide Web Consortium. 22 February 1999. This version is http://www.w3.org/TR/1999/REC-rdf-syntax-19990222. The <a href="http://www.w3.org/TR/REC-rdf-syntax/">latest version of RDF M&S</a> is available at http://www.w3.org/TR/REC-rdf-syntax.
- </dd>
-
- <dt>
- <a id="ref-xml" name="ref-xml">[XML]</a>
- </dt>
-
- <dd>
- <cite><a href="http://www.w3.org/TR/2000/REC-xml-20001006">Extensible Markup Language (XML) 1.0, Second Edition</a></cite>, T. Bray, J. Paoli, C.M. Sperberg-McQueen and E. Maler, Editors. World Wide Web Consortium. 6 October 2000. This version is http://www.w3.org/TR/2000/REC-xml-20001006. <a href="http://www.w3.org/TR/REC-xml">latest version of XML</a> is available at http://www.w3.org/TR/REC-xml.
- </dd>
-
- <dt>
- <a id="ref-namespaces" name="ref-namespaces">[XML-NS]</a>
- </dt>
-
- <dd>
- <cite><a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">Namespaces in XML</a></cite>, T. Bray, D. Hollander and A. Layman, Editors. World Wide Web Consortium. 14 January 1999. This version is http://www.w3.org/TR/1999/REC-xml-names-19990114. The <a href="http://www.w3.org/TR/REC-xml-names/">latest version of Namespaces in XML</a> is available at http://www.w3.org/TR/REC-xml-names.
- </dd>
-
- <dt>
- <a id="ref-xml-infoset" name="ref-xml-infoset">[INFOSET]</a>
- </dt>
-
- <dd>
- <cite><a href="http://www.w3.org/TR/2001/REC-xml-infoset-20011024/">XML Information Set</a></cite>, J. Cowan and R. Tobin, Editors. World Wide Web Consortium. 24 October 2001. This version is http://www.w3.org/TR/2001/REC-xml-infoset-20011024. The <a href="http://www.w3.org/TR/xml-infoset/">latest version of XML Information set</a> is available at http://www.w3.org/TR/xml-infoset.
- </dd>
-
- <dt>
- <a id="ref-uri" name="ref-uri">[URIS]</a>
- </dt>
-
- <dd><cite><a href="http://www.isi.edu/in-notes/rfc2396.txt">RFC 2396 — Uniform Resource Identifiers (URI): Generic Syntax</a></cite>, T. Berners-Lee, R. Fielding and L. Masinter, IETF, August 1998. This document is http://www.isi.edu/in-notes/rfc2396.txt.
- </dd>
-
- <dt><a id="ref-rdf-concepts"
- name="ref-rdf-concepts"></a>[RDF-CONCEPTS]</dt>
-
+
+
+ <!-- SECOND PART : TERMINILOGY -->
+
+ <section id="section-Terminology">
+ <h2>Terminology</h2>
+
+ <p>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
+ NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in
+ this document are to be interpreted as described in
+ <a href="http://www.ietf.org/rfc/rfc2119.txt">RFC 2119</a>
+ <a href="#ref-keywords">[KEYWORDS]</a>.</p>
+
+ <p>All use of string without further qualification refers to
+ a Unicode<a href="#ref-unicode">[UNICODE]</a> character string;
+ a sequence of characters represented by a code point in Unicode.
+ (Such as defined in <a href="#ref-charmod">[CHARMOD]</a> in section
+ <a href="http://www.w3.org/TR/2003/WD-charmod-20030822/#sec-Strings">3.4 Strings</a>).</p>
+
+ </section>
+
+
+ <!-- THIRD PART : MIME Type -->
+
+ <section id="section-MIME-Type">
+ <h2>RDF MIME Type, File Extension and Macintosh File Type</h2>
+
+ <p>The Internet media type / MIME type for RDF/XML is
+ "<code>application/rdf+xml</code>" —
+
+ see <a href="http://www.ietf.org/rfc/rfc3023.txt">RFC 3023</a>
+ <a href="#ref-rfc3023">[RFC-3023]</a> section 8.18.
+ </p>
+
+ <div class="note"><p><strong>Registration Note (Informative):</strong>
+ For the state of the MIME type registration, consult
+ <a href="http://www.iana.org/assignments/media-types/">IANA MIME Media Types</a> <a href="#ref-iana-media-types">[IANA-MEDIA-TYPES]</a>
+ </p></div>
+
+ <p>It is recommended that RDF/XML files have the extension
+ <code>".rdf"</code> (all lowercase) on all platforms.</p>
+
+ <p>It is recommended that RDF/XML files stored on Macintosh HFS file
+ systems be given a file type of <code>"rdf "</code>
+ (all lowercase, with a space character as the fourth letter).</p>
+ </section>
+
+
+ <!-- FOURTH PART : Global Issues -->
+
+ <section id="section-Global">
+ <h2>Global Issues</h2>
+
+ <!-- namespace -->
+ <section id="section-Namespace">
+
+ <h3>The RDF Namespace and Vocabulary</h3>
+
+ <div class="note"><p><strong>Note (Informative):</strong>
+ The names <code>aboutEach</code> and <code>aboutEachPrefix</code> were removed
+ from the language and the RDF vocabulary by the RDF Core Working Group.
+ See the resolution of issues
+ <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-abouteach">rdfms-abouteach</a> and
+
+ <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-abouteachprefix">rdfms-abouteachprefix</a>
+ for further information.
+ </p></div>
+
+ <div class="note"><p><strong>Note (Informative):</strong>
+ The names <code>List</code>, <code>first</code>,
+ <code>rest</code> and <code>nil</code> were added for issue
+
+ <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-seq-representation">rdfms-seq-representation</a>.
+ The names <code>XMLLiteral</code> and <code>datatype</code> were added
+ to support RDF datatyping.
+ The name <code>nodeID</code> was added
+ for issue
+ <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-syntax-incomplete">rdfms-syntax-incomplete</a>.
+ See the
+ <a href="http://www.w3.org/2000/03/rdf-tracking/">RDF Core Issues List</a>
+ for further information.
+ </p></div>
+
+ <p>The
+ <span class="termdef"><a id="rdf-ns-uri" name="rdf-ns-uri">RDF namespace URI reference</a></span> (or namespace name) is
+ <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#</code>
+ and is typically used in XML with the prefix <code>rdf</code>
+ although other prefix strings may be used.
+ The <span class="termdef"><a id="rdf-vocabulary" name="rdf-vocabulary">RDF Vocabulary</a></span>
+ is identified by this namespace name and consists of the following names only:</p>
+
+ <dl>
+ <dt>Syntax names — not concepts</dt>
+ <dd>
+ <p>
+ <code>RDF Description ID about parseType resource li nodeID datatype</code>
+ </p>
+ </dd>
+
+ <dt>Class names</dt>
+ <dd>
+ <p>
+ <code>Seq Bag Alt Statement Property XMLLiteral List</code>
+
+ </p>
+ </dd>
+
+ <dt>Property names</dt>
+ <dd>
+ <p>
+ <code>subject predicate object type value first rest _</code><em>n</em><br />
+ where <em>n</em> is a decimal integer greater than zero with no leading zeros.
+ </p>
+ </dd>
+
+ <dt>Resource names</dt>
+ <dd>
+ <p>
+ <code>nil</code>
+ </p>
+ </dd>
+
+ </dl>
+
+ <p>Any other names are not defined and SHOULD generate a warning when
+ encountered, but should otherwise behave normally.</p>
+
+ <p>Within RDF/XML documents it is not permitted to use XML namespaces
+ whose namespace name is the
+ <a href="#rdf-ns-uri" class="termref"><span class="arrow">·</span>RDF namespace URI reference<span class="arrow">·</span></a>
+
+ concatenated with additional characters.</p>
+
+ <p>Throughout this document the terminology <code>rdf:</code><em>name</em>
+ will be used to indicate <em>name</em> is from the RDF vocabulary
+ and it has a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> of the concatenation of the
+ <a href="#rdf-ns-uri" class="termref"><span class="arrow">·</span>RDF namespace URI reference<span class="arrow">·</span></a> and <em>name</em>.
+ For example, <code>rdf:type</code> has the <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+
+ <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code></p>
+ </section>
+
+
+ <!-- identifiers -->
+ <section id="section-Identifiers">
+ <h3>Identifiers</h3>
+
+ <p>The
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-graph">RDF Graph</a>
+ (<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a> Section 3)
+ defines three types of nodes and one type of predicate:</p>
+
+ <dl>
+
+ <dt><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> nodes and predicates</dt>
+ <dd>
+ <p><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> (<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a> Section 3.1)
+ can be either:</p>
+ <ul>
+ <li>given as XML attribute values interpreted as relative
+ URI references that are resolved against the in-scope base URI
+ as described in <a href="#section-baseURIs">section 5.3</a>
+
+ to give absolute <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a></li>
+ <li>transformed from XML namespace-qualified element and attribute names
+ (QNames)</li>
+ <li>transformed from <code>rdf:ID</code> attribute values.</li>
+ </ul>
+
+ <p>Within RDF/XML, XML QNames are transformed into
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+ by appending the XML local name to the namespace name (URI reference).
+ For example, if the XML namespace prefix <code>foo</code> has
+ namespace name (URI reference)
+
+ <code>http://example.org/somewhere/</code> then the QName
+ <code>foo:bar</code> would correspond to the RDF URI reference
+ <code>http://example.org/somewhere/bar</code>. Note that this
+ restricts which
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> can be made and the same URI can be given in multiple ways.</p>
+
+ <p>The <a href="#idAttr"><code>rdf:ID</code></a> values
+ are transformed into
+
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+ by appending the attribute value to the result of appending
+ "#" to the in-scope base URI which is defined in
+ <a href="#section-baseURIs">Section 5.3 Resolving URIs</a></p>
+ </dd>
+
+ <dt>Literal nodes (always object nodes)</dt>
+ <dd><p>
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-literal">RDF literals</a> (<a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a> 6.5) are either
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal">plain literals</a> (ibid),
+ or
+
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-typed-literal">typed literals</a> (ibid).
+ The latter includes <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-XMLLiteral">XML literals</a> (ibid section 5, <cite>XML Content within an RDF graph</cite>).
+ </p>
+ </dd>
+
+ <dt>Blank Node Identifiers</dt>
+ <dd><p><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node">Blank nodes</a> have distinct identity in the RDF graph.
+ When the graph is written in a syntax such as RDF/XML, these
+ blank nodes may need graph-local identifiers and a syntax
+ in order to preserve this distinction. These local identifiers are called
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifiers</a>
+
+ and are used in RDF/XML as values of the <code>rdf:nodeID</code> attribute
+ with the syntax given in <a href="#nodeIdAttr">Production nodeIdAttr</a>.
+ Blank node identifiers in RDF/XML are scoped to the XML Information Set
+ <a href="http://www.w3.org/TR/xml-infoset/#infoitem.document">document information item</a>.</p>
+
+ <p>If no blank node identifier is given explicitly as an
+ <code>rdf:nodeID</code> attribute value then one will need to be
+ generated (using generated-blank-node-id, see section <a href="#section-Infoset-Grammar-Action">6.3.3</a>).
+ Such generated blank node
+ identifiers must not clash with any blank node identifiers derived
+ from <code>rdf:nodeID</code> attribute values. This can be
+ implemented by any method that preserves the distinct identity of all
+ the blank nodes in the graph, that is, the same blank node identifier
+ is not given for different blank nodes. One possible method would be
+ to add a constant prefix to all the <code>rdf:nodeID</code> attribute
+ values and ensure no generated blank node identifiers ever used that
+ prefix. Another would be to map all <code>rdf:nodeID</code> attribute
+ values to new generated blank node identifiers and perform that mapping
+ on all such values in the RDF/XML document.</p>
+ </dd>
+ </dl>
+
+ </section>
+
+
+ <!-- uri resolution -->
+ <section id="section-baseURIs">
+ <h3>Resolving URIs</h3>
+
+ <p>RDF/XML supports
+ <a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">XML Base</a> <a href="#ref-xml-base">[XML-BASE]</a>
+ which defines a
+ <a href="#eventterm-element-base-uri" class="termref"><span class="arrow">·</span>base-uri<span class="arrow">·</span></a>
+
+ accessor for each
+ <a href="#section-root-node"><span class="arrow">·</span>root event<span class="arrow">·</span></a> and
+ <a href="#section-element-node"><span class="arrow">·</span>element event<span class="arrow">·</span></a>.
+ Relative URI references are resolved into
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+ according to the algorithm specified in
+ <a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">XML Base</a> <a href="#ref-xml-base">[XML-BASE]</a>
+
+ (and RFC 2396).
+ These specifications do not specify an algorithm for resolving a
+ fragment identifier alone, such as <code>#foo</code>, or the empty
+ string <code>""</code> into an
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>. In RDF/XML, a fragment identifier
+ is transformed into a
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ by appending the fragment identifier to the in-scope base URI. The
+ empty string is transformed
+ into an
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>
+ by substituting the in-scope base URI.
+ </p>
+
+ <div class="note"><p><strong>Test:</strong>
+
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test001.rdf">test001.rdf</a> and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test001.nt">test001.nt</a>
+ </p></div>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test004.rdf">test004.rdf</a> and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test004.nt">test004.nt</a>
+ </p></div>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test008.rdf">test008.rdf</a> and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test008.nt">test008.nt</a>
+ </p></div>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test013.rdf">test013.rdf</a> and
+
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test013.nt">test013.nt</a>
+ </p></div>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test016.rdf">test016.rdf</a> and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test016.nt">test016.nt</a>
+ </p></div>
+
+ <p>An empty same document reference ""
+ resolves against the URI part of the base URI; any fragment part
+ is ignored. See
+ <a href="http://www.isi.edu/in-notes/rfc2396.txt">Uniform Resource Identifiers (URI)</a> <a href="#ref-uri">[URIS]</a> section 4.2
+
+ </p>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test013.rdf">test013.rdf</a> and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test013.nt">test013.nt</a>
+ </p></div>
+
+ <div class="note"><p><strong>Implementation Note (Informative):</strong>
+ When using a hierarchical base
+ URI that has no path component (/), it must be added before using as a
+ base URI for resolving.
+ </p></div>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test011.rdf">test011.rdf</a> and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test011.nt">test011.nt</a>
+ </p></div>
+ </section>
+
+
+ <!-- constraints -->
+ <section id="section-constraints">
+ <h3>Constraints</h3>
+
+ <dl>
+ <dt><strong><a id="constraint-id" name="constraint-id">constraint-id</a></strong><br /></dt>
+
+ <dd><p>Each application of production <a href="#idAttr">idAttr</a>
+ matches an attribute. The pair formed by the
+ <a href="#eventterm-attribute-string-value" class="termref"><span class="arrow">·</span>string-value<span class="arrow">·</span></a>
+ accessor of the matched attribute and the
+ <a href="#eventterm-element-base-uri" class="termref"><span class="arrow">·</span>base-uri<span class="arrow">·</span></a>
+ accessor of the matched attribute is unique within a single RDF/XML
+ document.</p>
+
+ <p>The syntax of the names must match the
+
+ <a href="#rdf-id">rdf-id production</a>.</p>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test014.rdf">test014.rdf</a> and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/xmlbase/test014.nt">test014.nt</a>
+ </p></div>
+ </dd>
+
+ </dl>
+ </section>
+
+
+ <!-- conformance -->
+ <section id="section-conformance">
+ <h3>Conformance</h3>
+
+ <dl>
+ <dt>Definition:<br /></dt>
+ <dd>An <span class="termdef"><a id="dfn-rdf-document" name="dfn-rdf-document">RDF Document</a></span> is a serialization of an
+ <a href="http://www.w3.org/TR/rdf-concepts/#dfn-rdf-graph">RDF Graph</a>
+ into a concrete syntax.</dd>
+
+ <dt>Definition:<br /></dt>
+ <dd>An <span class="termdef"><a name="dfn-rdf-xml-document">RDF/XML Document</a></span> is an
+ <a href="#dfn-rdf-document" class="termref">RDF Document</a> written in the
+ recommended XML transfer syntax for RDF as defined in this document.</dd>
+
+ <dt>Conformance:<br /></dt>
+ <dd>An <a href="#dfn-rdf-xml-document" class="termref">RDF/XML Document</a> is a
+ <span class="termdef"><a name="dfn-conforming-rdf-xml-document">conforming RDF/XML document</a></span>
+
+ if it adheres to the specification defined in this document.</dd>
+ </dl>
+ </section>
+
+ </section>
+
+
+ <!-- FIFTH PART : Data Model -->
+
+ <section id="section-Data-Model">
+
+ <h2>Syntax Data Model</h2>
+
+ <div>
+ <p>This document specifies the syntax of RDF/XML as a grammar on an
+ alphabet of symbols. The symbols are called <em>events</em> in the
+ style of the <a href="#ref-xpath">[XPATH]</a> 
+
+ <a href="http://www.w3.org/TR/xpath#infoset">Information Set Mapping</a>.
+ A sequence of events is normally derived from an XML document, in
+ which case they are in document order as defined below in
+ <a href="#section-Infoset-Mapping">Section 6.2 Information Set Mapping</a>.
+ The sequence these events form are intended to be similar to the sequence
+ of events produced by the <a href="#ref-sax">[SAX2]</a> XML API from
+ the same XML document. Sequences of events may be checked against
+ the grammar to determine whether they are or are not syntactically
+ well-formed RDF/XML.</p>
+
+ <p>The grammar productions may include actions which fire when the
+ production is recognized. Taken together these actions define a
+ transformation from any syntactically well-formed RDF/XML sequence of
+ events into an RDF graph represented in the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
+ language.</p>
+
+ <p>The model given here illustrates one way to create a representation of
+ an <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-graph">RDF Graph</a>
+
+ from an RDF/XML document. It does not mandate any implementation
+ method — any other method that results in a representation of the same
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-graph">RDF Graph</a>
+ may be used.</p>
+
+ <p>In particular:</p>
+ <ul>
+ <li>This specification permits any
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#implementation-note">representation</a>
+ of an RDF graph (see <a href="#ref-rdf-concepts">[RDF-CONCEPTS]</a>);
+ in particular, it does not require the use of
+
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>.</li>
+ <li>This specification does not require the use of
+ <a href="#ref-xpath">[XPATH]</a> or <a href="#ref-sax">[SAX2]</a></li>
+ <li>This specification places no constraints on the order in which
+ software transforming RDF/XML into a representation of a graph,
+ constructs the representation of the graph.</li>
+ <li>Software transforming RDF/XML into a representation of a graph
+ MAY eliminate duplicate predicate arcs.</li>
+ </ul>
+
+ <p>The syntax does not support non-well-formed XML documents, nor
+ documents that otherwise do not have an XML Information Set; for
+ example, that do not conform to
+ <a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">Namespaces in XML</a>
+
+ <a href="#ref-namespaces">[XML-NS]</a>.
+ </p>
+
+ <p>The Infoset requires support for
+ <a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">XML Base</a> <a href="#ref-xml-base">[XML-BASE]</a>.
+ RDF/XML uses the information item property [base URI], discussed in
+ <a href="#section-baseURIs">section 5.3</a>
+ </p>
+
+ <p>This specification requires an
+ XML Information Set <a href="#ref-xml-infoset">[INFOSET]</a>
+ which supports at least the following information items and
+ properties for RDF/XML:</p>
+
+ <dl>
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.document">document information item</a></dt>
+ <dd>[document element], [children], [base URI]</dd>
+
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.element">element information item</a></dt>
+ <dd>[local name], [namespace name], [children], [attributes], [parent], [base URI]</dd>
+
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.attribute">attribute information item</a></dt>
+ <dd>[local name], [namespace name], [normalized value]</dd>
+
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.character">character information item</a></dt>
+ <dd>[character code]</dd>
+ </dl>
+
+ <p>There is no mapping of the following items to data model events:</p>
+ <dl>
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.pi">processing instruction information item</a></dt>
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.rse">unexpanded entity reference information item</a></dt>
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.comment">comment information item</a></dt>
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.doctype">document type declaration information item</a></dt>
+
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.entity.unparsed">unparsed entity information item</a></dt>
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.notation">notation information item</a></dt>
+ <dt><a href="http://www.w3.org/TR/xml-infoset/#infoitem.namespace">namespace information item</a></dt>
+ </dl>
+
+ <p>Other information items and properties have no mapping to
+ syntax data model events.
+ </p>
+
+ <p>Element information items with reserved XML Names
+ (See <a href="http://www.w3.org/TR/2000/REC-xml-20001006#dt-name">Name</a>
+ in <a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML 1.0</a>)
+ are not mapped to data model element events. These are all those
+ with property [prefix] beginning with <code>xml</code> (case
+ independent comparison) and all those with [prefix] property
+ having no value and which have [local name] beginning with
+
+ <code>xml</code> (case independent comparison).
+ </p>
+
+ <p>All information items contained inside XML elements matching the
+ <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a>
+ production form
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-XMLLiteral">XML literals</a>
+ and do not follow this mapping. See
+ <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a>
+ for further information.</p>
+
+ <p>This section is intended to satisfy the requirements for
+ <a href="http://www.w3.org/TR/xml-infoset/#conformance">Conformance</a>
+ in the <a href="#ref-xml-infoset">[INFOSET]</a> specification.
+ It specifies the information items and properties that are needed
+ to implement this specification.
+ </p>
+ </div>
+
+ <!-- events -->
+ <section id="section-Nodes">
+ <h3>Events</h3>
+
+ <p>There are nine types of event defined in the following subsections.
+ Most events are constructed from an Infoset information item (except
+ for <a href="#section-identifier-node">URI reference</a>,
+
+ <a href="#section-blank-nodeid-event">blank node</a>,
+ <a href="#section-literal-node">plain literal</a> and
+ <a href="#section-typed-literal-node">typed literal</a>). The effect
+ of an event constructor is to create a new event with a unique identity,
+ distinct from all other events. Events have accessor operations on them
+ and most have the <em>string-value</em> accessor that may be a static value
+ or computed.</p>
+
+ <!-- root event -->
+ <section id="section-root-node">
+ <h3>Root Event</h3>
+
+ <p>Constructed from a
+ <a href="http://www.w3.org/TR/xml-infoset/#infoitem.document">document information item</a>
+ and takes the following accessors and values.</p>
+
+ <dl>
+ <dt><span class="termdef"><a id="eventterm-root-document-element" name="eventterm-root-document-element">document-element</a></span><br /></dt>
+ <dd>Set to the value of document information item property [document-element].</dd>
+ <dt><span class="termdef"><a id="eventterm-root-children" name="eventterm-root-children">children</a></span><br /></dt>
+ <dd>Set to the value of document information item property [children].</dd>
+ <dt><span class="termdef"><a id="eventterm-root-base-uri" name="eventterm-root-base-uri">base-uri</a></span><br /></dt>
+
+ <dd>Set to the value of document information item property [base URI].</dd>
+ <dt><span class="termdef"><a id="eventterm-root-language" name="eventterm-root-language">language</a></span><br /></dt>
+ <dd>Set to the empty string.</dd>
+ </dl>
+ </section>
+
+ <!-- root event -->
+ <section id="section-element-node">
+ <h3>Element Event</h3>
+
+ <p>Constructed from an
+ <a href="http://www.w3.org/TR/xml-infoset/#infoitem.element">element information item</a>
+
+ and takes the following accessors and values:
+ </p>
+
+
+ <dl>
+ <dt><span class="termdef"><a id="eventterm-element-local-name" name="eventterm-element-local-name">local-name</a></span><br /></dt>
+ <dd>Set to the value of element information item property [local name].</dd>
+
+ <dt><span class="termdef"><a id="eventterm-element-namespace-name" name="eventterm-element-namespace-name">namespace-name</a></span><br /></dt>
+ <dd>Set to the value of element information item property [namespace name].</dd>
+
+ <dt><span class="termdef"><a id="eventterm-element-children" name="eventterm-element-children">children</a></span><br /></dt>
+ <dd>Set to the value of element information item property [children].</dd>
+
+ <dt><span class="termdef"><a id="eventterm-element-base-uri" name="eventterm-element-base-uri">base-uri</a></span><br /></dt>
+ <dd>Set to the value of element information item property [base URI].</dd>
+
+ <dt><span class="termdef"><a id="eventterm-element-attributes" name="eventterm-element-attributes">attributes</a></span><br /></dt>
+
+ <dd><p>Made from the value of element information item property [attributes] which is a set of attribute information items.</p>
+
+ <p>If this set contains an attribute information item <code>xml:lang</code> (
+ [namespace name] property with the value
+ "http://www.w3.org/XML/1998/namespace" and
+ [local name] property value "lang")
+ it is removed from the set of attribute information items and the
+ <a href="#eventterm-element-language" class="termref"><span class="arrow">·</span>language<span class="arrow">·</span></a> accessor is set to the
+ [normalized-value] property of the attribute information item.</p>
+
+ <p>All remaining reserved XML Names
+ (See <a href="http://www.w3.org/TR/2000/REC-xml-20001006#dt-name">Name</a>
+
+ in <a href="http://www.w3.org/TR/2000/REC-xml-20001006">XML 1.0</a>)
+ are now removed from the set. These are, all
+ attribute information items in the set with property [prefix]
+ beginning with <code>xml</code> (case independent
+ comparison) and all attribute information items with [prefix]
+ property having no value and which have [local name] beginning with
+ <code>xml</code> (case independent comparison) are removed.
+ Note that the [base URI] accessor is computed by XML Base before any
+ <code>xml:base</code> attribute information item is deleted.</p>
+
+ <p>The remaining set of attribute information items are then used
+ to construct a new set of
+ <a href="#section-attribute-node">Attribute Events</a>
+
+ which is assigned as the value of this accessor.</p>
+ </dd>
+
+ <dt><span class="termdef"><a id="eventterm-element-URI" name="eventterm-element-URI">URI</a></span><br /></dt>
+ <dd>Set to the string value of the concatenation of the
+ value of the namespace-name accessor and the value of the
+ local-name accessor.
+ </dd>
+
+ <dt><span class="termdef"><a id="eventterm-element-URI-string-value" name="eventterm-element-URI-string-value">URI-string-value</a></span><br /></dt>
+ <dd>
+
+ <p>The value is the concatenation of the following in this order "<",
+ the escaped value of the
+ <a href="#eventterm-element-URI" class="termref"><span class="arrow">·</span>URI<span class="arrow">·</span></a>
+ accessor and ">".</p>
+
+ <p>The escaping of the
+ <a href="#eventterm-element-URI" class="termref"><span class="arrow">·</span>URI<span class="arrow">·</span></a>
+ accessor uses the N-Triples escapes for
+ URI references as described in 3.3 URI References.
+ </p>
+
+ </dd>
+
+ <dt><span class="termdef"><a id="eventterm-element-liCounter" name="eventterm-element-liCounter">li-counter</a></span><br /></dt>
+ <dd>Set to the integer value 1.</dd>
+
+ <dt><span class="termdef"><a id="eventterm-element-language" name="eventterm-element-language">language</a></span><br /></dt>
+ <dd>Set from the
+ <a href="#eventterm-element-attributes" class="termref"><span class="arrow">·</span>attributes<span class="arrow">·</span></a>
+ as described above.
+ If no value is given from the attributes, the value is set to the value of
+ the language accessor on the parent event (either a
+ <a href="#section-root-node">Root Event</a> or an
+ <a href="#section-element-node">Element Event</a>), which may be the empty string.
+ </dd>
+
+ <dt><span class="termdef"><a id="eventterm-element-subject" name="eventterm-element-subject">subject</a></span><br /></dt>
+ <dd>Has no initial value. Takes a value that is an
+ <a href="#section-identifier-node">Identifier</a> event.
+ This accessor is used on elements that deal with one node in the RDF graph,
+ this generally being the subject of a statement.</dd>
+
+ </dl>
+ </section>
+
+
+ <!-- end element event -->
+ <section id="section-end-element-node">
+ <h3>End Element Event</h3>
+
+ <p>Has no accessors. Marks the end of the containing element in
+ the sequence.</p>
+ </section>
+
+
+ <!-- attribute event -->
+ <section id="section-attribute-node">
+ <h3>Attribute Event</h3>
+
+ <p>Constructed from an
+ <a href="http://www.w3.org/TR/xml-infoset/#infoitem.attribute">attribute information item</a>
+ and takes the following accessors and values:</p>
+
+ <dl>
+ <dt><span class="termdef"><a id="eventterm-attribute-local-name" name="eventterm-attribute-local-name">local-name</a></span><br /></dt>
+ <dd>Set to the value of attribute information item property [local name].</dd>
+
+ <dt><span class="termdef"><a id="eventterm-attribute-namespace-name" name="eventterm-attribute-namespace-name">namespace-name</a></span><br /></dt>
+ <dd>Set to the value of attribute information item property [namespace name].</dd>
+
+ <dt><span class="termdef"><a id="eventterm-attribute-string-value" name="eventterm-attribute-string-value">string-value</a></span><br /></dt>
+
+ <dd>Set to the value of the attribute information item property [normalized value] as specified by
+ <a href="#ref-xml">[XML]</a> (if an attribute whose normalized
+ value is a zero-length string, then the string-value is also
+ a zero-length string).</dd>
+
+ <dt><span class="termdef"><a id="eventterm-attribute-URI" name="eventterm-attribute-URI">URI</a></span><br /></dt>
+ <dd><p>If <a href="#eventterm-attribute-namespace-name" class="termref"><span class="arrow">·</span>namespace-name<span class="arrow">·</span></a> is present,
+ set to a string value of the concatenation of the value of the
+ <a href="#eventterm-attribute-namespace-name" class="termref"><span class="arrow">·</span>namespace-name<span class="arrow">·</span></a> accessor
+ and the value of the
+ <a href="#eventterm-attribute-local-name" class="termref"><span class="arrow">·</span>local-name<span class="arrow">·</span></a> accessor.
+ Otherwise if <a href="#eventterm-attribute-local-name" class="termref"><span class="arrow">·</span>local-name<span class="arrow">·</span></a> is
+ <code>ID</code>, <code>about</code>, <code>resource</code>, <code>parseType</code> or <code>type</code>, set to a string value of the
+ concatenation of the
+ <a href="#rdf-ns-uri" class="termref"><span class="arrow">·</span>RDF namespace URI reference<span class="arrow">·</span></a>
+
+ and the value of the <a href="#eventterm-attribute-local-name" class="termref"><span class="arrow">·</span>local-name<span class="arrow">·</span></a> accessor. Other non-namespaced <a href="#eventterm-attribute-local-name" class="termref"><span class="arrow">·</span>local-name<span class="arrow">·</span></a> accessor values are forbidden.</p>
+
+ <p>The support for a limited set of non-namespaced names is
+ REQUIRED and intended to allow RDF/XML documents specified in
+ <a href="#ref-rdfms">[RDF-MS]</a> to remain valid; new documents
+ SHOULD NOT use these unqualified attributes and applications MAY
+ choose to warn when the unqualified form is seen in a document.</p>
+
+ <p>The construction of
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+ from XML attributes can generate the same
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+ from different XML attributes. This can cause ambiguity in the
+ grammar when matching attribute events (such as when
+ <code>rdf:about</code> and <code>about</code> XML attributes are
+ both present). Documents that have this are illegal.
+ </p>
+
+ </dd>
+
+ <dt><span class="termdef"><a id="eventterm-attribute-URI-string-value" name="eventterm-attribute-URI-string-value">URI-string-value</a></span><br /></dt>
+ <dd>
+ <p>The value is the concatenation of the following in this order "<",
+ the escaped value of the
+ <a href="#eventterm-attribute-URI" class="termref"><span class="arrow">·</span>URI<span class="arrow">·</span></a>
+ accessor and ">".</p>
+
+ <p>The escaping of the
+ <a href="#eventterm-attribute-URI" class="termref"><span class="arrow">·</span>URI<span class="arrow">·</span></a>
+ accessor uses the N-Triples escapes for
+ URI references as described in 3.3 URI References.
+ </p>
+ </dd>
+
+ </dl>
+ </section>
+
+
+ <!-- text event -->
+ <section id="section-text-node">
+ <h3>Text Event</h3>
+
+ <p>Constructed from a sequence of one or more consecutive
+ <a href="http://www.w3.org/TR/xml-infoset/#infoitem.character">character information items</a>.
+ Has the single accessor:</p>
+
+ <dl>
+ <dt><span class="termdef"><a id="eventterm-text-string-value" name="eventterm-text-string-value">string-value</a></span><br /></dt>
+ <dd>Set to the value of the string made from concatenating the
+ [<a href="http://www.w3.org/TR/xml-infoset/#infoitem.character">character code</a>] property of each of the character information items.
+ </dd>
+ </dl>
+ </section>
+
+
+ <!-- uri reference event -->
+ <section id="section-identifier-node">
+ <h3>URI Reference Event</h3>
+
+ <p><a id="eventterm-identifier-identifier-type" name="eventterm-identifier-identifier-type"></a>
+ An event for a
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a>
+ which has the following accessors:</p>
+
+ <dl>
+ <dt><span class="termdef"><a id="eventterm-identifier-identifier" name="eventterm-identifier-identifier">identifier</a></span><br /></dt>
+ <dd>Takes a string value used as an
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.
+ </dd>
+
+ <dt><span class="termdef"><a id="eventterm-identifier-string-value" name="eventterm-identifier-string-value">string-value</a></span><br /></dt>
+ <dd><p>The value is the concatenation of "<", the escaped value of the <a href="#eventterm-identifier-identifier" class="termref"><span class="arrow">·</span>identifier<span class="arrow">·</span></a> accessor and ">"</p>
+
+ <p>The escaping of the <a href="#eventterm-identifier-identifier" class="termref"><span class="arrow">·</span>identifier<span class="arrow">·</span></a> accessor value
+ uses the <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a> escapes for URI references as described in
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#sec-uri-encoding">3.3 URI References</a>.</p>
+
+ </dd>
+
+ </dl>
+
+ <p>These events are constructed by giving a value for the
+ <a href="#eventterm-identifier-identifier" class="termref"><span class="arrow">·</span>identifier<span class="arrow">·</span></a> accessor.
+ </p>
+
+ <p>For further information on identifiers in the RDF graph, see
+ <a href="#section-Identifiers">section 5.2</a>.</p>
+ </section>
+
+
+ <!-- blank node identifier event -->
+ <section id="section-blank-nodeid-event">
+ <h3>Blank Node Identifier Event</h3>
+
+ <p>An event for a
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a>
+ which has the following accessors:</p>
+
+ <dl>
+ <dt><span class="termdef"><a id="eventterm-blanknodeid-identifier" name="eventterm-blanknodeid-identifier">identifier</a></span><br /></dt>
+
+ <dd>Takes a string value.</dd>
+
+ <dt><span class="termdef"><a id="eventterm-blanknodeid-string-value" name="eventterm-blanknodeid-string-value">string-value</a></span><br /></dt>
+ <dd>The value is a function of the value of the
+ <a href="#eventterm-blanknodeid-identifier" class="termref"><span class="arrow">·</span>identifier<span class="arrow">·</span></a> accessor.
+ The value begins with "_:" and the entire value MUST match the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#nodeID">nodeID</a> production.
+ The function MUST preserve distinct blank node identity as discussed in in section <a href="#section-Identifiers">5.2 Identifiers</a>.</dd>
+
+ </dl>
+
+ <p>These events are constructed by giving a value for the
+ <a href="#eventterm-blanknodeid-identifier" class="termref"><span class="arrow">·</span>identifier<span class="arrow">·</span></a> accessor.
+ </p>
+
+ <p>For further information on identifiers in the RDF graph, see
+ <a href="#section-Identifiers">section 5.2</a>.</p>
+ </section>
+
+
+ <!-- plain literal event -->
+ <section id="section-literal-node">
+ <h3>Plain Literal Event</h3>
+
+ <p>An event for a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-plain-literal">plain literal</a> which can have the following accessors:</p>
+
+ <dl>
+ <dt><span class="termdef"><a id="eventterm-literal-literal-value" name="eventterm-literal-literal-value">literal-value</a></span><br /></dt>
+ <dd>Takes a string value.</dd>
+
+ <dt><span class="termdef"><a id="eventterm-literal-literal-language" name="eventterm-literal-literal-language">literal-language</a></span><br /></dt>
+ <dd>Takes a string value used as a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-language-identifier">language tag</a> in an RDF plain literal.</dd>
+
+ <dt><span class="termdef"><a id="eventterm-literal-string-value" name="eventterm-literal-string-value">string-value</a></span><br /></dt>
+ <dd><p>The value is calculated from the other accessors as follows.</p>
+
+ <p>If <a href="#eventterm-literal-literal-language" class="termref"><span class="arrow">·</span>literal-language<span class="arrow">·</span></a> is the empty string
+ then the value is the concatenation of """ (1 double quote),
+ the escaped value of the
+ <a href="#eventterm-literal-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> accessor
+ and """ (1 double quote).</p>
+
+ <p>Otherwise the value is the concatenation of """ (1 double quote),
+ the escaped value of the
+ <a href="#eventterm-literal-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> accessor
+ ""@" (1 double quote and a '@'),
+ and the value of the
+ <a href="#eventterm-literal-literal-language" class="termref"><span class="arrow">·</span>literal-language<span class="arrow">·</span></a> accessor.</p>
+
+ <p>The escaping of the <a href="#eventterm-literal-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> accessor value uses the <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
+
+ escapes for strings as described in <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntrip_strings">3.2 Strings</a>
+ for escaping certain characters such as ". </p>
+ </dd>
+ </dl>
+
+ <p>These events are constructed by giving values for the
+ <a href="#eventterm-literal-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> and
+
+ <a href="#eventterm-literal-literal-language" class="termref"><span class="arrow">·</span>literal-language<span class="arrow">·</span></a> accessors.</p>
+
+
+ <div class="note"><p><strong>Interoperability Note (Informative):</strong>
+ <a id="literal-comb-char-note1" name="literal-comb-char-note1"></a>
+ Literals beginning with a Unicode combining character are
+ allowed however they may cause interoperability problems.
+ See <a href="#ref-charmod">[CHARMOD]</a> for further information.
+ </p></div>
+ </section>
+
+
+ <!-- typed literal event -->
+ <section id="section-typed-literal-node">
+ <h3>Typed Literal Event</h3>
+ <a id="section-xml-literal-node" name="section-xml-literal-node"></a> <!-- old ref -->
+
+ <p>An event for a <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-typed-literal">typed literal</a> which can have the following accessors:</p>
+
+ <dl>
+ <dt><a id="eventterm-xmlliteral-literal-value" name="eventterm-xmlliteral-literal-value"></a><span class="termdef"><a id="eventterm-typedliteral-literal-value" name="eventterm-typedliteral-literal-value">literal-value</a></span><br /></dt>
+ <dd>Takes a string value.</dd>
+
+ <dt><a id="eventterm-literal-literal-datatype" name="eventterm-literal-literal-datatype"></a><span class="termdef"><a id="eventterm-typedliteral-literal-datatype" name="eventterm-typedliteral-literal-datatype">literal-datatype</a></span><br /></dt>
+ <dd>Takes a string value used as an <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.</dd>
+
+ <dt><a id="eventterm-xmlliteral-string-value" name="eventterm-xmlliteral-string-value"></a><span class="termdef"><a id="eventterm-typedliteral-string-value" name="eventterm-typedliteral-string-value">string-value</a></span><br /></dt>
+ <dd><p>The value is the concatenation of the following in this order
+ """ (1 double quote),
+ the escaped value of the
+ <a href="#eventterm-typedliteral-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> accessor,
+ """ (1 double quote), "^^<",
+ the escaped value of the
+ <a href="#eventterm-typedliteral-literal-datatype" class="termref"><span class="arrow">·</span>literal-datatype<span class="arrow">·</span></a> accessor
+ and ">".
+ </p>
+
+ <p>The escaping of the <a href="#eventterm-typedliteral-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a> accessor value
+ uses the <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
+ escapes for strings as described in <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntrip_strings">3.2 Strings</a>
+ for escaping certain characters such as ".
+ The escaping of the <a href="#eventterm-typedliteral-literal-datatype" class="termref"><span class="arrow">·</span>literal-datatype<span class="arrow">·</span></a> accessor value
+ must use the <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a> escapes for URI references as described in
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#sec-uri-encoding">3.3 URI References</a>.</p>
+
+ </dd>
+ </dl>
+
+ <p>These events are constructed by giving values for the
+ <a href="#eventterm-typedliteral-literal-value" class="termref"><span class="arrow">·</span>literal-value<span class="arrow">·</span></a>
+ and
+ <a href="#eventterm-typedliteral-literal-datatype" class="termref"><span class="arrow">·</span>literal-datatype<span class="arrow">·</span></a> accessors.</p>
+
+ <div class="note"><p><strong>Interoperability Note (Informative):</strong>
+ <a id="literal-comb-char-note2" name="literal-comb-char-note2"></a>
+ Literals beginning with a Unicode combining character are
+ allowed however they may cause interoperability problems.
+ See <a href="#ref-charmod">[CHARMOD]</a> for further information.
+ </p></div>
+
+ <div class="note"><p><strong>Implementation Note (Informative):</strong>
+ <a id="literal-white-space-normalization-note" name="literal-white-space-normalization-note"></a>
+ In <a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">XML Schema (part 1)</a> <a href="#ref-xml-schema1">[XML-SCHEMA1]</a>,
+
+ <a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#section-White-Space-Normalization-during-Validation">white space normalization</a>
+ occurs during validation according to the value of the whiteSpace
+ facet. The syntax mapping used in this document occurs after this,
+ so the whiteSpace facet formally has no further effect.
+ </p></div>
+ </section>
+
+ </section>
+
+ <!-- infoset mapping -->
+ <section id="section-Infoset-Mapping">
+ <h3>Information Set Mapping</h3>
+ <a id="section-Infoset-Conformance" name="section-Infoset-Conformance"></a> <!-- old ref -->
+
+ <p>To transform the Infoset into the sequence of events
+ in <em>document order</em>, each
+ information item is transformed as described above to generate a
+ tree of events with accessors and values. Each element event is
+ then replaced as described below to turn the tree of events
+ into a sequence in document order.</p>
+
+ <ol>
+ <li>The original <a href="#section-element-node">element event</a></li>
+ <li>The value of the
+ <a href="http://www.w3.org/TR/xml-infoset/#infoitem.element">children</a>
+ accessor recursively transformed, a possibly empty ordered list of events.</li>
+ <li>An <a href="#section-end-element-node">end element event</a></li>
+ </ol>
+ </section>
+
+
+ <!-- grammar notation -->
+ <section id="section-Infoset-Grammar-Notation">
+ <h3>Grammar Notation</h3>
+ <a id="section-Notation-Forms" name="section-Notation-Forms"></a> <!-- old ref -->
+
+ <p>The following notation is used to describe matching the sequence
+ of data model events as given in <a href="#section-Data-Model">Section 6</a>
+ and the actions to perform for the matches.
+ The RDF/XML grammar is defined in terms of mapping from these matched
+ data model events to triples, using notation of the form:</p>
+
+ <blockquote>
+ <div class="productionOuter"><div class="productionInner"><p>
+ number <em>event-type</em> <em>event-content</em>
+
+ </p></div></div>
+
+ <div>
+ <em>action</em>...
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code>
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
+ </code>
+ </p></div></div>
+ </div>
+ </blockquote>
+
+ <p>where the <em>event-content</em> is an expression matching
+
+ <em>event-types</em> (as defined in <a href="#section-Nodes">Section 6.1</a>),
+ using notation given in the following sections.
+ The number is used for reference purposes.
+ The grammar <em>action</em> may include generating
+ new triples to the graph, written in
+ <a href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/#ntriples">N-Triples</a>
+ format.
+ </p>
+
+ <p>The following sections describe the general notation used and that
+ for event matching and actions.</p>
+
+
+ <!-- general grammar notation -->
+ <section id="section-Infoset-Grammar-General">
+ <h4>Grammar General Notation</h4>
+
+ <table border="1" summary="This table describes the general notation used the grammar.">
+ <caption>Grammar General Notation.</caption>
+ <tr>
+ <th>Notation</th>
+ <th>Meaning</th>
+ </tr>
+ <tr>
+ <td><em>event</em>.<em>accessor</em></td>
+
+ <td>The value of an event accessor.</td>
+ </tr>
+ <tr>
+ <td><code>rdf:</code><em>X</em></td>
+ <td>A URI as defined in <a href="#section-Namespace">section 5.1</a>.</td>
+ </tr>
+ <tr>
+ <td>"ABC"</td>
+ <td>A string of characters A, B, C in order.</td>
+
+ </tr>
+ </table>
+ </section>
+
+
+ <!-- grammar event matching notation -->
+ <section id="section-Infoset-Grammar-Matching">
+ <h4>Grammar Event Matching Notation</h4>
+
+
+ <table border="1" summary="This table describes the event matching notation used in the following sections to match sequences of syntax data model events.">
+ <caption>Grammar Event Matching Notation.</caption>
+ <tr>
+ <th>Notation</th>
+ <th>Meaning</th>
+
+ </tr>
+ <tr>
+ <td>A == B</td>
+ <td>Event accessor A matches expression B.</td>
+ </tr>
+ <tr>
+ <td>A != B</td>
+ <td>A is not equal to B.</td>
+ </tr>
+ <tr>
+ <td>A | B | ...</td>
+ <td>The A, B, ... terms are alternatives.</td>
+
+ </tr>
+ <tr>
+ <td>A - B</td>
+ <td>The terms in A excluding all the terms in B.</td>
+ </tr>
+ <tr>
+ <td><a id="anyURI" name="anyURI">anyURI</a>.</td>
+ <td>Any URI.</td>
+ </tr>
+ <tr>
+ <td><a id="anyString" name="anyString">anyString</a>.</td>
+
+ <td>Any string.</td>
+ </tr>
+ <tr>
+ <td>list(item1, item2, ...); list()</td>
+ <td>An ordered list of events. An empty list.</td>
+ </tr>
+ <tr>
+ <td>set(item1, item2, ...); set()</td>
+ <td>An unordered set of events. An empty set.</td>
+ </tr>
+ <tr>
+ <td>*</td>
+
+ <td>Zero or more of preceding term.</td>
+ </tr>
+ <tr>
+ <td>?</td>
+ <td>Zero or one of preceding term.</td>
+ </tr>
+ <tr>
+ <td>+</td>
+ <td>One or more of preceding term.</td>
+ </tr>
+ <tr>
+ <td>root(acc1 == value1,<br />
+
+     acc2 == value2, ...)</td>
+ <td>Match a <a href="#section-root-node">Root Event</a> with accessors.
+ </td>
+ </tr>
+ <tr>
+ <td>start-element(acc1 == value1,<br />
+     acc2 == value2, ...)<br />
+ <em>children</em><br />
+ end-element()</td>
+
+ <td>Match a sequence of
+ <a href="#section-element-node">Element Event</a> with accessors,
+ a possibly empty list of events as element content and an
+ <a href="#section-end-element-node">End Element Event</a>.
+ </td>
+ </tr>
+ <tr>
+ <td>attribute(acc1 == value1,<br />
+     acc2 == value2, ...)</td>
+ <td>Match an <a href="#section-attribute-node">Attribute Event</a>
+ with accessors.</td>
+
+ </tr>
+ <tr>
+ <td>text()</td>
+ <td>Match a <a href="#section-text-node">Text Event</a>.</td>
+ </tr>
+ </table>
+ </section>
+
+
+ <!-- grammar action notation -->
+ <section id="section-Infoset-Grammar-Action">
+ <h4>Grammar Action Notation</h4>
+
+ <table border="1" summary="This table describes the grammar actions notation used in the following sections to perform triple generation from syntax data model events.">
+ <caption>Grammar Action Notation.</caption>
+ <tr>
+ <th>Notation</th>
+ <th>Meaning</th>
+ </tr>
+ <tr>
+ <td>A := B</td>
+ <td>Assigns A the value B.</td>
+ </tr>
+ <tr>
+ <td>concat(A, B, ..)</td>
+
+ <td>A string created by concatenating the terms in order.</td>
+ </tr>
+ <tr>
+ <td>resolve(<em>e</em>, <em>s</em>)</td>
+ <td>A string created by interpreting string <em>s</em> as a relative URI reference to the
+ <a href="#eventterm-element-base-uri" class="termref"><span class="arrow">·</span>base-uri<span class="arrow">·</span></a> accessor of <a href="#section-element-node"></a> <em>e</em>
+
+ as defined in <a href="#section-baseURIs">Section 5.3 Resolving URIs</a>.
+ The resulting string represents an
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.</td>
+ </tr>
+ <tr>
+ <td>generated-blank-node-id()</td>
+ <td>A string value for a new distinct generated
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-blank-node-id">blank node identifier</a>
+ as defined in <a href="#section-Identifiers">section 5.2 Identifiers</a>.
+ </td>
+
+ </tr>
+ <tr>
+ <td><em>event</em>.<em>accessor</em> := <em>value</em></td>
+ <td>Sets an event accessor to the given value.</td>
+ </tr>
+ <tr>
+ <td>uri(identifier := value)</td>
+ <td>Create a new <a href="#section-identifier-node">URI Reference Event</a>.</td>
+
+ </tr>
+ <tr>
+ <td>bnodeid(identifier := value)</td>
+ <td>Create a new <a href="#section-blank-nodeid-event">Blank Node Identifier Event</a>. See also section <a href="#section-Identifiers">5.2 Identifiers</a>.</td>
+ </tr>
+ <tr>
+ <td>literal(literal-value := string,<br />
+     literal-language := language, ...)</td>
+ <td>Create a new <a href="#section-literal-node">Plain Literal Event</a>.</td>
+
+ </tr>
+ <tr>
+ <td>typed-literal(literal-value := string, ...)</td>
+ <td>Create a new <a href="#section-typed-literal-node">Typed Literal Event</a>.</td>
+ </tr>
+ </table>
+ </section>
+ </section>
+ </section>
+
+ <!-- SIXTH PART : RDF/XML grammar -->
+ <section id="section-Infoset-Grammar">
+ <h2>RDF/XML Grammar</h2>
+
+
+ <!-- grammar summary -->
+ <section id="section-grammar-summary">
+ <h3>Grammar summary</h3>
+
+ <div class="productionOuter"><div class="productionInner">
+ <table>
+ <tr valign="top">
+ <td><a href="#coreSyntaxTerms">7.2.2</a> <a href="#coreSyntaxTerms">coreSyntaxTerms</a></td> <td><code>rdf:RDF</code> | <code>rdf:ID</code> | <code>rdf:about</code> | <code>rdf:parseType</code> | <code>rdf:resource</code> | <code>rdf:nodeID</code> | <code>rdf:datatype</code></td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#syntaxTerms">7.2.3</a> <a href="#syntaxTerms">syntaxTerms</a></td> <td><a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <code>rdf:li</code></td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#oldTerms">7.2.4</a> <a href="#oldTerms">oldTerms</a></td> <td><code>rdf:aboutEach</code> | <code>rdf:aboutEachPrefix</code> | <code>rdf:bagID</code></td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#nodeElementURIs">7.2.5</a> <a href="#nodeElementURIs">nodeElementURIs</a></td> <td><a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:li</code> | <a href="#oldTerms">oldTerms</a> )</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#propertyElementURIs">7.2.6</a> <a href="#propertyElementURIs">propertyElementURIs</a></td> <td><a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <a href="#oldTerms">oldTerms</a> )</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#propertyAttributeURIs">7.2.7</a> <a href="#propertyAttributeURIs">propertyAttributeURIs</a></td> <td><a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <code>rdf:li</code> | <a href="#oldTerms">oldTerms</a> )</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#doc">7.2.8</a> <a href="#doc">doc</a></td> <td>root(<a href="#eventterm-root-document-element">document-element</a> == <a href="#RDF">RDF</a>,
+ <a href="#eventterm-root-children">children</a> == list(<a href="#RDF">RDF</a>))</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#RDF">7.2.9</a> <a href="#RDF">RDF</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <code>rdf:RDF</code>,
+ <a href="#eventterm-element-attributes">attributes</a> == set())<br />
+ <a href="#nodeElementList">nodeElementList</a><br />
+
+ end-element()</td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#nodeElementList">7.2.10</a> <a href="#nodeElementList">nodeElementList</a></td> <td><a href="#ws">ws</a>* (<a href="#nodeElement">nodeElement</a> <a href="#ws">ws</a>* )*</td>
+ </tr>
+ <tr valign="top">
+
+ <td><a href="#nodeElement">7.2.11</a> <a href="#nodeElement">nodeElement</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#nodeElementURIs">nodeElementURIs</a><br />
+     <a href="#eventterm-element-attributes">attributes</a> == set((<a href="#idAttr">idAttr</a> | <a href="#nodeIdAttr">nodeIdAttr</a> | <a href="#aboutAttr">aboutAttr</a> )?, <a href="#propertyAttr">propertyAttr</a>*))<br />
+
+ <a href="#propertyEltList">propertyEltList</a><br />
+ end-element()</td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#ws">7.2.12</a> <a href="#ws">ws</a></td> <td>A <a href="#section-text-node">text event</a> matching white space
+ defined by <a href="#ref-xml">[XML]</a> definition <em>White Space</em>
+
+ Rule [3] <a href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-S">S</a>
+ in section
+ <a href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-common-syn">Common Syntactic Constructs</a></td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#propertyEltList">7.2.13</a> <a href="#propertyEltList">propertyEltList</a></td> <td><a href="#ws">ws</a>* (<a href="#propertyElt">propertyElt</a> <a href="#ws">ws</a>* ) *</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#propertyElt">7.2.14</a> <a href="#propertyElt">propertyElt</a></td> <td><a href="#resourcePropertyElt">resourcePropertyElt</a> |
+ <a href="#literalPropertyElt">literalPropertyElt</a> |
+ <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a> |
+ <a href="#parseTypeResourcePropertyElt">parseTypeResourcePropertyElt</a> |
+
+ <a href="#parseTypeCollectionPropertyElt">parseTypeCollectionPropertyElt</a> |
+ <a href="#parseTypeOtherPropertyElt">parseTypeOtherPropertyElt</a> |
+ <a href="#emptyPropertyElt">emptyPropertyElt</a></td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#resourcePropertyElt">7.2.15</a> <a href="#resourcePropertyElt">resourcePropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
+
+ <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?))<br />
+ <a href="#ws">ws</a>* <a href="#nodeElement">nodeElement</a> <a href="#ws">ws</a>*<br />
+ end-element()</td>
+ </tr>
+ <tr valign="top">
+
+ <td><a href="#literalPropertyElt">7.2.16</a> <a href="#literalPropertyElt">literalPropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
+ <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#datatypeAttr">datatypeAttr</a>?))<br />
+
+ <a href="#section-text-node">text()</a><br />
+ end-element()</td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#parseTypeLiteralPropertyElt">7.2.17</a> <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
+
+ <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseLiteral">parseLiteral</a>))<br />
+ <a href="#literal">literal</a><br />
+ end-element()</td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#parseTypeResourcePropertyElt">7.2.18</a> <a href="#parseTypeResourcePropertyElt">parseTypeResourcePropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
+
+ <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseResource">parseResource</a>))<br />
+ <a href="#propertyEltList">propertyEltList</a><br />
+ end-element()</td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#parseTypeCollectionPropertyElt">7.2.19</a> <a href="#parseTypeCollectionPropertyElt">parseTypeCollectionPropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
+
+ <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseCollection">parseCollection</a>))<br />
+ <a href="#nodeElementList">nodeElementList</a><br />
+ end-element()</td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#parseTypeOtherPropertyElt">7.2.20</a> <a href="#parseTypeOtherPropertyElt">parseTypeOtherPropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
+
+ <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseOther">parseOther</a>))<br />
+ <a href="#propertyEltList">propertyEltList</a><br />
+ end-element()</td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#emptyPropertyElt">7.2.21</a> <a href="#emptyPropertyElt">emptyPropertyElt</a></td> <td>start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),
+
+ <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, ( <a href="#resourceAttr">resourceAttr</a> | <a href="#nodeIdAttr">nodeIdAttr</a> )?, <a href="#propertyAttr">propertyAttr</a>*))<br />
+ end-element()</td>
+ </tr>
+
+ <tr valign="top">
+ <td><a href="#idAttr">7.2.22</a> <a href="#idAttr">idAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:ID</code>,
+ <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#rdf-id">rdf-id</a>)</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#nodeIdAttr">7.2.23</a> <a href="#nodeIdAttr">nodeIdAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:nodeID</code>,
+ <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#rdf-id">rdf-id</a>)</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#aboutAttr">7.2.24</a> <a href="#aboutAttr">aboutAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:about</code>,
+ <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#propertyAttr">7.2.25</a> <a href="#propertyAttr">propertyAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <a href="#propertyAttributeURIs">propertyAttributeURIs</a>,
+ <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#anyString">anyString</a>)</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#resourceAttr">7.2.26</a> <a href="#resourceAttr">resourceAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:resource</code>,
+ <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#datatypeAttr">7.2.27</a> <a href="#datatypeAttr">datatypeAttr</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:datatype</code>,
+ <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#parseLiteral">7.2.28</a> <a href="#parseLiteral">parseLiteral</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,
+ <a href="#eventterm-attribute-string-value">string-value</a> == "Literal")</td>
+ </tr>
+
+ <tr valign="top">
+ <td><a href="#parseResource">7.2.29</a> <a href="#parseResource">parseResource</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,
+ <a href="#eventterm-attribute-string-value">string-value</a> == "Resource")</td>
+ </tr>
+ <tr valign="top">
+
+ <td><a href="#parseCollection">7.2.30</a> <a href="#parseCollection">parseCollection</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,
+ <a href="#eventterm-attribute-string-value">string-value</a> == "Collection")</td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#parseOther">7.2.31</a> <a href="#parseOther">parseOther</a></td> <td>attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,
+
+ <a
+ href="#eventterm-attribute-string-value">string-value</a> == <a href="#anyString">anyString</a> - ("Resource" | "Literal" | "Collection") )</td>
+ </tr>
+ <tr valign="top">
+ <td><a href="#URI-reference">7.2.32</a> <a href="#URI-reference">URI-reference</a></td> <td>An <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.</td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#literal">7.2.33</a> <a href="#literal">literal</a></td> <td>Any XML element content that is allowed according to
+ <a href="#ref-xml">[XML]</a> definition <em>Content of Elements</em>
+ Rule [43]
+ <a href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-content">content</a>.
+ in section
+ <a href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-starttags">3.1 Start-Tags, End-Tags, and Empty-Element Tags</a></td>
+
+ </tr>
+ <tr valign="top">
+ <td><a href="#rdf-id">7.2.34</a> <a href="#rdf-id">rdf-id</a></td> <td>An attribute <a href="#eventterm-attribute-string-value" class="termref"><span class="arrow">·</span>string-value<span class="arrow">·</span></a>
+ matching any legal
+ <a href="#ref-namespaces">[XML-NS]</a> token
+ <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a></td>
+
+ </tr>
+ </table>
+
+ </div></div>
+ </section>
+
+ <!-- grammar productions -->
+ <section id="section-grammar-productions">
+ <h3>Grammar Productions</h3>
+
+ <!-- grammar start -->
+ <section id="start">
+ <h4>Grammar start</h4>
+
+ <p>If the RDF/XML is a standalone XML document
+ (identified by presentation as an
+ application/rdf+xml <a href="#section-MIME-Type">RDF MIME type</a> object,
+ or by some other means) then the grammar may start with
+ production <a href="#doc">doc</a> or
+ production <a href="#nodeElement">nodeElement</a>.</p>
+
+ <p>If the content is known to be RDF/XML by context, such as when
+ RDF/XML is embedded inside other XML content, then the grammar
+ can either start
+ at <a href="#section-element-node">Element Event</a> 
+ <a href="#RDF">RDF</a>
+ (only when an element is legal at that point in the XML)
+ or at production <a href="#nodeElementList">nodeElementList</a>
+ (only when element content is legal, since this is a list of elements).
+ For such embedded RDF/XML, the
+ <a href="#eventterm-element-base-uri" class="termref"><span class="arrow">·</span>base-uri<span class="arrow">·</span></a>
+ value on the outermost element must be initialized from the containing
+ XML since no
+ <a href="#section-root-node">Root Event</a>  will be available.
+ Note that if such embedding occurs, the grammar may be entered
+ several times but no state is expected to be preserved.</p>
+ </section>
+
+ <!-- core syntax terms -->
+ <section id="coreSyntaxTerms">
+ <h4>Production coreSyntaxTerms</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ <code>rdf:RDF</code> | <code>rdf:ID</code> | <code>rdf:about</code> | <code>rdf:parseType</code> | <code>rdf:resource</code> | <code>rdf:nodeID</code> | <code>rdf:datatype</code>
+
+ </p></div></div>
+
+ <p>A subset of the syntax terms from the RDF vocabulary in
+ <a href="#section-Namespace">section 5.1</a>
+ which are used in RDF/XML.
+ </p>
+ </section>
+
+ <!-- syntax terms -->
+ <section id="syntaxTerms">
+ <h4>Production syntaxTerms</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <code>rdf:li</code>
+
+ </p></div></div>
+
+ <p>All the syntax terms from the RDF vocabulary in
+ <a href="#section-Namespace">section 5.1</a>
+ which are used in RDF/XML.
+ </p>
+ </section>
+
+ <!-- old terms -->
+ <section id="oldTerms">
+ <h4>Production oldTerms</h4>
+ <a id="bagIdAttr" name="bagIdAttr"></a><a id="section-Bag-Expand" name="section-Bag-Expand"></a>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ <code>rdf:aboutEach</code> | <code>rdf:aboutEachPrefix</code> | <code>rdf:bagID</code>
+
+ </p></div></div>
+
+ <p>These are the names from the <a href="#section-Namespace">RDF vocabulary</a>
+ that have been withdrawn from the language. See the resolutions of
+ Issue <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-aboutEach-on-object">rdfms-aboutEach-on-object</a>,
+ Issue <a href="http://www.w3.org/2000/03/rdf-tracking/#rdfms-abouteachprefix">rdfms-abouteachprefix</a> and
+ Last Call Issue <a href="http://www.w3.org/2001/sw/RDFCore/20030123-issues/#timbl-01">timbl-01</a>
+ for further information.
+ </p>
+
+ <div class="note"><p><strong>Error Test:</strong>
+
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-abouteach/error001.rdf">error001.rdf</a> and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-abouteach/error002.rdf">error002.rdf</a>
+ </p></div>
+ </section>
+
+ <!-- node element uri -->
+ <section id="nodeElementURIs">
+ <h4>Production nodeElementURIs</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ <a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:li</code> | <a href="#oldTerms">oldTerms</a> )
+
+ </p></div></div>
+
+ <p>The <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> that are allowed on node elements.</p>
+ </section>
+
+ <!-- property element URIs -->
+ <section id="propertyElementURIs">
+ <h4>Production propertyElementURIs</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ <a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <a href="#oldTerms">oldTerms</a> )
+
+ </p></div></div>
+
+ <p>The URIs that are allowed on property elements.</p>
+ </section>
+
+ <!-- property attribute URIs -->
+ <section id="propertyAttributeURIs">
+ <h4>Production propertyAttributeURIs</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ <a href="#anyURI">anyURI</a> - ( <a href="#coreSyntaxTerms">coreSyntaxTerms</a> | <code>rdf:Description</code> | <code>rdf:li</code> | <a href="#oldTerms">oldTerms</a> )
+
+ </p></div></div>
+
+ <p>The <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI references</a> that are allowed on property attributes.</p>
+ </section>
+
+ <!-- production doc -->
+ <section id="doc">
+ <h4>Production doc</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ root(<a href="#eventterm-root-document-element">document-element</a> == <a href="#RDF">RDF</a>,<br />
+
+     <a href="#eventterm-root-children">children</a> == list(<a href="#RDF">RDF</a>))
+ </p></div></div>
+ </section>
+
+ <!-- production RDF -->
+ <section id="RDF">
+ <h4>Production RDF</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ start-element(<a href="#eventterm-element-URI">URI</a> == <code>rdf:RDF</code>,<br />
+
+     <a href="#eventterm-element-attributes">attributes</a> == set())<br />
+ <a href="#nodeElementList">nodeElementList</a><br />
+ end-element()
+ </p></div></div>
+ </section>
+
+ <!-- node element list -->
+ <section id="nodeElementList">
+ <h4>Production nodeElementList</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ <a href="#ws">ws</a>* (<a href="#nodeElement">nodeElement</a> <a href="#ws">ws</a>* )*
+
+ </p></div></div>
+ </section>
+
+ <!-- production node element -->
+ <section id="nodeElement">
+ <h4>Production nodeElement</h4>
+ <a id="description" name="description"></a><a id="typedNode" name="typedNode"></a>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#nodeElementURIs">nodeElementURIs</a><br />
+     <a href="#eventterm-element-attributes">attributes</a> == set((<a href="#idAttr">idAttr</a> | <a href="#nodeIdAttr">nodeIdAttr</a> | <a href="#aboutAttr">aboutAttr</a> )?, <a href="#propertyAttr">propertyAttr</a>*))<br />
+
+ <a href="#propertyEltList">propertyEltList</a><br />
+ end-element()
+ </p></div></div>
+
+ <p>For node element <em>e</em>, the processing of some of the attributes
+ has to be done before other work such as dealing with children events
+ or other attributes. These can be processed in any order:</p>
+
+ <ul>
+
+ <li>If there is an attribute <em>a</em> with
+ <em>a</em>.<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:ID</code>, then
+
+ <em>e</em>.<a href="#eventterm-element-subject">subject</a> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>))).</li>
+
+ <li>If there is an attribute <em>a</em> with
+ <em>a</em>.<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:nodeID</code>, then
+
+ <em>e</em>.<a href="#eventterm-element-subject">subject</a> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a>:=<em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>).</li>
+
+ <li>If there is an attribute <em>a</em> with
+
+ <em>a</em>.<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:about</code> then
+ <em>e</em>.<a href="#eventterm-element-subject">subject</a> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)).</li>
+
+ </ul>
+
+ <p>If <em>e</em>.<a href="#eventterm-element-subject">subject</a> is empty,
+ then <em>e</em>.<a href="#eventterm-element-subject">subject</a> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a> := generated-blank-node-id()).</p>
+
+
+ <p>The following can then be performed in any order:</p>
+
+ <ul>
+
+ <li><a id="nodeElementStatement1" name="nodeElementStatement1"></a> If <em>e</em>.<a href="#eventterm-element-URI">URI</a> != <code>rdf:Description</code>
+ then the following statement is added to the graph:
+
+
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>e</em>.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> .</code>
+ </p></div></div>
+ </li>
+
+ <li><a id="nodeElementStatement2" name="nodeElementStatement2"></a> If there is an attribute <em>a</em>
+ in <a href="#propertyAttr">propertyAttr</a> with
+ <em>a</em>.<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:type</code>
+ then
+
+ <em>u</em>:=uri(identifier:=resolve(<em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>))
+ and the following tiple is added to the graph:
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>e</em>.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <em>u</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
+
+ </p></div></div>
+ </li>
+
+ <li><a id="nodeElementStatement3" name="nodeElementStatement3"></a> For each attribute <em>a</em> matching
+ <a href="#propertyAttr">propertyAttr</a> (and not <code>rdf:type</code>),
+ the Unicode string
+ <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>
+
+ SHOULD be in Normal Form C<a href="#ref-nfc">[NFC]</a>,
+ <em>o</em> := literal(<a href="#eventterm-literal-literal-value">literal-value</a> := <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>, <a href="#eventterm-literal-literal-language">literal-language</a> := <em>e</em>.<a href="#eventterm-element-language">language</a>)
+ and the following statement is added to the graph:
+
+
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>e</em>.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>a</em>.<a href="#eventterm-attribute-URI-string-value">URI-string-value</a> <em>o</em>.<a href="#eventterm-literal-string-value">string-value</a> .</code>
+
+ </p></div></div>
+ </li>
+
+ <li><a id="nodeElementStatement4" name="nodeElementStatement4"></a> Handle the
+ <a href="#propertyEltList">propertyEltList</a> children events
+ in document order.</li>
+
+ </ul>
+ </section>
+
+ <!-- production ws -->
+ <section id="ws">
+ <h4>Production ws</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ A <a href="#section-text-node">text event</a> matching white space
+ defined by <a href="#ref-xml">[XML]</a> definition <em>White Space</em>
+ Rule [3] <a href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-S">S</a>
+ in section
+ <a href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-common-syn">Common Syntactic Constructs</a>
+ </p></div></div>
+ </section>
+
+ <!-- property elt list -->
+ <section id="propertyEltList">
+ <h4>Production propertyEltList</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ <a href="#ws">ws</a>* (<a href="#propertyElt">propertyElt</a> <a href="#ws">ws</a>* ) *
+ </p></div></div>
+ </section>
+
+ <!-- property elt -->
+ <section id="propertyElt">
+ <h4>Production propertyElt</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ <a href="#resourcePropertyElt">resourcePropertyElt</a> |
+ <a href="#literalPropertyElt">literalPropertyElt</a> |
+ <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a> |
+ <a href="#parseTypeResourcePropertyElt">parseTypeResourcePropertyElt</a> |
+ <a href="#parseTypeCollectionPropertyElt">parseTypeCollectionPropertyElt</a> |
+
+ <a href="#parseTypeOtherPropertyElt">parseTypeOtherPropertyElt</a> |
+ <a href="#emptyPropertyElt">emptyPropertyElt</a>
+ </p></div></div>
+
+ <p>If element <em>e</em> has
+ <em>e</em>.<a href="#eventterm-element-URI">URI</a> =
+ <code>rdf:li</code> then apply the list expansion rules on element <em>e</em>.parent in
+
+ <a href="#section-List-Expand">section 7.4</a>
+ to give a new URI <em>u</em> and
+ <em>e</em>.<a href="#eventterm-element-URI">URI</a> := <em>u</em>.
+ </p>
+
+ <p>The action of this production must be done before the
+ actions of any sub-matches (<a
+ href="#resourcePropertyElt">resourcePropertyElt</a> ... <a href="#emptyPropertyElt">emptyPropertyElt</a>).
+ Alternatively the result must be equivalent to as if it this action
+ was performed first, such as performing as the first
+ action of all of the sub-matches.
+ </p>
+ </section>
+
+ <!-- resource property element -->
+ <section id="resourcePropertyElt">
+ <h4>Production resourcePropertyElt</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
+     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?))<br />
+
+ <a href="#ws">ws</a>* <a href="#nodeElement">nodeElement</a> <a href="#ws">ws</a>*<br />
+ end-element()
+ </p></div></div>
+
+ <p>For element <em>e</em>, and the single contained nodeElement
+ <em>n</em>, first <em>n</em> must be processed using production
+
+ <a href="#nodeElement">nodeElement</a>.
+ Then the following statement is added to the graph:</p>
+
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+   <code> <em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>n</em>.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
+
+ </p></div></div>
+
+ <p>If the <code>rdf:ID</code> attribute <em>a</em> is given, the above
+ statement is reified with
+ <em>i</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
+ using the reification rules in
+
+ <a href="#section-Reification">section 7.3</a>
+ and <em>e</em>.<a href="#eventterm-element-subject">subject</a> := <em>i</em></p>
+ </section>
+
+ <!-- literal property element -->
+ <section id="literalPropertyElt">
+ <h4>Production literalPropertyElt</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
+
+     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#datatypeAttr">datatypeAttr</a>?))<br />
+ <a href="#section-text-node">text()</a><br />
+ end-element()
+ </p></div></div>
+
+ <p>Note that the empty literal case is defined in production
+ <a href="#emptyPropertyElt">emptyPropertyElt</a>.</p>
+
+ <p>For element <em>e</em>, and the text event <em>t</em>.
+ The Unicode string <em>t</em>.<a href="#eventterm-text-string-value">string-value</a> SHOULD be in Normal Form C<a href="#ref-nfc">[NFC]</a>.
+ If the <code>rdf:datatype</code> attribute <em>d</em> is given
+ then <em>o</em> := typed-literal(<a href="#eventterm-typedliteral-literal-value">literal-value</a> := <em>t</em>.<a href="#eventterm-text-string-value">string-value</a>, <a href="#eventterm-typedliteral-literal-datatype">literal-datatype</a> := <em>d</em>.<a href="#eventterm-attribute-string-value">string-value</a>)
+ otherwise
+
+ <em>o</em> := literal(<a href="#eventterm-literal-literal-value">literal-value</a> := <em>t</em>.<a href="#eventterm-text-string-value">string-value</a>, <a href="#eventterm-literal-literal-language">literal-language</a> := <em>e</em>.<a href="#eventterm-element-language">language</a>)
+ and the following statement is added to the graph:</p>
+
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>o</em>.<a href="#eventterm-literal-string-value">string-value</a> .</code>
+
+ </p></div></div>
+
+ <p>If the <code>rdf:ID</code> attribute <em>a</em> is given, the above
+ statement is reified with
+ <em>i</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
+ using the reification rules in
+
+ <a href="#section-Reification">section 7.3</a>
+ and <em>e</em>.<a href="#eventterm-element-subject">subject</a> := <em>i</em>.</p>
+ </section>
+
+ <!-- parse type literal property element -->
+ <section id="parseTypeLiteralPropertyElt">
+ <h4>Production parseTypeLiteralPropertyElt</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+
+ start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
+     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseLiteral">parseLiteral</a>))<br />
+ <a href="#literal">literal</a><br />
+
+ end-element()
+ </p></div></div>
+
+
+ <p>For element <em>e</em> and the literal <em>l</em>
+ that is the <code>rdf:parseType="Literal"</code> content.
+ <em>l</em> is not transformed by the syntax data model mapping into events
+ (as noted in <a href="#section-Data-Model">6 Syntax Data Model</a>)
+ but remains an XML Infoset of XML Information items.</p>
+
+ <p><em>l</em> is transformed into the lexical form of an
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-XMLLiteral">XML literal</a>
+ in the RDF graph <em>x</em> (a Unicode string)
+ by the following algorithm. This does not mandate any implementation
+ method — any other method that gives the same result may be used.</p>
+
+ <ol>
+ <li>Use <em>l</em> to construct an XPath<a href="#ref-xpath">[XPATH]</a> <a href="http://www.w3.org/TR/1999/REC-xpath-19991116#infoset">node-set</a>
+
+ (a <a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/#def-document-subset">document subset</a>)</li>
+ <li>Apply <a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/">Exclusive XML Canonicalization</a> [<a href="#ref-xml-xc14n">XML-XC14N</a>])
+ with comments and with empty
+ <a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/#def-InclusiveNamespaces-PrefixList">InclusiveNamespaces PrefixList</a>
+ to this node-set to give a sequence of octets <em>s</em>
+ </li>
+ <li>This sequence of octets <em>s</em> can be considered to be
+ a UTF-8 encoding of some Unicode string <em>x</em> (sequence
+ of Unicode characters)</li>
+
+ <li>The Unicode string <em>x</em> is used as the lexical form of <em>l</em></li>
+ <li>This Unicode string
+ <em>x</em> SHOULD be in NFC Normal Form C<a href="#ref-nfc">[NFC]</a></li>
+ </ol>
+
+
+ <p>Then <em>o</em> := typed-literal(<a href="#eventterm-typedliteral-literal-value">literal-value</a> := <em>x</em>, <a href="#eventterm-typedliteral-literal-datatype">literal-datatype</a> := <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#XMLLiteral</code> )
+ and the following statement is added to the graph:</p>
+
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>o</em>.<a href="#eventterm-typedliteral-string-value">string-value</a> .</code>
+
+ </p></div></div>
+
+ <div class="note"><p><strong>Test:</strong>
+ Empty literal case indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test009.rdf">test009.rdf</a>
+ and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test009.nt">test009.nt</a>
+ </p></div>
+
+ <p>If the <code>rdf:ID</code> attribute <em>a</em> is given, the above
+ statement is reified with
+
+ <em>i</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
+ using the reification rules in
+ <a href="#section-Reification">section 7.3</a>
+ and <em>e</em>.<a href="#eventterm-element-subject">subject</a> := <em>i</em>.</p>
+ </section>
+
+ <!-- parse type resource property element -->
+ <section id="parseTypeResourcePropertyElt">
+ <h4>Production parseTypeResourcePropertyElt</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
+     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseResource">parseResource</a>))<br />
+
+ <a href="#propertyEltList">propertyEltList</a><br />
+ end-element()
+ </p></div></div>
+
+ <p>For element <em>e</em> with possibly empty element content <em>c</em>.</p>
+
+ <p><em>n</em> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a> := generated-blank-node-id()).</p>
+
+ <p>Add the following statement to the graph:
+ </p>
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>n</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
+
+ </p></div></div>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test004.rdf">test004.rdf</a>
+ and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test004.nt">test004.nt</a>
+ </p></div>
+
+ <p>If the <code>rdf:ID</code> attribute <em>a</em> is given, the
+ statement above is reified with
+
+ <em>i</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
+ using the reification rules in
+ <a href="#section-Reification">section 7.3</a>
+ and <em>e</em>.<a href="#eventterm-element-subject">subject</a> := <em>i</em>.</p>
+
+ <p>If the element content <em>c</em> is not empty, then use event
+ <em>n</em> to create a new sequence of events as follows:</p>
+ <div class="productionOuter"><div class="productionInner"><p>
+ start-element(<a href="#eventterm-element-URI">URI</a> := <code>rdf:Description</code>,<br />
+
+     <a href="#eventterm-element-subject">subject</a> := <em>n</em>,<br />
+     <a href="#eventterm-element-attributes">attributes</a> := set())<br />
+ <em>c</em><br />
+ end-element()
+ </p></div></div>
+
+ <p>Then
+ process the resulting sequence using production
+
+ <a href="#nodeElementList">nodeElement</a>.</p>
+ </section>
+
+ <!-- parse type collection property element -->
+ <section id="parseTypeCollectionPropertyElt">
+ <h4>Production parseTypeCollectionPropertyElt</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
+
+     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseCollection">parseCollection</a>))<br />
+ <a href="#nodeElementList">nodeElementList</a><br />
+ end-element()
+ </p></div></div>
+
+ <p>For element event <em>e</em> with possibly empty
+
+ <a href="#nodeElementList">nodeElementList</a> <em>l</em>. Set
+ <em>s</em>:=list().</p>
+
+ <p>For each element event <em>f</em> in <em>l</em>,
+ <em>n</em> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a> := generated-blank-node-id()) and append <em>n</em> to
+
+ <em>s</em> to give a sequence of events.</p>
+
+ <p>If <em>s</em> is not empty, <em>n</em> is the first event identifier in
+ <em>s</em> and the following statement is added to the graph:</p>
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+
+ <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>n</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
+ </p></div></div>
+
+ <p>otherwise the following statement is added to the graph:</p>
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .</code>
+
+ </p></div></div>
+
+ <p>If the <code>rdf:ID</code> attribute <em>a</em> is given,
+ either of the the above statements is reified with
+ <em>i</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
+ using the reification rules in
+
+ <a href="#section-Reification">section 7.3</a>.
+ </p>
+
+ <p>If <em>s</em> is empty, no further work is performed.</p>
+
+ <p>For each event <em>n</em> in <em>s</em> and the
+ corresponding element event <em>f</em> in <em>l</em>, the following
+ statement is added to the graph:</p>
+
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code> <em>n</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#first> <em>f</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
+ </p></div></div>
+
+ <p>For each consecutive and overlapping pair of events
+ (<em>n</em>, <em>o</em>) in <em>s</em>, the following statement is
+ added to the graph:</p>
+
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>n</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <em>o</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
+
+ </p></div></div>
+
+ <p>If <em>s</em> is not empty, <em>n</em> is the last event identifier
+ in <em>s</em>, the following statement is added to the graph:</p>
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>n</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#rest> <http://www.w3.org/1999/02/22-rdf-syntax-ns#nil> .</code>
+
+ </p></div></div>
+ </section>
+
+ <!-- parse type other property element -->
+ <section id="parseTypeOtherPropertyElt">
+ <h4>Production parseTypeOtherPropertyElt</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
+     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, <a href="#parseOther">parseOther</a>))<br />
+
+ <a href="#propertyEltList">propertyEltList</a><br />
+ end-element()
+ </p></div></div>
+
+
+ <p>All <code>rdf:parseType</code> attribute values other than the strings
+ "Resource", "Literal" or "Collection" are treated as if the value was
+ "Literal". This production matches and acts as if production
+ <a href="#parseTypeLiteralPropertyElt">parseTypeLiteralPropertyElt</a>
+ was matched.
+ No extra triples are generated for other <code>rdf:parseType</code> values.
+ </p>
+ </section>
+
+ <!-- empty property element -->
+ <section id="emptyPropertyElt">
+ <h4>Production emptyPropertyElt</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ start-element(<a href="#eventterm-element-URI">URI</a> == <a href="#propertyElementURIs">propertyElementURIs</a> ),<br />
+     <a href="#eventterm-element-attributes">attributes</a> == set(<a href="#idAttr">idAttr</a>?, ( <a href="#resourceAttr">resourceAttr</a> | <a href="#nodeIdAttr">nodeIdAttr</a> )?, <a href="#propertyAttr">propertyAttr</a>*))<br />
+
+ end-element()
+ </p></div></div>
+
+ <ul>
+
+ <li>
+ <p>If there are no attributes <strong>or</strong> only the
+ optional <code>rdf:ID</code> attribute <em>i</em>
+ then <em>o</em> := literal(<a href="#eventterm-literal-literal-value">literal-value</a>:="", <a href="#eventterm-literal-literal-language">literal-language</a> := <em>e</em>.<a href="#eventterm-element-language">language</a>)
+ and the following statement is added to the graph:</p>
+
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>o</em>.<a href="#eventterm-literal-string-value">string-value</a> .</code>
+
+ </p></div></div>
+
+ <p>and then if <em>i</em> is given, the above statement is reified with
+ uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>i</em>.<a href="#eventterm-attribute-string-value">string-value</a>)))
+ using the reification rules in
+ <a href="#section-Reification">section 7.3</a>.</p>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test002.rdf">test002.rdf</a>
+ and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test002.nt">test002.nt</a>
+ </p></div>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test005.rdf">test005.rdf</a>
+ and
+
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test005.nt">test005.nt</a>
+ </p></div>
+
+ </li>
+
+ <li>
+
+ <p>Otherwise</p>
+
+ <ul>
+ <li>If <code>rdf:resource</code> attribute <em>i</em> is present, then
+ <em>r</em> := uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, <em>i</em>.<a href="#eventterm-attribute-string-value">string-value</a>))
+ </li>
+
+ <li>If <code>rdf:nodeID</code> attribute <em>i</em> is present, then
+ <em>r</em> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a> := <em>i</em>.<a href="#eventterm-attribute-string-value">string-value</a>)
+ </li>
+
+ <li>If neither,
+ <em>r</em> := bnodeid(<a href="#eventterm-identifier-identifier">identifier</a> := generated-blank-node-id())
+ </li>
+ </ul>
+
+ <p>The following are done in any order:</p>
+
+ <ul>
+
+ <li><p>For all <a href="#propertyAttr">propertyAttr</a>
+ attributes <em>a</em> (in any order)</p>
+ <ul>
+
+ <li><p>If <em>a</em>.<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:type</code>
+
+ then <em>u</em>:=uri(identifier:=resolve(<em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>))
+ and the following triple is added to the graph:</p>
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <em>u</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
+
+ </p></div></div>
+ </li>
+
+ <li><p>Otherwise Unicode string
+ <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>
+ SHOULD be in Normal Form C<a href="#ref-nfc">[NFC]</a>,
+ <em>o</em> := literal(<a href="#eventterm-literal-literal-value">literal-value</a> := <em>a</em>.<a href="#eventterm-attribute-string-value">string-value</a>, <a href="#eventterm-literal-literal-language">literal-language</a> := <em>e</em>.<a href="#eventterm-element-language">language</a>)
+ and the following statement is added to the graph:</p>
+
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <em>a</em>.<a href="#eventterm-attribute-URI-string-value">URI-string-value</a> <em>o</em>.<a href="#eventterm-literal-string-value">string-value</a> .</code>
+
+ </p></div></div>
+ </li>
+
+ </ul>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test013.rdf">test013.rdf</a>
+ and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test013.nt">test013.nt</a>
+
+ </p></div>
+
+ <div class="note"><p><strong>Test:</strong>
+ Indicated by
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test014.rdf">test014.rdf</a>
+ and
+ <a href="http://www.w3.org/2000/10/rdf-tests/rdfcore/rdfms-empty-property-elements/test014.nt">test014.nt</a>
+ </p></div>
+
+ </li>
+
+ <li><p>Add the following statement to the graph:</p>
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>e</em>.parent.<a href="#eventterm-element-subject">subject</a>.<a href="#eventterm-identifier-string-value">string-value</a> <em>e</em>.<a href="#eventterm-element-URI-string-value">URI-string-value</a> <em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> .</code>
+
+ </p></div></div>
+
+ <p>and then if <code>rdf:ID</code> attribute <em>i</em> is given, the above statement is
+ reified with
+ uri(<a href="#eventterm-identifier-identifier">identifier</a> := resolve(<em>e</em>, concat("#", <em>i</em>.<a href="#eventterm-identifier-string-value">string-value</a>)))
+ using the reification rules in
+ <a href="#section-Reification">section 7.3</a>.</p>
+
+ </li>
+
+ </ul>
+
+ </li>
+ </ul>
+ </section>
+
+ <!-- id attribute -->
+ <section id="idAttr">
+ <h4>Production idAttr</h4>
+ <!-- idAboutAttr one has gone; id is closest thing replacing it -->
+ <a id="idAboutAttr" name="idAboutAttr"></a>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:ID</code>,<br />
+
+     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#rdf-id">rdf-id</a>)
+ </p></div></div>
+
+ <p><strong>Constraint:</strong>: <a href="#constraint-id">constraint-id</a>
+ applies to the values of <code>rdf:ID</code> attributes</p>
+ </section>
+
+ <!-- node id attribute -->
+ <section id="nodeIdAttr">
+ <h4>Production nodeIdAttr</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:nodeID</code>,<br />
+     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#rdf-id">rdf-id</a>)
+
+ </p></div></div>
+ </section>
+
+ <!-- about attribute -->
+ <section id="aboutAttr">
+ <h4>Production aboutAttr</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:about</code>,<br />
+     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)
+
+ </p></div></div>
+ </section>
+
+ <!-- property attribute -->
+ <section id="propertyAttr">
+ <h4>Production propertyAttr</h4>
+ <a id="propAttr" name="propAttr"></a><a id="typeAttr" name="typeAttr"></a>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ attribute(<a href="#eventterm-attribute-URI">URI</a> == <a href="#propertyAttributeURIs">propertyAttributeURIs</a>,<br />
+     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#anyString">anyString</a>)
+
+ </p></div></div>
+ </section>
+
+ <!-- resource attribute -->
+ <section id="resourceAttr">
+ <h4>Production resourceAttr</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:resource</code>,<br />
+     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)
+
+ </p></div></div>
+ </section>
+
+ <!-- datatype attribute -->
+ <section id="datatypeAttr">
+ <h4>Production datatypeAttr</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:datatype</code>,<br />
+     <a href="#eventterm-attribute-string-value">string-value</a> == <a href="#URI-reference">URI-reference</a>)
+
+ </p></div></div>
+ </section>
+
+ <!-- parse literal -->
+ <section id="parseLiteral">
+ <h4>Production parseLiteral</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,<br />
+     <a href="#eventterm-attribute-string-value">string-value</a> == "Literal")
+
+ </p></div></div>
+ </section>
+
+ <!-- parse resource -->
+ <section id="parseResource">
+ <h4>Production parseResource</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,<br />
+     <a href="#eventterm-attribute-string-value">string-value</a> == "Resource")
+
+ </p></div></div>
+ </section>
+
+ <!-- parse collection -->
+ <section id="parseCollection">
+ <h4>Production parseCollection</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,<br />
+     <a href="#eventterm-attribute-string-value">string-value</a> == "Collection")
+
+ </p></div></div>
+ </section>
+
+ <!-- parse other -->
+ <section id="parseOther">
+ <h4>Production parseOther</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ attribute(<a href="#eventterm-attribute-URI">URI</a> == <code>rdf:parseType</code>,<br />
+     <a
+ href="#eventterm-attribute-string-value">string-value</a> == <a href="#anyString">anyString</a> - ("Resource" | "Literal" | "Collection") )
+
+ </p></div></div>
+ </section>
+
+ <!-- URI reference -->
+ <section id="URI-reference">
+ <h4>Production URI-reference</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ An <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a>.
+ </p></div></div>
+ </section>
+
+ <!-- litteral -->
+ <section id="literal">
+ <h4>Production literal</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+
+ Any XML element content that is allowed according to
+ <a href="#ref-xml">[XML]</a> definition <em>Content of Elements</em>
+ Rule [43]
+ <a href="http://www.w3.org/TR/2000/REC-xml-20001006#NT-content">content</a>.
+ in section
+ <a href="http://www.w3.org/TR/2000/REC-xml-20001006#sec-starttags">3.1 Start-Tags, End-Tags, and Empty-Element Tags</a>
+ </p>
+
+ <p>The string-value for the resulting event is discussed in
+ <a href="#parseTypeLiteralPropertyElt">section 7.2.17</a>.</p>
+
+ </div></div>
+ </section>
+
+ <!-- RDF id -->
+ <section id="rdf-id">
+ <h4>Production rdf-id</h4>
+
+ <div class="productionOuter"><div class="productionInner"><p>
+ An attribute <a href="#eventterm-attribute-string-value" class="termref"><span class="arrow">·</span>string-value<span class="arrow">·</span></a>
+ matching any legal
+ <a href="#ref-namespaces">[XML-NS]</a> token
+ <a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a>
+
+ </p></div></div>
+ </section>
+
+ </section>
+
+ <!-- reification rules -->
+ <section id="section-Reification">
+ <h3>Reification Rules</h3>
+
+ <p>For the given URI reference event <em>r</em> and
+ the statement with terms <em>s</em>, <em>p</em> and <em>o</em>
+
+ corresponding to the N-Triples:</p>
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>s</em> <em>p</em> <em>o</em> .</code>
+ </p></div></div>
+
+ <p>add the following statements to the graph:</p>
+ <div class="ntripleOuter"><div class="ntripleInner"><p>
+ <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <em>s</em> .</code><br />
+
+ <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <em>p</em> .</code><br />
+ <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <em>o</em> .</code><br />
+
+ <code><em>r</em>.<a href="#eventterm-identifier-string-value">string-value</a> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> .</code><br />
+ </p></div></div>
+ </section>
+
+ <!-- expansion rules -->
+ <section id="section-List-Expand">
+ <h3>List Expansion Rules</h3>
+
+ <p>For the given element <em>e</em>, create a new <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-URI-reference">RDF URI reference</a> <em>u</em> :=
+ concat("http://www.w3.org/1999/02/22-rdf-syntax-ns#_",
+
+ <em>e</em>.<a href="#eventterm-element-liCounter">li-counter</a>),
+ increment the
+ <em>e</em>.<a href="#eventterm-element-liCounter">li-counter</a>
+ property by 1 and return <em>u</em>.</p>
+ </section>
+
+ </section>
+
+ <!-- SEVENTH PART : serialising -->
+ <section id="section-Serialising">
+ <h2>Serializing an RDF Graph to RDF/XML</h2>
+
+ <p>There are some
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#dfn-rdf-graph">RDF Graphs</a>
+ as defined in
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">RDF Concepts and Abstract Syntax</a>
+ that cannot be serialized in RDF/XML. These are those that:</p>
+
+ <dl>
+ <dt>Use property names that cannot be turned into XML namespace-qualified names.<br /></dt>
+ <dd>An XML namespace-qualified name
+ (<a href="http://www.w3.org/TR/REC-xml-names/#dt-qname">QName</a>)
+ has restrictions on the legal characters such that not all property URIs
+ can be expressed as these names.
+ It is recommended that implementors of RDF serializers, in order to
+ break a URI into a namespace name and a local name, split it after
+ the last XML non-<a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a>
+
+ character, ensuring that the first character of the name is a
+ <a href="http://www.w3.org/TR/REC-xml#NT-Letter">Letter</a> or '_'.
+ If the URI ends in a
+ non-<a href="http://www.w3.org/TR/REC-xml-names/#NT-NCName">NCName</a>
+ character then throw a "this graph cannot be serialized in RDF/XML"
+ exception or error.
+ </dd>
+
+ <dt>Use inappropriate reserved names as properties<br /></dt>
+ <dd>For example, a property with the same URI as any of the
+ <a href="#syntaxTerms">syntaxTerms</a> production.
+ </dd>
+
+ </dl>
+
+ <div class="note"><p><strong>Implementation Note (Informative):</strong>
+ When an RDF graph is serialized to RDF/XML and has an XML Schema
+ Datatype (XSD), it SHOULD be written in a form that does not require
+ whitespace processing. XSD support is NOT required by RDF or RDF/XML
+ so this is optional.
+ </p></div>
+ </section>
+
+ <!-- EIGHTH PART : RDF XML with HTML and XHTML -->
+ <section id="section-rdf-in-HTML">
+ <h2>Using RDF/XML with HTML and XHTML</h2>
+
+ <p>If RDF/XML is embedded inside HTML or XHTML this can
+ add many new elements and attributes, many of which will not be
+ in the appropriate DTD. This embedding causes validation against the DTD to fail.
+ The obvious solution of changing or extending the DTD is not practical
+ for most uses. This problem has been analyzed extensively by Sean B. Palmer in
+ <a href="http://infomesh.net/2002/rdfinhtml/">RDF in HTML: Approaches</a>
+
+ <a href="#ref-rdf-in-xhtml">[RDF-IN-XHTML]</a>
+ and it concludes that there is no single embedding
+ method that satisfies all applications and remains simple.
+ </p>
+
+ <p>The recommended approach is to not embed RDF/XML in HTML/XHTML but
+ rather to use <code><link></code> element in the <code><head></code>
+ element of the HTML/HTML to point at a separate RDF/XML document.
+ This approach has been used for several years by the
+ <a href="http://www.dublincore.org/">Dublin Core Metadata Initiative (DCMI)</a>
+ on its Web site.</p>
+
+ <p>To use this technique, the <code><link></code> element
+ <code>href</code> should point at the URI of the RDF/XML content
+ and the <code>type</code> attribute should be used with the value of
+ <code>"application/rdf+xml"</code>, the proposed MIME type for
+ RDF/XML, see <a href="#section-MIME-Type">Section 4</a></p>
+
+ <p>The value of the <code>rel</code> attribute may also be set to
+ indicate the relationship; this is an application dependent value.
+ The DCMI has used and recommended <code>rel="meta"</code> when linking
+ in <a href="http://www.ietf.org/rfc/rfc2731.txt">RFC 2731 — Encoding Dublin Core Metadata in HTML</a><a href="#ref-rfc2731">[RFC-2731]</a> however
+
+ <code>rel="alternate"</code> may also be appropriate.
+ See
+ <a href="http://www.w3.org/TR/html401/types.html#type-links">HTML 4.01 link types</a>,
+ <a href="http://www.w3.org/TR/xhtml-modularization/abstraction.html#dt_LinkTypes">XHTML Modularization — LinkTypes</a>
+ and
+ <a href="http://www.w3.org/TR/xhtml2/abstraction.html#dt_LinkTypes">XHTML 2.0 — LinkTypes</a>
+ for further information on the values that may be appropriate
+ for the different versions of HTML.</p>
+
+ <p><a href="#example21">Example 21</a> shows using this method with
+ the <code>link</code> tag inside an XHTML document to link to an
+ external RDF/XML document.</p>
+
+ <div class="exampleOuter">
+ <div class="figure"><a id="example21" name="example21">Example 21: Using
+ <code>link</code> in XHTML with an external RDF/XML document</a> (<a href="example21.html">example21.html</a> linking to <a href="example21.rdf">example21.rdf</a>)</div>
+
+ <div class="exampleInner">
+ <pre>
+ <?xml version="1.0" encoding="utf-8"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+ <head>
+ <title>My document</title>
+ <meta http-equiv="Content-type" content='text/html; charset="utf-8"' />
+
+ <link rel="alternate" type="application/rdf+xml" title="RDF Version" href="example21.rdf" />
+ </head>
+ <body>
+ <h1>My document</h1>
+
+ </body>
+
+ </html>
+
+ </pre>
+ </div>
+ </div>
+ </section>
+
+ <!-- NINETH PART : RDF XML with SVG -->
+ <section id="section-rdf-in-SVG">
+ <h2>Using RDF/XML with SVG (Informative)</h2>
+
+ <p>There is a standardized approach for associating RDF compatible
+ metadata with SVG — the metadata element which was explicitly
+ designed for this purpose as defined in
+ <a href="http://www.w3.org/TR/SVG/metadata.html">Section 21 Metadata</a>
+
+ of the
+ <a href="http://www.w3.org/TR/2001/REC-SVG-20010904/">Scalable Vector Graphics (SVG) 1.0 Specification</a>
+ <a href="#ref-svg">[SVG]</a>
+ and
+ <a href="http://www.w3.org/TR/SVG11/metadata.html">Section 21 Metadata</a>
+ of the
+ <a href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">Scalable Vector Graphics (SVG) 1.1 Specification</a>
+ <a href="#ref-svg11">[SVG11]</a>.
+
+ </p>
+
+ <p>This document contains two example graphs in SVG with such
+ embedded RDF/XML inside the metadata element:
+ <a href="http://www.w3.org/TR/rdf-syntax-grammar/figure1.svg">figure 1</a>
+
+ and
+ <a href="http://www.w3.org/TR/rdf-syntax-grammar/figure2.svg">figure 2</a>.
+ </p>
+ </section>
+
+ <!-- TENTH PART : Acknowledgments -->
+ <section id="section-Acknowledgments" class="informative">
+ <h2>Acknowledgments (Informative)</h2>
+
+ <p>The following people provided valuable contributions to the document:</p>
+
+ <ul>
+ <li>Dan Brickley, W3C/ILRT</li>
+
+ <li>Jeremy Carroll, HP Labs, Bristol</li>
+ <li>Graham Klyne, Nine by Nine</li>
+ <li>Bijan Parsia, MIND Lab at University of Maryland at College Park</li>
+ </ul>
+
+ <p>This document is a product of extended deliberations by the RDF
+ Core working group, whose members have included: Art Barstow (W3C)
+ Dave Beckett (ILRT), Dan Brickley (W3C/ILRT), Dan Connolly (W3C),
+ Jeremy Carroll (Hewlett Packard), Ron Daniel (Interwoven Inc), Bill
+ dehOra (InterX), Jos De Roo (AGFA), Jan Grant (ILRT), Graham Klyne
+ (Clearswift and Nine by Nine), Frank Manola (MITRE Corporation),
+ Brian McBride (Hewlett Packard), Eric Miller (W3C), Stephen
+ Petschulat (IBM), Patrick Stickler (Nokia), Aaron Swartz (HWG), Mike
+ Dean (BBN Technologies / Verizon), R. V. Guha (Alpiri Inc), Pat Hayes
+ (IHMC), Sergey Melnik (Stanford University), Martyn Horner (Profium
+ Ltd).</p>
+
+ <p>This specification also draws upon an earlier RDF Model and Syntax
+ document edited by Ora Lassilla and Ralph Swick, and RDF Schema
+ edited by Dan Brickley and R. V. Guha. RDF and RDF Schema Working
+ group members who contributed to this earlier work are:
+ Nick Arnett (Verity), Tim Berners-Lee (W3C), Tim Bray (Textuality),
+ Dan Brickley (ILRT / University of Bristol), Walter Chang (Adobe),
+ Sailesh Chutani (Oracle), Dan Connolly (W3C), Ron Daniel
+ (DATAFUSION), Charles Frankston (Microsoft), Patrick Gannon
+ (CommerceNet), RV Guha (Epinions, previously of Netscape
+ Communications), Tom Hill (Apple Computer), Arthur van Hoff
+ (Marimba), Renato Iannella (DSTC), Sandeep Jain (Oracle), Kevin
+ Jones, (InterMind), Emiko Kezuka (Digital Vision Laboratories), Joe
+ Lapp (webMethods Inc.), Ora Lassila (Nokia Research Center), Andrew
+ Layman (Microsoft), Ralph LeVan (OCLC), John McCarthy (Lawrence
+ Berkeley National Laboratory), Chris McConnell (Microsoft), Murray
+ Maloney (Grif), Michael Mealling (Network Solutions), Norbert Mikula
+ (DataChannel), Eric Miller (OCLC), Jim Miller (W3C, emeritus), Frank
+ Olken (Lawrence Berkeley National Laboratory), Jean Paoli
+ (Microsoft), Sri Raghavan (Digital/Compaq), Lisa Rein (webMethods
+ Inc.), Paul Resnick (University of Michigan), Bill Roberts
+ (KnowledgeCite), Tsuyoshi Sakata (Digital Vision Laboratories), Bob
+ Schloss (IBM), Leon Shklar (Pencom Web Works), David Singer (IBM),
+ Wei (William) Song (SISU), Neel Sundaresan (IBM), Ralph Swick (W3C),
+ Naohiko Uramoto (IBM), Charles Wicksteed (Reuters Ltd.), Misha Wolf
+ (Reuters Ltd.), Lauren Wood (SoftQuad).
+ </p>
+ </section>
+
+ <!-- ELEVENTH PART : References -->
+ <section id="section-References">
+ <h2>References</h2>
+
+ <!-- Normative References -->
+ <section id="section-Normative-References">
+ <h3>Normative References</h3>
+
+ <dl>
+ <dt>
+ <a id="ref-rdfms" name="ref-rdfms">[RDF-MS]</a>
+ </dt>
+
+ <dd>
+ <cite><a href="http://www.w3.org/TR/1999/REC-rdf-syntax-19990222/">Resource Description Framework (RDF) Model and Syntax Specification</a></cite>, O. Lassila and R. Swick, Editors. World Wide Web Consortium. 22 February 1999. This version is http://www.w3.org/TR/1999/REC-rdf-syntax-19990222. The <a href="http://www.w3.org/TR/REC-rdf-syntax/">latest version of RDF M&S</a> is available at http://www.w3.org/TR/REC-rdf-syntax.
+ </dd>
+
+ <dt>
+ <a id="ref-xml" name="ref-xml">[XML]</a>
+ </dt>
+
+ <dd>
+ <cite><a href="http://www.w3.org/TR/2000/REC-xml-20001006">Extensible Markup Language (XML) 1.0, Second Edition</a></cite>, T. Bray, J. Paoli, C.M. Sperberg-McQueen and E. Maler, Editors. World Wide Web Consortium. 6 October 2000. This version is http://www.w3.org/TR/2000/REC-xml-20001006. <a href="http://www.w3.org/TR/REC-xml">latest version of XML</a> is available at http://www.w3.org/TR/REC-xml.
+ </dd>
+
+ <dt>
+ <a id="ref-namespaces" name="ref-namespaces">[XML-NS]</a>
+ </dt>
+
+ <dd>
+ <cite><a href="http://www.w3.org/TR/1999/REC-xml-names-19990114/">Namespaces in XML</a></cite>, T. Bray, D. Hollander and A. Layman, Editors. World Wide Web Consortium. 14 January 1999. This version is http://www.w3.org/TR/1999/REC-xml-names-19990114. The <a href="http://www.w3.org/TR/REC-xml-names/">latest version of Namespaces in XML</a> is available at http://www.w3.org/TR/REC-xml-names.
+ </dd>
+
+ <dt>
+ <a id="ref-xml-infoset" name="ref-xml-infoset">[INFOSET]</a>
+ </dt>
+
+ <dd>
+ <cite><a href="http://www.w3.org/TR/2001/REC-xml-infoset-20011024/">XML Information Set</a></cite>, J. Cowan and R. Tobin, Editors. World Wide Web Consortium. 24 October 2001. This version is http://www.w3.org/TR/2001/REC-xml-infoset-20011024. The <a href="http://www.w3.org/TR/xml-infoset/">latest version of XML Information set</a> is available at http://www.w3.org/TR/xml-infoset.
+ </dd>
+
+ <dt>
+ <a id="ref-uri" name="ref-uri">[URIS]</a>
+ </dt>
+
+ <dd><cite><a href="http://www.isi.edu/in-notes/rfc2396.txt">RFC 2396 — Uniform Resource Identifiers (URI): Generic Syntax</a></cite>, T. Berners-Lee, R. Fielding and L. Masinter, IETF, August 1998. This document is http://www.isi.edu/in-notes/rfc2396.txt.
+ </dd>
+
+ <dt><a id="ref-rdf-concepts"
+ name="ref-rdf-concepts"></a>[RDF-CONCEPTS]</dt>
+
+ <dd><cite><a
+ href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">Resource
+ Description Framework (RDF): Concepts and Abstract
+ Syntax</a></cite>, Klyne G., Carroll J. (Editors), W3C Recommendation, 10 February 2004. <a href ="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">This version</a> is http://www.w3.org/TR/2004/REC-rdf-primer-20040210/. The <a
+ href="http://www.w3.org/TR/rdf-concepts/">latest version</a>
+
+ is http://www.w3.org/TR/rdf-concepts/.</dd>
+
+
+ <dt><a id="ref-rdf-tests"
+ name="ref-rdf-tests"></a>[RDF-TESTS]</dt>
+
+ <dd><cite><a
+ href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/">RDF
+ Test Cases</a></cite>, Grant J., Beckett D. (Editors), W3C
+ Recommendation, 10 February 2004. <a href = "http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/">This version</a> is http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/. The <a
+ href="http://www.w3.org/TR/rdf-testcases/">latest
+ version</a> is http://www.w3.org/TR/rdf-testcases/.</dd>
+
+ <dt>
+ <a id="ref-keywords" name="ref-keywords">[KEYWORDS]</a>
+ </dt>
+ <dd>
+ <cite><a href="http://www.ietf.org/rfc/rfc2119.txt">RFC 2119 — Key words for use in RFCs to Indicate Requirement Levels</a></cite>, S. Bradner, IETF. March 1997. This document is http://www.ietf.org/rfc/rfc2119.txt.
+ </dd>
+
+
+ <dt>
+ <a id="ref-rfc3023" name="ref-rfc3023">[RFC-3023]</a>
+ </dt>
+ <dd>
+ <cite><a href="http://www.ietf.org/rfc/rfc3023.txt">RFC 3023 — XML Media Types</a></cite>, M. Murata, S. St.Laurent, D.Kohn, IETF. January 2001. This document is http://www.ietf.org/rfc/rfc3023.txt.
+ </dd>
+
+ <dt>
+
+ <a id="ref-iana-media-types" name="ref-iana-media-types">[IANA-MEDIA-TYPES]</a>
+ </dt>
+ <dd>
+ <cite><a href="http://www.iana.org/assignments/media-types/">MIME Media Types</a></cite>, The Internet Assigned Numbers Authority (IANA). This document is http://www.iana.org/assignments/media-types/ . The <a href="http://www.w3.org/2001/sw/RDFCore/mediatype-registration">registration for <code>application/rdf+xml</code></a> is archived at http://www.w3.org/2001/sw/RDFCore/mediatype-registration .
+ </dd>
+
+ <dt>
+
+ <a id="ref-xml-base" name="ref-xml-base">[XML-BASE]</a>
+ </dt>
+ <dd>
+ <cite><a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">XML Base</a></cite>, J. Marsh, Editor, W3C Recommendation. World Wide Web Consortium, 27 June 2001. This version of XML Base is http://www.w3.org/TR/2001/REC-xmlbase-20010627. The <a href="http://www.w3.org/TR/xmlbase/">latest version of XML Base</a> is at http://www.w3.org/TR/xmlbase.
+ </dd>
+
+ <dt>
+
+ <a id="ref-xml-xc14n" name="ref-xml-xc14n">[XML-XC14N]</a>
+ </dt>
+ <dd><cite><a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/">Exclusive XML Canonicalization Version 1.0</a></cite>, J. Boyer, D.E. Eastlake 3rd, J. Reagle, Authors/Editors. W3C Recommendation. World Wide Web Consortium, 18 July 2002. This version of Exclusive XML Canonicalization is http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718. The <a href="http://www.w3.org/TR/xml-exc-c14n/">latest version of Canonical XML</a> is at http://www.w3.org/TR/xml-exc-c14n.
+ </dd>
+
+ <dt>
+ <a id="ref-unicode" name="ref-unicode">[UNICODE]</a>
+
+ </dt>
+ <dd><cite>The Unicode Standard, Version 3</cite>, The Unicode
+ Consortium, Addison-Wesley, 2000. ISBN 0-201-61633-5, as updated
+ from time to time by the publication of new versions. (See <a href="http://www.unicode.org/unicode/standard/versions/">http://www.unicode.org/unicode/standard/versions/</a>
+ for the latest version and additional information on versions of
+ the standard and of the Unicode Character Database).
+ </dd>
+
+ <dt>
+ <a id="ref-nfc" name="ref-nfc">[NFC]</a>
+ </dt>
+
+ <dd><a href="http://www.unicode.org/unicode/reports/tr15/"><cite>Unicode
+ Normalization Forms,</cite></a> Unicode Standard Annex #15, Mark
+ Davis, Martin Dürst. (See <a href="http://www.unicode.org/unicode/reports/tr15/">http://www.unicode.org/unicode/reports/tr15/</a>
+ for the latest version).
+ </dd>
+ </dl>
+ </section>
+
+ <!-- Informational References -->
+ <section id="section-Informative-References">
+ <h3>Informational References</h3>
+
+ <dl>
+
+ <dt>
+ <a id="ref-charmod" name="ref-charmod">[CHARMOD]</a>
+ </dt>
+ <dd>
+ <cite><a href="http://www.w3.org/TR/2002/WD-charmod-20020220/">Character Model for the World Wide Web 1.0</a></cite>, M. Dürst, F. Yergeau, R. Ishida, M. Wolf, A. Freytag, T Texin, Editors, World Wide Web Consortium Working Draft, work in progress, 20 February 2002. This version of the Character Model is http://www.w3.org/TR/2002/WD-charmod-20020220. The <a href="http://www.w3.org/TR/charmod/">latest version of the Character Model</a> is at http://www.w3.org/TR/charmod.
+ </dd>
+
+
+ <dt><a id="ref-rdf-semantics"
+ name="ref-rdf-semantics"></a>[RDF-SEMANTICS]</dt>
+
+ <dd><cite><a
+ href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/">RDF
+ Semantics</a></cite>, Hayes P. (Editor), W3C Recommendation,
+ 10 February 2004. <a href =
+ "http://www.w3.org/TR/2004/REC-rdf-mt-20040210/">This
+ version</a> is
+ http://www.w3.org/TR/2004/REC-rdf-mt-20040210/. The <a
+ href="http://www.w3.org/TR/rdf-mt/">latest version</a>
+ is http://www.w3.org/TR/rdf-mt/.</dd>
+
+ <dt><a id="ref-rdf-primer" name="ref-rdf-primer">[RDF-PRIMER]</a>
+ </dt>
+
<dd><cite><a
- href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/">Resource
- Description Framework (RDF): Concepts and Abstract
- Syntax</a></cite>, Klyne G., Carroll J. (Editors), W3C Recommendation, 10 February 2004. <a href ="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">This version</a> is http://www.w3.org/TR/2004/REC-rdf-primer-20040210/. The <a
- href="http://www.w3.org/TR/rdf-concepts/">latest version</a>
-
- is http://www.w3.org/TR/rdf-concepts/.</dd>
-
-
- <dt><a id="ref-rdf-tests"
- name="ref-rdf-tests"></a>[RDF-TESTS]</dt>
-
- <dd><cite><a
- href="http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/">RDF
- Test Cases</a></cite>, Grant J., Beckett D. (Editors), W3C
-Recommendation, 10 February 2004. <a href = "http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/">This version</a> is http://www.w3.org/TR/2004/REC-rdf-testcases-20040210/. The <a
- href="http://www.w3.org/TR/rdf-testcases/">latest
- version</a> is http://www.w3.org/TR/rdf-testcases/.</dd>
-
- <dt>
- <a id="ref-keywords" name="ref-keywords">[KEYWORDS]</a>
- </dt>
- <dd>
- <cite><a href="http://www.ietf.org/rfc/rfc2119.txt">RFC 2119 — Key words for use in RFCs to Indicate Requirement Levels</a></cite>, S. Bradner, IETF. March 1997. This document is http://www.ietf.org/rfc/rfc2119.txt.
- </dd>
-
-
- <dt>
- <a id="ref-rfc3023" name="ref-rfc3023">[RFC-3023]</a>
- </dt>
- <dd>
- <cite><a href="http://www.ietf.org/rfc/rfc3023.txt">RFC 3023 — XML Media Types</a></cite>, M. Murata, S. St.Laurent, D.Kohn, IETF. January 2001. This document is http://www.ietf.org/rfc/rfc3023.txt.
- </dd>
-
- <dt>
-
- <a id="ref-iana-media-types" name="ref-iana-media-types">[IANA-MEDIA-TYPES]</a>
- </dt>
- <dd>
- <cite><a href="http://www.iana.org/assignments/media-types/">MIME Media Types</a></cite>, The Internet Assigned Numbers Authority (IANA). This document is http://www.iana.org/assignments/media-types/ . The <a href="http://www.w3.org/2001/sw/RDFCore/mediatype-registration">registration for <code>application/rdf+xml</code></a> is archived at http://www.w3.org/2001/sw/RDFCore/mediatype-registration .
- </dd>
-
- <dt>
-
- <a id="ref-xml-base" name="ref-xml-base">[XML-BASE]</a>
- </dt>
- <dd>
- <cite><a href="http://www.w3.org/TR/2001/REC-xmlbase-20010627/">XML Base</a></cite>, J. Marsh, Editor, W3C Recommendation. World Wide Web Consortium, 27 June 2001. This version of XML Base is http://www.w3.org/TR/2001/REC-xmlbase-20010627. The <a href="http://www.w3.org/TR/xmlbase/">latest version of XML Base</a> is at http://www.w3.org/TR/xmlbase.
- </dd>
-
- <dt>
-
- <a id="ref-xml-xc14n" name="ref-xml-xc14n">[XML-XC14N]</a>
- </dt>
- <dd><cite><a href="http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718/">Exclusive XML Canonicalization Version 1.0</a></cite>, J. Boyer, D.E. Eastlake 3rd, J. Reagle, Authors/Editors. W3C Recommendation. World Wide Web Consortium, 18 July 2002. This version of Exclusive XML Canonicalization is http://www.w3.org/TR/2002/REC-xml-exc-c14n-20020718. The <a href="http://www.w3.org/TR/xml-exc-c14n/">latest version of Canonical XML</a> is at http://www.w3.org/TR/xml-exc-c14n.
- </dd>
-
- <dt>
- <a id="ref-unicode" name="ref-unicode">[UNICODE]</a>
-
- </dt>
- <dd><cite>The Unicode Standard, Version 3</cite>, The Unicode
- Consortium, Addison-Wesley, 2000. ISBN 0-201-61633-5, as updated
- from time to time by the publication of new versions. (See <a href="http://www.unicode.org/unicode/standard/versions/">http://www.unicode.org/unicode/standard/versions/</a>
- for the latest version and additional information on versions of
- the standard and of the Unicode Character Database).
- </dd>
-
- <dt>
- <a id="ref-nfc" name="ref-nfc">[NFC]</a>
- </dt>
-
- <dd><a href="http://www.unicode.org/unicode/reports/tr15/"><cite>Unicode
- Normalization Forms,</cite></a> Unicode Standard Annex #15, Mark
- Davis, Martin Dürst. (See <a href="http://www.unicode.org/unicode/reports/tr15/">http://www.unicode.org/unicode/reports/tr15/</a>
- for the latest version).
- </dd>
-</dl>
-
-
-<h3>
-<a id="section-Informative-References" name="section-Informative-References"></a>Informational References
-</h3>
-
-<dl>
-
- <dt>
- <a id="ref-charmod" name="ref-charmod">[CHARMOD]</a>
- </dt>
- <dd>
- <cite><a href="http://www.w3.org/TR/2002/WD-charmod-20020220/">Character Model for the World Wide Web 1.0</a></cite>, M. Dürst, F. Yergeau, R. Ishida, M. Wolf, A. Freytag, T Texin, Editors, World Wide Web Consortium Working Draft, work in progress, 20 February 2002. This version of the Character Model is http://www.w3.org/TR/2002/WD-charmod-20020220. The <a href="http://www.w3.org/TR/charmod/">latest version of the Character Model</a> is at http://www.w3.org/TR/charmod.
- </dd>
-
-
- <dt><a id="ref-rdf-semantics"
- name="ref-rdf-semantics"></a>[RDF-SEMANTICS]</dt>
-
+ href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">RDF
+ Primer</a></cite>, F. Manola, E. Miller, Editors, W3C Recommendation, 10 February 2004. <a
+ href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">This
+ version</a> is
+ http://www.w3.org/TR/2004/REC-rdf-primer-20040210/. The <a
+ href="http://www.w3.org/TR/rdf-primer/">latest version</a> is at
+ http://www.w3.org/TR/rdf-primer/.
+ </dd>
+
+ <dt><a id="ref-rdf-vocabulary"
+ name="ref-rdf-vocabulary"></a>[RDF-VOCABULARY]</dt>
+
<dd><cite><a
- href="http://www.w3.org/TR/2004/REC-rdf-mt-20040210/">RDF
- Semantics</a></cite>, Hayes P. (Editor), W3C Recommendation,
-10 February 2004. <a href =
-"http://www.w3.org/TR/2004/REC-rdf-mt-20040210/">This
-version</a> is
-http://www.w3.org/TR/2004/REC-rdf-mt-20040210/. The <a
-href="http://www.w3.org/TR/rdf-mt/">latest version</a>
- is http://www.w3.org/TR/rdf-mt/.</dd>
-
- <dt><a id="ref-rdf-primer" name="ref-rdf-primer">[RDF-PRIMER]</a>
- </dt>
-
- <dd><cite><a
- href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">RDF
- Primer</a></cite>, F. Manola, E. Miller, Editors, W3C Recommendation, 10 February 2004. <a
- href="http://www.w3.org/TR/2004/REC-rdf-primer-20040210/">This
- version</a> is
- http://www.w3.org/TR/2004/REC-rdf-primer-20040210/. The <a
- href="http://www.w3.org/TR/rdf-primer/">latest version</a> is at
- http://www.w3.org/TR/rdf-primer/.
- </dd>
-
- <dt><a id="ref-rdf-vocabulary"
- name="ref-rdf-vocabulary"></a>[RDF-VOCABULARY]</dt>
-
- <dd><cite><a
- href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210/">RDF
- Vocabulary Description Language 1.0: RDF Schema</a></cite>, Brickley
- D., Guha R.V. (Editors), W3C Recommendation, 10 February 2004. <a
- href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210/">This
- version</a> is
- http://www.w3.org/TR/2004/REC-rdf-schema-20040210/. The <a
- href="http://www.w3.org/TR/rdf-schema/">latest version</a> is
- http://www.w3.org/TR/rdf-schema/.</dd>
-
-
- <dt>
-
- <a id="ref-stripedrdf" name="ref-stripedrdf">[STRIPEDRDF]</a>
- </dt>
- <dd><cite><a href="http://www.w3.org/2001/10/stripes/">RDF: Understanding the Striped RDF/XML Syntax</a></cite>, D. Brickley, W3C, 2001. This
- document is http://www.w3.org/2001/10/stripes/.
- </dd>
-
- <dt>
- <a id="ref-svg" name="ref-svg">[SVG]</a>
- </dt>
-
- <dd><cite><a href="http://www.w3.org/TR/2001/REC-SVG-20010904/">Scalable Vector Graphics (SVG) 1.0 Specification</a></cite>, J. Ferraiolo (editor), 4 September 2001, W3C Recommendation. This version of SVG is http://www.w3.org/TR/2001/REC-SVG-20010904. The <a href="http://www.w3.org/TR/SVG/">latest version of SVG</a> is at http://www.w3.org/TR/SVG.
- </dd>
-
- <dt>
- <a id="ref-svg11" name="ref-svg11">[SVG11]</a>
- </dt>
- <dd><cite><a href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">Scalable Vector Graphics (SVG) 1.1 Specification</a></cite>, J. Ferraiolo, J. FUJISAWA, D. Jackson (editors), 14 January 2003, W3C Recommendation. This version of SVG is http://www.w3.org/TR/2003/REC-SVG11-20030114/. The <a href="http://www.w3.org/TR/SVG11/">latest version of SVG</a> is at http://www.w3.org/TR/SVG11.
- </dd>
-
-
- <dt>
- <a id="ref-xpath" name="ref-xpath">[XPATH]</a>
- </dt>
- <dd><cite><a href="http://www.w3.org/TR/1999/REC-xpath-19991116">XML Path Language (XPath) Version 1.0</a></cite>, J. Clark and S. DeRose, Editors. World Wide Web Consortium, 16 November 1999. This version of XPath is http://www.w3.org/TR/1999/REC-xpath-19991116. The <a href="http://www.w3.org/TR/xpath">latest version of XPath</a> is at http://www.w3.org/TR/xpath.
-</dd>
-
- <dt>
- <a id="ref-sax" name="ref-sax">[SAX2]</a>
- </dt>
- <dd><cite><a href="http://sax.sourceforge.net/">SAX Simple API for XML, version 2</a></cite>, D. Megginson, SourceForge, 5 May 2000. This document is http://sax.sourceforge.net/.</dd>
-
- <dt>
- <a id="ref-unparsing" name="ref-unparsing">[UNPARSING]</a>
-
- </dt>
- <dd><cite><a href="http://www.hpl.hp.com/techreports/2001/HPL-2001-294.html">Unparsing RDF/XML</a></cite>, J. J. Carroll, HP Labs Technical Report, HPL-2001-294, 2001.
- This document is available at http://www.hpl.hp.com/techreports/2001/HPL-2001-294.html.
- </dd>
-
- <dt>
- <a id="ref-relaxng" name="ref-relaxng">[RELAXNG]</a>
- </dt>
- <dd><cite><a href="http://www.oasis-open.org/committees/relax-ng/spec-20011203.html">RELAX NG Specification</a></cite>, James Clark and MURATA Makoto, Editors, OASIS Committee Specification, 3 December 2001. This version of RELAX NG is http://www.oasis-open.org/committees/relax-ng/spec-20011203.html. The <a href="http://www.oasis-open.org/committees/relax-ng/spec.html">latest version of the RELAX NG Specification</a> is at http://www.oasis-open.org/committees/relax-ng/spec.html.</dd>
-
- <dt>
- <a id="ref-relaxng-nx" name="ref-relaxng-nx">[RELAXNG-COMPACT]</a>
- </dt>
- <dd><cite><a href="http://www.oasis-open.org/committees/relax-ng/compact-20021121.html">RELAX NG Compact Syntax</a></cite>, James Clark, Editor. OASIS Committee Specification, 21 November 2002. This document is http://www.oasis-open.org/committees/relax-ng/compact-20021121.html.</dd>
-
- <dt>
- <a id="ref-rdf-in-xhtml" name="ref-rdf-in-xhtml">[RDF-IN-XHTML]</a>
-
- </dt>
- <dd>
- <cite><a href="http://infomesh.net/2002/rdfinhtml/">RDF in HTML: Approaches</a></cite>, Sean B. Palmer, 2002
- </dd>
-
- <dt>
- <a id="ref-rfc2731" name="ref-rfc2731">[RFC-2731]</a>
- </dt>
- <dd>
-
- <cite><a href="http://www.ietf.org/rfc/rfc2731.txt">RFC 2731 — Encoding Dublin Core Metadata in HTML</a></cite>, John Kunze, DCMI, December 1999.
- </dd>
-
- <dt>
- <a id="ref-xml-schema1" name="ref-xml-schema1"></a>[XML-SCHEMA1]
- </dt>
- <dd><cite><a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">XML Schema Part 1: Structures</a></cite>, H.S. Thompson, D. Beech, M. Maloney, N. Mendelsohn, Editors, World Wide Web Consortium Recommendation, 2 May 2001. This version of XML Schema Part 1: Structures is http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/. The <a href="http://www.w3.org/TR/xmlschema-1/">latest version of XML Schema Part 1: Structures</a> is at http://www.w3.org/TR/xmlschema-1.
- </dd>
-
- <dt>
- <a id="ref-xml-schema2" name="ref-xml-schema2"></a>[XML-SCHEMA2]
- </dt>
- <dd><cite><a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">XML Schema Part 2: Datatypes</a></cite>, P.V. Biron, A. Malhotra, Editors, World Wide Web Consortium Recommendation, 2 May 2001. This version of XML Schema Part 2: Datatypes is http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/. The <a href="http://www.w3.org/TR/xmlschema-2/">latest version of XML Schema Part 2: Datatypes</a> is at http://www.w3.org/TR/xmlschema-2.
- </dd>
-
-</dl>
-
-
-<hr />
-
-<h2>
-<a id="section-Schemas" name="section-Schemas"></a>A Syntax Schemas (Informative)
-</h2>
-
-<p>This appendix contains XML schemas for validating RDF/XML forms.
-These are example schemas for information only and are not part of
-this specification.</p>
-
-
-<h3>
-<a id="section-RELAXNG-Schema" name="section-RELAXNG-Schema"></a>A.1
-RELAX NG Compact Schema (Informative)
-</h3>
-
-<p>This is an example schema in RELAX NG Compact (for ease of reading)
-for RDF/XML. Applications can also use the
-
-<a href="rdfxml.rng">RELAX NG XML version</a>.
-These formats are described in
-<a href="http://www.oasis-open.org/committees/relax-ng/spec-20011203.html">RELAX NG</a> (<a href="#ref-relaxng">[RELAXNG]</a>)
-and <a href="http://www.thaiopensource.com/relaxng/compact/">RELAX NG
-Compact</a> (<a href="#ref-relaxng-nx">[RELAXNG-COMPACT]</a>).</p>
-
-<div class="note"><p><strong>Note:</strong>
-The RNGC schema has been updated to attempt to match the grammar but
-this has not been checked or used to validate RDF/XML.
-</p></div>
-
-<div class="exampleOuter">
-<div class="figure"><a href="rdfxml.rnc">RELAX NG Compact Schema for RDF/XML</a></div>
-
-<div class="exampleInner">
-<pre>
-#
-# RELAX NG Compact Schema 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
-
-
-# I cannot seem to do this in RNGC so they are expanded in-line
-
-# coreSyntaxTerms = rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype
-# syntaxTerms = coreSyntaxTerms | rdf:Description | rdf:li
-# oldTerms = rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID
-# nodeElementURIs = * - ( coreSyntaxTerms | rdf:li | oldTerms )
-# propertyElementURIs = * - ( coreSyntaxTerms | rdf:Description | oldTerms )
-# propertyAttributeURIs = * - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )
-
-# Also needed to allow rdf:li on all property element productions
-# since we can't capture the rdf:li rewriting to rdf_<n> in relaxng
-
-# Need to add these explicitly
-xmllang = attribute xml:lang { text }
-xmlbase = attribute xml:base { text }
-# and to forbid every other xml:* attribute, element
-
-doc =
- RDF | nodeElement
-
-RDF =
- element rdf:RDF {
- xmllang?, xmlbase?, 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:parseType |
- rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
- rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID ) {
- (idAttr | nodeIdAttr | aboutAttr )?, xmllang?, xmlbase?, propertyAttr*, propertyEltList
- }
-
- # It is not possible to say "and not things
- # beginning with _ in the rdf: namespace" in RELAX NG.
-
-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 |
- parseTypeCollectionPropertyElt |
- parseTypeOtherPropertyElt |
- emptyPropertyElt
-
-resourcePropertyElt =
- element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
- rdf:resource | rdf:nodeID | rdf:datatype |
- rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
- xml:* ) {
- idAttr?, xmllang?, xmlbase?, nodeElement
- }
-
-literalPropertyElt =
- element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
- rdf:resource | rdf:nodeID | rdf:datatype |
- rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
- xml:* ) {
- (idAttr | datatypeAttr )?, xmllang?, xmlbase?, text
- }
-
-parseTypeLiteralPropertyElt =
- element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
- rdf:resource | rdf:nodeID | rdf:datatype |
- rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
- xml:* ) {
- idAttr?, parseLiteral, xmllang?, xmlbase?, literal
- }
-
-parseTypeResourcePropertyElt =
- element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
- rdf:resource | rdf:nodeID | rdf:datatype |
- rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
- xml:* ) {
- idAttr?, parseResource, xmllang?, xmlbase?, propertyEltList
- }
-
-parseTypeCollectionPropertyElt =
- element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
- rdf:resource | rdf:nodeID | rdf:datatype |
- rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
- xml:* ) {
- idAttr?, xmllang?, xmlbase?, parseCollection, nodeElementList
- }
-
-parseTypeOtherPropertyElt =
- element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
- rdf:resource | rdf:nodeID | rdf:datatype |
- rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
- xml:* ) {
- idAttr?, xmllang?, xmlbase?, parseOther, any
- }
-
-emptyPropertyElt =
- element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
- rdf:resource | rdf:nodeID | rdf:datatype |
- rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
- xml:* ) {
- idAttr?, (resourceAttr | nodeIdAttr)?, xmllang?, xmlbase?, propertyAttr*
- }
-
-idAttr =
- attribute rdf:ID {
- IDsymbol
- }
-
-nodeIdAttr =
- attribute rdf:nodeID {
- IDsymbol
- }
-
-aboutAttr =
- attribute rdf:about {
- URI-reference
- }
-
-propertyAttr =
- attribute * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
- rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
- rdf:Description | rdf:aboutEach |
- rdf:aboutEachPrefix | rdf:bagID |
- xml:* ) {
- string
- }
-
-resourceAttr =
- attribute rdf:resource {
- URI-reference
- }
-
-datatypeAttr =
- attribute rdf:datatype {
- URI-reference
- }
-
-parseLiteral =
- attribute rdf:parseType {
- "Literal"
- }
-
-parseResource =
- attribute rdf:parseType {
- "Resource"
- }
-
-parseCollection =
- attribute rdf:parseType {
- "Collection"
- }
-
-parseOther =
- attribute rdf:parseType {
- text
- }
-
-URI-reference =
- string
-
-literal =
- any
-
-IDsymbol =
- xsd:NMTOKEN
-
-any =
- mixed { element * { attribute * { text }*, any }* }
-
-
-</pre>
-</div>
-
-</div>
-
-
-<h2>
-<a id="changes" name="changes"></a>
-
-<a id="section-Changes" name="section-Changes">B Revisions since Draft 10 October 2003 (Informative)</a>
-</h2>
-
-<p>Changes since <a href="http://www.w3.org/TR/2003/WD-rdf-syntax-grammar-20031010/">10 October 2003</a> second last call working draft</p>
-
-<p>These are are divided into non-editorial and editorial. The
-non-editorial changes also list consquential editorial changes.
-Editorial changes are those which do not result in any change in the
-meaning of an RDF document or the behaviour of an RDF
-application.</p>
-
-<h3>
-<a id="section-Changes-non-editorial" name="section-Changes-non-editorial">Appendix B.1: Non-Editorial Revisions</a>
-</h3>
-
-<p>None</p>
-
-<h3>
-<a id="section-Changes-editorial" name="section-Changes-editorial">Appendix B.2: Editorial Revisions</a>
-</h3>
-
-
-<dl>
-<dt>German Translation</dt>
-
-<dd>
-Fix the German in <a href="#example8">Example 8</a>
-in section <a href="#section-Syntax-languages">2.7</a> after the
-<a href="http://lists.w3.org/Archives/Public/www-rdf-comments/2003OctDec/0215.html">comment by Benjamin Nowack</a>
-</dd>
-
-<dt>No property attributes on rdf:parseType="Resource"</dt>
-<dd>
-<a href="#section-Syntax-property-attributes">2.5</a>
-
-Update to reflect the syntax definition that property attributes cannot
-be used with <code>rdf:parseType="Resource"</code> as pointed out by
-<a href="http://lists.w3.org/Archives/Public/www-rdf-comments/2003OctDec/0074.html">comment by Sabadello 2003-10-30</a>
-</dd>
-
-<dt>URI Encoding</dt>
-<dd>
-<a href="#section-identifier-node">6.1.6</a>,
-<a href="#section-literal-node">6.1.8</a>,
-<a href="#section-typed-literal-node">6.1.9</a>
-
-after <a href="http://lists.w3.org/Archives/Public/w3c-rdfcore-wg/2003Nov/0006.html">proposal by Jeremy Carroll</a><br />
-<a href="#section-element-node">6.1.2</a>,
-<a href="#section-attribute-node">6.1.4</a>
-Added element/attribute URI-string-value accessors<br />
-<a href="#nodeElement">7.2.11</a>,
-<a href="#emptyPropertyElt">7.2.21</a>
-Added use of new uri event for the <code>rdf:type</code> cases<br />
-
-<a href="#nodeElement">7.2.11</a> (<e.URI> and <a.URI>),
-<a href="#resourcePropertyElt">7.2.15</a> (<e.URI>)
-<a href="#literalPropertyElt">7.2.16</a> (<e.URI>)
-
-<a href="#parseTypeLiteralPropertyElt">7.2.17</a> (<e.URI>)
-<a href="#parseTypeResourcePropertyElt">7.2.18</a> (<e.URI>)
-<a href="#parseTypeCollectionPropertyElt">7.2.19</a> (<e.URI> twice)
-<a href="#emptyPropertyElt">7.2.21</a> (<e.URI> twice, <a.URI> once)
-changed from X.URI to X.URI-string-value (anywhere "<"..">" appeared
-in the grammar action without a hardcoded URI reference)<br />
-
-<a href="#URI-reference">7.2.32</a>
-Replace action wording with "An RDF URI reference"<br/>
-All changed as outlined in
-<a href="http://lists.w3.org/Archives/Public/www-rdf-comments/2003OctDec/0100.html">proposal 2003-10-06</a>
-after
-<a href="http://lists.w3.org/Archives/Public/www-rdf-comments/2003OctDec/0068.html">comment by Patel-Schneider 2003-10-29</a>
-</dd>
-</dl>
-
-
-<h3>
-<a id="section-Changes-none" name="section-Changes-none">Appendix B.3: Issues requiring no document revisions</a>
-
-</h3>
-
-<p>None</p>
-
-
-<p><!-- Deleted -->
-<a id="section-Changes2" name="section-Changes2"></a>
-<a id="section-Changes2-non-editorial" name="section-Changes2-non-editorial"></a>
-<a id="section-Changes2-editorial" name="section-Changes2-editorial"></a>
-</p>
-
-
-<hr />
-
-<div class="metadata">
- <p><a href="metadata.rdf"><img src="http://www.w3.org/RDF/icons/rdf_metadata_button.40" alt="RDF/XML Metadata" /></a></p>
-
-</div>
-
-
-
-<section id="section-Acknowledgments" class="informative">
- <h2>Acknowledgments</h2>
-
- <p class="issue">This section does not yet list those who made
- contributions to the RDF 1.1 version, nor does it list the
- current RDF WG members.</p>
-
- <p>The RDF 2004 editors acknowledge valuable contributions from
- ....</p>
-
- <p>This specification contains a significant contribution from ...</p>
-
- <p>This specification is a product of extended deliberations by the
- <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Acknowledgments">members
- of the RDFcore Working Group and the RDF and RDF Schema Working Group</a>.</p>
-</section>
-
-
-<section class="appendix informative" id="changes">
- <h2>Changes from RDF/XML 2004</h2>
-
- <ul>
- <li>2012-02-08: Converted to ReSpec</li>
- </ul>
-</section>
-
-
-<section id="references">
- <p class="issue">abc.</p>
-</section>
-
- </body>
+ href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210/">RDF
+ Vocabulary Description Language 1.0: RDF Schema</a></cite>, Brickley
+ D., Guha R.V. (Editors), W3C Recommendation, 10 February 2004. <a
+ href="http://www.w3.org/TR/2004/REC-rdf-schema-20040210/">This
+ version</a> is
+ http://www.w3.org/TR/2004/REC-rdf-schema-20040210/. The <a
+ href="http://www.w3.org/TR/rdf-schema/">latest version</a> is
+ http://www.w3.org/TR/rdf-schema/.</dd>
+
+
+ <dt>
+
+ <a id="ref-stripedrdf" name="ref-stripedrdf">[STRIPEDRDF]</a>
+ </dt>
+ <dd><cite><a href="http://www.w3.org/2001/10/stripes/">RDF: Understanding the Striped RDF/XML Syntax</a></cite>, D. Brickley, W3C, 2001. This
+ document is http://www.w3.org/2001/10/stripes/.
+ </dd>
+
+ <dt>
+ <a id="ref-svg" name="ref-svg">[SVG]</a>
+ </dt>
+
+ <dd><cite><a href="http://www.w3.org/TR/2001/REC-SVG-20010904/">Scalable Vector Graphics (SVG) 1.0 Specification</a></cite>, J. Ferraiolo (editor), 4 September 2001, W3C Recommendation. This version of SVG is http://www.w3.org/TR/2001/REC-SVG-20010904. The <a href="http://www.w3.org/TR/SVG/">latest version of SVG</a> is at http://www.w3.org/TR/SVG.
+ </dd>
+
+ <dt>
+ <a id="ref-svg11" name="ref-svg11">[SVG11]</a>
+ </dt>
+ <dd><cite><a href="http://www.w3.org/TR/2003/REC-SVG11-20030114/">Scalable Vector Graphics (SVG) 1.1 Specification</a></cite>, J. Ferraiolo, J. FUJISAWA, D. Jackson (editors), 14 January 2003, W3C Recommendation. This version of SVG is http://www.w3.org/TR/2003/REC-SVG11-20030114/. The <a href="http://www.w3.org/TR/SVG11/">latest version of SVG</a> is at http://www.w3.org/TR/SVG11.
+ </dd>
+
+
+ <dt>
+ <a id="ref-xpath" name="ref-xpath">[XPATH]</a>
+ </dt>
+ <dd><cite><a href="http://www.w3.org/TR/1999/REC-xpath-19991116">XML Path Language (XPath) Version 1.0</a></cite>, J. Clark and S. DeRose, Editors. World Wide Web Consortium, 16 November 1999. This version of XPath is http://www.w3.org/TR/1999/REC-xpath-19991116. The <a href="http://www.w3.org/TR/xpath">latest version of XPath</a> is at http://www.w3.org/TR/xpath.
+ </dd>
+
+ <dt>
+ <a id="ref-sax" name="ref-sax">[SAX2]</a>
+ </dt>
+ <dd><cite><a href="http://sax.sourceforge.net/">SAX Simple API for XML, version 2</a></cite>, D. Megginson, SourceForge, 5 May 2000. This document is http://sax.sourceforge.net/.</dd>
+
+ <dt>
+ <a id="ref-unparsing" name="ref-unparsing">[UNPARSING]</a>
+
+ </dt>
+ <dd><cite><a href="http://www.hpl.hp.com/techreports/2001/HPL-2001-294.html">Unparsing RDF/XML</a></cite>, J. J. Carroll, HP Labs Technical Report, HPL-2001-294, 2001.
+ This document is available at http://www.hpl.hp.com/techreports/2001/HPL-2001-294.html.
+ </dd>
+
+ <dt>
+ <a id="ref-relaxng" name="ref-relaxng">[RELAXNG]</a>
+ </dt>
+ <dd><cite><a href="http://www.oasis-open.org/committees/relax-ng/spec-20011203.html">RELAX NG Specification</a></cite>, James Clark and MURATA Makoto, Editors, OASIS Committee Specification, 3 December 2001. This version of RELAX NG is http://www.oasis-open.org/committees/relax-ng/spec-20011203.html. The <a href="http://www.oasis-open.org/committees/relax-ng/spec.html">latest version of the RELAX NG Specification</a> is at http://www.oasis-open.org/committees/relax-ng/spec.html.</dd>
+
+ <dt>
+ <a id="ref-relaxng-nx" name="ref-relaxng-nx">[RELAXNG-COMPACT]</a>
+ </dt>
+ <dd><cite><a href="http://www.oasis-open.org/committees/relax-ng/compact-20021121.html">RELAX NG Compact Syntax</a></cite>, James Clark, Editor. OASIS Committee Specification, 21 November 2002. This document is http://www.oasis-open.org/committees/relax-ng/compact-20021121.html.</dd>
+
+ <dt>
+ <a id="ref-rdf-in-xhtml" name="ref-rdf-in-xhtml">[RDF-IN-XHTML]</a>
+
+ </dt>
+ <dd>
+ <cite><a href="http://infomesh.net/2002/rdfinhtml/">RDF in HTML: Approaches</a></cite>, Sean B. Palmer, 2002
+ </dd>
+
+ <dt>
+ <a id="ref-rfc2731" name="ref-rfc2731">[RFC-2731]</a>
+ </dt>
+ <dd>
+
+ <cite><a href="http://www.ietf.org/rfc/rfc2731.txt">RFC 2731 — Encoding Dublin Core Metadata in HTML</a></cite>, John Kunze, DCMI, December 1999.
+ </dd>
+
+ <dt>
+ <a id="ref-xml-schema1" name="ref-xml-schema1"></a>[XML-SCHEMA1]
+ </dt>
+ <dd><cite><a href="http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/">XML Schema Part 1: Structures</a></cite>, H.S. Thompson, D. Beech, M. Maloney, N. Mendelsohn, Editors, World Wide Web Consortium Recommendation, 2 May 2001. This version of XML Schema Part 1: Structures is http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/. The <a href="http://www.w3.org/TR/xmlschema-1/">latest version of XML Schema Part 1: Structures</a> is at http://www.w3.org/TR/xmlschema-1.
+ </dd>
+
+ <dt>
+ <a id="ref-xml-schema2" name="ref-xml-schema2"></a>[XML-SCHEMA2]
+ </dt>
+ <dd><cite><a href="http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/">XML Schema Part 2: Datatypes</a></cite>, P.V. Biron, A. Malhotra, Editors, World Wide Web Consortium Recommendation, 2 May 2001. This version of XML Schema Part 2: Datatypes is http://www.w3.org/TR/2001/REC-xmlschema-2-20010502/. The <a href="http://www.w3.org/TR/xmlschema-2/">latest version of XML Schema Part 2: Datatypes</a> is at http://www.w3.org/TR/xmlschema-2.
+ </dd>
+
+ </dl>
+ </section>
+ </section>
+
+ <hr />
+
+ <!-- TWELVETH PART : Syntax Schemas -->
+ <section id="section-Schemas" class="appendix informative">
+ <h2>Syntax Schemas (Informative)</h2>
+
+ <p>This appendix contains XML schemas for validating RDF/XML forms.
+ These are example schemas for information only and are not part of
+ this specification.</p>
+
+ <!-- Compact Schema -->
+ <section id="section-RELAXNG-Schema">
+ <h3>RELAX NG Compact Schema (Informative)</h3>
+
+ <p>This is an example schema in RELAX NG Compact (for ease of reading)
+ for RDF/XML. Applications can also use the
+
+ <a href="rdfxml.rng">RELAX NG XML version</a>.
+ These formats are described in
+ <a href="http://www.oasis-open.org/committees/relax-ng/spec-20011203.html">RELAX NG</a> (<a href="#ref-relaxng">[RELAXNG]</a>)
+ and <a href="http://www.thaiopensource.com/relaxng/compact/">RELAX NG
+ Compact</a> (<a href="#ref-relaxng-nx">[RELAXNG-COMPACT]</a>).</p>
+
+ <div class="note"><p><strong>Note:</strong>
+ The RNGC schema has been updated to attempt to match the grammar but
+ this has not been checked or used to validate RDF/XML.
+ </p></div>
+
+ <div class="exampleOuter">
+ <div class="figure"><a href="rdfxml.rnc">RELAX NG Compact Schema for RDF/XML</a></div>
+
+ <div class="exampleInner">
+ <pre>
+ #
+ # RELAX NG Compact Schema 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
+
+
+ # I cannot seem to do this in RNGC so they are expanded in-line
+
+ # coreSyntaxTerms = rdf:RDF | rdf:ID | rdf:about | rdf:parseType | rdf:resource | rdf:nodeID | rdf:datatype
+ # syntaxTerms = coreSyntaxTerms | rdf:Description | rdf:li
+ # oldTerms = rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID
+ # nodeElementURIs = * - ( coreSyntaxTerms | rdf:li | oldTerms )
+ # propertyElementURIs = * - ( coreSyntaxTerms | rdf:Description | oldTerms )
+ # propertyAttributeURIs = * - ( coreSyntaxTerms | rdf:Description | rdf:li | oldTerms )
+
+ # Also needed to allow rdf:li on all property element productions
+ # since we can't capture the rdf:li rewriting to rdf_<n> in relaxng
+
+ # Need to add these explicitly
+ xmllang = attribute xml:lang { text }
+ xmlbase = attribute xml:base { text }
+ # and to forbid every other xml:* attribute, element
+
+ doc =
+ RDF | nodeElement
+
+ RDF =
+ element rdf:RDF {
+ xmllang?, xmlbase?, 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:parseType |
+ rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
+ rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID ) {
+ (idAttr | nodeIdAttr | aboutAttr )?, xmllang?, xmlbase?, propertyAttr*, propertyEltList
+ }
+
+ # It is not possible to say "and not things
+ # beginning with _ in the rdf: namespace" in RELAX NG.
+
+ 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 |
+ parseTypeCollectionPropertyElt |
+ parseTypeOtherPropertyElt |
+ emptyPropertyElt
+
+ resourcePropertyElt =
+ element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
+ rdf:resource | rdf:nodeID | rdf:datatype |
+ rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
+ xml:* ) {
+ idAttr?, xmllang?, xmlbase?, nodeElement
+ }
+
+ literalPropertyElt =
+ element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
+ rdf:resource | rdf:nodeID | rdf:datatype |
+ rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
+ xml:* ) {
+ (idAttr | datatypeAttr )?, xmllang?, xmlbase?, text
+ }
+
+ parseTypeLiteralPropertyElt =
+ element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
+ rdf:resource | rdf:nodeID | rdf:datatype |
+ rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
+ xml:* ) {
+ idAttr?, parseLiteral, xmllang?, xmlbase?, literal
+ }
+
+ parseTypeResourcePropertyElt =
+ element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
+ rdf:resource | rdf:nodeID | rdf:datatype |
+ rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
+ xml:* ) {
+ idAttr?, parseResource, xmllang?, xmlbase?, propertyEltList
+ }
+
+ parseTypeCollectionPropertyElt =
+ element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
+ rdf:resource | rdf:nodeID | rdf:datatype |
+ rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
+ xml:* ) {
+ idAttr?, xmllang?, xmlbase?, parseCollection, nodeElementList
+ }
+
+ parseTypeOtherPropertyElt =
+ element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
+ rdf:resource | rdf:nodeID | rdf:datatype |
+ rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
+ xml:* ) {
+ idAttr?, xmllang?, xmlbase?, parseOther, any
+ }
+
+ emptyPropertyElt =
+ element * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
+ rdf:resource | rdf:nodeID | rdf:datatype |
+ rdf:Description | rdf:aboutEach | rdf:aboutEachPrefix | rdf:bagID |
+ xml:* ) {
+ idAttr?, (resourceAttr | nodeIdAttr)?, xmllang?, xmlbase?, propertyAttr*
+ }
+
+ idAttr =
+ attribute rdf:ID {
+ IDsymbol
+ }
+
+ nodeIdAttr =
+ attribute rdf:nodeID {
+ IDsymbol
+ }
+
+ aboutAttr =
+ attribute rdf:about {
+ URI-reference
+ }
+
+ propertyAttr =
+ attribute * - ( local:* | rdf:RDF | rdf:ID | rdf:about | rdf:parseType |
+ rdf:resource | rdf:nodeID | rdf:datatype | rdf:li |
+ rdf:Description | rdf:aboutEach |
+ rdf:aboutEachPrefix | rdf:bagID |
+ xml:* ) {
+ string
+ }
+
+ resourceAttr =
+ attribute rdf:resource {
+ URI-reference
+ }
+
+ datatypeAttr =
+ attribute rdf:datatype {
+ URI-reference
+ }
+
+ parseLiteral =
+ attribute rdf:parseType {
+ "Literal"
+ }
+
+ parseResource =
+ attribute rdf:parseType {
+ "Resource"
+ }
+
+ parseCollection =
+ attribute rdf:parseType {
+ "Collection"
+ }
+
+ parseOther =
+ attribute rdf:parseType {
+ text
+ }
+
+ URI-reference =
+ string
+
+ literal =
+ any
+
+ IDsymbol =
+ xsd:NMTOKEN
+
+ any =
+ mixed { element * { attribute * { text }*, any }* }
+
+
+ </pre>
+ </div>
+
+ </div>
+ </section>
+ </section>
+
+ <!-- THIRTEENTH PART : Changes -->
+ <section id="changes" class="appendix informative">
+ <h2>Revisions since Draft 10 October 2003 (Informative)</h2>
+ <a id="section-Changes" name="section-Changes"></a>
+
+ <p>Changes since <a href="http://www.w3.org/TR/2003/WD-rdf-syntax-grammar-20031010/">10 October 2003</a> second last call working draft</p>
+
+ <p>These are are divided into non-editorial and editorial. The
+ non-editorial changes also list consquential editorial changes.
+ Editorial changes are those which do not result in any change in the
+ meaning of an RDF document or the behaviour of an RDF
+ application.</p>
+
+ <!-- Non-Editorial Revisions -->
+ <section id="section-Changes-non-editorial">
+ <h3>Non-Editorial Revisions</h3>
+
+ <p>None</p>
+ </section>
+
+ <!-- Editorial Revisions -->
+ <section id="section-Changes-editorial">
+ <h3>Editorial Revisions</h3>
+
+ <dl>
+ <dt>German Translation</dt>
+
+ <dd>
+ Fix the German in <a href="#example8">Example 8</a>
+ in section <a href="#section-Syntax-languages">2.7</a> after the
+ <a href="http://lists.w3.org/Archives/Public/www-rdf-comments/2003OctDec/0215.html">comment by Benjamin Nowack</a>
+ </dd>
+
+ <dt>No property attributes on rdf:parseType="Resource"</dt>
+ <dd>
+ <a href="#section-Syntax-property-attributes">2.5</a>
+
+ Update to reflect the syntax definition that property attributes cannot
+ be used with <code>rdf:parseType="Resource"</code> as pointed out by
+ <a href="http://lists.w3.org/Archives/Public/www-rdf-comments/2003OctDec/0074.html">comment by Sabadello 2003-10-30</a>
+ </dd>
+
+ <dt>URI Encoding</dt>
+ <dd>
+ <a href="#section-identifier-node">6.1.6</a>,
+ <a href="#section-literal-node">6.1.8</a>,
+ <a href="#section-typed-literal-node">6.1.9</a>
+
+ after <a href="http://lists.w3.org/Archives/Public/w3c-rdfcore-wg/2003Nov/0006.html">proposal by Jeremy Carroll</a><br />
+ <a href="#section-element-node">6.1.2</a>,
+ <a href="#section-attribute-node">6.1.4</a>
+ Added element/attribute URI-string-value accessors<br />
+ <a href="#nodeElement">7.2.11</a>,
+ <a href="#emptyPropertyElt">7.2.21</a>
+ Added use of new uri event for the <code>rdf:type</code> cases<br />
+
+ <a href="#nodeElement">7.2.11</a> (<e.URI> and <a.URI>),
+ <a href="#resourcePropertyElt">7.2.15</a> (<e.URI>)
+ <a href="#literalPropertyElt">7.2.16</a> (<e.URI>)
+
+ <a href="#parseTypeLiteralPropertyElt">7.2.17</a> (<e.URI>)
+ <a href="#parseTypeResourcePropertyElt">7.2.18</a> (<e.URI>)
+ <a href="#parseTypeCollectionPropertyElt">7.2.19</a> (<e.URI> twice)
+ <a href="#emptyPropertyElt">7.2.21</a> (<e.URI> twice, <a.URI> once)
+ changed from X.URI to X.URI-string-value (anywhere "<"..">" appeared
+ in the grammar action without a hardcoded URI reference)<br />
+
+ <a href="#URI-reference">7.2.32</a>
+ Replace action wording with "An RDF URI reference"<br/>
+ All changed as outlined in
+ <a href="http://lists.w3.org/Archives/Public/www-rdf-comments/2003OctDec/0100.html">proposal 2003-10-06</a>
+ after
+ <a href="http://lists.w3.org/Archives/Public/www-rdf-comments/2003OctDec/0068.html">comment by Patel-Schneider 2003-10-29</a>
+ </dd>
+ </dl>
+ </section>
+
+ <!-- Issues requiring no document revisions -->
+ <section id="section-Changes-none">
+ <h3>Issues requiring no document revisions</h3>
+
+ <p>None</p>
+ </section>
+
+
+
+ <hr />
+
+ <div class="metadata">
+ <p><a href="metadata.rdf"><img src="http://www.w3.org/RDF/icons/rdf_metadata_button.40" alt="RDF/XML Metadata" /></a></p>
+
+ </div>
+ </section>
+
+
+ <section id="section-Acknowledgments" class="informative">
+ <h2>Acknowledgments</h2>
+
+ <p class="issue">This section does not yet list those who made
+ contributions to the RDF 1.1 version, nor does it list the
+ current RDF WG members.</p>
+
+ <p>The RDF 2004 editors acknowledge valuable contributions from
+ ....</p>
+
+ <p>This specification contains a significant contribution from ...</p>
+
+ <p>This specification is a product of extended deliberations by the
+ <a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-Acknowledgments">members
+ of the RDFcore Working Group and the RDF and RDF Schema Working Group</a>.</p>
+ </section>
+
+ </body>
</html>