--- a/model/grammar/ll.html Tue Jul 10 10:37:37 2012 +0100
+++ b/model/grammar/ll.html Tue Jul 10 13:20:24 2012 +0100
@@ -589,13 +589,23 @@
| "?"<br/>
| "#"<br/>
| "$"<br/>
-| "!"</code></td>
+| "!"<br/>
+| <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS_ESC">PN_CHARS_ESC</a></span></code></td>
</tr>
</tbody>
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PERCENT" name="term-prov_n_LL-PERCENT"></a>[<span class="prodNo">65</span>] </td>
+<td><a id="term-prov_n_LL-PN_CHARS_ESC" name="term-prov_n_LL-PN_CHARS_ESC"></a>[<span class="prodNo">65</span>] </td>
+<td><<code class="production term">PN_CHARS_ESC</code>></td>
+<td> ::= </td>
+<td><code class="content">"\\" ( "=" | "'" | "(" | ")" | "," | "-" | ":" | ";" | "[" | "]" | "." )</code></td>
+</tr>
+</tbody>
+
+<tbody class="term">
+<tr valign="baseline">
+<td><a id="term-prov_n_LL-PERCENT" name="term-prov_n_LL-PERCENT"></a>[<span class="prodNo">66</span>] </td>
<td><<code class="production term">PERCENT</code>></td>
<td> ::= </td>
<td><code class="content">"%" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span></code></td>
@@ -604,7 +614,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-HEX" name="term-prov_n_LL-HEX"></a>[<span class="prodNo">66</span>] </td>
+<td><a id="term-prov_n_LL-HEX" name="term-prov_n_LL-HEX"></a>[<span class="prodNo">67</span>] </td>
<td><<code class="production term">HEX</code>></td>
<td> ::= </td>
<td><code class="content">[0-9]<br/>
@@ -615,7 +625,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-STRING_LITERAL" name="term-prov_n_LL-STRING_LITERAL"></a>[<span class="prodNo">67</span>] </td>
+<td><a id="term-prov_n_LL-STRING_LITERAL" name="term-prov_n_LL-STRING_LITERAL"></a>[<span class="prodNo">68</span>] </td>
<td><<code class="production term">STRING_LITERAL</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-STRING_LITERAL2">STRING_LITERAL2</a></span><br/>
@@ -625,7 +635,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PREFX" name="term-prov_n_LL-PREFX"></a>[<span class="prodNo">68</span>] </td>
+<td><a id="term-prov_n_LL-PREFX" name="term-prov_n_LL-PREFX"></a>[<span class="prodNo">69</span>] </td>
<td><<code class="production term">PREFX</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_PREFIX">PN_PREFIX</a></span></code></td>
@@ -634,7 +644,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-INT_LITERAL" name="term-prov_n_LL-INT_LITERAL"></a>[<span class="prodNo">69</span>] </td>
+<td><a id="term-prov_n_LL-INT_LITERAL" name="term-prov_n_LL-INT_LITERAL"></a>[<span class="prodNo">70</span>] </td>
<td><<code class="production term">INT_LITERAL</code>></td>
<td> ::= </td>
<td><code class="content">("-")? (<span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span>)+</code></td>
@@ -643,7 +653,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-QUALIFIED_NAME_LITERAL" name="term-prov_n_LL-QUALIFIED_NAME_LITERAL"></a>[<span class="prodNo">70</span>] </td>
+<td><a id="term-prov_n_LL-QUALIFIED_NAME_LITERAL" name="term-prov_n_LL-QUALIFIED_NAME_LITERAL"></a>[<span class="prodNo">71</span>] </td>
<td><<code class="production term">QUALIFIED_NAME_LITERAL</code>></td>
<td> ::= </td>
<td><code class="content">"'" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-QUALIFIED_NAME">QUALIFIED_NAME</a></span> "'"</code></td>
@@ -652,7 +662,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-DIGIT" name="term-prov_n_LL-DIGIT"></a>[<span class="prodNo">71</span>] </td>
+<td><a id="term-prov_n_LL-DIGIT" name="term-prov_n_LL-DIGIT"></a>[<span class="prodNo">72</span>] </td>
<td><<code class="production term">DIGIT</code>></td>
<td> ::= </td>
<td><code class="content">[0-9]</code></td>
@@ -661,7 +671,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-DATETIME" name="term-prov_n_LL-DATETIME"></a>[<span class="prodNo">72</span>] </td>
+<td><a id="term-prov_n_LL-DATETIME" name="term-prov_n_LL-DATETIME"></a>[<span class="prodNo">73</span>] </td>
<td><<code class="production term">DATETIME</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> "-" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> "-" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> "T" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> ":" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> ":" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> (( "." <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> (( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> (<span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span>)? ))? ))? (( "Z" | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-TIMEZONEOFFSET">TIMEZONEOFFSET</a></span> ))?</code></td>
@@ -670,7 +680,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-TIMEZONEOFFSET" name="term-prov_n_LL-TIMEZONEOFFSET"></a>[<span class="prodNo">73</span>] </td>
+<td><a id="term-prov_n_LL-TIMEZONEOFFSET" name="term-prov_n_LL-TIMEZONEOFFSET"></a>[<span class="prodNo">74</span>] </td>
<td><<code class="production term">TIMEZONEOFFSET</code>></td>
<td> ::= </td>
<td><code class="content">( "+" | "-" ) <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> ":" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span></code></td>
@@ -679,7 +689,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-IRI_REF" name="term-prov_n_LL-IRI_REF"></a>[<span class="prodNo">74</span>] </td>
+<td><a id="term-prov_n_LL-IRI_REF" name="term-prov_n_LL-IRI_REF"></a>[<span class="prodNo">75</span>] </td>
<td><<code class="production term">IRI_REF</code>></td>
<td> ::= </td>
<td><code class="content">"<" (( [^<>\"{}|^`\\] - [#0000- ] | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-UCHAR">UCHAR</a></span> ))* ">"</code></td>
@@ -688,7 +698,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-STRING_LITERAL2" name="term-prov_n_LL-STRING_LITERAL2"></a>[<span class="prodNo">75</span>] </td>
+<td><a id="term-prov_n_LL-STRING_LITERAL2" name="term-prov_n_LL-STRING_LITERAL2"></a>[<span class="prodNo">76</span>] </td>
<td><<code class="production term">STRING_LITERAL2</code>></td>
<td> ::= </td>
<td><code class="content">'"' (( ( [^\"\\\n\r] ) | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-ECHAR">ECHAR</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-UCHAR">UCHAR</a></span> ))* '"'</code></td>
@@ -697,7 +707,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-STRING_LITERAL_LONG2" name="term-prov_n_LL-STRING_LITERAL_LONG2"></a>[<span class="prodNo">76</span>] </td>
+<td><a id="term-prov_n_LL-STRING_LITERAL_LONG2" name="term-prov_n_LL-STRING_LITERAL_LONG2"></a>[<span class="prodNo">77</span>] </td>
<td><<code class="production term">STRING_LITERAL_LONG2</code>></td>
<td> ::= </td>
<td><code class="content">'"' (( ( [^\"\\\n\r] ) | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-ECHAR">ECHAR</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-UCHAR">UCHAR</a></span> ))* '"'</code></td>
@@ -706,7 +716,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-LANGTAG" name="term-prov_n_LL-LANGTAG"></a>[<span class="prodNo">77</span>] </td>
+<td><a id="term-prov_n_LL-LANGTAG" name="term-prov_n_LL-LANGTAG"></a>[<span class="prodNo">78</span>] </td>
<td><<code class="production term">LANGTAG</code>></td>
<td> ::= </td>
<td><code class="content">"@" ([a-zA-Z])+ (( "-" ([a-zA-Z0-9])+ ))*</code></td>
@@ -715,7 +725,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-UCHAR" name="term-prov_n_LL-UCHAR"></a>[<span class="prodNo">78</span>] </td>
+<td><a id="term-prov_n_LL-UCHAR" name="term-prov_n_LL-UCHAR"></a>[<span class="prodNo">79</span>] </td>
<td><<code class="production term">UCHAR</code>></td>
<td> ::= </td>
<td><code class="content">( "\\u" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span> )<br/>
@@ -725,7 +735,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-ECHAR" name="term-prov_n_LL-ECHAR"></a>[<span class="prodNo">79</span>] </td>
+<td><a id="term-prov_n_LL-ECHAR" name="term-prov_n_LL-ECHAR"></a>[<span class="prodNo">80</span>] </td>
<td><<code class="production term">ECHAR</code>></td>
<td> ::= </td>
<td><code class="content">"\\" [tbnrf\\\"']</code></td>
@@ -734,7 +744,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-NIL" name="term-prov_n_LL-NIL"></a>[<span class="prodNo">80</span>] </td>
+<td><a id="term-prov_n_LL-NIL" name="term-prov_n_LL-NIL"></a>[<span class="prodNo">81</span>] </td>
<td><<code class="production term">NIL</code>></td>
<td> ::= </td>
<td><code class="content">"(" (( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-WS">WS</a></span> ))* ")"</code></td>
@@ -743,7 +753,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-WS" name="term-prov_n_LL-WS"></a>[<span class="prodNo">81</span>] </td>
+<td><a id="term-prov_n_LL-WS" name="term-prov_n_LL-WS"></a>[<span class="prodNo">82</span>] </td>
<td><<code class="production term">WS</code>></td>
<td> ::= </td>
<td><code class="content">" "<br/>
@@ -755,7 +765,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-ANON" name="term-prov_n_LL-ANON"></a>[<span class="prodNo">82</span>] </td>
+<td><a id="term-prov_n_LL-ANON" name="term-prov_n_LL-ANON"></a>[<span class="prodNo">83</span>] </td>
<td><<code class="production term">ANON</code>></td>
<td> ::= </td>
<td><code class="content">"[" (( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-WS">WS</a></span> ))* "]"</code></td>
@@ -764,7 +774,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PN_CHARS_BASE" name="term-prov_n_LL-PN_CHARS_BASE"></a>[<span class="prodNo">83</span>] </td>
+<td><a id="term-prov_n_LL-PN_CHARS_BASE" name="term-prov_n_LL-PN_CHARS_BASE"></a>[<span class="prodNo">84</span>] </td>
<td><<code class="production term">PN_CHARS_BASE</code>></td>
<td> ::= </td>
<td><code class="content">[A-Z]<br/>
@@ -786,7 +796,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PN_CHARS_U" name="term-prov_n_LL-PN_CHARS_U"></a>[<span class="prodNo">84</span>] </td>
+<td><a id="term-prov_n_LL-PN_CHARS_U" name="term-prov_n_LL-PN_CHARS_U"></a>[<span class="prodNo">85</span>] </td>
<td><<code class="production term">PN_CHARS_U</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS_BASE">PN_CHARS_BASE</a></span><br/>
@@ -796,7 +806,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PN_CHARS" name="term-prov_n_LL-PN_CHARS"></a>[<span class="prodNo">85</span>] </td>
+<td><a id="term-prov_n_LL-PN_CHARS" name="term-prov_n_LL-PN_CHARS"></a>[<span class="prodNo">86</span>] </td>
<td><<code class="production term">PN_CHARS</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS_U">PN_CHARS_U</a></span><br/>
@@ -810,7 +820,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PN_PREFIX" name="term-prov_n_LL-PN_PREFIX"></a>[<span class="prodNo">86</span>] </td>
+<td><a id="term-prov_n_LL-PN_PREFIX" name="term-prov_n_LL-PN_PREFIX"></a>[<span class="prodNo">87</span>] </td>
<td><<code class="production term">PN_PREFIX</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS_BASE">PN_CHARS_BASE</a></span> (( (( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS">PN_CHARS</a></span> | "." ))* <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS">PN_CHARS</a></span> ))?</code></td>
@@ -819,7 +829,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PASSED_TOKENS" name="term-prov_n_LL-PASSED_TOKENS"></a>[<span class="prodNo">87</span>] </td>
+<td><a id="term-prov_n_LL-PASSED_TOKENS" name="term-prov_n_LL-PASSED_TOKENS"></a>[<span class="prodNo">88</span>] </td>
<td><code class="production directive">PASSED TOKENS</code></td>
<td> ::= </td>
<td><code class="content">([ \t\r\n])+<br/>
--- a/model/grammar/ll.js Tue Jul 10 10:37:37 2012 +0100
+++ b/model/grammar/ll.js Tue Jul 10 13:20:24 2012 +0100
@@ -590,13 +590,23 @@
'| "?"<br/> ' +
'| "#"<br/> ' +
'| "$"<br/> ' +
-'| "!"</code></td> ' +
+'| "!"<br/> ' +
+'| <span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_ESC">PN_CHARS_ESC</a></span></code></td> ' +
'</tr> ' +
'</tbody> ' +
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-PERCENT" name="prod-PERCENT"></a>[<span class="prodNo">65</span>] </td> ' +
+'<td><a id="prod-PN_CHARS_ESC" name="prod-PN_CHARS_ESC"></a>[<span class="prodNo">65</span>] </td> ' +
+'<td><<code class="production term">PN_CHARS_ESC</code>></td> ' +
+'<td> ::= </td> ' +
+'<td><code class="content">"\\" ( "=" | "\'" | "(" | ")" | "," | "-" | ":" | ";" | "[" | "]" | "." )</code></td> ' +
+'</tr> ' +
+'</tbody> ' +
+' ' +
+'<tbody class="term"> ' +
+'<tr valign="baseline"> ' +
+'<td><a id="prod-PERCENT" name="prod-PERCENT"></a>[<span class="prodNo">66</span>] </td> ' +
'<td><<code class="production term">PERCENT</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">"%" <span class="prod"><a class="grammarRef" href="#prod-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-HEX">HEX</a></span></code></td> ' +
@@ -605,7 +615,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-HEX" name="prod-HEX"></a>[<span class="prodNo">66</span>] </td> ' +
+'<td><a id="prod-HEX" name="prod-HEX"></a>[<span class="prodNo">67</span>] </td> ' +
'<td><<code class="production term">HEX</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">[0-9]<br/> ' +
@@ -616,7 +626,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-STRING_LITERAL" name="prod-STRING_LITERAL"></a>[<span class="prodNo">67</span>] </td> ' +
+'<td><a id="prod-STRING_LITERAL" name="prod-STRING_LITERAL"></a>[<span class="prodNo">68</span>] </td> ' +
'<td><<code class="production term">STRING_LITERAL</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content"><span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rSTRING_LITERAL2">STRING_LITERAL2</a></span><br/> ' +
@@ -626,7 +636,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-PREFX" name="prod-PREFX"></a>[<span class="prodNo">68</span>] </td> ' +
+'<td><a id="prod-PREFX" name="prod-PREFX"></a>[<span class="prodNo">69</span>] </td> ' +
'<td><<code class="production term">PREFX</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content"><span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rPN_PREFIX">PN_PREFIX</a></span></code></td> ' +
@@ -635,7 +645,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-INT_LITERAL" name="prod-INT_LITERAL"></a>[<span class="prodNo">69</span>] </td> ' +
+'<td><a id="prod-INT_LITERAL" name="prod-INT_LITERAL"></a>[<span class="prodNo">70</span>] </td> ' +
'<td><<code class="production term">INT_LITERAL</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">("-")? (<span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span>)+</code></td> ' +
@@ -644,7 +654,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-QUALIFIED_NAME_LITERAL" name="prod-QUALIFIED_NAME_LITERAL"></a>[<span class="prodNo">70</span>] </td> ' +
+'<td><a id="prod-QUALIFIED_NAME_LITERAL" name="prod-QUALIFIED_NAME_LITERAL"></a>[<span class="prodNo">71</span>] </td> ' +
'<td><<code class="production term">QUALIFIED_NAME_LITERAL</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">"\'" <span class="prod"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></span> "\'"</code></td> ' +
@@ -653,7 +663,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-DIGIT" name="prod-DIGIT"></a>[<span class="prodNo">71</span>] </td> ' +
+'<td><a id="prod-DIGIT" name="prod-DIGIT"></a>[<span class="prodNo">72</span>] </td> ' +
'<td><<code class="production term">DIGIT</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">[0-9]</code></td> ' +
@@ -662,7 +672,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-DATETIME" name="prod-DATETIME"></a>[<span class="prodNo">72</span>] </td> ' +
+'<td><a id="prod-DATETIME" name="prod-DATETIME"></a>[<span class="prodNo">73</span>] </td> ' +
'<td><<code class="production term">DATETIME</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> "-" <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> "-" <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> "T" <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> ":" <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> ":" <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> ( "." <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> ( <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> (<span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span>)? )? )? ( "Z" | <span class="prod"><a class="grammarRef" href="#prod-TIMEZONEOFFSET">TIMEZONEOFFSET</a></span> )?</code></td> ' +
@@ -671,7 +681,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-TIMEZONEOFFSET" name="prod-TIMEZONEOFFSET"></a>[<span class="prodNo">73</span>] </td> ' +
+'<td><a id="prod-TIMEZONEOFFSET" name="prod-TIMEZONEOFFSET"></a>[<span class="prodNo">74</span>] </td> ' +
'<td><<code class="production term">TIMEZONEOFFSET</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">( "+" | "-" ) <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> ":" <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-DIGIT">DIGIT</a></span></code></td> ' +
@@ -680,7 +690,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-IRI_REF" name="prod-IRI_REF"></a>[<span class="prodNo">74</span>] </td> ' +
+'<td><a id="prod-IRI_REF" name="prod-IRI_REF"></a>[<span class="prodNo">75</span>] </td> ' +
'<td><<code class="production term">IRI_REF</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">"<" ( [^<>\"{}|^`\\] - [#0000- ] | <span class="prod"><a class="grammarRef" href="#prod-UCHAR">UCHAR</a></span> )* ">"</code></td> ' +
@@ -689,7 +699,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-STRING_LITERAL2" name="prod-STRING_LITERAL2"></a>[<span class="prodNo">75</span>] </td> ' +
+'<td><a id="prod-STRING_LITERAL2" name="prod-STRING_LITERAL2"></a>[<span class="prodNo">76</span>] </td> ' +
'<td><<code class="production term">STRING_LITERAL2</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">\'"\' ( ( [^\"\\\n\r] ) | <span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rECHAR">ECHAR</a></span> | <span class="prod"><a class="grammarRef" href="#prod-UCHAR">UCHAR</a></span> )* \'"\'</code></td> ' +
@@ -698,7 +708,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-STRING_LITERAL_LONG2" name="prod-STRING_LITERAL_LONG2"></a>[<span class="prodNo">76</span>] </td> ' +
+'<td><a id="prod-STRING_LITERAL_LONG2" name="prod-STRING_LITERAL_LONG2"></a>[<span class="prodNo">77</span>] </td> ' +
'<td><<code class="production term">STRING_LITERAL_LONG2</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">\'"\' ( ( [^\"\\\n\r] ) | <span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rECHAR">ECHAR</a></span> | <span class="prod"><a class="grammarRef" href="#prod-UCHAR">UCHAR</a></span> )* \'"\'</code></td> ' +
@@ -707,7 +717,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-LANGTAG" name="prod-LANGTAG"></a>[<span class="prodNo">77</span>] </td> ' +
+'<td><a id="prod-LANGTAG" name="prod-LANGTAG"></a>[<span class="prodNo">78</span>] </td> ' +
'<td><<code class="production term">LANGTAG</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">"@" ([a-zA-Z])+ ( "-" ([a-zA-Z0-9])+ )*</code></td> ' +
@@ -716,7 +726,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-UCHAR" name="prod-UCHAR"></a>[<span class="prodNo">78</span>] </td> ' +
+'<td><a id="prod-UCHAR" name="prod-UCHAR"></a>[<span class="prodNo">79</span>] </td> ' +
'<td><<code class="production term">UCHAR</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">( "\\u" <span class="prod"><a class="grammarRef" href="#prod-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-HEX">HEX</a></span> )<br/> ' +
@@ -726,7 +736,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-ECHAR" name="prod-ECHAR"></a>[<span class="prodNo">79</span>] </td> ' +
+'<td><a id="prod-ECHAR" name="prod-ECHAR"></a>[<span class="prodNo">80</span>] </td> ' +
'<td><<code class="production term">ECHAR</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">"\\" [tbnrf\\\"\']</code></td> ' +
@@ -735,7 +745,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-NIL" name="prod-NIL"></a>[<span class="prodNo">80</span>] </td> ' +
+'<td><a id="prod-NIL" name="prod-NIL"></a>[<span class="prodNo">81</span>] </td> ' +
'<td><<code class="production term">NIL</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">"(" ( <span class="prod"><a class="grammarRef" href="#prod-WS">WS</a></span> )* ")"</code></td> ' +
@@ -744,7 +754,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-WS" name="prod-WS"></a>[<span class="prodNo">81</span>] </td> ' +
+'<td><a id="prod-WS" name="prod-WS"></a>[<span class="prodNo">82</span>] </td> ' +
'<td><<code class="production term">WS</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">" "<br/> ' +
@@ -756,7 +766,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-ANON" name="prod-ANON"></a>[<span class="prodNo">82</span>] </td> ' +
+'<td><a id="prod-ANON" name="prod-ANON"></a>[<span class="prodNo">83</span>] </td> ' +
'<td><<code class="production term">ANON</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">"[" ( <span class="prod"><a class="grammarRef" href="#prod-WS">WS</a></span> )* "]"</code></td> ' +
@@ -765,7 +775,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-PN_CHARS_BASE" name="prod-PN_CHARS_BASE"></a>[<span class="prodNo">83</span>] </td> ' +
+'<td><a id="prod-PN_CHARS_BASE" name="prod-PN_CHARS_BASE"></a>[<span class="prodNo">84</span>] </td> ' +
'<td><<code class="production term">PN_CHARS_BASE</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">[A-Z]<br/> ' +
@@ -787,7 +797,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-PN_CHARS_U" name="prod-PN_CHARS_U"></a>[<span class="prodNo">84</span>] </td> ' +
+'<td><a id="prod-PN_CHARS_U" name="prod-PN_CHARS_U"></a>[<span class="prodNo">85</span>] </td> ' +
'<td><<code class="production term">PN_CHARS_U</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_BASE">PN_CHARS_BASE</a></span><br/> ' +
@@ -797,7 +807,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-PN_CHARS" name="prod-PN_CHARS"></a>[<span class="prodNo">85</span>] </td> ' +
+'<td><a id="prod-PN_CHARS" name="prod-PN_CHARS"></a>[<span class="prodNo">86</span>] </td> ' +
'<td><<code class="production term">PN_CHARS</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content"><span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rPN_CHARS_U">PN_CHARS_U</a></span><br/> ' +
@@ -811,7 +821,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-PN_PREFIX" name="prod-PN_PREFIX"></a>[<span class="prodNo">86</span>] </td> ' +
+'<td><a id="prod-PN_PREFIX" name="prod-PN_PREFIX"></a>[<span class="prodNo">87</span>] </td> ' +
'<td><<code class="production term">PN_PREFIX</code>></td> ' +
'<td> ::= </td> ' +
'<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-PN_CHARS_BASE">PN_CHARS_BASE</a></span> ( ( <span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rPN_CHARS">PN_CHARS</a></span> | "." )* <span class="prod"><a class="grammarRef" href="http://www.w3.org/TR/rdf-sparql-query/#rPN_CHARS">PN_CHARS</a></span> )?</code></td> ' +
@@ -820,7 +830,7 @@
' ' +
'<tbody class="term"> ' +
'<tr valign="baseline"> ' +
-'<td><a id="prod-PASSED_TOKENS" name="prod-PASSED_TOKENS"></a>[<span class="prodNo">87</span>] </td> ' +
+'<td><a id="prod-PASSED_TOKENS" name="prod-PASSED_TOKENS"></a>[<span class="prodNo">88</span>] </td> ' +
'<td><code class="production directive">PASSED TOKENS</code></td> ' +
'<td> ::= </td> ' +
'<td><code class="content">([ \t\r\n])+<br/> ' +
--- a/model/grammar/yack/prov-n-LL.bnf Tue Jul 10 10:37:37 2012 +0100
+++ b/model/grammar/yack/prov-n-LL.bnf Tue Jul 10 13:20:24 2012 +0100
@@ -194,7 +194,9 @@
[100s] PN_LOCAL ::= ( PN_CHARS_U | [0-9] | PN_CHARS_OTHERS ) ( ( PN_CHARS | '.' | PN_CHARS_OTHERS )* ( PN_CHARS | PN_CHARS_OTHERS ) ) ?
-[160s] PN_CHARS_OTHERS ::= PERCENT | '/' | '@' | '~' | '&' | '+' | '*' | '?' | '#' | '$' | '!'
+[160s] PN_CHARS_OTHERS ::= PERCENT | '/' | '@' | '~' | '&' | '+' | '*' | '?' | '#' | '$' | '!' | PN_CHARS_ESC
+
+PN_CHARS_ESC ::= '\\' ('=' | '\'' | '(' | ')' | ',' | '-'| ':'| ';' | '[' | ']' | '.')
[161s] PERCENT ::= '%' HEX HEX
--- a/model/grammar/yack/prov-n-LL.bnf.html Tue Jul 10 10:37:37 2012 +0100
+++ b/model/grammar/yack/prov-n-LL.bnf.html Tue Jul 10 13:20:24 2012 +0100
@@ -588,13 +588,23 @@
| "?"<br/>
| "#"<br/>
| "$"<br/>
-| "!"</code></td>
+| "!"<br/>
+| <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS_ESC">PN_CHARS_ESC</a></span></code></td>
</tr>
</tbody>
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PERCENT" name="term-prov_n_LL-PERCENT"></a>[<span class="prodNo">65</span>] </td>
+<td><a id="term-prov_n_LL-PN_CHARS_ESC" name="term-prov_n_LL-PN_CHARS_ESC"></a>[<span class="prodNo">65</span>] </td>
+<td><<code class="production term">PN_CHARS_ESC</code>></td>
+<td> ::= </td>
+<td><code class="content">"\\" ( "=" | "'" | "(" | ")" | "," | "-" | ":" | ";" | "[" | "]" | "." )</code></td>
+</tr>
+</tbody>
+
+<tbody class="term">
+<tr valign="baseline">
+<td><a id="term-prov_n_LL-PERCENT" name="term-prov_n_LL-PERCENT"></a>[<span class="prodNo">66</span>] </td>
<td><<code class="production term">PERCENT</code>></td>
<td> ::= </td>
<td><code class="content">"%" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span></code></td>
@@ -603,7 +613,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-HEX" name="term-prov_n_LL-HEX"></a>[<span class="prodNo">66</span>] </td>
+<td><a id="term-prov_n_LL-HEX" name="term-prov_n_LL-HEX"></a>[<span class="prodNo">67</span>] </td>
<td><<code class="production term">HEX</code>></td>
<td> ::= </td>
<td><code class="content">[0-9]<br/>
@@ -614,7 +624,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-STRING_LITERAL" name="term-prov_n_LL-STRING_LITERAL"></a>[<span class="prodNo">67</span>] </td>
+<td><a id="term-prov_n_LL-STRING_LITERAL" name="term-prov_n_LL-STRING_LITERAL"></a>[<span class="prodNo">68</span>] </td>
<td><<code class="production term">STRING_LITERAL</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-STRING_LITERAL2">STRING_LITERAL2</a></span><br/>
@@ -624,7 +634,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PREFX" name="term-prov_n_LL-PREFX"></a>[<span class="prodNo">68</span>] </td>
+<td><a id="term-prov_n_LL-PREFX" name="term-prov_n_LL-PREFX"></a>[<span class="prodNo">69</span>] </td>
<td><<code class="production term">PREFX</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_PREFIX">PN_PREFIX</a></span></code></td>
@@ -633,7 +643,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-INT_LITERAL" name="term-prov_n_LL-INT_LITERAL"></a>[<span class="prodNo">69</span>] </td>
+<td><a id="term-prov_n_LL-INT_LITERAL" name="term-prov_n_LL-INT_LITERAL"></a>[<span class="prodNo">70</span>] </td>
<td><<code class="production term">INT_LITERAL</code>></td>
<td> ::= </td>
<td><code class="content">("-")? (<span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span>)+</code></td>
@@ -642,7 +652,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-QUALIFIED_NAME_LITERAL" name="term-prov_n_LL-QUALIFIED_NAME_LITERAL"></a>[<span class="prodNo">70</span>] </td>
+<td><a id="term-prov_n_LL-QUALIFIED_NAME_LITERAL" name="term-prov_n_LL-QUALIFIED_NAME_LITERAL"></a>[<span class="prodNo">71</span>] </td>
<td><<code class="production term">QUALIFIED_NAME_LITERAL</code>></td>
<td> ::= </td>
<td><code class="content">"'" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-QUALIFIED_NAME">QUALIFIED_NAME</a></span> "'"</code></td>
@@ -651,7 +661,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-DIGIT" name="term-prov_n_LL-DIGIT"></a>[<span class="prodNo">71</span>] </td>
+<td><a id="term-prov_n_LL-DIGIT" name="term-prov_n_LL-DIGIT"></a>[<span class="prodNo">72</span>] </td>
<td><<code class="production term">DIGIT</code>></td>
<td> ::= </td>
<td><code class="content">[0-9]</code></td>
@@ -660,7 +670,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-DATETIME" name="term-prov_n_LL-DATETIME"></a>[<span class="prodNo">72</span>] </td>
+<td><a id="term-prov_n_LL-DATETIME" name="term-prov_n_LL-DATETIME"></a>[<span class="prodNo">73</span>] </td>
<td><<code class="production term">DATETIME</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> "-" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> "-" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> "T" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> ":" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> ":" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> (( "." <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> (( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> (<span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span>)? ))? ))? (( "Z" | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-TIMEZONEOFFSET">TIMEZONEOFFSET</a></span> ))?</code></td>
@@ -669,7 +679,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-TIMEZONEOFFSET" name="term-prov_n_LL-TIMEZONEOFFSET"></a>[<span class="prodNo">73</span>] </td>
+<td><a id="term-prov_n_LL-TIMEZONEOFFSET" name="term-prov_n_LL-TIMEZONEOFFSET"></a>[<span class="prodNo">74</span>] </td>
<td><<code class="production term">TIMEZONEOFFSET</code>></td>
<td> ::= </td>
<td><code class="content">( "+" | "-" ) <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> ":" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-DIGIT">DIGIT</a></span></code></td>
@@ -678,7 +688,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-IRI_REF" name="term-prov_n_LL-IRI_REF"></a>[<span class="prodNo">74</span>] </td>
+<td><a id="term-prov_n_LL-IRI_REF" name="term-prov_n_LL-IRI_REF"></a>[<span class="prodNo">75</span>] </td>
<td><<code class="production term">IRI_REF</code>></td>
<td> ::= </td>
<td><code class="content">"<" (( [^<>\"{}|^`\\] - [#0000- ] | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-UCHAR">UCHAR</a></span> ))* ">"</code></td>
@@ -687,7 +697,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-STRING_LITERAL2" name="term-prov_n_LL-STRING_LITERAL2"></a>[<span class="prodNo">75</span>] </td>
+<td><a id="term-prov_n_LL-STRING_LITERAL2" name="term-prov_n_LL-STRING_LITERAL2"></a>[<span class="prodNo">76</span>] </td>
<td><<code class="production term">STRING_LITERAL2</code>></td>
<td> ::= </td>
<td><code class="content">'"' (( ( [^\"\\\n\r] ) | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-ECHAR">ECHAR</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-UCHAR">UCHAR</a></span> ))* '"'</code></td>
@@ -696,7 +706,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-STRING_LITERAL_LONG2" name="term-prov_n_LL-STRING_LITERAL_LONG2"></a>[<span class="prodNo">76</span>] </td>
+<td><a id="term-prov_n_LL-STRING_LITERAL_LONG2" name="term-prov_n_LL-STRING_LITERAL_LONG2"></a>[<span class="prodNo">77</span>] </td>
<td><<code class="production term">STRING_LITERAL_LONG2</code>></td>
<td> ::= </td>
<td><code class="content">'"' (( ( [^\"\\\n\r] ) | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-ECHAR">ECHAR</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-UCHAR">UCHAR</a></span> ))* '"'</code></td>
@@ -705,7 +715,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-LANGTAG" name="term-prov_n_LL-LANGTAG"></a>[<span class="prodNo">77</span>] </td>
+<td><a id="term-prov_n_LL-LANGTAG" name="term-prov_n_LL-LANGTAG"></a>[<span class="prodNo">78</span>] </td>
<td><<code class="production term">LANGTAG</code>></td>
<td> ::= </td>
<td><code class="content">"@" ([a-zA-Z])+ (( "-" ([a-zA-Z0-9])+ ))*</code></td>
@@ -714,7 +724,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-UCHAR" name="term-prov_n_LL-UCHAR"></a>[<span class="prodNo">78</span>] </td>
+<td><a id="term-prov_n_LL-UCHAR" name="term-prov_n_LL-UCHAR"></a>[<span class="prodNo">79</span>] </td>
<td><<code class="production term">UCHAR</code>></td>
<td> ::= </td>
<td><code class="content">( "\\u" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span> <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-HEX">HEX</a></span> )<br/>
@@ -724,7 +734,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-ECHAR" name="term-prov_n_LL-ECHAR"></a>[<span class="prodNo">79</span>] </td>
+<td><a id="term-prov_n_LL-ECHAR" name="term-prov_n_LL-ECHAR"></a>[<span class="prodNo">80</span>] </td>
<td><<code class="production term">ECHAR</code>></td>
<td> ::= </td>
<td><code class="content">"\\" [tbnrf\\\"']</code></td>
@@ -733,7 +743,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-NIL" name="term-prov_n_LL-NIL"></a>[<span class="prodNo">80</span>] </td>
+<td><a id="term-prov_n_LL-NIL" name="term-prov_n_LL-NIL"></a>[<span class="prodNo">81</span>] </td>
<td><<code class="production term">NIL</code>></td>
<td> ::= </td>
<td><code class="content">"(" (( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-WS">WS</a></span> ))* ")"</code></td>
@@ -742,7 +752,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-WS" name="term-prov_n_LL-WS"></a>[<span class="prodNo">81</span>] </td>
+<td><a id="term-prov_n_LL-WS" name="term-prov_n_LL-WS"></a>[<span class="prodNo">82</span>] </td>
<td><<code class="production term">WS</code>></td>
<td> ::= </td>
<td><code class="content">" "<br/>
@@ -754,7 +764,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-ANON" name="term-prov_n_LL-ANON"></a>[<span class="prodNo">82</span>] </td>
+<td><a id="term-prov_n_LL-ANON" name="term-prov_n_LL-ANON"></a>[<span class="prodNo">83</span>] </td>
<td><<code class="production term">ANON</code>></td>
<td> ::= </td>
<td><code class="content">"[" (( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-WS">WS</a></span> ))* "]"</code></td>
@@ -763,7 +773,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PN_CHARS_BASE" name="term-prov_n_LL-PN_CHARS_BASE"></a>[<span class="prodNo">83</span>] </td>
+<td><a id="term-prov_n_LL-PN_CHARS_BASE" name="term-prov_n_LL-PN_CHARS_BASE"></a>[<span class="prodNo">84</span>] </td>
<td><<code class="production term">PN_CHARS_BASE</code>></td>
<td> ::= </td>
<td><code class="content">[A-Z]<br/>
@@ -785,7 +795,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PN_CHARS_U" name="term-prov_n_LL-PN_CHARS_U"></a>[<span class="prodNo">84</span>] </td>
+<td><a id="term-prov_n_LL-PN_CHARS_U" name="term-prov_n_LL-PN_CHARS_U"></a>[<span class="prodNo">85</span>] </td>
<td><<code class="production term">PN_CHARS_U</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS_BASE">PN_CHARS_BASE</a></span><br/>
@@ -795,7 +805,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PN_CHARS" name="term-prov_n_LL-PN_CHARS"></a>[<span class="prodNo">85</span>] </td>
+<td><a id="term-prov_n_LL-PN_CHARS" name="term-prov_n_LL-PN_CHARS"></a>[<span class="prodNo">86</span>] </td>
<td><<code class="production term">PN_CHARS</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS_U">PN_CHARS_U</a></span><br/>
@@ -809,7 +819,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PN_PREFIX" name="term-prov_n_LL-PN_PREFIX"></a>[<span class="prodNo">86</span>] </td>
+<td><a id="term-prov_n_LL-PN_PREFIX" name="term-prov_n_LL-PN_PREFIX"></a>[<span class="prodNo">87</span>] </td>
<td><<code class="production term">PN_PREFIX</code>></td>
<td> ::= </td>
<td><code class="content"><span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS_BASE">PN_CHARS_BASE</a></span> (( (( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS">PN_CHARS</a></span> | "." ))* <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-PN_CHARS">PN_CHARS</a></span> ))?</code></td>
@@ -818,7 +828,7 @@
<tbody class="term">
<tr valign="baseline">
-<td><a id="term-prov_n_LL-PASSED_TOKENS" name="term-prov_n_LL-PASSED_TOKENS"></a>[<span class="prodNo">87</span>] </td>
+<td><a id="term-prov_n_LL-PASSED_TOKENS" name="term-prov_n_LL-PASSED_TOKENS"></a>[<span class="prodNo">88</span>] </td>
<td><code class="production directive">PASSED TOKENS</code></td>
<td> ::= </td>
<td><code class="content">([ \t\r\n])+<br/>
--- a/model/prov-n.html Tue Jul 10 10:37:37 2012 +0100
+++ b/model/prov-n.html Tue Jul 10 13:20:24 2012 +0100
@@ -533,6 +533,10 @@
</ul>
</div>
+</section>
+
+<section id="main-productions">
+<h3>Main Productions</h3>
The grammar is centered on nonterminals for various types of <a class="grammarRef" href="#prod-expression">expression</a>. The main production is introduced here below as it reflects the rationale for the design of the entire grammar. Note that parser developers may use the top level
<a class="grammarRef" href="#prod-bundle">bundle</a> nonterminal as a starting point instead.
@@ -2126,17 +2130,21 @@
<p>A PROV qualified name <code class="content"><a class="grammarRef" href="#prod-QUALIFIED_NAME">QUALIFIED_NAME</a></code> has a more permissive syntax then XML's <code class="content"><a href="http://www.w3.org/TR/2009/REC-xml-names-20091208/#NT-QName">QName</a></code> [[!XML-NAMES]]
-and SPARQL <code class="content"><a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/#rPrefixedName">PrefixedName</a></code> [[!RDF-SPARQL-QUERY]]. It is a PROV requirement that the concatenation of the namespace with the local part results in a valid IRI [[!IRI]]. Given that
-',' (comma),
+and SPARQL <code class="content"><a href="http://www.w3.org/TR/2008/REC-rdf-sparql-query-20080115/#rPrefixedName">PrefixedName</a></code> [[!RDF-SPARQL-QUERY]].
+
+<p>It is a PROV requirement that the concatenation of the namespace with the local part results in a valid IRI [[!IRI]].
+
+<p>Given that
+'=' (equal),
''' (single quote),
-'"' (double quote),
-';' (semi-colon),
-':' (colon),
-'=' (equal),
'(' (left bracket),
')' (right bracket),
+',' (comma),
+':' (colon),
+';' (semi-colon),
+'"' (double quote),
'[' (left square bracket),
-']' (right square bracket) are used by the PROV notation as delimiters, they are not allowed in local parts. Instead, they can be %-escaped or incorporated in the IRI denoted by a prefix.
+']' (right square bracket) are used by the PROV notation as delimiters, they are not allowed in local parts. Instead, they can be escaped using the '\' (backslash character) as per production <code class="content"><a class="grammarRef" href="#prod-PN_CHARS_ESC">PN_CHARS_ESC</a></code>
</p>
@@ -2150,6 +2158,7 @@
<tbody class="grammar-ref" data-ref="prod-QUALIFIED_NAME"></tbody>
<tbody class="grammar-ref" data-ref="prod-PN_LOCAL"></tbody>
<tbody class="grammar-ref" data-ref="prod-PN_CHARS_OTHERS"></tbody>
+<tbody class="grammar-ref" data-ref="prod-PN_CHARS_ESC"></tbody>
<tbody class="grammar-ref" data-ref="prod-PERCENT"></tbody>
<tbody class="grammar-ref" data-ref="prod-HEX"></tbody>