update
authorGuus Schreiber <guus.schreiber@vu.nl>
Sat, 04 Jan 2014 23:06:23 +0100
changeset 1746 daceef798f66
parent 1745 c8010261b2d5
child 1747 32576bba9cac
update
PR-drafts/PR-turtle-20140109/Overview.html
--- a/PR-drafts/PR-turtle-20140109/Overview.html	Sat Jan 04 23:02:10 2014 +0100
+++ b/PR-drafts/PR-turtle-20140109/Overview.html	Sat Jan 04 23:06:23 2014 +0100
@@ -411,11 +411,11 @@
     foaf:name &quot;Spiderman&quot;, &quot;Человек-паук&quot;@ru .</span></pre></div>
 			<p>
 			  This example introduces many of features of the Turtle language:
-<a href="#relative-iris">@base and Relative IRIs</a>,
-<a href="#turtleIRIs">@prefix and prefixed names</a>,
+<a href="#relative-iri">@base and Relative IRIs</a>,
+<a href="#prefixed-name">@prefix and prefixed names</a>,
 <a href="#predicate-lists">predicate lists</a> separated by '<code>;</code>',
 <a href="#object-lists">object lists</a> separated by '<code>,</code>',
-the token <code><a href="#IRIs">a</a></code>,
+the token <code><a href="#iri-a">a</a></code>,
 and <a href="#literals">literals</a>.
 			</p>
 
@@ -433,7 +433,7 @@
 		
 <!--OddPage-->
 <h2 aria-level="1" role="heading" id="h2_language-features"><span class="secno">2. </span>Turtle Language</h2><p><em>This section is non-normative.</em></p>
-		<p>A Turtle document allows writing down an <abbr title="Resource Description Framework">RDF</abbr> graph in a compact textual form. An <abbr title="Resource Description Framework">RDF</abbr> graph is made up of <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">triples</a> consisting of a subject, predicate and object.</p>
+		<p>A Turtle document allows writing down an <abbr title="Resource Description Framework">RDF</abbr> graph in a compact textual form. An <abbr title="Resource Description Framework">RDF</abbr> graph is made up of <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple">triples</a> consisting of a subject, predicate and object.</p>
 		<p>Comments may be given after a '<code>#</code>' that is not part of another lexical token and continue to the end of the line.</p>
 		<section id="simple-triples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
 			<h3 aria-level="2" role="heading" id="h3_simple-triples"><span class="secno">2.1 </span>Simple Triples</h3>
@@ -471,9 +471,9 @@
 
 			<p>
 			  There are three types of <em><abbr title="Resource Description Framework">RDF</abbr> Term</em> defined in <abbr title="Resource Description Framework">RDF</abbr> Concepts:
-			  <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-iri">IRIs</a> (Internationalized Resource Identifiers),
-			  <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-literal">literals</a> and
-			  <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">blank nodes</a>. Turtle provides a number
+			  <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">IRIs</a> (Internationalized Resource Identifiers),
+			  <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">literals</a> and
+			  <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">blank nodes</a>. Turtle provides a number
 			  of ways of writing each.
 			</p>
 
@@ -481,11 +481,11 @@
 				<h3 aria-level="2" role="heading" id="h3_sec-iri"><span class="secno">2.4 </span>IRIs</h3>
 
 				<p>
-			   		<a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-iri">IRIs</a> may be written as relative or absolute IRIs or prefixed names. 
+			   		<a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">IRIs</a> may be written as relative or absolute IRIs or prefixed names. 
 				  	Relative and absolute IRIs are enclosed in '&lt;' and '&gt;' and may contain <a href="#numeric">numeric escape sequences</a> (described below). For example <code>&lt;http://example.org/#green-goblin&gt;</code>.
 				</p>
-				<p>Relative IRIs like <code>&lt;#green-goblin&gt;</code> are resolved relative to the current base IRI. A new base IRI can be defined using the '<code>@base</code>' or '<code>BASE</code>' directive. Specifics of this operation are defined in <a class="sectionRef sec-ref" href="#sec-iri-references">section <span class="secno">6.3</span> <span class="sec-title">IRI References</span></a> </p>
-				<p>
+				<p id="relative-iri">Relative IRIs like <code>&lt;#green-goblin&gt;</code> are resolved relative to the current base IRI. A new base IRI can be defined using the '<code>@base</code>' or '<code>BASE</code>' directive. Specifics of this operation are defined in <a class="sectionRef sec-ref" href="#sec-iri-references">section <span class="secno">6.3</span> <span class="sec-title">IRI References</span></a> </p>
+				<p id="iri-a">
 				  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>
 
@@ -574,7 +574,7 @@
 			<section id="literals" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
 				<h3 aria-level="2" role="heading" id="h3_literals"><span class="secno">2.5 </span><abbr title="Resource Description Framework">RDF</abbr> Literals</h3>
 
-				<p><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-literal">Literals</a> are used to identify values such as strings, numbers, dates.</p>
+				<p><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">Literals</a> are used to identify values such as strings, numbers, dates.</p>
 
 				<div class="example"><div class="example-title"><span>Example 10</span></div><pre class="example"><span>@prefix foaf: &lt;http://xmlns.com/foaf/0.1/&gt; .
 
@@ -589,9 +589,9 @@
 				<p>
 				  Quoted Literals (Grammar production <a href="#grammar-production-RDFLiteral">RDFLiteral</a>) have a lexical form followed by a language tag, a datatype IRI, or neither.
 				  The representation of the lexical form consists of an initial delimiter, e.g. <code>&quot;</code> (<span class="codepoint">U+0022</span>), a sequence of permitted characters or <a href="#numeric">numeric escape sequence</a> or <a href="#string">string escape sequence</a>, and a final delimiter.
-				  The corresponding <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form"><abbr title="Resource Description Framework">RDF</abbr> lexical form</a> is the characters between the delimiters, after processing any escape sequences.
-				  If present, the <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string">language tag</a> is preceded by a '<code>@</code>' (<span class="codepoint">U+0040</span>).
-				  If there is no language tag, there may be a <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-datatype-URI">datatype IRI</a>, preceeded by '<code>^^</code>' (<span class="codepoint">U+005E</span> <span class="codepoint">U+005E</span>). The datatype IRI in Turtle may be written using either an <a href="#sec-iri">absolute IRI</a>, a <a href="#sec-iri">relative IRI</a>, or <a href="#prefixed-name">prefixed name</a>. If there is no datatype IRI and no language tag, the datatype is <code>xsd:string</code>.
+				  The corresponding <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form"><abbr title="Resource Description Framework">RDF</abbr> lexical form</a> is the characters between the delimiters, after processing any escape sequences.
+				  If present, the <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tagged-string">language tag</a> is preceded by a '<code>@</code>' (<span class="codepoint">U+0040</span>).
+				  If there is no language tag, there may be a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-datatype-URI">datatype IRI</a>, preceeded by '<code>^^</code>' (<span class="codepoint">U+005E</span> <span class="codepoint">U+005E</span>). The datatype IRI in Turtle may be written using either an <a href="#sec-iri">absolute IRI</a>, a <a href="#sec-iri">relative IRI</a>, or <a href="#prefixed-name">prefixed name</a>. If there is no datatype IRI and no language tag, the datatype is <code>xsd:string</code>.
 				</p>
 				<p>'<code>\</code>' (<span class="codepoint">U+005C</span>) may not appear in any quoted literal except as part of an escape sequence. Other restrictions depend on the delimiter:</p>
 				<ul>
@@ -682,7 +682,7 @@
 			<section id="BNodes" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
 				<h3 aria-level="2" role="heading" id="h3_BNodes"><span class="secno">2.6 </span><abbr title="Resource Description Framework">RDF</abbr> Blank Nodes</h3>
 				<p>
-				  <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-blank-node"><abbr title="Resource Description Framework">RDF</abbr> blank nodes</a> in Turtle are expressed as <code>_:</code> followed by a blank node label which is a series of name characters.
+				  <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node"><abbr title="Resource Description Framework">RDF</abbr> 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 as follows:
 				</p>
 				<ul>
@@ -954,9 +954,9 @@
           <section id="sec-iri-references" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
           	<h3 aria-level="2" role="heading" id="h3_sec-iri-references"><span class="secno">6.3 </span>IRI References</h3>
   					<p>
