Edits from feedback from Pierre-Antoine Champin
authorGavin Carothers <gavin@carothers.name>
Wed, 13 Jun 2012 08:06:49 -0700
changeset 432 2055aaa1acc3
parent 431 e568c49ed6e6
child 433 704b1034d61d
Edits from feedback from Pierre-Antoine Champin

http://lists.w3.org/Archives/Public/public-rdf-wg/2012Jun/0033.html
rdf-turtle/index.html
--- a/rdf-turtle/index.html	Tue Jun 05 17:03:18 2012 +0100
+++ b/rdf-turtle/index.html	Wed Jun 13 08:06:49 2012 -0700
@@ -162,7 +162,7 @@
 			</p>
 
 			<p>
-			  A Turtle document is a textual representations of a RDF graph. The following Turtle document describes the relationship between Green Goblin and Spiderman. 
+			  A Turtle document is a textual representations of an RDF graph. The following Turtle document describes the relationship between Green Goblin and Spiderman. 
 			</p>
 			<pre class="example"><script type="text/turtle">@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
 @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@@ -217,8 +217,8 @@
 		<section id="object-lists">
 			<h3>Object Lists</h3>
 			<p>
-			  As with predicates often objects are repeated with the same subject and predicate. The <a href="#grammar-production-objectList">objectList production</a> matches a series of objects, separated by <code>,</code>, following a subject and predicate.
-			  This expresses a series of RDF Triples with that subject and predicate and a each object allocated to one triple.
+			  As with predicates often objects are repeated with the same subject and predicate. The <a href="#grammar-production-objectList">objectList production</a> matches a series of objects, separated by <code>,</code>, following a predicate.
+			  This expresses a series of RDF Triples with the corresponding subject and predicate and a each object allocated to one triple.
 			  Thus, the <code>,</code> symbol is used to repeat the subject and predicate of triples that only differ in the object RDF term.</p>
 			  <p>These two examples  are equivalent ways of writing Spiderman's name in two languages.<p>
  			<pre class="example"><script type="text/turtle"><http://example.org/#spiderman> <http://xmlns.com/foaf/0.1/name> "Spiderman", "Spïdermann"@de .
@@ -253,26 +253,6 @@
 				  The token <code>a</code> in the predicate position of a Turtle triple represents the IRI <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code> .
 				</p>
 
-				<p>The following Turtle document contains examples of all the diffrent ways of writting IRIs in Turtle.</p>
-
-							<pre class="example"><script type="text/turtle"># A triple with all absolute IRIs
-<http://one.example/subject1> <http://one.example/predicate1> <http://one.example/object1> .
-
[email protected] <http://one.example/> .
-<subject2> <predicate2> <object2> .     # relative IRIs, e.g. http://one.example/subject2
-
[email protected] p: <http://two.example/> .
-p:subject3 p:predicate3 p:object3 .     # prefixed name, e.g. http://two.example/subject3
-
[email protected] p: <path/> .                    # prefix p: now stands for http://one.example/path/
-p:subject4 p:predicate4 p:object4 .     # prefixed name, e.g. http://one.example/path/subject4
-
[email protected] : <http://another.example/> .    # empty prefix
-:subject5 :predicate5 :object5 .        # prefixed name, e.g. http://another.example/subject5
-
-:subject6 a :subject7 .                 # same as :subject6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> :subject7 .
-</script></pre>
-
 				<section id="turtleIRIs">
 				  <h3>Prefixed Names in Turtle</h3>
 
@@ -317,11 +297,35 @@
 					<p>
 					  The <code>@base</code> directive defines the Base IRI used to resolve relative IRIs per RFC3986 section 5.1.1, "Base URI Embedded in Content".
 					  Section 5.1.2, "Base URI from the Encapsulating Entity" defines how the In-Scope Base IRI may come from an encapsulating document, such as a SOAP envelope with an xml:base directive or a mime multipart document with a Content-Location header.
-					  The "Retrieval URI" identified in 5.1.3, Base "URI from the Retrieval URI", is the URL from which a particular SPARQL query was retrieved.
+					  The "Retrieval URI" identified in 5.1.3, Base "URI from the Retrieval URI", is the URL from which a particular Turtle document was retrieved.
 					  If none of the above specifies the Base URI, the default Base URI (section 5.1.4, "Default Base URI") is used.
 					  Each <code>@base</code> directive sets a new In-Scope Base URI, relative to the previous one.
 					</p>
 				</section>
