extensibility
authorLuc Moreau <l.moreau@ecs.soton.ac.uk>
Tue, 03 Jul 2012 17:18:55 +0100
changeset 3692 72fba0f50d44
parent 3691 b48bda73a2b7
child 3693 2e5143978242
extensibility
model/grammar/ll.html
model/grammar/ll.js
model/grammar/yack/prov-n-LL.bnf
model/grammar/yack/prov-n-LL.bnf.html
model/prov-n.html
--- a/model/grammar/ll.html	Tue Jul 03 16:56:46 2012 +0100
+++ b/model/grammar/ll.html	Tue Jul 03 17:18:55 2012 +0100
@@ -496,14 +496,14 @@
 <td><a id="prod-prov_n_LL-extensibilityArgument" name="prod-prov_n_LL-extensibilityArgument"></a>[<span class="prodNo">55</span>]&nbsp;&nbsp;&nbsp;</td>
 <td><code class="production prod">extensibilityArgument</code></td>
 <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-identifierOrMarker">identifierOrMarker</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-literal">literal</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-timeZZ">timeZZ</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityExpression">extensibilityExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityRecord">extensibilityRecord</a></span> )</code></td>
+<td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-identifierOrMarker">identifierOrMarker</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-literal">literal</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-timeZZ">timeZZ</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityExpression">extensibilityExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityTuple">extensibilityTuple</a></span> )</code></td>
 </tr>
 </tbody>
 
 <tbody class="prod">
 <tr valign="baseline">
-<td><a id="prod-prov_n_LL-extensibilityRecord" name="prod-prov_n_LL-extensibilityRecord"></a>[<span class="prodNo">56</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">extensibilityRecord</code></td>
+<td><a id="prod-prov_n_LL-extensibilityTuple" name="prod-prov_n_LL-extensibilityTuple"></a>[<span class="prodNo">56</span>]&nbsp;&nbsp;&nbsp;</td>
+<td><code class="production prod">extensibilityTuple</code></td>
 <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
 <td><code class="content">"{" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityArgument">extensibilityArgument</a></span> (( "," <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityArgument">extensibilityArgument</a></span> ))* "}"<br/>
 | "(" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityArgument">extensibilityArgument</a></span> (( "," <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityArgument">extensibilityArgument</a></span> ))* ")"</code></td>
--- a/model/grammar/ll.js	Tue Jul 03 16:56:46 2012 +0100
+++ b/model/grammar/ll.js	Tue Jul 03 17:18:55 2012 +0100
@@ -497,14 +497,14 @@
 '<td><a id="prod-extensibilityArgument" name="prod-extensibilityArgument"></a>[<span class="prodNo">55</span>]&nbsp;&nbsp;&nbsp;</td> ' + 
 '<td><code class="production prod">extensibilityArgument</code></td> ' + 
 '<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> ' + 
-'<td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-identifierOrMarker">identifierOrMarker</a></span> | <span class="prod"><a class="grammarRef" href="#prod-literal">literal</a></span> | <span class="prod"><a class="grammarRef" href="#prod-time">time</a></span> | <span class="prod"><a class="grammarRef" href="#prod-extensibilityExpression">extensibilityExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-extensibilityRecord">extensibilityRecord</a></span> )</code></td> ' + 
+'<td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-identifierOrMarker">identifierOrMarker</a></span> | <span class="prod"><a class="grammarRef" href="#prod-literal">literal</a></span> | <span class="prod"><a class="grammarRef" href="#prod-time">time</a></span> | <span class="prod"><a class="grammarRef" href="#prod-extensibilityExpression">extensibilityExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-extensibilityTuple">extensibilityTuple</a></span> )</code></td> ' + 
 '</tr> ' + 
 '</tbody> ' + 
 ' ' + 
 '<tbody class="prod"> ' + 
 '<tr valign="baseline"> ' + 
-'<td><a id="prod-extensibilityRecord" name="prod-extensibilityRecord"></a>[<span class="prodNo">56</span>]&nbsp;&nbsp;&nbsp;</td> ' + 
-'<td><code class="production prod">extensibilityRecord</code></td> ' + 
+'<td><a id="prod-extensibilityTuple" name="prod-extensibilityTuple"></a>[<span class="prodNo">56</span>]&nbsp;&nbsp;&nbsp;</td> ' + 
+'<td><code class="production prod">extensibilityTuple</code></td> ' + 
 '<td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td> ' + 
 '<td><code class="content">"{" <span class="prod"><a class="grammarRef" href="#prod-extensibilityArgument">extensibilityArgument</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-extensibilityArgument">extensibilityArgument</a></span> )* "}"<br/> ' + 
 '| "(" <span class="prod"><a class="grammarRef" href="#prod-extensibilityArgument">extensibilityArgument</a></span> ( "," <span class="prod"><a class="grammarRef" href="#prod-extensibilityArgument">extensibilityArgument</a></span> )* ")"</code></td> ' + 
--- a/model/grammar/yack/prov-n-LL.bnf	Tue Jul 03 16:56:46 2012 +0100
+++ b/model/grammar/yack/prov-n-LL.bnf	Tue Jul 03 17:18:55 2012 +0100
@@ -167,10 +167,10 @@
 extensibilityExpression ::= QUALIFIED_NAME "(" extensibilityArgument ( ("," | ";") extensibilityArgument)* optionalAttributeValuePairs ")"
 
 extensibilityArgument ::=
