Update internal links to grammar-production
authorGavin Carothers <gavin@carothers.name>
Mon, 30 Apr 2012 19:43:41 -0700
changeset 276 4a2fa2d495f8
parent 275 ea5a6e17c056
child 277 92e7f93d7d54
child 279 670cf0805d2c
Update internal links to grammar-production
rdf-turtle/index.html
--- a/rdf-turtle/index.html	Mon Apr 30 19:24:22 2012 -0700
+++ b/rdf-turtle/index.html	Mon Apr 30 19:43:41 2012 -0700
@@ -178,7 +178,7 @@
     foaf:name "Spiderman" .</script></pre>
 
     		<p>
-			  The Turtle grammar for <a href="#prod-turtle2-triples"><code>triples</code></a> is a subset of the <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/">SPARQL Query Language for RDF</a> [[RDF-SPARQL-QUERY]] grammar for <a href="http://www.w3.org/TR/sparql11-query/#rTriplesBlock"><code>TriplesBlock</code></a>.
+			  The Turtle grammar for <a href="#grammar-production-triples"><code>triples</code></a> is a subset of the <a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/">SPARQL Query Language for RDF</a> [[RDF-SPARQL-QUERY]] grammar for <a href="http://www.w3.org/TR/sparql11-query/#rTriplesBlock"><code>TriplesBlock</code></a>.
 			  The two grammars share production and terminal names where possible.
 			  Likewise, the N-Triples grammar re-uses some productions and terminals from Turtle.
 			</p>
@@ -402,23 +402,8 @@
 
 			<section id="BNodes">
 				<h3>RDF Blank Nodes</h3>
-
-				<div class="issue">
-				  <p>
-				    documented presuming we remove %XX and \C escapes from blank node labels:
-				  </p>
-				  <pre>
--[73s] BLANK_NODE_LABEL ::= "_:" PN_LOCAL 
-+[73s] BLANK_NODE_LABEL ::= "_:" ( PN_CHARS_U | [0-9] ) ( ( PN_CHARS | '.' )*  PN_CHARS ) ?   # no PLX
- [100s] PN_LOCAL ::= ( PN_CHARS_U | [0-9] | PLX ) ( ( PN_CHARS | '.' | PLX )*  ( PN_CHARS | PLX ) ) ?
- [160s] PLX ::= PERCENT | PN_LOCAL_ESC
- [161s] PERCENT ::= '%' HEX HEX
- [163s] PN_LOCAL_ESC ::= '\\' ( '_' | '~' | '.' | '-' | '!' | '$' | '&amp;' | "'" | '(' | ')' | '*' | '+' | ',' | ';' | '=' | ':' | '/' | '?' | '#' | '@' | '%' )
-				  </pre>
-				</div>
-
 				<p>
-				  <a href="../rdf-concepts/index.html#dfn-blank-node">RDF blank nodes</a> in N-Triples are expressed as <code>_:</code> followed by a blank node label which is a series of name characters.
+				  <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="#term-turtle2-PN_CHARS_BASE">PN_CHARS_BASE</a>, liberalized to allow:
 				</p>
 				<ul>
@@ -427,7 +412,7 @@
 				  <li>The characters <code>-</code>, <code>\uB7</code>, <code>\u300</code> to <code>\u36F</code> and <code>\u203F</code> to <code>2040</code> are permitted anywhere except the first character.</li>
 				</ul>
 				<p>
-				  A fresh RDF blank node is allocated for each unique blank node label in a Turtle or N-Triples document.
+				  A fresh RDF blank node is allocated for each unique blank node label in a document.
 				  Repeated use of the same blank node label identifies the same RDF blank node.
 				</p>
 				<pre class="example"><script type="text/turtle">@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@@ -439,10 +424,10 @@
 				<section id="abbrev">
 				  <h3>Nesting Unlabeled Blank Nodes in Turtle</h3>
 				  <p>
-				    In Turtle, fresh RDF blank nodes are also allocated when matching the production <a href="#prod-turtle2-blankNodePropertyList">blankNodePropertyList</a> and the terminal <a href="#term-turtle2-ANON">ANON</a>.
-				    Both of these may appear in the <a href="#prod-turtle2-subject">subject</a> or <a href="#prod-turtle2-object">object</a> position of a triple (see the Turtle Grammar).
+				    In Turtle, fresh RDF blank nodes are also allocated when matching the production <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> and the terminal <a href="#term-turtle2-ANON">ANON</a>.
+				    Both of these may appear in the <a href="#grammar-production-subject">subject</a> or <a href="#grammar-production-object">object</a> position of a triple (see the Turtle Grammar).
 				    That subject or object is a fresh RDF blank node.