+				<section>
+					<h3>Examples of IRIs</h3>
+
+				<p>The following Turtle document contains examples of all the diffrent ways of writting IRIs in Turtle.</p>
+
+							<pre class="example"><script type="text/turtle"># A triple with all absolute IRIs
+<http://one.example/subject1> <http://one.example/predicate1> <http://one.example/object1> .
+
[email protected] <http://one.example/> .
+<subject2> <predicate2> <object2> .     # relative IRIs, e.g. http://one.example/subject2
+
[email protected] p: <http://two.example/> .
+p:subject3 p:predicate3 p:object3 .     # prefixed name, e.g. http://two.example/subject3
+
[email protected] p: <path/> .                    # prefix p: now stands for http://one.example/path/
+p:subject4 p:predicate4 p:object4 .     # prefixed name, e.g. http://one.example/path/subject4
+
[email protected] : <http://another.example/> .    # empty prefix
+:subject5 :predicate5 :object5 .        # prefixed name, e.g. http://another.example/subject5
+
+:subject6 a :subject7 .                 # same as :subject6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> :subject7 .
+</script></pre>
+	</section>
+
 
 
 			</section>
@@ -343,9 +347,7 @@
 				  The representation of the lexical form consists of a delimiting <code>"</code>, a sequence of characters matching the regular expression <code>[^\"\\\n\r]</code> or <a href="#numeric">numeric escape sequence</a> or <a href="#string">string escape sequence</a>, and a final delimiting <code>"</code>.
 				  The corresponding <a href="../rdf-concepts/index.html#dfn-lexical-form">RDF lexical form</a> is the characters between the <code>""</code>s, after processing any escape sequences.
 				  If present, the <a href="../rdf-concepts/index.html#dfn-language-tagged-string">language tag</a> is preceded by a <code>@</code>.
-				  The datatype IRI in Turtle may be written using either an <a href="#iri-summary">absolute IRI, a relative IRI or prefixed name</a>.
-				  If there is no language tag, there may be a <a href="../rdf-concepts/index.html#dfn-datatype-URI">datatype IRI</a>, preceeded by <code>^^</code>.
-				  If there is no datatype IRI and no language tag, the datatype is <code>xsd:string</code>.
+				  If there is no language tag, there may be a <a href="../rdf-concepts/index.html#dfn-datatype-URI">datatype IRI</a>, preceeded by <code>^^</code>. The datatype IRI in Turtle may be written using either an <a href="#iri-summary">absolute IRI, a relative IRI or prefixed name</a>. If there is no datatype IRI and no language tag, the datatype is <code>xsd:string</code>.
 				</p>
 
 				<section id="turtle-literals">
@@ -422,7 +424,6 @@
     :censusYear 2007 ;              # xsd:integer
     :birthsPerPerson .0135 ;        # xsd:decimal
     :gdpDollars 14074.2E9 ;         # xsd:double
-    :series "IV"^^my:romanNumeral . # no abbreviation available
 				</script></pre>
 			</section>
 			<section>
@@ -439,7 +440,7 @@
 				<h3>RDF Blank Nodes</h3>
 				<p>
 				  <a href="../rdf-concepts/index.html#dfn-blank-node">RDF blank nodes</a> in Turtle are expressed as <code>_:</code> followed by a blank node label which is a series of name characters.
-				  The characters in the label are built upon <a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a>, liberalized to allow:
+				  The characters in the label are built upon <a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a>, liberalized as follows:
 				</p>
 				<ul>
 				  <li>The characters <code>_</code> and digits may appear anywhere in a blank node label.</li>
@@ -544,7 +545,7 @@
             <h3>White Space</h3>
 			<p>White space (production <a href="#grammar-production-WS">WS</a>) is used to separate two terminals which would otherwise be (mis-)recognized as one terminal. Rule names below in capitals indicate where white space is significant; these form a possible choice of terminals for constructing a Turtle parser.</p>
 
-			<p>White space is significant in terminal <a href="#grammar-production-IRIREF">IRIREF</a> and the production <a href="#grammar-production-String">String</a>.</p>
+			<p>White space is significant in the production <a href="#grammar-production-String">String</a>.</p>
           </section>
           <section id="sec-grammar-comments">
             <h3>Comments</h3>