-  ( identifierOrMarker | literal | timeZZ  | extensibilityExpression | extensibilityRecord ) 
+  ( identifierOrMarker | literal | timeZZ  | extensibilityExpression | extensibilityTuple ) 
 
 
-extensibilityRecord ::=
+extensibilityTuple ::=
  "{" extensibilityArgument ("," extensibilityArgument)* "}" |  "(" extensibilityArgument ("," extensibilityArgument)* ")"
 ;
 
--- a/model/grammar/yack/prov-n-LL.bnf.html	Tue Jul 03 16:56:46 2012 +0100
+++ b/model/grammar/yack/prov-n-LL.bnf.html	Tue Jul 03 17:18:55 2012 +0100
@@ -495,14 +495,14 @@
 <td><a id="prod-prov_n_LL-extensibilityArgument" name="prod-prov_n_LL-extensibilityArgument"></a>[<span class="prodNo">55</span>]&nbsp;&nbsp;&nbsp;</td>
 <td><code class="production prod">extensibilityArgument</code></td>
 <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
-<td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-identifierOrMarker">identifierOrMarker</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-literal">literal</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-timeZZ">timeZZ</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityExpression">extensibilityExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityRecord">extensibilityRecord</a></span> )</code></td>
+<td><code class="content">( <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-identifierOrMarker">identifierOrMarker</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-literal">literal</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-timeZZ">timeZZ</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityExpression">extensibilityExpression</a></span> | <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityTuple">extensibilityTuple</a></span> )</code></td>
 </tr>
 </tbody>
 
 <tbody class="prod">
 <tr valign="baseline">
-<td><a id="prod-prov_n_LL-extensibilityRecord" name="prod-prov_n_LL-extensibilityRecord"></a>[<span class="prodNo">56</span>]&nbsp;&nbsp;&nbsp;</td>
-<td><code class="production prod">extensibilityRecord</code></td>
+<td><a id="prod-prov_n_LL-extensibilityTuple" name="prod-prov_n_LL-extensibilityTuple"></a>[<span class="prodNo">56</span>]&nbsp;&nbsp;&nbsp;</td>
+<td><code class="production prod">extensibilityTuple</code></td>
 <td>&nbsp;&nbsp;&nbsp;::=&nbsp;&nbsp;&nbsp;</td>
 <td><code class="content">"{" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityArgument">extensibilityArgument</a></span> (( "," <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityArgument">extensibilityArgument</a></span> ))* "}"<br/>
 | "(" <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityArgument">extensibilityArgument</a></span> (( "," <span class="prod"><a class="grammarRef" href="#prod-prov_n_LL-extensibilityArgument">extensibilityArgument</a></span> ))* ")"</code></td>
--- a/model/prov-n.html	Tue Jul 03 16:56:46 2012 +0100
+++ b/model/prov-n.html	Tue Jul 03 17:18:55 2012 +0100
@@ -2363,8 +2363,8 @@
 
 <tbody class="grammar-ref" data-ref="prod-namespaceDeclarations"></tbody>
 <tbody class="grammar-ref" data-ref="prod-namespaceDeclaration"></tbody>
+<tbody class="grammar-ref" data-ref="prod-defaultNamespaceDeclaration"></tbody>
 <tbody class="grammar-ref" data-ref="prod-namespace"></tbody>
-<tbody class="grammar-ref" data-ref="prod-defaultNamespaceDeclaration"></tbody>
 
 </table>
 
@@ -2429,7 +2429,7 @@
 </ul>
 
 <p>A toplevel bundle's text matches the <code class="content"><a class="grammarRef"
- href="#prod-bundle">bundle</a> production.</code></p>
+ href="#prod-bundle">bundle</a></code> production.</p>
 
 <table class="grammar">
 <tbody class="grammar-ref" data-ref="prod-bundle"></tbody>
@@ -2467,6 +2467,16 @@
 <section id="extensibility">
 <h4>Extensibility</h4>
 
+<p>The PROV data model is extensible by means of attributes <span class="name">prov:type</span> and <span class="name">prov:role</span>, allowing subtyping of expressions.  For some applications, novel  syntax may be convenient. Hence, the normative requirements are as follow.
+<ul>
+<li> PROV-N compliant parsers MUST be able to parse expressions matching the <code class="content"><a class="grammarRef"
+ href="#prod-extensibilityExpression">extensibilityExpression</a></code> production.
+<li> As PROV provides no interpretation for these expressions, PROV compliant implementations 
+ MAY ignore these expressions.</li>
+<li> Extensions to PROV and PROV-N MAY specify more specific productions and interpretations for these expressions. </li>
+</ul>
+</p>
+
 <table class="grammar">
 
 <tbody class="grammar-ref" data-ref="prod-extensibilityExpression"></tbody>
@@ -2475,6 +2485,12 @@
 
 </table>
 
+<p>Expressions compatible with the
+<code class="content"><a class="grammarRef"
+ href="#prod-extensibilityExpression">extensibilityExpression</a></code> production
+
+
+
 
 </section>