-					  Relative IRIs are resolved with base IRIs as per <a class="norm" href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier (URI): Generic Syntax</a> [<a href="#rfc3986">RFC3986</a>] using only the basic algorithm in section 5.2.
+					  Relative IRIs are resolved with base IRIs as per <a class="norm" href="http://www.ietf.org/rfc/rfc3986.txt">Uniform Resource Identifier (URI): Generic Syntax</a> [<cite><a class="bibref" href="#bib-RFC3986">RFC3986</a></cite>] using only the basic algorithm in section 5.2.
 					  Neither Syntax-Based Normalization nor Scheme-Based Normalization (described in sections 6.2.2 and 6.2.3 of RFC3986) are performed.
-					  Characters additionally allowed in IRI references are treated in the same way that unreserved characters are treated in URI references, per section 6.5 of <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<a href="#rfc3987">RFC3987</a>].
+					  Characters additionally allowed in IRI references are treated in the same way that unreserved characters are treated in URI references, per section 6.5 of <a class="norm" href="http://www.ietf.org/rfc/rfc3987.txt">Internationalized Resource Identifiers (IRIs)</a> [<cite><a class="bibref" href="#bib-RFC3987">RFC3987</a></cite>].
 					</p>
 					<p>
 					  The <code>@base</code> or <code>BASE</code> directive defines the Base IRI used to resolve relative IRIs per RFC3986 section 5.1.1, &quot;Base URI Embedded in Content&quot;.
@@ -992,14 +992,14 @@
 		  <tbody>
 
 		    <tr>
-		      <td>'\u' <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a></td>
+		      <td>'\u' <a href="#grammar-production-HEX">hex</a> <a href="#grammar-production-HEX">hex</a> <a href="#grammar-production-HEX">hex</a> <a href="#grammar-production-HEX">hex</a></td>
 		      <td>A Unicode character in the range U+0000 to U+FFFF inclusive
 		      corresponding to the value encoded by the four hexadecimal digits interpreted from most significant to least significant digit.</td>
 		    </tr>
 
 		    
 		    <tr>
-		      <td>'\U' <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a> <a href="#rHEX">hex</a></td>
+		      <td>'\U' <a href="#grammar-production-HEX">hex</a> <a href="#grammar-production-HEX">hex</a> <a href="#grammar-production-HEX">hex</a> <a href="#grammar-production-HEX">hex</a> <a href="#grammar-production-HEX">hex</a> <a href="#grammar-production-HEX">hex</a> <a href="#grammar-production-HEX">hex</a> <a href="#grammar-production-HEX">hex</a></td>
 
 		      <td>A Unicode character in the range U+0000 to U+10FFFF inclusive
 		      corresponding to the value encoded by the eight hexadecimal digits interpreted from most significant to least significant digit.</td>
@@ -1008,7 +1008,7 @@
 		  </tbody>
 		</table>
 
-		<p>where <a href="#rHEX">HEX</a> is a hexadecimal character</p>
+		<p>where <a href="#grammar-production-HEX">HEX</a> is a hexadecimal character</p>
 		<blockquote>
 		  <p><span style="font-family: monospace; font-size: 85%;">HEX 
 		  ::= [0-9] | [A-F] | [a-f]</span></p>
@@ -1098,7 +1098,7 @@
 	      </thead>
 	      <tbody>
 		<tr>
-		  <td class="r"><span style="font-weight:bold;">IRI</span>s, used as <a href="#grammar-production-IRIref"><abbr title="Resource Description Framework">RDF</abbr> terms</a> or as in <a href="#grammar-production-prefixID">@prefix</a>, <a href="#grammar-production-sparqlPrefix">PREFIX</a>, <a href="#grammar-production-base">@base</a>, or <a href="#grammar-production-sparqlBase">BASE</a>  declarations</td>
+		  <td class="r"><span style="font-weight:bold;">IRI</span>s, used as <a href="#grammar-production-IRIREF"><abbr title="Resource Description Framework">RDF</abbr> terms</a> or as in <a href="#grammar-production-prefixID">@prefix</a>, <a href="#grammar-production-sparqlPrefix">PREFIX</a>, <a href="#grammar-production-base">@base</a>, or <a href="#grammar-production-sparqlBase">BASE</a> declarations</td>
 		  <td style="background-color: green; border:1px solid black;">yes</td>
 		  <td>no</td>
 		  <td>no</td>
@@ -1169,302 +1169,302 @@
 
             <div><table class="grammar">
     <tbody class="grammar-productions">
-            <tr data-grammar-expression="('*', ('id', 'statement'))" data-grammar-original="[1] turtleDoc ::= statement*" id="grammar-production-turtleDoc">
+            <tr id="grammar-production-turtleDoc">
     <td>[1]</td>
     <td><code>turtleDoc</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-statement">statement</a><code class="grammar-star">*</code></td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'directive'), (',', [('id', 'triples'), (&quot;'&quot;, '.')])])" data-grammar-original="[2] statement ::= directive| triples &quot;.&quot;" id="grammar-production-statement">
+            <tr id="grammar-production-statement">
     <td>[2]</td>
     <td><code>statement</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-directive">directive</a> <code>| </code> <a href="#grammar-production-triples">triples</a> '<code class="grammar-literal">.</code>'</td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'prefixID'), ('id', 'base'), ('id', 'sparqlPrefix'), ('id', 'sparqlBase')])" data-grammar-original="[3] directive ::= prefixID| base | sparqlPrefix | sparqlBase" id="grammar-production-directive">
+            <tr id="grammar-production-directive">
     <td>[3]</td>
     <td><code>directive</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-prefixID">prefixID</a> <code>| </code> <a href="#grammar-production-base">base</a> <code>| </code> <a href="#grammar-production-sparqlPrefix">sparqlPrefix</a> <code>| </code> <a href="#grammar-production-sparqlBase">sparqlBase</a></td>
 </tr>
-            <tr data-grammar-expression="(',', [(&quot;'&quot;, '@prefix'), ('id', 'PNAME_NS'), ('id', 'IRIREF'), (&quot;'&quot;, '.')])" data-grammar-original="[4] prefixID ::= '@prefix' PNAME_NS IRIREF &quot;.&quot;" id="grammar-production-prefixID">
+            <tr id="grammar-production-prefixID">
     <td>[4]</td>
     <td><code>prefixID</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">@prefix</code>' <a href="#grammar-production-PNAME_NS">PNAME_NS</a> <a href="#grammar-production-IRIREF">IRIREF</a> '<code class="grammar-literal">.</code>'</td>
 </tr>
-            <tr data-grammar-expression="(',', [(&quot;'&quot;, '@base'), ('id', 'IRIREF'), (&quot;'&quot;, '.')])" data-grammar-original="[5] base ::= '@base' IRIREF &quot;.&quot;" id="grammar-production-base">
+            <tr id="grammar-production-base">
     <td>[5]</td>
     <td><code>base</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">@base</code>' <a href="#grammar-production-IRIREF">IRIREF</a> '<code class="grammar-literal">.</code>'</td>
 </tr>
-            <tr data-grammar-expression="(',', [('[', 'Bb'), ('[', 'Aa'), ('[', 'Ss'), ('[', 'Ee'), ('id', 'IRIREF')])" data-grammar-original="[29*] sparqlBase ::= [Bb][Aa][Ss][Ee] IRIREF" id="grammar-production-sparqlBase">
+            <tr id="grammar-production-sparqlBase">
     <td>[5s]</td>
     <td><code>sparqlBase</code></td>
     <td>::=</td>
     <td><span class="add">&quot;<code class="grammar-literal">BASE</code>&quot;</span> <a href="#grammar-production-IRIREF">IRIREF</a></td>
 </tr>
-            <tr data-grammar-expression="(',', [('[', 'Pp'), ('[', 'Rr'), ('[', 'Ee'), ('[', 'Ff'), ('[', 'Ii'), ('[', 'Xx'), ('id', 'PNAME_NS'), ('id', 'IRIREF')])" data-grammar-original="[28*] sparqlPrefix ::= [Pp][Rr][Ee][Ff][Ii][Xx] PNAME_NS IRIREF" id="grammar-production-sparqlPrefix">
+            <tr id="grammar-production-sparqlPrefix">
     <td>[6s]</td>
     <td><code>sparqlPrefix</code></td>
     <td>::=</td>
     <td><span class="add">&quot;<code class="grammar-literal">PREFIX</code>&quot;</span> <a href="#grammar-production-PNAME_NS">PNAME_NS</a> <a href="#grammar-production-IRIREF">IRIREF</a></td>
 </tr>