@@ -677,6 +678,7 @@
 	    </ul>
 
 	    <table id="term2escape" class="separated" style="border-collapse:collapse;">
+		  <caption>Context where each kind of escape sequence can be used</caption>
 	      <thead>
 		<tr>
 		  <th></th>
@@ -706,7 +708,7 @@
 		</tr>
 	      </tbody>
 	    </table>
-	    <p class="note">%-encoded sequences are in the <a href="#grammar-production-IRI_REF">character range for IRIs</a> and are <a href="#grammar-production-PERCENT">explicitly allowed</a> in local names. These appear as a '%' followed by two hex characters and represent that same sequence of three characters. These sequences are <em>not</em> decoded during processing. A term written as <code>&lt;http://a.example/%66oo-bar&gt;</code> in Turtle designates the IRI <code>http://a.example/%66oo-bar</code> and not IRI <code>http://a.example/foo-bar</code>. A term written as <code>ex:%66oo-bar</code> with a prefix <code>@prefix ex: &lt;http://a.example/&gt;</code> also designates the IRI <code>http://a.example/%66oo-bar</code>.</p>
+	    <p class="note">%-encoded sequences are in the <a href="#grammar-production-IRIREF">character range for IRIs</a> and are <a href="#grammar-production-PERCENT">explicitly allowed</a> in local names. These appear as a '%' followed by two hex characters and represent that same sequence of three characters. These sequences are <em>not</em> decoded during processing. A term written as <code>&lt;http://a.example/%66oo-bar&gt;</code> in Turtle designates the IRI <code>http://a.example/%66oo-bar</code> and not IRI <code>http://a.example/foo-bar</code>. A term written as <code>ex:%66oo-bar</code> with a prefix <code>@prefix ex: &lt;http://a.example/&gt;</code> also designates the IRI <code>http://a.example/%66oo-bar</code>.</p>
 
           </section>
           <section id="sec-grammar-grammar">
@@ -735,14 +737,14 @@
           <section id="sec-parsing-state">
           <h3>Parser State</h3>
 
-              <p>Parsing Turtle requires a state of four items:</p>
+              <p>Parsing Turtle requires a state of five items:</p>
 
               <ul>
-                <li id="baseURI">IRI <code class="dfn">baseURI</code> — When the <a href="#grammar-production-base">base production</a> is reached, the second rule argument, <code>IRI_REF</code>, is the base URI used for relative IRI resolution <span class="testrefs">(test: <a href="tests/#base1">base1</a> <a href="tests/#base2">base2</a>)</span>.</li>
+                <li id="baseURI">IRI <code class="dfn">baseURI</code> — When the <a href="#grammar-production-base">base production</a> is reached, the second rule argument, <code>IRIREF</code>, is the base URI used for relative IRI resolution <span class="testrefs">(test: <a href="tests/#base1">base1</a> <a href="tests/#base2">base2</a>)</span>.</li>
 
-                <li id="namespaces">Map[<a class="type prefix" href="#prefix">prefix</a> -&gt; IRI] <code class="dfn">namespaces</code> — The second and third rule arguments (<code>PNAME_NS</code> and <code>IRI_REF</code>) in the <a href="#grammar-production-prefixID">prefixID production</a> assign a namespace name (<code>IRI_REF</code>) for the prefix (<code>PNAME_NS</code>). Outside of a <code>prefixID</code> production, any <code>PNAME_NS</code> is substituted with the namespace <span class="testrefs">(test: <a href="tests/#prefix1">prefix1</a> <!-- a href="tests/#escapedPrefix1">escapedPrefix1</a --> <a href="tests/#escapedNamespace1">escapedNamespace1</a>)</span>. Note that the prefix may be an empty string, per the <code>PNAME_NS,</code> production: <code>(PN_PREFIX)? ":"</code> <span class="testrefs">(test: <a href="tests/#default1">default1</a>)</span>.</li>
+                <li id="namespaces">Map[<a class="type prefix" href="#prefix">prefix</a> -&gt; IRI] <code class="dfn">namespaces</code> — The second and third rule arguments (<code>PNAME_NS</code> and <code>IRIREF</code>) in the <a href="#grammar-production-prefixID">prefixID production</a> assign a namespace name (<code>IRIREF</code>) for the prefix (<code>PNAME_NS</code>). Outside of a <code>prefixID</code> production, any <code>PNAME_NS</code> is substituted with the namespace <span class="testrefs">(test: <a href="tests/#prefix1">prefix1</a> <!-- a href="tests/#escapedPrefix1">escapedPrefix1</a --> <a href="tests/#escapedNamespace1">escapedNamespace1</a>)</span>. Note that the prefix may be an empty string, per the <code>PNAME_NS,</code> production: <code>(PN_PREFIX)? ":"</code> <span class="testrefs">(test: <a href="tests/#default1">default1</a>)</span>.</li>
 