-				    This blank node also serves as the subject of the triples produced by matching the <a href="#prod-turtle2-predicateObjectList">predicateObjectList</a> production embedded in a blankNodePropertyList.
+				    This blank node also serves as the subject of the triples produced by matching the <a href="#grammar-production-predicateObjectList">predicateObjectList</a> production embedded in a blankNodePropertyList.
 				    The generation of these triples is described below in <a href="#groups">Predicate Object Lists in Turtle</a>.
 				    Blank nodes are also allocated for <a href="#collections">Collections in Turtle</a> (below).
 				  </p>
@@ -453,8 +438,8 @@
 </script></pre>
 
 				  <p>
-				    The Turtle grammar allows <a href="#prod-turtle2-blankNodePropertyList">blankNodePropertyList</a>s to be nested.
-				    In this case, each inner <code>[</code> establishes a new subject blank node which reverts to the outer node at the <code>]</code>, and serves as the current subject for <a href="#prod-turtle2-predicateObjectList">predicate object lists</a>.
+				    The Turtle grammar allows <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a>s to be nested.
+				    In this case, each inner <code>[</code> establishes a new subject blank node which reverts to the outer node at the <code>]</code>, and serves as the current subject for <a href="#grammar-production-predicateObjectList">predicate object lists</a>.
 				    This is described below in <a href="#groups">Predicate Object Lists in Turtle</a>.
 				  </p>
 				</section>
@@ -464,7 +449,7 @@
 				<h3>Predicate Object Lists in Turtle</h3>
 
 				<p>
-				  The <a href="#prod-turtle2-objectList">objectList production</a> matches a series of objects, separated by <code>,</code>, following a 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.
 				  Thus, the <code>,</code> symbol is used to repeat the subject and predicate of triples that only differ in the object RDF term.</p>
 				<pre class="example"><script type="text/plain">
@@ -474,7 +459,7 @@
 				</script></pre>
 
 				<p>
-				  The <a href="#prod-turtle2-predicateObjectList">predicateObjectList production</a> matches a series of predicates and objects, separated by <code>;</code>, following a subject.
+				  The <a href="#grammar-production-predicateObjectList">predicateObjectList production</a> matches a series of predicates and objects, separated by <code>;</code>, following a subject.
 				  This expresses a series of RDF Triples with that subject and a each predicate and object allocated to one triple.
 				  Thus, the <code>;</code> symbol is used to repeat the subject of triples that vary only in predicate and object RDF terms.</p>
 				<pre class="example"><script type="text/plain">
@@ -485,7 +470,7 @@
 
 				<div class="note">
 				  <p>
-				    The use of <a href="#prod-turtle2-predicateObjectList">predicateObjectList</a> within a <a href="#prod-turtle2-blankNodePropertyList">blankNodePropertyList</a> is a common idiom for representing a series of properties of a node.
+				    The use of <a href="predicateObjectList">predicateObjectList</a> within a <a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a> is a common idiom for representing a series of properties of a node.
 				  </p>
 				  <div style="float:left;">
 				    <p class="idlAttrName" style="padding-left:2em;">Abbreviated Turtle:</p>
@@ -522,7 +507,7 @@
 				</p>
 
 				<p>
-				  The <code>(…)</code> syntax MUST appear in the <a href="#prod-turtle2-subject">subject</a> or <a href="#prod-turtle2-object">object</a> position of a triple (see the Turtle Grammar).
+				  The <code>(…)</code> syntax MUST appear in the <a href="#grammar-production-subject">subject</a> or <a href="#grammar-production-object">object</a> position of a triple (see the Turtle Grammar).
 				  The blank node at the head of the list is the subject or object of the containing triple.
 				</p>
 
@@ -581,20 +566,20 @@
           <section id="sec-grammar-ws">
             <h3>White Space</h3>
 
-            <p>White space (production <a href="#prod-turtle2-WS">ws</a>) is used to separate
+            <p>White space (production <a href="#grammar-production-WS">ws</a>) is used to separate
             two tokens which would otherwise be (mis-)recognized as one token.
 
             </p>
 
             <p>White space is significant in tokens