-            <tr data-grammar-expression="('|', [(',', [('id', 'subject'), ('id', 'predicateObjectList')]), (',', [('id', 'blankNodePropertyList'), ('?', ('id', 'predicateObjectList'))])])" data-grammar-original="[6] triples ::= subject predicateObjectList |blankNodePropertyList predicateObjectList?" id="grammar-production-triples">
+            <tr id="grammar-production-triples">
     <td>[6]</td>
     <td><code>triples</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-subject">subject</a> <a href="#grammar-production-predicateObjectList">predicateObjectList</a> <code>| </code> <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> <a href="#grammar-production-predicateObjectList">predicateObjectList</a>?</td>
 </tr>
-            <tr data-grammar-expression="(',', [('id', 'verb'), ('id', 'objectList'), ('*', (',', [(&quot;'&quot;, ';'), ('?', (',', [('id', 'verb'), ('id', 'objectList')]))]))])" data-grammar-original="[7] predicateObjectList ::= verb objectList (';' (verb objectList)? )*" id="grammar-production-predicateObjectList">
+            <tr id="grammar-production-predicateObjectList">
     <td>[7]</td>
     <td><code>predicateObjectList</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-verb">verb</a> <a href="#grammar-production-objectList">objectList</a> ('<code class="grammar-literal">;</code>' (<a href="#grammar-production-verb">verb</a> <a href="#grammar-production-objectList">objectList</a>)?)<code class="grammar-star">*</code></td>
 </tr>
-            <tr data-grammar-expression="(',', [('id', 'object'), ('*', (',', [(&quot;'&quot;, ','), ('id', 'object')]))])" data-grammar-original="[8] objectList ::= object ( &quot;,&quot; object )*" id="grammar-production-objectList">
+            <tr id="grammar-production-objectList">
     <td>[8]</td>
     <td><code>objectList</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-object">object</a> ('<code class="grammar-literal">,</code>' <a href="#grammar-production-object">object</a>)<code class="grammar-star">*</code></td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'predicate'), (&quot;'&quot;, 'a')])" data-grammar-original="[9] verb ::= predicate| &quot;a&quot;" id="grammar-production-verb">
+            <tr id="grammar-production-verb">
     <td>[9]</td>
     <td><code>verb</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-predicate">predicate</a> <code>| </code> '<code class="grammar-literal">a</code>'</td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'iri'), ('id', 'blank')])" data-grammar-original="[10] subject ::= iri| blank" id="grammar-production-subject">
+            <tr id="grammar-production-subject">
     <td>[10]</td>
     <td><code>subject</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-iri">iri</a> <code>| </code> <a class="add" href="#grammar-production-BlankNode">BlankNode</a> <code class="add">| </code> <a class="add" href="#grammar-production-collection">collection</a></td>
 </tr>
-            <tr data-grammar-expression="('id', 'iri')" data-grammar-original="[11] predicate ::= iri" id="grammar-production-predicate">
+            <tr id="grammar-production-predicate">
     <td>[11]</td>
     <td><code>predicate</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-iri">iri</a></td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'iri'), ('id', 'blank'), ('id', 'blankNodePropertyList'), ('id', 'literal')])" data-grammar-original="[12] object ::= iri| blank| blankNodePropertyList| literal" id="grammar-production-object">
+            <tr id="grammar-production-object">
     <td>[12]</td>
     <td><code>object</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-iri">iri</a> <code>| </code> <a class="add" href="#grammar-production-BlankNode">BlankNode</a> <code class="add">| </code> <a class="add" href="#grammar-production-collection">collection</a> <code>| </code> <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> <code>| </code> <a href="#grammar-production-literal">literal</a></td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'RDFLiteral'), ('id', 'NumericLiteral'), ('id', 'BooleanLiteral')])" data-grammar-original="[13] literal ::= RDFLiteral| NumericLiteral| BooleanLiteral" id="grammar-production-literal">
+            <tr id="grammar-production-literal">
     <td>[13]</td>
     <td><code>literal</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-RDFLiteral">RDFLiteral</a> <code>| </code> <a href="#grammar-production-NumericLiteral">NumericLiteral</a> <code>| </code> <a href="#grammar-production-BooleanLiteral">BooleanLiteral</a></td>
 </tr>
-            <tr data-grammar-expression="(',', [(&quot;'&quot;, '['), ('id', 'predicateObjectList'), (&quot;'&quot;, ']')])" data-grammar-original="[15] blankNodePropertyList ::= &quot;[&quot; predicateObjectList &quot;]&quot;" id="grammar-production-blankNodePropertyList">
+            <tr id="grammar-production-blankNodePropertyList">
     <td>[14]</td>
     <td><code>blankNodePropertyList</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">[</code>' <a href="#grammar-production-predicateObjectList">predicateObjectList</a> '<code class="grammar-literal">]</code>'</td>
 </tr>
-            <tr data-grammar-expression="(',', [(&quot;'&quot;, '('), ('*', ('id', 'object')), (&quot;'&quot;, ')')])" data-grammar-original="[16] collection ::= &quot;(&quot; object* &quot;)&quot;" id="grammar-production-collection">
+            <tr id="grammar-production-collection">
     <td>[15]</td>
     <td><code>collection</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">(</code>' <a href="#grammar-production-object">object</a><code class="grammar-star">*</code> '<code class="grammar-literal">)</code>'</td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'INTEGER'), ('id', 'DECIMAL'), ('id', 'DOUBLE')])" data-grammar-original="[17] NumericLiteral ::= INTEGER | DECIMAL | DOUBLE" id="grammar-production-NumericLiteral">
+            <tr id="grammar-production-NumericLiteral">
     <td>[16]</td>
     <td><code>NumericLiteral</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-INTEGER">INTEGER</a> <code>| </code> <a href="#grammar-production-DECIMAL">DECIMAL</a> <code>| </code> <a href="#grammar-production-DOUBLE">DOUBLE</a></td>
 </tr>
-            <tr data-grammar-expression="(',', [('id', 'String'), ('?', ('|', [('id', 'LANGTAG'), (',', [(&quot;'&quot;, '^^'), ('id', 'iri')])]))])" data-grammar-original="[128s] RDFLiteral ::= String ( LANGTAG | ( &quot;^^&quot; iri ) )?" id="grammar-production-RDFLiteral">
+            <tr id="grammar-production-RDFLiteral">
     <td>[128s]</td>
     <td><code>RDFLiteral</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-String">String</a> (<a href="#grammar-production-LANGTAG">LANGTAG</a> <code>| </code> '<code class="grammar-literal">^^</code>' <a href="#grammar-production-iri">iri</a>)?</td>
 </tr>
-            <tr data-grammar-expression="('|', [(&quot;'&quot;, 'true'), (&quot;'&quot;, 'false')])" data-grammar-original="[133s] BooleanLiteral ::= &quot;true&quot;| &quot;false&quot;" id="grammar-production-BooleanLiteral">
+            <tr id="grammar-production-BooleanLiteral">
     <td>[133s]</td>
     <td><code>BooleanLiteral</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">true</code>' <code>| </code> '<code class="grammar-literal">false</code>'</td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'STRING_LITERAL_QUOTE'), ('id', 'STRING_LITERAL_SINGLE_QUOTE'), ('id', 'STRING_LITERAL_LONG_SINGLE_QUOTE'), ('id', 'STRING_LITERAL_LONG_QUOTE')])" data-grammar-original="[18] String ::= STRING_LITERAL_QUOTE| STRING_LITERAL_SINGLE_QUOTE| STRING_LITERAL_LONG_SINGLE_QUOTE| STRING_LITERAL_LONG_QUOTE" id="grammar-production-String">
+            <tr id="grammar-production-String">
     <td>[17]</td>
     <td><code>String</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-STRING_LITERAL_QUOTE">STRING_LITERAL_QUOTE</a> <code>| </code> <a href="#grammar-production-STRING_LITERAL_SINGLE_QUOTE">STRING_LITERAL_SINGLE_QUOTE</a> <code>| </code> <a href="#grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE">STRING_LITERAL_LONG_SINGLE_QUOTE</a> <code>| </code> <a href="#grammar-production-STRING_LITERAL_LONG_QUOTE">STRING_LITERAL_LONG_QUOTE</a></td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'IRIREF'), ('id', 'PrefixedName')])" data-grammar-original="[135s] iri ::= IRIREF| PrefixedName" id="grammar-production-iri">
+            <tr id="grammar-production-iri">
     <td>[135s]</td>
     <td><code>iri</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-IRIREF">IRIREF</a> <code>| </code> <a href="#grammar-production-PrefixedName">PrefixedName</a></td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'PNAME_LN'), ('id', 'PNAME_NS')])" data-grammar-original="[136s] PrefixedName ::= PNAME_LN| PNAME_NS" id="grammar-production-PrefixedName">