-                <li id="bnodeLabels">Map[<a class="type string">string</a> -&gt; <a href="../rdf-concepts/index.html#dfn-blank-node">blank node</a>] <code class="dfn">bnodeLabels</code> — A mapping from string to blank node label.</li>
+                <li id="bnodeLabels">Map[<a class="type string">string</a> -&gt; <a href="../rdf-concepts/index.html#dfn-blank-node">blank node</a>] <code class="dfn">bnodeLabels</code> — A mapping from string to blank node.</li>
                 <li id="curSubject">RDF_Term <code class="dfn">curSubject</code> — The <code class="curSubject">curSubject</code> is bound to the <code><a href="#grammar-production-subject">subject</a></code> production.</li>
 
                 <li id="curPredicate">RDF_Term <code class="dfn">curPredicate</code> — The <code class="curPredicate">curPredicate</code> is bound to the <code><a href="#grammar-production-verb">verb</a></code> production. If token matched was "<code>a</code>", <code class="curPredicate">curPredicate</code> is bound to the IRI <code>http://www.w3.org/1999/02/22-rdf-syntax-ns#type</code> <span class="testrefs">(test: <a href="tests/#type">type</a>)</span>.</li>
@@ -761,13 +763,13 @@
                 <tbody>
               <tr id="handle-IRIREF"              ><td><a class="type IRI"         href="#grammar-production-IRIREF"              >IRIREF              </a></td><td><a href="../rdf-concepts/index.html#dfn-iri">      IRI         </a></td><td>The characters between "&lt;" and "&gt;" are <a href="#unescape">unescaped¹</a> to form the unicode string of the IRI. Relative IRI resolution is performed per <a href="http://www.w3.org/TR/rdf-sparql-query/#QSynIRI">SPARQL Query section 4.1.1</a>.</td></tr>
               <tr id="handle-PNAME_NS"             ><td><a class="type string"      href="#grammar-production-PNAME_NS"             >PNAME_NS             </a></td><td><a href="#prefix">                                                                     prefix      </a></td><td>The potentially empty unicode string matching the first argument of the rule is a key into the <a href="#namespaces">namespaces map</a>.</td></tr>
-              <tr id="handle-PNAME_LN"             ><td><a class="type IRI"         href="#grammar-production-PNAME_LN"             >PNAME_LN             </a></td><td><a href="../rdf-concepts/index.html#dfn-iri">      IRI         </a></td><td>A <a href="#prefix">prefix</a> is identified by the first argument, <code>PNAME_NS</code>. The <a href="#namespaces">namespaces map</a> has a corresponding <code>namespace</code>. The unicode string of the IRI is formed by concatenating this <code>namespace</code> and the second argument, <code>PN_LOCAL</code>. Relative IRI resolution is performed per <a href="http://www.w3.org/TR/rdf-sparql-query/#QSynIRI">SPARQL Query section 4.1.1</a>.</td></tr>
+              <tr id="handle-PNAME_LN"             ><td><a class="type IRI"         href="#grammar-production-PNAME_LN"             >PNAME_LN             </a></td><td><a href="../rdf-concepts/index.html#dfn-iri">      IRI         </a></td><td>A <a href="#prefix">prefix</a> is identified by the first argument, <code>PNAME_NS</code>. The <a href="#namespaces">namespaces map</a> has a corresponding <code>namespace</code>. The unicode string of the IRI is formed by concatenating this <code>namespace</code> and the second argument, <code>PN_LOCAL</code>.</td></tr>
               <tr id="handle-STRING_LITERAL1"      ><td><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL1"      >STRING_LITERAL1      </a></td><td><a href="../rdf-concepts/index.html#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost "'"s are <a href="#unescape">unescaped¹</a> to form the unicode string of a lexical form.</td></tr>
               <tr id="handle-STRING_LITERAL2"      ><td><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL2"      >STRING_LITERAL2      </a></td><td><a href="../rdf-concepts/index.html#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost '"'s are <a href="#unescape">unescaped¹</a> to form the unicode string of a lexical form.</td></tr>
               <tr id="handle-STRING_LITERAL_LONG1" ><td><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL_LONG1" >STRING_LITERAL_LONG1 </a></td><td><a href="../rdf-concepts/index.html#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost "'''"s are <a href="#unescape">unescaped¹</a> to form the unicode string of a lexical form.</td></tr>
               <tr id="handle-STRING_LITERAL_LONG2" ><td><a class="type lexicalForm" href="#grammar-production-STRING_LITERAL_LONG2" >STRING_LITERAL_LONG2 </a></td><td><a href="../rdf-concepts/index.html#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost '"""'s are <a href="#unescape">unescaped¹</a> to form the unicode string of a lexical form.</td></tr>
               <tr id="handle-LANGTAG"              ><td><a class="type langTag"     href="#grammar-production-LANGTAG"              >LANGTAG              </a></td><td><a href="../rdf-concepts/index.html#dfn-language-identifier">language tag</a></td><td>The characters following the "@" form the unicode string of the language tag.</td></tr>