-            <a href="#prod-turtle2-IRI_REF">IRI_REF</a> and <a href="#prod-turtle2-String">string</a>.
+            <a href="#grammar-production-IRI_REF">IRI_REF</a> and <a href="#grammar-production-String">string</a>.
             </p>
           </section>
           <section id="sec-grammar-comments">
             <h3>Comments</h3>
 
             <p>Comments in Turtle take the form of '#', outside an
-            <a href="#prod-turtle2-IRI_REF">IRI_REF</a> or strings,
+            <a href="#grammar-production-IRI_REF">IRI_REF</a> or strings,
             and continue to the end of line (marked by characters U+000D or U+000A)
             or end of file if there is no end of line after the comment
             marker.  Comments are treated as white space.
@@ -731,7 +716,7 @@
 	      </thead>
 	      <tbody>
 		<tr>
-		  <td class="r"><span style="font-weight:bold;">IRI</span>s, used as <a href="#prod-turtle2-IRIref">RDF terms</a> or as in <a href="#prod-turtle2-prefixID">@prefix</a> or <a href="#prod-turtle2-base">@base</a> declarations</td>
+		  <td class="r"><span style="font-weight:bold;">IRI</span>s, used as <a href="#grammar-production-IRIref">RDF terms</a> or as in <a href="#grammar-production-prefixID">@prefix</a> or <a href="#grammar-production-base">@base</a> declarations</td>
 		  <td style="background-color: green; border:1px solid black;">yes</td>
 		  <td>no</td>
 		  <td>no</td>
@@ -782,14 +767,14 @@
               <p>Parsing Turtle requires a state of four items:</p>
 
               <ul>
-                <li id="baseURI">IRI <code class="dfn">baseURI</code> — When the <a href="#prod-turtle2-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>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="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="#prod-turtle2-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>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="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="curSubject">RDF_Term <code class="dfn">curSubject</code> — The <code class="curSubject">curSubject</code> is bound to the <code><a href="#prod-turtle2-subject">subject</a></code> production.</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="#prod-turtle2-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>
+                <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>
 
               </ul>
           </section>
@@ -815,11 +800,11 @@
               <tr id="handle-INTEGER"              ><td><a class="type integer"     href="#term-turtle2-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="#term-turtle2-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="#term-turtle2-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>
-              <tr id="handle-BooleanLiteral"       ><td><a class="type boolean"     href="#prod-turtle2-BooleanLiteral"       >BooleanLiteral       </a></td><td><a href="../rdf-concepts/index.html#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the "true" or "false", depending on which matched the input, and a datatype of xsd:boolean.</td></tr>
+              <tr id="handle-BooleanLiteral"       ><td><a class="type boolean"     href="#grammar-production-BooleanLiteral"       >BooleanLiteral       </a></td><td><a href="../rdf-concepts/index.html#dfn-literal">            literal     </a></td><td>The literal has a lexical form of the "true" or "false", depending on which matched the input, and a datatype of xsd:boolean.</td></tr>
               <tr id="handle-BLANK_NODE_LABEL"     ><td><a class="type bNode"       href="#term-turtle2-BLANK_NODE_LABEL"     >BLANK_NODE_LABEL     </a></td><td><a href="../rdf-concepts/index.html#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><a class="type bNode"       href="#term-turtle2-ANON"                 >ANON                 </a></td><td><a href="../rdf-concepts/index.html#dfn-blank-node">         blank node  </a></td><td>A blank node is generated.</td></tr>
-              <tr id="handle-blankNodePropertyList"><td><a class="type bNode"       href="#prod-turtle2-blankNodePropertyList">blankNodePropertyList</a></td><td><a href="../rdf-concepts/index.html#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><a class="type bNode"       href="#prod-turtle2-collection"           >collection           </a></td><td><a href="../rdf-concepts/index.html#dfn-blank-node">         blank node  </a></td><td>A blank node is generated. Note the rules for <code>collection</code> in the next section.</td></tr>
+              <tr id="handle-blankNodePropertyList"><td><a class="type bNode"       href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></td><td><a href="../rdf-concepts/index.html#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><a class="type bNode"       href="#grammar-production-collection"           >collection           </a></td><td><a href="../rdf-concepts/index.html#dfn-blank-node">         blank node  </a></td><td>A blank node is generated. Note the rules for <code>collection</code> in the next section.</td></tr>
                 </tbody>
               </table>
 