+            <tr id="grammar-production-PrefixedName">
     <td>[136s]</td>
     <td><code>PrefixedName</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-PNAME_LN">PNAME_LN</a> <code>| </code> <a href="#grammar-production-PNAME_NS">PNAME_NS</a></td>
 </tr>
-            <tr data-grammar-expression="('|', [('id', 'BLANK_NODE_LABEL'), ('id', 'ANON')])" data-grammar-original="[137s] BlankNode ::= BLANK_NODE_LABEL| ANON" id="grammar-production-BlankNode">
+            <tr id="grammar-production-BlankNode">
     <td>[137s]</td>
     <td><code>BlankNode</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-BLANK_NODE_LABEL">BLANK_NODE_LABEL</a> <code>| </code> <a href="#grammar-production-ANON">ANON</a></td>
 </tr>
-<tr><td colspan="5"><h3 id="terminals">Productions for terminals</h3></td></tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, '&lt;'), ('*', ('|', [('[', '^#x00-#x20&lt;&gt;\\&quot;{}|^`\\'), ('id', 'UCHAR')])), (&quot;'&quot;, '&gt;')])" data-grammar-original="[19] IRIREF ::=  '&lt;' ([^#x00-#x20&lt;&gt;&quot;{}|^`\] | UCHAR)* '&gt;'" id="grammar-production-IRIREF">
+<tr><td colspan="4"><h3 id="terminals">Productions for terminals</h3></td></tr>
+            <tr class="grammar-token" id="grammar-production-IRIREF">
     <td>[18]</td>
     <td><code>IRIREF</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">&lt;</code>' ([<code class="grammar-chars">^#x00-#x20&lt;&gt;&quot;{}|^`\</code>] <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> '<code class="grammar-literal">&gt;</code>'<span class="grammar_comment"> /* #x00=NULL #01-#x1F=control codes #x20=space */</span></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [('?', ('id', 'PN_PREFIX')), (&quot;'&quot;, ':')])" data-grammar-original="[139s] PNAME_NS ::= PN_PREFIX? &quot;:&quot;" id="grammar-production-PNAME_NS">
+            <tr class="grammar-token" id="grammar-production-PNAME_NS">
     <td>[139s]</td>
     <td><code>PNAME_NS</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-PN_PREFIX">PN_PREFIX</a>? '<code class="grammar-literal">:</code>'</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [('id', 'PNAME_NS'), ('id', 'PN_LOCAL')])" data-grammar-original="[140s] PNAME_LN ::= PNAME_NS PN_LOCAL" id="grammar-production-PNAME_LN">
+            <tr class="grammar-token" id="grammar-production-PNAME_LN">
     <td>[140s]</td>
     <td><code>PNAME_LN</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-PNAME_NS">PNAME_NS</a> <a href="#grammar-production-PN_LOCAL">PN_LOCAL</a></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, '_:'), ('|', [('id', 'PN_CHARS_U'), ('[', '0-9')]), ('?', (',', [('*', ('|', [('id', 'PN_CHARS'), (&quot;'&quot;, '.')])), ('id', 'PN_CHARS')]))])" data-grammar-original="[141s] BLANK_NODE_LABEL ::= '_:' ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)?" id="grammar-production-BLANK_NODE_LABEL">
+            <tr class="grammar-token" id="grammar-production-BLANK_NODE_LABEL">
     <td>[141s]</td>
     <td><code>BLANK_NODE_LABEL</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">_:</code>' (<a href="#grammar-production-PN_CHARS_U">PN_CHARS_U</a> <code>| </code> [<code class="grammar-chars">0-9</code>]) ((<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>| </code> '<code class="grammar-literal">.</code>')<code class="grammar-star">*</code> <a href="#grammar-production-PN_CHARS">PN_CHARS</a>)?</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, '@'), ('+', ('[', 'a-zA-Z')), ('*', (',', [(&quot;'&quot;, '-'), ('+', ('[', 'a-zA-Z0-9'))]))])" data-grammar-original="[144s] LANGTAG ::= &quot;@&quot; [a-zA-Z]+ ( &quot;-&quot; [a-zA-Z0-9]+ )*" id="grammar-production-LANGTAG">
+            <tr class="grammar-token" id="grammar-production-LANGTAG">
     <td>[144s]</td>
     <td><code>LANGTAG</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">@</code>' [<code class="grammar-chars">a-zA-Z</code>]<code class="grammar-plus">+</code> ('<code class="grammar-literal">-</code>' [<code class="grammar-chars">a-zA-Z0-9</code>]<code class="grammar-plus">+</code>)<code class="grammar-star">*</code></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [('?', ('[', '+-')), ('+', ('[', '0-9'))])" data-grammar-original="[20] INTEGER ::= [+-]? [0-9]+" id="grammar-production-INTEGER">
+            <tr class="grammar-token" id="grammar-production-INTEGER">
     <td>[19]</td>
     <td><code>INTEGER</code></td>
     <td>::=</td>
     <td>[<code class="grammar-chars">+-</code>]? [<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [('?', ('[', '+-')), (',', [('*', ('[', '0-9')), (&quot;'&quot;, '.'), ('+', ('[', '0-9'))])])" data-grammar-original="[21] DECIMAL ::= [+-]?  ( ([0-9])* '.' ([0-9])+  )" id="grammar-production-DECIMAL">
+            <tr class="grammar-token" id="grammar-production-DECIMAL">
     <td>[20]</td>
     <td><code>DECIMAL</code></td>
     <td>::=</td>
     <td>[<code class="grammar-chars">+-</code>]? [<code class="grammar-chars">0-9</code>]<code class="grammar-star">*</code> '<code class="grammar-literal">.</code>' [<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [('?', ('[', '+-')), ('|', [(',', [('+', ('[', '0-9')), (&quot;'&quot;, '.'), ('*', ('[', '0-9')), ('id', 'EXPONENT')]), (',', [(&quot;'&quot;, '.'), ('+', ('[', '0-9')), ('id', 'EXPONENT')]), (',', [('+', ('[', '0-9')), ('id', 'EXPONENT')])])])" data-grammar-original="[22] DOUBLE ::= [+-]? ( [0-9]+ '.' [0-9]* EXPONENT | '.' ([0-9])+ EXPONENT | ([0-9])+EXPONENT )" id="grammar-production-DOUBLE">
+            <tr class="grammar-token" id="grammar-production-DOUBLE">
     <td>[21]</td>
     <td><code>DOUBLE</code></td>
     <td>::=</td>
     <td>[<code class="grammar-chars">+-</code>]? ([<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code> '<code class="grammar-literal">.</code>' [<code class="grammar-chars">0-9</code>]<code class="grammar-star">*</code> <a href="#grammar-production-EXPONENT">EXPONENT</a> <code>| </code> '<code class="grammar-literal">.</code>' [<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code> <a href="#grammar-production-EXPONENT">EXPONENT</a> <code>| </code> [<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [('[', 'eE'), ('?', ('[', '+-')), ('+', ('[', '0-9'))])" data-grammar-original="[154s] EXPONENT ::= [eE] [+-]? [0-9]+" id="grammar-production-EXPONENT">
+            <tr class="grammar-token" id="grammar-production-EXPONENT">
     <td>[154s]</td>
     <td><code>EXPONENT</code></td>
     <td>::=</td>
     <td>[<code class="grammar-chars">eE</code>] [<code class="grammar-chars">+-</code>]? [<code class="grammar-chars">0-9</code>]<code class="grammar-plus">+</code></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, '&quot;'), ('*', ('|', [('[', '^#x22#x5C#xA#xD'), ('id', 'ECHAR'), ('id', 'UCHAR')])), (&quot;'&quot;, '&quot;')])" data-grammar-original="[23] STRING_LITERAL_QUOTE ::= '&quot;' ( [^#x22#x5C#xA#xD] | ECHAR | UCHAR )* '&quot;'" id="grammar-production-STRING_LITERAL_QUOTE">
+            <tr class="grammar-token" id="grammar-production-STRING_LITERAL_QUOTE">
     <td>[22]</td>
     <td><code>STRING_LITERAL_QUOTE</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">&quot;</code>' ([<code class="grammar-chars">^#x22#x5C#xA#xD</code>] <code>| </code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> '<code class="grammar-literal">&quot;</code>'<span class="grammar_comment"> /* #x22=&quot; #x5C=\ #xA=new line #xD=carriage return */</span></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, &quot;'&quot;), ('*', ('|', [('[', '^#x27#x5C#xA#xD'), ('id', 'ECHAR'), ('id', 'UCHAR')])), (&quot;'&quot;, &quot;'&quot;)])" data-grammar-original="[24] STRING_LITERAL_SINGLE_QUOTE ::= &quot;'&quot; ( [^#x27#x5C#xA#xD] | ECHAR | UCHAR )* &quot;'&quot;" id="grammar-production-STRING_LITERAL_SINGLE_QUOTE">
+            <tr class="grammar-token" id="grammar-production-STRING_LITERAL_SINGLE_QUOTE">
     <td>[23]</td>
     <td><code>STRING_LITERAL_SINGLE_QUOTE</code></td>
     <td>::=</td>
     <td>&quot;<code class="grammar-literal">'</code>&quot; ([<code class="grammar-chars">^#x27#x5C#xA#xD</code>] <code>| </code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> &quot;<code class="grammar-literal">'</code>&quot; <a href="#grammar-production-EXPONENT">EXPONENT</a>)<span class="grammar_comment"> /* #x27=' #x5C=\ #xA=new line #xD=carriage return */</span></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, &quot;'''&quot;), ('*', (',', [('?', ('|', [(&quot;'&quot;, &quot;'&quot;), (&quot;'&quot;, &quot;''&quot;)])), ('|', [('[', &quot;^'\\&quot;), ('id', 'ECHAR'), ('id', 'UCHAR')])])), (&quot;'&quot;, &quot;'''&quot;)])" data-grammar-original="[25] STRING_LITERAL_LONG_SINGLE_QUOTE ::= &quot;'''&quot; ( ( &quot;'&quot; | &quot;''&quot; )? ( [^'\] | ECHAR | UCHAR ) )* &quot;'''&quot;" id="grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE">
+            <tr class="grammar-token" id="grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE">
     <td>[24]</td>
     <td><code>STRING_LITERAL_LONG_SINGLE_QUOTE</code></td>
     <td>::=</td>
     <td>&quot;<code class="grammar-literal">'''</code>&quot; ((&quot;<code class="grammar-literal">'</code>&quot; <code>| </code> &quot;<code class="grammar-literal">''</code>&quot;)? [<code class="grammar-chars">^'\</code>] <code>| </code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> &quot;<code class="grammar-literal">'''</code>&quot;</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, '&quot;&quot;&quot;'), ('*', (',', [('?', ('|', [(&quot;'&quot;, '&quot;'), (&quot;'&quot;, '&quot;&quot;')])), ('|', [('[', '^&quot;\\'), ('id', 'ECHAR'), ('id', 'UCHAR')])])), (&quot;'&quot;, '&quot;&quot;&quot;')])" data-grammar-original="[26] STRING_LITERAL_LONG_QUOTE ::= '&quot;&quot;&quot;' ( ( '&quot;' | '&quot;&quot;' )? ( [^&quot;\] | ECHAR | UCHAR ) )* '&quot;&quot;&quot;'" id="grammar-production-STRING_LITERAL_LONG_QUOTE">
+            <tr class="grammar-token" id="grammar-production-STRING_LITERAL_LONG_QUOTE">
     <td>[25]</td>
     <td><code>STRING_LITERAL_LONG_QUOTE</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">&quot;&quot;&quot;</code>' (('<code class="grammar-literal">&quot;</code>' <code>| </code> '<code class="grammar-literal">&quot;&quot;</code>')? [<code class="grammar-chars">^&quot;\</code>] <code>| </code> <a href="#grammar-production-ECHAR">ECHAR</a> <code>| </code> <a href="#grammar-production-UCHAR">UCHAR</a>)<code class="grammar-star">*</code> '<code class="grammar-literal">&quot;&quot;&quot;</code>'</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="('|', [(',', [(&quot;'&quot;, '\\u'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX')]), (',', [(&quot;'&quot;, '\\U'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX'), ('id', 'HEX')])])" data-grammar-original="[27] UCHAR ::= ( &quot;\u&quot; HEX HEX HEX HEX )| ( &quot;\U&quot; HEX HEX HEX HEX HEX HEX HEX HEX )" id="grammar-production-UCHAR">
+            <tr class="grammar-token" id="grammar-production-UCHAR">
     <td>[26]</td>
     <td><code>UCHAR</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">\u</code>' <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <code>| </code> '<code class="grammar-literal">\U</code>' <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, '\\'), ('[', 'tbnrf\\&quot;\'')])" data-grammar-original="[159s] ECHAR ::= &quot;\&quot; [tbnrf\&quot;']" id="grammar-production-ECHAR">
+            <tr class="grammar-token" id="grammar-production-ECHAR">
     <td>[159s]</td>
     <td><code>ECHAR</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">\</code>' [<code class="grammar-chars">tbnrf&quot;'\</code>]</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="('|', [('#', '#x20'), ('#', '#x9'), ('#', '#xD'), ('#', '#xA')])" data-grammar-original="[161s] WS ::= #x20 | #x9 | #xD | #xA" id="grammar-production-WS">
+            <tr class="grammar-token" id="grammar-production-WS">
     <td>[161s]</td>
     <td><code>WS</code></td>
     <td>::=</td>
     <td><code class="grammar-char-escape">#x20</code> <code>| </code> <code class="grammar-char-escape">#x9</code> <code>| </code> <code class="grammar-char-escape">#xD</code> <code>| </code> <code class="grammar-char-escape">#xA</code><span class="grammar_comment"> /* #x20=space #x9=character tabulation #xD=carriage return #xA=new line */</span></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, '['), ('*', ('id', 'WS')), (&quot;'&quot;, ']')])" data-grammar-original="[162s] ANON ::= &quot;[&quot; WS* &quot;]&quot;" id="grammar-production-ANON">
+            <tr class="grammar-token" id="grammar-production-ANON">
     <td>[162s]</td>
     <td><code>ANON</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">[</code>' <a href="#grammar-production-WS">WS</a><code class="grammar-star">*</code> '<code class="grammar-literal">]</code>'</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="('|', [('[', 'A-Z'), ('[', 'a-z'), ('[', '#00C0-#00D6'), ('[', '#00D8-#00F6'), ('[', '#00F8-#02FF'), ('[', '#0370-#037D'), ('[', '#037F-#1FFF'), ('[', '#200C-#200D'), ('[', '#2070-#218F'), ('[', '#2C00-#2FEF'), ('[', '#3001-#D7FF'), ('[', '#F900-#FDCF'), ('[', '#FDF0-#FFFD'), ('[', '#10000-#EFFFF')])" data-grammar-original="[163s] PN_CHARS_BASE ::= [A-Z]| [a-z]| [#00C0-#00D6]| [#00D8-#00F6]| [#00F8-#02FF]| [#0370-#037D]| [#037F-#1FFF]| [#200C-#200D]| [#2070-#218F]| [#2C00-#2FEF]| [#3001-#D7FF]| [#F900-#FDCF]| [#FDF0-#FFFD]| [#10000-#EFFFF]" id="grammar-production-PN_CHARS_BASE">
+            <tr class="grammar-token" id="grammar-production-PN_CHARS_BASE">
     <td>[163s]</td>
     <td><code>PN_CHARS_BASE</code></td>
     <td>::=</td>
     <td>[<code class="grammar-chars">A-Z</code>] <code>| </code> [<code class="grammar-chars">a-z</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>00C0-#<span class="add">x</span>00D6</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>00D8-#<span class="add">x</span>00F6</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>00F8-#<span class="add">x</span>02FF</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>0370-#<span class="add">x</span>037D</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>037F-#<span class="add">x</span>1FFF</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>200C-#<span class="add">x</span>200D</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>2070-#<span class="add">x</span>218F</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>2C00-#<span class="add">x</span>2FEF</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>3001-#<span class="add">x</span>D7FF</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>F900-#<span class="add">x</span>FDCF</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>FDF0-#<span class="add">x</span>FFFD</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>10000-#<span class="add">x</span>EFFFF</code>]</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="('|', [('id', 'PN_CHARS_BASE'), (&quot;'&quot;, '_')])" data-grammar-original="[164s] PN_CHARS_U  ::=  PN_CHARS_BASE| '_'" id="grammar-production-PN_CHARS_U">
+            <tr class="grammar-token" id="grammar-production-PN_CHARS_U">
     <td>[164s]</td>
     <td><code>PN_CHARS_U</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a> <code>| </code> '<code class="grammar-literal">_</code>'</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="('|', [('id', 'PN_CHARS_U'), (&quot;'&quot;, '-'), ('[', '0-9'), ('#', '#00B7'), ('[', '#0300-#036F'), ('[', '#203F-#2040')])" data-grammar-original="[166s] PN_CHARS ::= PN_CHARS_U| &quot;-&quot;| [0-9]| #00B7| [#0300-#036F]| [#203F-#2040]" id="grammar-production-PN_CHARS">
+            <tr class="grammar-token" id="grammar-production-PN_CHARS">
     <td>[166s]</td>
     <td><code>PN_CHARS</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-PN_CHARS_U">PN_CHARS_U</a> <code>| </code> '<code class="grammar-literal">-</code>' <code>| </code> [<code class="grammar-chars">0-9</code>] <code>| </code> <code class="grammar-char-escape">#<span class="add">x</span>00B7</code> <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>0300-#<span class="add">x</span>036F</code>] <code>| </code> [<code class="grammar-chars">#<span class="add">x</span>203F-#<span class="add">x</span>2040</code>]</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [('id', 'PN_CHARS_BASE'), ('?', (',', [('*', ('|', [('id', 'PN_CHARS'), (&quot;'&quot;, '.')])), ('id', 'PN_CHARS')]))])" data-grammar-original="[167s] PN_PREFIX ::= PN_CHARS_BASE ( ( PN_CHARS | &quot;.&quot; )* PN_CHARS )?" id="grammar-production-PN_PREFIX">
+            <tr class="grammar-token" id="grammar-production-PN_PREFIX">
     <td>[167s]</td>
     <td><code>PN_PREFIX</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-PN_CHARS_BASE">PN_CHARS_BASE</a> ((<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>| </code> '<code class="grammar-literal">.</code>')<code class="grammar-star">*</code> <a href="#grammar-production-PN_CHARS">PN_CHARS</a>)?</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [('|', [('id', 'PN_CHARS_U'), (&quot;'&quot;, ':'), ('[', '0-9'), ('id', 'PLX')]), ('?', (',', [('*', ('|', [('id', 'PN_CHARS'), (&quot;'&quot;, '.'), (&quot;'&quot;, ':'), ('id', 'PLX')])), ('|', [('id', 'PN_CHARS'), (&quot;'&quot;, ':'), ('id', 'PLX')])]))])" data-grammar-original="[168s] PN_LOCAL ::= ( PN_CHARS_U | ':' | [0-9] | PLX ) ( ( PN_CHARS | '.' | ':' | PLX )*  ( PN_CHARS | ':' | PLX ) ) ?" id="grammar-production-PN_LOCAL">
+            <tr class="grammar-token" id="grammar-production-PN_LOCAL">
     <td>[168s]</td>
     <td><code>PN_LOCAL</code></td>
     <td>::=</td>
     <td>(<a href="#grammar-production-PN_CHARS_U">PN_CHARS_U</a> <code>| </code> '<code class="grammar-literal">:</code>' <code>| </code> [<code class="grammar-chars">0-9</code>] <code>| </code> <a href="#grammar-production-PLX">PLX</a>) ((<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>| </code> '<code class="grammar-literal">.</code>' <code>| </code> '<code class="grammar-literal">:</code>' <code>| </code> <a href="#grammar-production-PLX">PLX</a>)<code class="grammar-star">*</code> (<a href="#grammar-production-PN_CHARS">PN_CHARS</a> <code>| </code> '<code class="grammar-literal">:</code>' <code>| </code> <a href="#grammar-production-PLX">PLX</a>))?</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="('|', [('id', 'PERCENT'), ('id', 'PN_LOCAL_ESC')])" data-grammar-original="[169s] PLX ::= PERCENT | PN_LOCAL_ESC" id="grammar-production-PLX">
+            <tr class="grammar-token" id="grammar-production-PLX">
     <td>[169s]</td>
     <td><code>PLX</code></td>
     <td>::=</td>
     <td><a href="#grammar-production-PERCENT">PERCENT</a> <code>| </code> <a href="#grammar-production-PN_LOCAL_ESC">PN_LOCAL_ESC</a></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, '%'), ('id', 'HEX'), ('id', 'HEX')])" data-grammar-original="[170s] PERCENT ::= '%' HEX HEX" id="grammar-production-PERCENT">
+            <tr class="grammar-token" id="grammar-production-PERCENT">
     <td>[170s]</td>
     <td><code>PERCENT</code></td>
     <td>::=</td>
     <td>'<code class="grammar-literal">%</code>' <a href="#grammar-production-HEX">HEX</a> <a href="#grammar-production-HEX">HEX</a></td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="('|', [('[', '0-9'), ('[', 'A-F'), ('[', 'a-f')])" data-grammar-original="[171s] HEX ::= [0-9] | [A-F] | [a-f]" id="grammar-production-HEX">
+            <tr class="grammar-token" id="grammar-production-HEX">
     <td>[171s]</td>
     <td><code>HEX</code></td>
     <td>::=</td>
     <td>[<code class="grammar-chars">0-9</code>] <code>| </code> [<code class="grammar-chars">A-F</code>] <code>| </code> [<code class="grammar-chars">a-f</code>]</td>
 </tr>
-            <tr class="grammar-token" data-grammar-expression="(',', [(&quot;'&quot;, '\\'), ('|', [(&quot;'&quot;, '_'), (&quot;'&quot;, '~'), (&quot;'&quot;, '.'), (&quot;'&quot;, '-'), (&quot;'&quot;, '!'), (&quot;'&quot;, '$'), (&quot;'&quot;, '&amp;'), (&quot;'&quot;, &quot;'&quot;), (&quot;'&quot;, '('), (&quot;'&quot;, ')'), (&quot;'&quot;, '*'), (&quot;'&quot;, '+'), (&quot;'&quot;, ','), (&quot;'&quot;, ';'), (&quot;'&quot;, '='), (&quot;'&quot;, '/'), (&quot;'&quot;, '?'), (&quot;'&quot;, '#'), (&quot;'&quot;, '@'), (&quot;'&quot;, '%')])])" data-grammar-original="[172s] PN_LOCAL_ESC ::= '\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&amp;' | &quot;'&quot; | '(' | ')' | '*' | '+' | ',' | ';' | '=' | '/' | '?' | '#' | '@' | '%' )" id="grammar-production-PN_LOCAL_ESC">
+            <tr class="grammar-token" id="grammar-production-PN_LOCAL_ESC">
     <td>[172s]</td>
     <td><code>PN_LOCAL_ESC</code></td>
     <td>::=</td>
@@ -1481,32 +1481,82 @@
 
           <p>The <abbr title="Resource Description Framework">RDF</abbr> 1.1 Concepts and Abstract Syntax specification ([<cite><a class="bibref" href="#bib-RDF11-CONCEPTS">RDF11-CONCEPTS</a></cite>]) defines three types of <em><abbr title="Resource Description Framework">RDF</abbr> Term</em>:
 
-          <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-iri">IRIs</a>,
-          <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-literal">literals</a> and
-          <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">blank nodes</a>.
-          Literals are composed of a <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</a> and an optional <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-language-tag">language tag</a> [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>] or datatype IRI.
+          <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">IRIs</a>,
+          <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">literals</a> and
+          <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">blank nodes</a>.
+          Literals are composed of a <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">lexical form</a> and an optional <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tag">language tag</a> [<cite><a class="bibref" href="#bib-BCP47">BCP47</a></cite>] or datatype IRI.
           An extra type, <code class="dfn" id="prefix">prefix</code>, is used during parsing to map string identifiers to namespace IRIs.
 
           This section maps a string conforming to the grammar in <a class="sectionRef sec-ref" href="#sec-grammar-grammar">section <span class="secno">6.5</span> <span class="sec-title">Grammar</span></a> to a set of triples by mapping strings matching productions and lexical tokens to <abbr title="Resource Description Framework">RDF</abbr> terms or their components (e.g. language tags, lexical forms of literals). Grammar productions change the parser state and emit triples.</p>
-          <section id="sec-parsing-state" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
+
+	  <section id="sec-parsing-state" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
           <h3 aria-level="2" role="heading" id="h3_sec-parsing-state"><span class="secno">7.1 </span>Parser State</h3>
 
               <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>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="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 id="namespaces">Map[<a href="#prefix" class="type 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)? &quot;:&quot;</code> <span class="testrefs">(test: <a href="tests/#default1">default1</a>)</span>.</li>
+		</li>
 
-                <li id="bnodeLabels">Map[string -&gt; <a href="htp://www.w3.org/TR/rdf11-concepts/#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="namespaces">Map[<a href="#prefix" class="type 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/#escapedNamespace1">escapedNamespace1</a>)</span>
+                -->
 
-                <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 &quot;<code>a</code>&quot;, <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>
+		Note that the prefix may be an empty string, per the
+		<code>PNAME_NS</code> production: <code>(PN_PREFIX)? &quot;:&quot;</code>.
+		
+<!--
+		<span class="testrefs">(test: <a href="tests/#default1">default1</a>)</span>.
+		-->
+
+		</li>
+
+                <li id="bnodeLabels">Map[string -&gt; <a href="http://www.w3.org/TR/rdf11-concepts/#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 &quot;<code>a</code>&quot;,
+                <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> 
 
               </ul>
           </section>
+	      
           <section id="sec-parsing-terms" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
           <h3 aria-level="2" role="heading" id="h3_sec-parsing-terms"><span class="secno">7.2 </span><abbr title="Resource Description Framework">RDF</abbr> Term Constructors</h3>
 
@@ -1517,28 +1567,28 @@
               <tr>                                  <th>                                                                       production               </th><th>                                                                                       type            </th><th>procedure</th></tr>
                 </thead>
                 <tbody>
-              <tr id="handle-IRIREF"><td style="text-align:left;"><a href="#grammar-production-IRIREF" class="type IRI">IRIREF               </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-iri">      IRI         </a></td><td>The characters between &quot;&lt;&quot; and &quot;&gt;&quot; are taken, with the <a href="#numeric">numeric escape sequences</a> unescaped, to form the unicode string of the IRI. Relative IRI resolution is performed per <a class="sectionRef" href="#sec-iri-references">Section 6.3</a>.</td></tr>
+              <tr id="handle-IRIREF"><td style="text-align:left;"><a href="#grammar-production-IRIREF" class="type IRI">IRIREF               </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">      IRI         </a></td><td>The characters between &quot;&lt;&quot; and &quot;&gt;&quot; are taken, with the <a href="#numeric">numeric escape sequences</a> unescaped, to form the unicode string of the IRI. Relative IRI resolution is performed per <a class="sectionRef" href="#sec-iri-references">Section 6.3</a>.</td></tr>
               <tr id="handle-PNAME_NS"><td rowspan="2" style="text-align:left;"><a href="#grammar-production-PNAME_NS" class="type string">PNAME_NS             </a></td><td><a href="#prefix">                                 prefix      </a></td><td>When used in a <a href="#grammar-production-prefixID">prefixID</a> or <a href="#grammar-production-sparqlPrefix">sparqlPrefix</a> production, the <code>prefix</code> is 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_NS">                                                                                                                                        <td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-iri">      IRI         </a></td><td>When used in a <a href="#grammar-production-PrefixedName">PrefixedName</a> production, the <code>iri</code> is the value in the <a href="#namespaces">namespaces map</a> corresponding to the first argument of the rule.</td></tr>
-              <tr id="handle-PNAME_LN"><td style="text-align:left;"><a href="#grammar-production-PNAME_LN" class="type IRI">PNAME_LN             </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-iri">      IRI         </a></td><td>A potentially empty <a href="#prefix">prefix</a> is identified by the first sequence, <code>PNAME_NS</code>. The <a href="#namespaces">namespaces map</a> <em class="rfc2119"><em class="rfc2119" title="MUST">MUST</em></em> have a corresponding <code>namespace</code>. The unicode string of the IRI is formed by unescaping the <a href="#reserved">reserved characters</a> in the second argument, <code>PN_LOCAL</code>, and concatenating this onto the <code>namespace</code>.</td></tr>
+              <tr id="handle-PNAME_NS2">                                                                                                                                        <td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">      IRI         </a></td><td>When used in a <a href="#grammar-production-PrefixedName">PrefixedName</a> production, the <code>iri</code> is the value in the <a href="#namespaces">namespaces map</a> corresponding to the first argument of the rule.</td></tr>
+              <tr id="handle-PNAME_LN"><td style="text-align:left;"><a href="#grammar-production-PNAME_LN" class="type IRI">PNAME_LN             </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">      IRI         </a></td><td>A potentially empty <a href="#prefix">prefix</a> is identified by the first sequence, <code>PNAME_NS</code>. The <a href="#namespaces">namespaces map</a> <em class="rfc2119"><em class="rfc2119" title="MUST">MUST</em></em> have a corresponding <code>namespace</code>. The unicode string of the IRI is formed by unescaping the <a href="#reserved">reserved characters</a> in the second argument, <code>PN_LOCAL</code>, and concatenating this onto the <code>namespace</code>.</td></tr>
               
-<!-- tr id="handle-PrefixedName"><td style="text-align:left;"><a class="type IRI"         href="#grammar-production-PrefixedName"         >PrefixedName         </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-iri">      IRI         </a></td><td>.</td></tr -->
+<!-- tr id="handle-PrefixedName"><td style="text-align:left;"><a class="type IRI"         href="#grammar-production-PrefixedName"         >PrefixedName         </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">      IRI         </a></td><td>.</td></tr -->
 
-              <tr id="handle-STRING_LITERAL_SINGLE_QUOTE"><td style="text-align:left;"><a href="#grammar-production-STRING_LITERAL_SINGLE_QUOTE" class="type lexicalForm">STRING_LITERAL_SINGLE_QUOTE      </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost &quot;'&quot;s   are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
-              <tr id="handle-STRING_LITERAL_QUOTE"><td style="text-align:left;"><a href="#grammar-production-STRING_LITERAL_QUOTE" class="type lexicalForm">STRING_LITERAL_QUOTE      </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost '&quot;'s   are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
-              <tr id="handle-STRING_LITERAL_LONG_SINGLE_QUOTE"><td style="text-align:left;"><a href="#grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE" class="type lexicalForm">STRING_LITERAL_LONG_SINGLE_QUOTE </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost &quot;'''&quot;s are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
-              <tr id="handle-STRING_LITERAL_LONG_QUOTE"><td style="text-align:left;"><a href="#grammar-production-STRING_LITERAL_LONG_QUOTE" class="type lexicalForm">STRING_LITERAL_LONG_QUOTE </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost '&quot;&quot;&quot;'s are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
-              <tr id="handle-LANGTAG"><td style="text-align:left;"><a href="#grammar-production-LANGTAG" class="type langTag">LANGTAG              </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-language-tag">language tag</a></td><td>The characters following the <code>@</code> form the unicode string of the language tag.</td></tr>
-              <tr id="handle-RDFLiteral"><td style="text-align:left;"><a href="#grammar-production-RDFLiteral" class="type literal">RDFLiteral           </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the first rule argument, <code>String</code>. If the <code>'^^' iri</code> rule matched, the datatype is <code>iri</code> and the literal has no language tag. If the <code>LANGTAG</code> rule matched, the datatype is <code>rdf:langString</code> and the language tag is <code>LANGTAG</code>. If neither matched, the datatype is <code>xsd:string</code> and the literal has no language tag.</td></tr>
-              <tr id="handle-INTEGER"><td style="text-align:left;"><a href="#grammar-production-INTEGER" class="type integer">INTEGER              </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the input string, and a datatype of <code>xsd:integer</code>.</td></tr>
-              <tr id="handle-DECIMAL"><td style="text-align:left;"><a href="#grammar-production-DECIMAL" class="type decimal">DECIMAL              </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the input string, and a datatype of <code>xsd:decimal</code>.</td></tr>
-              <tr id="handle-DOUBLE"><td style="text-align:left;"><a href="#grammar-production-DOUBLE" class="type double">DOUBLE               </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the input string, and a datatype of <code>xsd:double</code>.</td></tr>
-              <tr id="handle-BooleanLiteral"><td style="text-align:left;"><a href="#grammar-production-BooleanLiteral" class="type boolean">BooleanLiteral       </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the <code>true</code> or <code>false</code>, depending on which matched the input, and a datatype of <code>xsd:boolean</code>.</td></tr>
-              <tr id="handle-BLANK_NODE_LABEL"><td style="text-align:left;"><a href="#grammar-production-BLANK_NODE_LABEL" class="type bNode">BLANK_NODE_LABEL     </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">         blank node  </a></td><td>The string matching the second argument, <code>PN_LOCAL</code>, is a key in <a href="#bnodeLabels">bnodeLabels</a>. If there is no corresponding blank node in the map, one is allocated.</td></tr>
-              <tr id="handle-ANON"><td style="text-align:left;"><a href="#grammar-production-ANON" class="type bNode">ANON                 </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">         blank node  </a></td><td>A blank node is generated.</td></tr>
-              <tr id="handle-blankNodePropertyList"><td style="text-align:left;"><a href="#grammar-production-blankNodePropertyList" class="type bNode">blankNodePropertyList</a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">         blank node  </a></td><td>A blank node is generated. Note the rules for <code>blankNodePropertyList</code> in the next section.</td></tr>
-              <tr id="handle-collection"><td rowspan="2" style="text-align:left;"><a href="#grammar-production-collection" class="type bNode">collection           </a></td><td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">         blank node  </a></td><td>For non-empty lists, a blank node is generated. Note the rules for <code>collection</code> in the next section.</td></tr>
-              <tr id="handle-collection">                                                                                                                                                    <td><a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-iri">         IRI         </a></td><td>For empty lists, the resulting IRI is <code>rdf:nil</code>. Note the rules for <code>collection</code> in the next section.</td></tr>
+              <tr id="handle-STRING_LITERAL_SINGLE_QUOTE"><td style="text-align:left;"><a href="#grammar-production-STRING_LITERAL_SINGLE_QUOTE" class="type lexicalForm">STRING_LITERAL_SINGLE_QUOTE      </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost &quot;'&quot;s   are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
+              <tr id="handle-STRING_LITERAL_QUOTE"><td style="text-align:left;"><a href="#grammar-production-STRING_LITERAL_QUOTE" class="type lexicalForm">STRING_LITERAL_QUOTE      </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost '&quot;'s   are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
+              <tr id="handle-STRING_LITERAL_LONG_SINGLE_QUOTE"><td style="text-align:left;"><a href="#grammar-production-STRING_LITERAL_LONG_SINGLE_QUOTE" class="type lexicalForm">STRING_LITERAL_LONG_SINGLE_QUOTE </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost &quot;'''&quot;s are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
+              <tr id="handle-STRING_LITERAL_LONG_QUOTE"><td style="text-align:left;"><a href="#grammar-production-STRING_LITERAL_LONG_QUOTE" class="type lexicalForm">STRING_LITERAL_LONG_QUOTE </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-lexical-form">                         lexical form</a></td><td>The characters between the outermost '&quot;&quot;&quot;'s are taken, with <a href="#numeric">numeric</a> and <a href="#string">string</a> escape sequences unescaped, to form the unicode string of a lexical form.</td></tr>
+              <tr id="handle-LANGTAG"><td style="text-align:left;"><a href="#grammar-production-LANGTAG" class="type langTag">LANGTAG              </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-language-tag">language tag</a></td><td>The characters following the <code>@</code> form the unicode string of the language tag.</td></tr>
+              <tr id="handle-RDFLiteral"><td style="text-align:left;"><a href="#grammar-production-RDFLiteral" class="type literal">RDFLiteral           </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the first rule argument, <code>String</code>. If the <code>'^^' iri</code> rule matched, the datatype is <code>iri</code> and the literal has no language tag. If the <code>LANGTAG</code> rule matched, the datatype is <code>rdf:langString</code> and the language tag is <code>LANGTAG</code>. If neither matched, the datatype is <code>xsd:string</code> and the literal has no language tag.</td></tr>
+              <tr id="handle-INTEGER"><td style="text-align:left;"><a href="#grammar-production-INTEGER" class="type integer">INTEGER              </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the input string, and a datatype of <code>xsd:integer</code>.</td></tr>
+              <tr id="handle-DECIMAL"><td style="text-align:left;"><a href="#grammar-production-DECIMAL" class="type decimal">DECIMAL              </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the input string, and a datatype of <code>xsd:decimal</code>.</td></tr>
+              <tr id="handle-DOUBLE"><td style="text-align:left;"><a href="#grammar-production-DOUBLE" class="type double">DOUBLE               </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the input string, and a datatype of <code>xsd:double</code>.</td></tr>
+              <tr id="handle-BooleanLiteral"><td style="text-align:left;"><a href="#grammar-production-BooleanLiteral" class="type boolean">BooleanLiteral       </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the <code>true</code> or <code>false</code>, depending on which matched the input, and a datatype of <code>xsd:boolean</code>.</td></tr>
+              <tr id="handle-BLANK_NODE_LABEL"><td style="text-align:left;"><a href="#grammar-production-BLANK_NODE_LABEL" class="type bNode">BLANK_NODE_LABEL     </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">         blank node  </a></td><td>The string matching the second argument, <code>PN_LOCAL</code>, is a key in <a href="#bnodeLabels">bnodeLabels</a>. If there is no corresponding blank node in the map, one is allocated.</td></tr>
+              <tr id="handle-ANON"><td style="text-align:left;"><a href="#grammar-production-ANON" class="type bNode">ANON                 </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">         blank node  </a></td><td>A blank node is generated.</td></tr>
+              <tr id="handle-blankNodePropertyList"><td style="text-align:left;"><a href="#grammar-production-blankNodePropertyList" class="type bNode">blankNodePropertyList</a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">         blank node  </a></td><td>A blank node is generated. Note the rules for <code>blankNodePropertyList</code> in the next section.</td></tr>
+              <tr id="handle-collection"><td rowspan="2" style="text-align:left;"><a href="#grammar-production-collection" class="type bNode">collection           </a></td><td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-blank-node">         blank node  </a></td><td>For non-empty lists, a blank node is generated. Note the rules for <code>collection</code> in the next section.</td></tr>
+              <tr id="handle-collection2">                                                                                                                                                    <td><a href="http://www.w3.org/TR/rdf11-concepts/#dfn-iri">         IRI         </a></td><td>For empty lists, the resulting IRI is <code>rdf:nil</code>. Note the rules for <code>collection</code> in the next section.</td></tr>
                 </tbody>
               </table>
 
@@ -1546,7 +1596,7 @@
           <section id="sec-parsing-triples" typeof="bibo:Chapter" resource="#ref" rel="bibo:Chapter">
           <h3 aria-level="2" role="heading" id="h3_sec-parsing-triples"><span class="secno">7.3 </span><abbr title="Resource Description Framework">RDF</abbr> Triples Constructors</h3>
               <p>
-		A Turtle document defines an <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph"><abbr title="Resource Description Framework">RDF</abbr> graph</a> composed of set of <a href="htp://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple"><abbr title="Resource Description Framework">RDF</abbr> triple</a>s.
+		A Turtle document defines an <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-graph"><abbr title="Resource Description Framework">RDF</abbr> graph</a> composed of set of <a href="http://www.w3.org/TR/rdf11-concepts/#dfn-rdf-triple"><abbr title="Resource Description Framework">RDF</abbr> triple</a>s.
 		The <code><a href="#grammar-production-subject">subject</a></code> production sets the <code class="curSubject">curSubject</code>.
 		The <code><a href="#grammar-production-verb">verb</a></code> production sets the <code class="curPredicate">curPredicate</code>.
 		Each <a href="#grammar-production-object" class="grammarRef" tabindex="30">object</a> <code>N</code> in the document produces an <abbr title="Resource Description Framework">RDF</abbr> triple: <span class="ntriple"><code class="curSubject">curSubject</code> <code class="curPredicate">curPredicate</code> <code>N</code> .</span>
@@ -1809,7 +1859,7 @@
       <h3 aria-level="2" role="heading" id="h3_sec-changelog-Subm-WD"><span class="secno">D.3 </span>Changes from <a href="http://www.w3.org/TeamSubmission/2008/SUBM-turtle-20080114/">January 2008 Team Submission</a> to <a href="http://www.w3.org/TR/2011/WD-turtle-20110809/">First Public Working Draft</a></h3>
             <ul>
 
-          <li>Adopted three additional string syntaxes from <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr>: <a href="#grammar-production-STRING_LITERAL2">STRING_LITERAL2</a>, <a href="#grammar-production-STRING_LITERAL_LONG1">STRING_LITERAL_LONG1</a>, <a href="#grammar-production-STRING_LITERAL_LONG2">STRING_LITERAL_LONG2</a></li>
+          <li>Adopted three additional string syntaxes from <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr>: <a href="http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#rSTRING_LITERAL2">STRING_LITERAL2</a>, <a href="http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#rSTRING_LITERAL_LONG1">STRING_LITERAL_LONG1</a>, <a href="http://www.w3.org/TR/2013/REC-sparql11-query-20130321/#rSTRING_LITERAL_LONG2">STRING_LITERAL_LONG2</a></li>
 
           <li>Adopted <abbr title="SPARQL Protocol And RDF Query Language">SPARQL</abbr>'s syntax for prefixed names (see <a href="http://www.w3.org/TR/sparql11-query/#rPrefixedName">editor's draft</a>):
           <ul>