-              <tr id="handle-RDFLiteral"           ><td><a class="type literal"     href="#grammar-production-RDFLiteral"           >RDFLiteral           </a></td><td><a href="../rdf-concepts/index.html#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the first rule argument (<code>String</code>) and either a language tag of <code>LANGTAG</code> or a datatype IRI of <code>IRIref</code>, depending on which rule matched the input.</td></tr>
+              <tr id="handle-RDFLiteral"           ><td><a class="type literal"     href="#grammar-production-RDFLiteral"           >RDFLiteral           </a></td><td><a href="../rdf-concepts/index.html#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the first rule argument (<code>String</code>) and either a language tag of <code>LANGTAG</code> or a datatype IRI of <code>iri</code>, depending on which rule matched the input. if neither a language tag nor a datatype IRI is provided, the literal has a datatype of xsd:string.</td></tr>
               <tr id="handle-INTEGER"              ><td><a class="type integer"     href="#grammar-production-INTEGER"              >INTEGER              </a></td><td><a href="../rdf-concepts/index.html#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the input string, and a datatype of xsd:integer.</td></tr>
               <tr id="handle-DECIMAL"              ><td><a class="type decimal"     href="#grammar-production-DECIMAL"              >DECIMAL              </a></td><td><a href="../rdf-concepts/index.html#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the input string, and a datatype of xsd:decimal.</td></tr>
               <tr id="handle-DOUBLE"               ><td><a class="type double"      href="#grammar-production-DOUBLE"               >DOUBLE               </a></td><td><a href="../rdf-concepts/index.html#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the input string, and a datatype of xsd:double.</td></tr>
@@ -779,7 +781,7 @@
                 </tbody>
               </table>
 