@@ -828,23 +813,23 @@
           <section id="sec-parsing-triples">
           <h3>RDF Triples Constructors</h3>
               <p>A Turtle document defines an <a href="../rdf-concepts/index.html#dfn-rdf-graph">RDF graph</a> composed of set of <a href="../rdf-concepts/index.html#dfn-rdf-triple">RDF triple</a>s.
-          Each <a tabindex="30" class="grammarRef" href="#prod-turtle2-object">object</a> <code>N</code> in the document produces an RDF triple: <span class="ntriple"><code class="curSubject">curSubject</code> <code class="curPredicate">curPredicate</code> <code>N</code> .</span>
+          Each <a tabindex="30" class="grammarRef" href="#grammar-production-object">object</a> <code>N</code> in the document produces an RDF triple: <span class="ntriple"><code class="curSubject">curSubject</code> <code class="curPredicate">curPredicate</code> <code>N</code> .</span>
 
           </p>
 
           <p>
-          Beginning the <code><a href="#prod-turtle2-blankNodePropertyList">blankNodePropertyList</a></code> production records the <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>, and sets <code class="curSubject">curSubject</code> to a novel <code>blank node</code> <code>B</code>.
-          Finishing the <code><a href="#prod-turtle2-blankNodePropertyList">blankNodePropertyList</a></code> production restores <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>.
-          The node produced by matching <code><a href="#prod-turtle2-blankNodePropertyList">blankNodePropertyList</a></code> is the blank node <code>B</code>.
+          Beginning the <code><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></code> production records the <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>, and sets <code class="curSubject">curSubject</code> to a novel <code>blank node</code> <code>B</code>.
+          Finishing the <code><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></code> production restores <code class="curSubject">curSubject</code> and <code class="curPredicate">curPredicate</code>.
+          The node produced by matching <code><a href="#grammar-production-blankNodePropertyList">blankNodePropertyList</a></code> is the blank node <code>B</code>.
 
           </p>
 
           <p>
-          Beginning the <code><a href="#prod-turtle2-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="#prod-turtle2-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="#prod-turtle2-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>
+          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>.
+          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="#prod-turtle2-collection">collection</a></code> is the blank node <code>B<sub>head</sub></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>.
           </p>
           </section>
           <section id="sec-parsing-example" class="informative">
@@ -913,7 +898,7 @@
 
           <div data-include="examples/example3.ttl" data-oninclude="updateExample"></div>
 
-          <p>As indicated by the grammar, a <a href="#prod-turtle2-collection">collection</a> can be either a <a href="#prod-turtle2-subject">subject</a> or an <a href="#prod-turtle2-object">object</a>. This subject or object will be the novel blank node for the first object, if the collection has one or more objects, or <code>rdf:nil</code> if the collection is empty.</p>
+          <p>As indicated by the grammar, a <a href="#grammar-production-collection">collection</a> can be either a <a href="#grammar-production-subject">subject</a> or an <a href="#grammar-production-object">object</a>. This subject or object will be the novel blank node for the first object, if the collection has one or more objects, or <code>rdf:nil</code> if the collection is empty.</p>
 
           <p>For example,</p>
 
@@ -1315,7 +1300,7 @@
     <li>SPARQL permits RDF Literals as the subject of RDF triples (per <a href="http://www.w3.org/TR/sparql11-query/#rGraphTerm">Last Call draft</a>)</li>
 
     <li>SPARQL permits variables (<code>?</code><em>name</em> or <code>$</code><em>name</em>) in any part of the triple of the form</li>
-    <li>Turtle allows <a href="#prod-turtle2-directive">prefix and base declarations</a> anywhere outside of a triple. In SPARQL, they are only allowed in the <a href="http://www.w3.org/TR/sparql11-query/#rPrologue">Prologue</a> (at the start of the SPARQL query).</li>
+    <li>Turtle allows <a href="#grammar-production-directive">prefix and base declarations</a> anywhere outside of a triple. In SPARQL, they are only allowed in the <a href="http://www.w3.org/TR/sparql11-query/#rPrologue">Prologue</a> (at the start of the SPARQL query).</li>
     <li>SPARQL uses case insensitive keywords, except for <code>a</code>. Turtle's prefix and base declarations are case sensitive.</li>
     <li><code>true</code> and <code>false</code> are case insensitive in SPARQL and case sensitive in Turtle. <code>TrUe</code> is not a valid boolean value in Turtle.</li>