~ mocked up the proposed solution to <a href="http://www.w3.org/2011/rdf-wg/wiki/I18n-Comments#189:_.5BS.5D_reference_obs-language-tag_instead_of_defining_your_own">I18N-ISSUE-189</a>
authorEric Prud'hommeaux <eric@w3.org>
Wed, 03 Oct 2012 02:04:59 -0400
changeset 509 db4c0cb4314f
parent 508 7bbfe468e440
child 510 7855d68a9dbe
~ mocked up the proposed solution to <a href="http://www.w3.org/2011/rdf-wg/wiki/I18n-Comments#189:_.5BS.5D_reference_obs-language-tag_instead_of_defining_your_own">I18N-ISSUE-189</a>
~ got rid of attempt at CVS-style log at bottom of editor's document
rdf-turtle/index.html
rdf-turtle/turtle-bnf.html
rdf-turtle/turtle.bnf
--- a/rdf-turtle/index.html	Wed Oct 03 01:32:09 2012 -0400
+++ b/rdf-turtle/index.html	Wed Oct 03 02:04:59 2012 -0400
@@ -839,8 +839,16 @@
             	</ul>
             	<p>Feedback, both positive and negative, is invited by sending email to mailing list <a href="mailto:public-rdf-comments@w3.org">public-rdf-comments@w3.org</a> (<a href="mailto:public-rdf-comments-request@w3.org?subject=subscribe">subscribe</a>, <a href="http://lists.w3.org/Archives/Public/public-rdf-comments/">archives</a>).</p>
             </div>
-            <p>The <abbr title="Extended Backus–Naur Form">EBNF</abbr> used here is defined in XML 1.0
-            [[!EBNF-NOTATION]]. Production labels consisting of a number and a final 's', e.g. [<a href="http://www.w3.org/TR/sparql11-query/#rRDFLiteral"><span class="prodNo">60s</span></a>], reference the production with that number in the <a href="http://www.w3.org/TR/sparql11-query/#sparqlGrammar">SPARQL Query Language for RDF grammar</a> [[RDF-SPARQL-QUERY]]. When tokenizing the input and choosing grammar rules, the longest match is chosen. The strings <a href="#grammar-production-prefixID"><code>@prefix</code></a> and <a href="#grammar-production-base"><code>@base</code></a> match the pattern for <a href="#grammar-production-LANGTAG">LANGTAG</a>, though neither "prefix" nor "base" are <a href="http://www.iana.org/assignments/language-subtag-registry">registered language tags</a>. This specification does not define whether a quoted literal followed by either of these tokens (e.g. <code>"A"@base</code>) is in the Turtle language.
+            <p>The <abbr title="Extended Backus–Naur Form">EBNF</abbr> used here is defined in XML 1.0 [[!EBNF-NOTATION]], with the following two additional expressivity features:</p>
+
+	    <dl>
+	      <dt class="label"><code>A{n}</code></dt>
+	      <dd><p>matches <code>n</code> occurrences of <code>A</code></p></dd>
+	      <dt class="label"><code>A{m,n}</code></dt>
+	      <dd><p>matches at least <code>m</code> and as many as <code>n</code> occurrences of <code>A</code></p></dd>
+	    </dl>
+
+	    <p> Production labels consisting of a number and a final 's', e.g. [<a href="http://www.w3.org/TR/sparql11-query/#rRDFLiteral"><span class="prodNo">60s</span></a>], reference the production with that number in the <a href="http://www.w3.org/TR/sparql11-query/#sparqlGrammar">SPARQL Query Language for RDF grammar</a> [[RDF-SPARQL-QUERY]]. When tokenizing the input and choosing grammar rules, the longest match is chosen. The strings <a href="#grammar-production-prefixID"><code>@prefix</code></a> and <a href="#grammar-production-base"><code>@base</code></a> match the pattern for <a href="#grammar-production-LANGTAG">LANGTAG</a>, though neither "prefix" nor "base" are <a href="http://www.iana.org/assignments/language-subtag-registry">registered language tags</a>. This specification does not define whether a quoted literal followed by either of these tokens (e.g. <code>"A"@base</code>) is in the Turtle language.
             </p>
             <div data-include="turtle-bnf.html">
             </div>