-              <p><a id="unescape">¹</a> <a href="#sec-escapes">Escape Sequences</a> defines a mapping from <code>escaped unicode strings</code> to <code>unicode strings</code>. The following lexical tokens are unescaped to produce <code>unicode strings</code>: <a class="type IRI" href="#grammar-production-IRI_REF">IRI_REF</a>, <!-- <a class="type PNAME_NS" href="#grammar-production-PNAME_NS">PNAME_NS</a>, --><!-- <a class="type IRI"          href="#grammar-production-PNAME_LN">PNAME_LN</a>, --><a class="type lexicalForm"  href="#grammar-production-STRING_LITERAL1">STRING_LITERAL1</a>, <a class="type lexicalForm"  href="#grammar-production-STRING_LITERAL2">STRING_LITERAL2</a>, <a class="type lexicalForm"  href="#grammar-production-STRING_LITERAL_LONG1">STRING_LITERAL_LONG1</a> and <a class="type lexicalForm"  href="#grammar-production-STRING_LITERAL_LONG2">STRING_LITERAL_LONG2</a><!-- and <a class="type langTag"      href="#grammar-production-LANGTAG">LANGTAG</a> --><!-- and <a class="type bNode"        href="#grammar-production-BLANK_NODE_LABEL">BLANK_NODE_LABEL</a> -->.</p>
+              <p><a id="unescape">¹</a> <a href="#sec-escapes">Escape Sequences</a> defines a mapping from <code>escaped unicode strings</code> to <code>unicode strings</code>. The following lexical tokens are unescaped to produce <code>unicode strings</code>: <a class="type IRI" href="#grammar-production-IRIREF">IRIREF</a>, <!-- <a class="type PNAME_NS" href="#grammar-production-PNAME_NS">PNAME_NS</a>, --><!-- <a class="type IRI"          href="#grammar-production-PNAME_LN">PNAME_LN</a>, --><a class="type lexicalForm"  href="#grammar-production-STRING_LITERAL1">STRING_LITERAL1</a>, <a class="type lexicalForm"  href="#grammar-production-STRING_LITERAL2">STRING_LITERAL2</a>, <a class="type lexicalForm"  href="#grammar-production-STRING_LITERAL_LONG1">STRING_LITERAL_LONG1</a> and <a class="type lexicalForm"  href="#grammar-production-STRING_LITERAL_LONG2">STRING_LITERAL_LONG2</a><!-- and <a class="type langTag"      href="#grammar-production-LANGTAG">LANGTAG</a> --><!-- and <a class="type bNode"        href="#grammar-production-BLANK_NODE_LABEL">BLANK_NODE_LABEL</a> -->.</p>
           </section>
           <section id="sec-parsing-triples">
           <h3>RDF Triples Constructors</h3>
@@ -797,7 +799,7 @@
 
           <p>
           Beginning the <code><a href="#grammar-production-collection">collection</a></code> production records the <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>, sets <code class="curSubject">curSubject</code> to a novel <code>blank node</code> <code>B<sub>head</sub></code> and sets <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code> to <code>B<sub>head</sub></code> and <code>rdf:first</code> respectively.
-          Each object <code>O</code> in <code><a href="#grammar-production-collection">collection</a></code> allocates a novel <code>blank node</code> <code>B<sub>n</sub></code>, creates an additional triple <span class="ntriple"><code>curSubject rdf:rest B<sub>n</sub></code> .</span> and sets <code>curSubject</code> to <code>B<sub>n</sub></code>.
+          Each object <code>object</code> in <code><a href="#grammar-production-collection">collection</a></code> allocates a novel <code>blank node</code> <code>B<sub>n</sub></code>, creates an additional triple <span class="ntriple"><code>curSubject rdf:rest B<sub>n</sub></code> .</span> and sets <code>curSubject</code> to <code>B<sub>n</sub></code>.
           Finishing the <code><a href="#grammar-production-collection">collection</a></code> production creates an additional triple <span class="ntriple"><code>curSubject rdf:rest rdf:nil</code> .</span> and restores <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>
 
           The node produced by matching <code><a href="#grammar-production-collection">collection</a></code> is the blank node <code>B<sub>head</sub></code>.
@@ -1104,7 +1106,7 @@
 
           <dt>Encoding considerations:</dt>
           <dd>The syntax of Turtle is expressed over code points in Unicode [[!UNICODE]]. The encoding is always UTF-8 [[!UTF-8]].</dd>
-          <dd>Unicode code points may also be expressed using an \uXXXX (U+0 to U+FFFF) or \UXXXXXXXX syntax (for U+10000 onwards) where X is a hexadecimal digit [0-9A-F]</dd>
+          <dd>Unicode code points may also be expressed using an \uXXXX (U+0 to U+FFFF) or \UXXXXXXXX syntax (for U+10000 onwards) where X is a hexadecimal digit [0-9A-Fa-f]</dd>
           <dt>Security considerations:</dt>
           <dd>Turtle is a general-purpose assertion language; applications may evaluate given data to infer more assertions or to dereference IRIs, invoking the security considerations of the scheme for that IRI. Note in particular, the privacy issues in [[!RFC3023]] section 10 for HTTP IRIs. Data obtained from an inaccurate or malicious data source may lead to inaccurate or misleading conclusions, as well as the dereferencing of unintended IRIs. Care must be taken to align the trust in consulted resources with the sensitivity of the intended use of the data; inferences of potential medical treatments would likely require different trust than inferences for trip planning.</dd>