--- a/rdf-turtle/turtle-bnf.html	Wed Oct 03 01:32:09 2012 -0400
+++ b/rdf-turtle/turtle-bnf.html	Wed Oct 03 02:04:59 2012 -0400
@@ -179,7 +179,7 @@
     <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>
+    <td>'<code class='grammar-literal'>@</code>' [<code class='grammar-chars'>a-zA-Z</code>]<code class='grammar-star'>{1,8}</code> ('<code class='grammar-literal'>-</code>' [<code class='grammar-chars'>a-zA-Z0-9</code>]<code class='grammar-star'>{1,8}</code>)<code class='grammar-star'>*</code></td>
 </tr>
             <tr id="grammar-production-INTEGER" data-grammar-original="[20] INTEGER ::= [+-]? [0-9]+" data-grammar-expression="(&#x27;,&#x27;, [(&#x27;?&#x27;, (&#x27;[&#x27;, &#x27;+-&#x27;)), (&#x27;+&#x27;, (&#x27;[&#x27;, &#x27;0-9&#x27;))])" class='grammar-token'>
     <td>[20]</td>
@@ -229,11 +229,11 @@
     <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 id="grammar-production-UCHAR" data-grammar-original="[27] UCHAR ::= ( &quot;\u&quot; HEX HEX HEX HEX )| ( &quot;\U&quot; HEX HEX HEX HEX HEX HEX HEX HEX )" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;\\u&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;)]), (&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;\\U&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;)])])" class='grammar-token'>
+            <tr id="grammar-production-UCHAR" data-grammar-original="[27] UCHAR ::= ( &quot;\u&quot; HEX{4} )| ( &quot;\U&quot; HEX{8} )" data-grammar-expression="(&#x27;|&#x27;, [(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;\\u&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;)]), (&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;\\U&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;), (&#x27;id&#x27;, &#x27;HEX&#x27;)])])" class='grammar-token'>
     <td>[27]</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>
+    <td>'<code class='grammar-literal'>\u</code>' <a href='#grammar-production-HEX'>HEX</a><code class='grammar-star'>{4}</code> <code>| </code> '<code class='grammar-literal'>\U</code>' <a href='#grammar-production-HEX'>HEX</a><code class='grammar-star'>{8}</code></td>
 </tr>
             <tr id="grammar-production-ECHAR" data-grammar-original="[159s] ECHAR ::= &quot;\&quot; [tbnrf\&quot;&#x27;]" data-grammar-expression="(&#x27;,&#x27;, [(&quot;&#x27;&quot;, &#x27;\\&#x27;), (&#x27;[&#x27;, &#x27;tbnrf\\&quot;\&#x27;&#x27;)])" class='grammar-token'>
     <td>[159s]</td>
--- a/rdf-turtle/turtle.bnf	Wed Oct 03 01:32:09 2012 -0400
+++ b/rdf-turtle/turtle.bnf	Wed Oct 03 02:04:59 2012 -0400
@@ -63,7 +63,7 @@
  
 [141s] BLANK_NODE_LABEL ::= '_:' ( PN_CHARS_U | [0-9] ) ((PN_CHARS|'.')* PN_CHARS)?
  
-[144s] LANGTAG ::= "@" [a-zA-Z]+ ( "-" [a-zA-Z0-9]+ )* 
+[144s] LANGTAG ::= "@" [a-zA-Z]{1,8} ( "-" [a-zA-Z0-9]{1,8} )* 
 [20] INTEGER ::= [+-]? [0-9]+
  
 [21] DECIMAL ::= [+-]?  ( ([0-9])* '.' ([0-9])+  )
@@ -80,8 +80,8 @@
  
 [26] STRING_LITERAL_LONG_QUOTE ::= '"""' ( ( '"' | '""' )? ( [^"\] | ECHAR | UCHAR ) )* '"""' 
  
-[27] UCHAR ::= ( "\u" HEX HEX HEX HEX ) 
- | ( "\U" HEX HEX HEX HEX HEX HEX HEX HEX ) 
+[27] UCHAR ::= ( "\u" HEX{4} ) 
+ | ( "\U" HEX{8} ) 
 
 [159s] ECHAR ::= "\" [tbnrf\"']