updated prov-n.html
authorLuc Moreau <l.moreau@ecs.soton.ac.uk>
Wed, 21 Mar 2012 22:33:02 +0000
changeset 1962 7a866b085a08
parent 1961 cca47d27f07a
child 1963 225ed51506ba
updated prov-n.html
model/prov-n.html
--- a/model/prov-n.html	Wed Mar 21 22:24:08 2012 +0000
+++ b/model/prov-n.html	Wed Mar 21 22:33:02 2012 +0000
@@ -117,7 +117,7 @@
           // if your specification has a subtitle that goes below the main
           // formal title, define it here
         //          subtitle   :  "About-to-be-frozen WD4 (for internal release)",
-          subtitle   :  "Initial document for discussion, WD5",
+          subtitle   :  "Towards WD5",
 
           // if you wish the publication date to be other than today, set this
           // publishDate:  "2011-10-18",
@@ -198,7 +198,7 @@
     </section> 
 
 <section id="sotd">
-<b>This document is released internally by the Provenance Working Group.</b>
+<div class="note">TODO</div>
 <section id="prov-family">
 <!-- <h3>Prov Family of Specifications</h3>-->
 This document is part of the PROV family of specifications, a set of specifications aiming to define the various aspects that are necessary to achieve the vision of inter-operable
@@ -226,6 +226,7 @@
 
 
 
+
 <section id="introduction"> 
 <h2>Introduction</h2>
 
@@ -283,7 +284,7 @@
  <h3>PROV-DM Namespace</h3>
 
 
-<p>The PROV-DM namespace is <span class="name">http://www.w3.org/ns/prov-dm/</span> (TBC).</p>
+<p>The PROV-DM namespace is <span class="name">http://www.w3.org/ns/prov/</span>.</p>
 
 <p> All the elements, relations, reserved names and attributes introduced in this specification belong to the PROV-DM namespace.</p>
 
@@ -307,10 +308,92 @@
 </section> 
 
 
+<section id="grammar-notation"> 
+<h3>Design Rationale for PROV-N</h3>
+
+<p>A key goal of PROV-DM is the specification of a machine-processable data model for provenance so that application having obtained the provenance of the resource they manipulate can reason about such provenance. As such, representations of PROV-DM are available in RDF and XML.
+</p>
+
+<p>However, communicating provenance between humans is also important when teaching, illustrating, formalizing, and discussing provenance-related issues.  To this end, PROV-N is a notation that is designed to  write instances of the PROV-DM data model in a compact textual form, without the syntactic bagage and constraints coming with a markup language such as XML or a description framework such as RDF. </p>
+
+<ul>
+<li>PROV-N adopts a <em>functional notation</em> consisting a name and a series of arguments in bracket.</li>
+<div class="anexample">
+<pre class="codeexample" >
+wasDerivedFrom(e2, e1, a, g2, u1)
+</pre>
+</div>
+
+<li>The interpretation of PROV-N arguments is defined according to their <em>position</em> in the list of arguments. This convention allows for a compact notation. </li>
+
+<li><p>
+PROV-N <em>optional arguments</em> need not be specified (when this does not lead to ambiguity).</p>
+<div class="anexample">
+<p>The activity, generation, and usage are specified in the first derivation, whereas they are not in the second.</p>
+<pre class="codeexample" >
+wasDerivedFrom(e2, e1, a, g2, u1)
+wasDerivedFrom(e2, e1)
+</pre>
+</div>
+
+<div class="anexample">
+<p>Activity <span class="name">a1</span> does not have start and end times specified, whereas <span class="name">a2</span> does</p>
+<pre class="codeexample" >
+activity(a1)
+activity(a2, 2011-11-16T16:00:00, 2011-11-16T16:00:01)
+</pre>
+</div>
+</li>
+
+<li><p>For cases where it is desirable to indicate which arguments have not been specified, PROV-N uses  the <em>syntactic marker</em> <span class="name">-</span> for unspecified arguments.</p>
+<div class="anexample">
+<p>The activity, generation, and usage are specified in the first derivation, whereas they are not in the second, but have been explicitly marked as such.</p>
+<pre class="codeexample" >
+wasDerivedFrom(e2, e1, a, g2, u1)
+wasDerivedFrom(e2, e1, a, -, -)
+wasDerivedFrom(e2, e1, -, -, -)
+</pre>
+</div>
+
+<p>Activity <span class="name">a1</span> does not have start and end times specified, but  they are been marked syntactically.</p>
+<div class="anexample">
+<pre class="codeexample" >
+activity(a1, -, -)
+activity(a2, 2011-11-16T16:00:00, 2011-11-16T16:00:01)
+</pre>
+</div>
+</li>
+
+<li><p>The identifier always occur in <em>first position</em>.   For expressions with optional identifier, it may be expressed by the syntactic marker  <span class="name">-</span>.</p>
+
+<p>Derivation has an optional identifier. In the first derivation, the identifier is not expressed. It is explicit in the second, and marked by a <span class="name">-</span> in the third.</p>
+<div class="anexample">
+<pre class="codeexample" >
+wasDerivedFrom(e2, e1)
+wasDerivedFrom(d, e2, e1)
+wasDerivedFrom(-, e2, e1)
+</pre>
+</div>
+
+<li><p>Most expressions have an optional set of attribute-value pairs, which occur in <em>last position</em>, and delimited by square brackets. </p>
+<div class="anexample">
+<pre class="codeexample" >
+activity(ex:a10)
+activity(ex:a10, [])
+activity(ex:a10, [prov:type="createFile"])
+activity(ex:a10, [ex:param="a", ex:param="b"])
+</pre>
+</div>
+<li> PROV-N exposes attributes that PROV-DM provides an interpretation for [[PROV-DM-CONSTRAINTS]] directly as positional arguments of expressions, whereas those for which PROV-DM provides no interpretation need to be expressed among the optional attribute-value pairs.
+</li>
+
+</ul>
 
 
 
-    <section id="grammar-notation"> 
+</section>
+
+<section id="grammar-notation"> 
 <h3>Grammar Notation</h3>
 
 <p>This specification includes a grammar for PROV-N expressed using the Extended  Backus-Naur Form (EBNF) notation.</p>
@@ -350,57 +433,66 @@
 
 </section>
 
-
-<section id="data-model-concepts"> 
-
-<h2>PROV-DM Core</h2>
+<section id="components"> 
+<h2>PROV-N Productions per Component</h2>
 
-<p>Instances of the PROV-DM data model are expressed in PROV-N by a text conformant with the toplevel <a>production</a> <span class="nonterminal">expression</span> of the grammar. These <span
-class="nonterminal">expression</span>s are grouped in two categories:
-<span class="nonterminal">elementExpression</span> (see section <a href="#expression-element">Element</a>) and
-<span class="nonterminal">relationExpression</span>  (see section <a href="#expression-relation">Relation</a>).</p>
+<p>A PROV-N document allows writing down instances of the PROV-DM data model in a compact textual form. It consists of a sequence of expressions.</p>
 
 
+<p>Instances of the PROV-DM data model are expressed in PROV-N by a text conformant with the toplevel <a>production</a> <span class="nonterminal">expression</span> of the grammar. </p>
+
 <div class='grammar'>
-<span class="nonterminal">expression</span>&nbsp;::=  
-<span class="nonterminal">elementExpression</span> 
-| <span class="nonterminal">relationExpression</span> 
-<br/>
-<!-- -->
-<br/>
-<span class="nonterminal">elementExpression</span>&nbsp;::=  
-<span class="nonterminal">entityExpression</span> 
+<table border="0" style="background: white;">
+<tr><td><span class="nonterminal">expression</span> 
+&nbsp;::=<br/><br/><br/><br/><br/><br/></td><td>
+<!-- Component 1-->
+&nbsp;&nbsp;<span class="nonterminal">entityExpression</span> 
 | <span class="nonterminal">activityExpression</span> 
-| <span class="nonterminal">agentExpression</span>
-| <span class="nonterminal">noteExpression</span> <br/>
-<!-- -->
+| <span class="nonterminal">generationExpression</span> 
+| <span class="nonterminal">usageExpression</span> 
 <br/>
-<span class="nonterminal">relationExpression</span>&nbsp;::=  
-<span class="nonterminal">generationExpression</span> 
-| <span class="nonterminal">usageExpression</span> 
-| <span class="nonterminal">derivationExpression</span> 
-| <span class="nonterminal">activityAssociationExpression</span> 
-| <span class="nonterminal">responsibilityExpression</span> 
 | <span class="nonterminal">startExpression</span> 
 | <span class="nonterminal">endExpression</span> 
+| <span class="nonterminal">communicationExpression</span> 
+| <span class="nonterminal">startByActivityExpression</span> 
+<br/>
+<!-- Component 2-->
+| <span class="nonterminal">agentExpression</span>
+| <span class="nonterminal">attributionExpression</span> 
+| <span class="nonterminal">associationExpression</span> 
+| <span class="nonterminal">responsibilityExpression</span> 
+<br/>
+<!-- Component 3-->
+| <span class="nonterminal">derivationExpression</span> 
+| <span class="nonterminal">revisionExpression</span> 
+| <span class="nonterminal">quotationExpression</span> 
+| <span class="nonterminal">hadOriginalSourceExpression</span> 
+| <span class="nonterminal">traceabilityExpression</span> 
+<br/>
+<!-- Component 4-->
 | <span class="nonterminal">alternateExpression</span> 
 | <span class="nonterminal">specializationExpression</span>
+<br/>
+<!-- Component 5-->
+<!-- Component 6-->
+
+| <span class="nonterminal">noteExpression</span> 
 | <span class="nonterminal">annotationExpression</span> 
+<br/>
+</td></tr>
+</table>
 </div>
 
 
 
 
-<section id="expression-element"> 
-<h3>Element</h3>
 
-<p>PROV-DM elements can be entities, activities, agents, or notes. This section defines a production for the textual representation of each of these element types. </p>
+<section id="component1"> 
+<h3>Component 1: Entities and Activities</h3>
 
-   <section id="expression-Entity"> 
-      
+<section id="expression-Entity"> 
 <h4>Entity</h4>
 
-
 <div class="withPn">
 <p>
 An entity's text matches the <span class="nonterminal">entityExpression</span> production.
@@ -441,11 +533,10 @@
 </div>
 
 
-    </section> 
 
-    <section id="expression-Activity"> 
-      
-<h3>Activity</h3>
+</section> 
+<section id="expression-Activity"> 
+<h4>Activity</h4>
 
 
 <div class="withPn">
@@ -458,10 +549,10 @@
 <span class="name">activity</span>
 <span class="name">(</span>
 <span class="nonterminal">identifier</span>
+<span class="optional"><span class="name">,</span>
+(<span class="nonterminal">time</span> | <span class="name">-</span> )
 <span class="name">,</span>
-<span class="optional"><span class="nonterminal">time</span></span>
-<span class="name">,</span>
-<span class="optional"><span class="nonterminal">time</span></span>
+(<span class="nonterminal">time</span> | <span class="name">-</span> )</span>
 <span class="nonterminal">optional-attribute-values</span>
 <span class="name">)</span>
 </div>
@@ -469,18 +560,223 @@
 
 <div class="anexample">
 <pre class="codeexample">
-activity(ex:edit1,,)
-activity(ex:edit1,,,[prov:type="edit"])
-activity(ex:a0, 2011-11-16T16:00:00,,[prov:type="createFile"])
-activity(ex:a0, 2011-11-16T16:00:00, 2011-11-16T16:00:01, [prov:type="createFile"])
+activity(ex:a10)
+activity(ex:a10, -, -)
+activity(ex:a10, -, -, [prov:type="edit"])
+activity(ex:a10, -, 2011-11-16T16:00:00)
+activity(ex:a10, 2011-11-16T16:00:00, -)
+activity(ex:a10, 2011-11-16T16:00:00, -, [prov:type="createFile"])
+activity(ex:a10, 2011-11-16T16:00:00, 2011-11-16T16:00:01, [prov:type="createFile"])
+activity(ex:a10, [prov:type="edit"])
 </pre>
 </div>
 
 
-</section> 
+</section>
+<section id="expression-Generation">
+<h4>Generation</h4>
 
+
+<div class="withPn">
+<p>A generation's text matches the <span class='nonterminal'>generationExpression</span> production.</p>
+
+<div class='grammar'>
+<span class="nonterminal">generationExpression</span>&nbsp;::=  
+<span class="name">wasGeneratedBy</span>
+<span class="name">(</span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+( <span class="nonterminal">aIdentifier</span> | <span class="name">-</span> )
+<span class="name">,</span> ( <span class="nonterminal">time</span> | <span class="name">-</span> )
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span><br/>
+</div>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+wasGeneratedBy(tr:WD-prov-dm-20111215, ex:edit1, -)
+wasGeneratedBy(tr:WD-prov-dm-20111215, ex:edit1, 2011-11-16T16:00:00)
+wasGeneratedBy(e2, a1, -, [ex:fct="save"])     
+wasGeneratedBy(e2, -, -, [ex:fct="save"])     
+wasGeneratedBy(ex:g1, tr:WD-prov-dm-20111215, ex:edit1, -)
+wasGeneratedBy(ex:g1, tr:WD-prov-dm-20111215, ex:edit1, 2011-11-16T16:00:00)
+wasGeneratedBy(-, tr:WD-prov-dm-20111215, ex:edit1, -)
+</pre>
+</div>
+
+<p>Even though the production <span class="nonterminal">generationExpression</span> allows for expressions <span class="name">wasGeneratedBy(e2, -, -)</span>  and <span class="name">wasGeneratedBy(-, e2, -, -)</span>, these expressions are not valid in PROV-N.</p>
+
+
+</section>
+
+<section id="expression-Usage">
+<h4>Usage</h4>
+
+
+<p>A usage's text matches the <span class='nonterminal'>usageExpression</span> production.</p>
+
+<div class='grammar'>
+<span class="nonterminal">usageExpression</span>&nbsp;::=  
+<span class="name">used</span>
+<span class="name">(</span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">aIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span> ( <span class="nonterminal">time</span> | <span class="name">-</span> ) 
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span><br/>
+</div>
+
+
+<div class="anexample">
+<pre class="codeexample">
+used(ex:act2, ar3:0111, -)
+used(ex:act2, ar3:0111, 2011-11-16T16:00:00)
+used(a1,e1, -, [ex:fct="load"])
+used(ex:u1, ex:act2, ar3:0111, -)
+used(-, ex:act2, ar3:0111, -)
+</pre>
+</div>
+
+<p>Even though the production <span class="nonterminal">usageExpression</span> allows for expressions <span class="name">used(e2, -, -)</span>  and <span class="name">used(-, e2, -, -)</span>, these expressions are not valid in PROV-N.</p>
+
+</section>
+<section id="expression-Start">
+<h4>Start</h4>
+
+<p>An activity start's text matches the <span class="nonterminal">startExpression</span> production of the grammar
+</p>
+
+
+<div class='grammar'>
+<span class="nonterminal">startExpression</span>&nbsp;::= 
+<span class="name">wasStartedBy</span>
+<span class="name">(</span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">aIdentifier</span>
+<span class="name">,</span>
+( <span class="nonterminal">eIdentifier</span> | <span class="name">-</span> )
+<span class="name">,</span> ( <span class="nonterminal">time</span> | <span class="name">-</span> )
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+wasStartedBy(ex:act2, ar3:0111, -)
+wasStartedBy(ex:act2, ar3:0111, 2011-11-16T16:00:00)
+wasStartedBy(ex:act2, -, 2011-11-16T16:00:00)
+wasStartedBy(ex:act2, -, -)
+wasStartedBy(ex:act2, -, -, [ex:param="a"])
+wasStartedBy(s, ex:act2, ar3:0111, 2011-11-16T16:00:00)
+wasStartedBy(-, ex:act2, ar3:0111, 2011-11-16T16:00:00)
+</pre>
+</div>
+
+<p>Even though the production <span class="nonterminal">startExpression</span> allows for expressions <span class="name">wasStartedBy(e2, -, -)</span>  and <span class="name">wasStartedBy(-, e2, -, -)</span>, these expressions are not valid in PROV-N.</p>
+
+</section>
+
+<section id="expression-End">
+<h4>End</h4>
+
+<p>An activity  end's text matches the <span class="nonterminal">endExpression</span> production of the grammar.
+</p>
+
+
+<div class='grammar'>
+<span class="nonterminal">endExpression</span>&nbsp;::= 
+<span class="name">wasEndedBy</span>
+<span class="name">(</span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">aIdentifier</span>
+<span class="name">,</span>
+( <span class="nonterminal">eIdentifier</span> | <span class="name">-</span> )
+<span class="name">,</span> ( <span class="nonterminal">time</span> | <span class="name">-</span> )
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+wasEndedBy(ex:act2, ex:trigger, -)
+wasEndedBy(ex:act2, ex:trigger, 2011-11-16T16:00:00)
+wasEndedBy(ex:act2, -, 2011-11-16T16:00:00)
+wasEndedBy(ex:act2, -, 2011-11-16T16:00:00, [ex:param="a"])
+wasEndedBy(e,ex:act2, -, -)
+wasEndedBy(e, ex:act2, ex:trigger, 2011-11-16T16:00:00)
+wasEndedBy(-, ex:act2, ex:trigger, 2011-11-16T16:00:00)
+</pre>
+</div>
+
+<p>Even though the production <span class="nonterminal">endExpression</span> allows for expressions <span class="name">wasEndedBy(e2, -, -)</span>  and <span class="name">wasEndedBy(-, e2, -, -)</span>, these expressions are not valid in PROV-N.</p>
+</section>
+
+<section id="expression-wasInformedBy">
+<h4>Communication</h4>
+
+
+<div class="grammar">
+<span class="nonterminal">communicationExpression</span> &nbsp;::= 
+<span class="name">wasInformedBy</span>
+<span class="name">(</span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">aIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">aIdentifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+wasInformedBy(ex:a1, ex:a2)
+wasInformedBy(ex:a1, ex:a2, [ex:param1="a", ex:param2="b"])
+wasInformedBy(i, ex:a1, ex:a2)
+wasInformedBy(i, ex:a1, ex:a2, [ex:param1="a", ex:param2="b"])
+wasInformedBy(-, ex:a1, ex:a2)
+wasInformedBy(-, ex:a1, ex:a2, [ex:param1="a", ex:param2="b"])
+</pre>
+</div>
+</section>
+
+<section id="expression-startByActivity">
+<h4>Start by Activity</h4>
+
+<div class="grammar">
+<span class="nonterminal">startByActivityExpression</span> &nbsp;::= 
+<span class="name">wasStartedByActivity</span>
+<span class="name">(</span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">aIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">aIdentifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+<br>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+wasStartedByActivity(ex:a1, ex:a2)
+wasStartedByActivity(ex:a1, ex:a2, [ex:param1="a", ex:param2="b"])
+wasStartedByActivity(s,ex:a1, ex:a2)
+wasStartedByActivity(s,ex:a1, ex:a2, [ex:param1="a", ex:param2="b"])
+wasStartedByActivity(-,ex:a1, ex:a2)
+wasStartedByActivity(-,ex:a1, ex:a2, [ex:param1="a", ex:param2="b"])
+</pre>
+</div>
+</section>
+</section>
+
+
+<section id="component2"> 
+<h3>Component 2: Agents and Responsibility</h3>
 <section id="expression-Agent">
-<h3>Agent</h3>
+<h4>Agent</h4>
 
 
 <div class="withPn">
@@ -501,147 +797,55 @@
 <div class="anexample">
 <pre class="codeexample">
 agent(ag4)
-agent(ag4, [ prov:type="prov:Human" %% xsd:QName, ex:name="David" ])
+agent(ag4, [ prov:type="prov:Person" %% xsd:QName, ex:name="David" ])
 </pre>
 </div>
 
 
 </section>
-
-   <section id="expression-note"> 
-      
-<h4>Note</h4>
-
-<div class="withPn">
-<p>A note's text matches the <span class="nonterminal">noteExpression</span> production.
-</p>
-
-
-<div class='grammar'>
-<span class="nonterminal">noteExpression</span>&nbsp;::= 
-<span class="name">note</span>
-<span class="name">(</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="nonterminal">attribute-values</span>
-<span class="name">)</span><br/>
-<!-- -->
-</div>
-</div>
-
-<div class="anexample">
-<pre class="codeexample">
-note(ann1,[ex:color="blue", ex:screenX=20, ex:screenY=30])
-</pre>
-</div>
-
-   </section> 
+<section id="expression-attribution">
+<h4>Attribution</h4>
 
-</section>
-
-
-<section id="expression-relation">
-<h3>Relation</h3>
-
-<p>
-PROV-DM relations can be generation, usage, derivation, activity association, responsibility chain, activity start, activity end, alternate, specialization, or annotations. This section defines a production for the textual representation of each of these relation types. </p>
-
-
-
-<section id="expression-Generation">
-<h4>Generation</h4>
-
-
-<div class="withPn">
-<p>A generation's text matches the <span class='nonterminal'>generationExpression</span> production.</p>
-
-<div class='grammar'>
-<span class="nonterminal">generationExpression</span>&nbsp;::=  
-<span class="name">wasGeneratedBy</span>
-<span class="name">(</span>
-<span class="optional"> <span class="nonterminal">identifier</span>
-<span class="name">,</span> </span>
+<div class="grammar">
+<span class="nonterminal">attributionExpression</span>&nbsp;::=  
+<span class="name">wasAttributedTo</span> 
+<span class="name">(</span> 
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
 <span class="nonterminal">eIdentifier</span>
-<span class="name">,</span>
-<span class="optional"><span class="nonterminal">aIdentifier</span></span>
-<span class="optional"><span class="name">,</span>
-<span class="nonterminal">time</span></span>
+<span class="name">,</span> 
+<span class="nonterminal">agIdentifier</span>
 <span class="nonterminal">optional-attribute-values</span>
-<span class="name">)</span><br/>
-</div>
+<span class="name">)</span> 
 </div>
 
 <div class="anexample">
 <pre class="codeexample">
-wasGeneratedBy(tr:WD-prov-dm-20111215, ex:edit1)
-wasGeneratedBy(tr:WD-prov-dm-20111215, ex:edit1, 2011-11-16T16:00:00)
-wasGeneratedBy(ex:g1, tr:WD-prov-dm-20111215, ex:edit1)
-wasGeneratedBy(e2, a1, [ex:fct="save"])     
+wasAttributedTo(e,ag)
+wasAttributedTo(e,ag,[ex:license="cc:attributionURL" %% "xsd:QName"])
+wasAttributedTo(id,e,ag,[ex:license="cc:attributionURL" %% "xsd:QName"])
+wasAttributedTo(-,e,ag,[ex:license="cc:attributionURL" %% "xsd:QName"])
 </pre>
 </div>
 
-
-</section>
-
-
-<section id="expression-Usage">
-<h3>Usage</h3>
-
+</section>  <!-- end attribution -->
 
 
-<p>A usage's text matches the <span class='nonterminal'>usageExpression</span> production.</p>
-
-<div class='grammar'>
-<span class="nonterminal">usageExpression</span>&nbsp;::=  
-<span class="name">used</span>
-<span class="name">(</span>
-<span class="optional">
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-</span>
-<span class="nonterminal">aIdentifier</span>
-<span class="name">,</span>
-<span class="nonterminal">eIdentifier</span>
-<span class="optional">
-<span class="name">,</span>
- <span class="nonterminal">time</span>
-</span>
-<span class="nonterminal">optional-attribute-values</span>
-<span class="name">)</span><br/>
-</div>
+<section id="expression-Association">
+<h4>Association</h4>
 
-
-<div class="anexample">
-<pre class="codeexample">
-used(ex:pub2, ar3:0111)
-used(ex:pub2, ar3:0111, 2011-11-16T16:00:00)
-used(ex:u1, ex:pub2, ar3:0111)
-used(a1,e1,[ex:fct="load"])
-</pre>
-</div>
-
-</section>
-
-
-
-
-
-
-<section id="expression-ActivityAssociation">
-<h4>Activity Association</h4>
-
-
-<p>An activity association's text matches the <span class="nonterminal">activityAssociationExpression</span> productions of the grammar defined in this specification
+<p>An association's text matches the <span class="nonterminal">activityAssociationExpression</span> productions of the grammar defined in this specification
 document.</p>
 
 <div class='grammar'>
-<span class="nonterminal">activityAssociationExpression</span>&nbsp;::= 
+<span class="nonterminal">associationExpression</span>&nbsp;::= 
 <span class="name">wasAssociatedWith</span>
 <span class="name">(</span>
-<span class="optional"><span class="nonterminal">identifier</span>,</span>
-<span class="nonterminal">aIdentifier</span>,
-<span class="nonterminal">agIdentifier</span>
-<span class="optional">,<span class="nonterminal">eIdentifier</span></span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">aIdentifier</span>
+<span class="name">,</span> 
+( <span class="nonterminal">agIdentifier</span>  | <span class="name">-</span> )
+<span class="name">,</span> 
+( <span class="nonterminal">eIdentifier</span>  | <span class="name">-</span> )
 <span class="nonterminal">optional-attribute-values</span>
 <span class="name">)</span>
 </div>
@@ -650,103 +854,72 @@
 
 <div class="anexample">
 <pre class="codeexample">
-wasAssociatedWith(ex:pub2, w3:Consortium)
-wasAssociatedWith(ex:pub2, w3:Consortium  @ pr:rec-advance)
-wasAssociatedWith(ex:pub2, w3:Consortium  @ pr:rec-advance, [prov:role="funder"])
+wasAssociatedWith(ex:a1, -, ex:e1)
+wasAssociatedWith(ex:a1, ex:ag1, -)
+wasAssociatedWith(ex:a1, ex:ag1, ex:e1)
+wasAssociatedWith(ex:a1, ex:ag1, ex:e1, [ex:param1="a", ex:param2="b"])
+wasAssociatedWith(a, ex:a1, -, ex:e1)
+wasAssociatedWith(-, ex:a1, -, ex:e1)
+wasAssociatedWith(-, ex:a1, ex:ag1, -)
 </pre>
 </div>
 
+<p>Even though the production <span class="nonterminal">associationExpression</span> allows for expressions <span class="name">wasAssociatedWith(a, -, -)</span>  and <span class="name">wasAssociatiedWith(-, a, -, -)</span>, these expressions are not valid in PROV-N.</p>
 </section>
-
-<section id="expression-Start-End">
-<h4>Activity Start and End</h4>
-
-
-<p>Activity start and end texts match the <span class="nonterminal">startExpression</span> and <span class="nonterminal">endExpression</span> productions of the grammar defined in this
-specification document.
-</p>
-
-
-<div class='grammar'>
-<span class="nonterminal">startExpression</span>&nbsp;::= 
-<span class="name">wasStartedBy</span>
-<span class="name">(</span>
-<span class="optional"> <span class="nonterminal">identifier</span>,</span>
-<span class="nonterminal">aIdentifier</span>,
-<span class="nonterminal">agIdentifier</span>
-<span class="nonterminal">optional-attribute-values</span>
-<span class="name">)</span><br/>
-<span class="nonterminal">endExpression</span>&nbsp;::= 
-<span class="name">wasEndedBy</span>
-<span class="name">(</span>
-<span class="optional"> <span class="nonterminal">identifier</span>,</span>
-<span class="nonterminal">aIdentifier</span>,
-<span class="nonterminal">agIdentifier</span>
-<span class="nonterminal">optional-attribute-values</span>
-<span class="name">)</span>
-</div>
-
-
-</section>
-
-
-
-
-
-
-
 <section id="expression-responsibility">
-
-<h4>Responsibility Chain</h4>
-
-
+<h4>Responsibility</h4>
 
 <div class='grammar'>
 <span class="nonterminal">responsibilityExpression</span>&nbsp;::= 
 <span class="name">actedOnBehalfOf</span>
 <span class="name">(</span>
-<span class="optional"> <span class="nonterminal">identifier</span>,</span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
 <span class="nonterminal">agIdentifier</span>
 <span class="name">,</span>
 <span class="nonterminal">agIdentifier</span>
 <span class="name">,</span>
-<span class="optional"><span class="nonterminal">aIdentifier</span></span>
+( <span class="nonterminal">aIdentifier</span> | <span class="name">-</span> )
 <span class="nonterminal">optional-attribute-values</span>
 <span class="name">)</span>
 </div>
 
 <div class="anexample">
 <pre class="codeexample">
-actedOnBehalfOf(ag1,ag2)
-actedOnBehalfOf(ag1,ag2,a)
-actedOnBehalfOf(ag1,ag2,[prov:type="delegation"])
-actedOnBehalfOf(ag2,ag3,a,[prov:type="contract"])
+actedOnBehalfOf(ag1, ag2, -)
+actedOnBehalfOf(ag1, ag2, a)
+actedOnBehalfOf(ag1, ag2, -, [prov:type="delegation"])
+actedOnBehalfOf(ag2, ag3, a, [prov:type="contract"])
+actedOnBehalfOf(r, ag2, ag3, a, [prov:type="contract"])
+actedOnBehalfOf(-, ag1, ag2, -)
 </pre>
 </div>
 
+
 </section>
-
+</section>
+<section id="component3"> 
+<h3>Component 3: Derivations</h3>
 <section id="Derivation-Relation">
 <h4>Derivation</h4>
 
-
-
-<p>A derivation record's text matches the <span class='nonterminal'>derivationExpression</span> production.</p>
+<p>A derivation expression's text matches the <span class='nonterminal'>derivationExpression</span> production.</p>
 
 <div class='grammar'>
 <span class="nonterminal">derivationExpression</span>&nbsp;::= 
 <span class="name">wasDerivedFrom</span>
 <span class="name">(</span>
-<span class="optional"> <span class="nonterminal">identifier</span>,</span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
 <span class="nonterminal">eIdentifier</span>
 <span class="name">,</span>
 <span class="nonterminal">eIdentifier</span>
-<span class="name">,</span>
-<span class="nonterminal">aIdentifier</span>
+<span class="optional">
 <span class="name">,</span>
-<span class="nonterminal">gIdentifier</span>
+( <span class="nonterminal">aIdentifier</span> | <span class="name">-</span> )
 <span class="name">,</span>
-<span class="nonterminal">uIdentifier</span>
+( <span class="nonterminal">gIdentifier</span> | <span class="name">-</span> )
+<span class="name">,</span>
+( <span class="nonterminal">uIdentifier</span> | <span class="name">-</span> )
+</span>
 <span class="nonterminal">optional-attribute-values</span>
 <span class="name">)</span>
 </div>
@@ -754,36 +927,154 @@
 
 <div class="anexample">
 <pre class="codeexample">
-wasDerivedFrom(tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018)
+wasDerivedFrom(e2, e1)
 wasDerivedFrom(e2, e1, a, g2, u1)
+wasDerivedFrom(e2, e1, -, g2, u1)
+wasDerivedFrom(e2, e1, a, -, u1)
+wasDerivedFrom(e2, e1, a, g2, -)
+wasDerivedFrom(e2, e1, a, -, -)
+wasDerivedFrom(e2, e1, -, -, u1)
+wasDerivedFrom(e2, e1, -, -, -)
+wasDerivedFrom(d, e2, e1, a, g2, u1)
+wasDerivedFrom(-, e2, e1, a, g2, u1)
+</pre>
+</div>
+
+</section>
+<section id="expression-Revision">
+<h4>Revision</h4>
+
+<div class="grammar">
+<span class="nonterminal">revisionExpression</span>&nbsp;::= 
+<span class="name">wasRevisionOf</span>
+<span class="name">(</span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+( <span class="nonterminal">agIdentifier</span> | <span class="name">-</span> )
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+
+
+<div class="anexample">
+<pre class="codeexample">
+wasRevisionOf(tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018, -)
+wasRevisionOf(tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018, w3:Consortium)
+wasRevisionOf(id,tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018, w3:Consortium)
+wasRevisionOf(tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018, -)
+wasRevisionOf(id,tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018, -)
+wasRevisionOf(-,tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018, -)
 </pre>
 </div>
 
 
+</section>  <!-- end revision -->
+<section id="expression-quotation">
+<h4>Quotation</h4>
 
-<!--
-<p>In PROV-DM, the effective placeholder for an entity generation time is the <a>generation record</a>. The presence of 
-time information in imprecise derivation records is merely a convenience notation for a timeless derivation record and a generation record with this generation time information. </p>
+<p>A quotation expression's text matches the <span class="nonterminal">quotationExpression</span> production of the grammar.</p>
 
-<div class='syntax' id="derivation-time-elimination">
-<span class='conditional'>If</span> <span class="name">wasDerivedFrom(e2,e1,t,attrs)</span> holds, <span class='conditional'>then</span> the following records also hold:
-<span class="name">wasDerivedFrom(e2,e1,attrs)</span> and <span class="name">wasGeneratedBy(e2,t)</span>.
+<div class="grammar">
+<span class="nonterminal">quotationExpression</span>&nbsp;::=  
+<span class="name">wasQuotedFrom</span> 
+<span class="name">(</span> 
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span> 
+<span class="nonterminal">eIdentifier</span>
+<span class="optional">
+<span class="name">,</span> 
+( <span class="nonterminal">agIdentifier</span> | <span class="name">-</span> )
+<span class="name">,</span> 
+( <span class="nonterminal">agIdentifier</span> | <span class="name">-</span> )
+</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span> 
 </div>
 
 
+<div class="anexample">
+<pre class="codeexample">
+wasQuotedFrom(ex:blockQuote,ex:blog)
+wasQuotedFrom(ex:blockQuote,ex:blog,ex:Luc,ex:Paul)
+wasQuotedFrom(ex:blockQuote,ex:blog,-,ex:Paul)
+wasQuotedFrom(ex:blockQuote,ex:blog,ex:Luc,ex:Paul,[])
+wasQuotedFrom(ex:blockQuote,ex:blog, -, -)
+wasQuotedFrom(id,ex:blockQuote,ex:blog,ex:Luc,ex:Paul)
+wasQuotedFrom(-,ex:blockQuote,ex:blog,ex:Luc,-)
 
-<div class='pending'>Should derivation have a time? Which time? This is   <a href="http://www.w3.org/2011/prov/track/issues/43">ISSUE-43</a>.<em>This is now addressed in this text. Optional time in derivation is generation time. See also    <a href="http://www.w3.org/2011/prov/track/issues/205">ISSUE-205</a>.</em></div>
+</pre>
+</div>
 
--->
+</section>  <!-- end quotation -->
+
+
+<section id="expression-original-source">
+<h4>Original Source</h4>
+
+<p>An original source record's text matches the <span class="nonterminal">originalSourceExpression</span> production of the grammar.</p>
+
+<div class="grammar">
+<span class="nonterminal">originalSourceExpression</span>&nbsp;::=  
+<span class="name">hadOriginalSource</span> 
+<span class="name">(</span> 
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span> 
+<span class="nonterminal">eIdentifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span> 
+</div>
+
+
+<div class="anexample">
+<pre class="codeexample">
+hadOriginalSource(ex:e1, ex:e2)
+hadOriginalSource(ex:e1, ex:e2,[ex:param="a"])
+hadOriginalSource(-,ex:e1, ex:e2,[ex:param="a"])
+hadOriginalSource(-,ex:e1, ex:e2)
+</pre>
+</div>
+
+</section>  <!-- end original source -->
+<section id="expression-traceability">
+<h4>Traceability</h4>
+
+<p>A traceability expression's text matches the <span class="nonterminal">traceabilityExpression</span> production of the grammar.</p>
+
+
+<div class="grammar">
+<span class="nonterminal">traceabilityExpression</span>&nbsp;::= 
+<span class="name">tracedTo</span>
+<span class="name">(</span>
+<span class="optional">( <span class="nonterminal">identifier</span> | <span class="name">-</span> ) <span class="name">,</span> </span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">eIdentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+
+
+<div class="anexample">
+<pre class="codeexample">
+tracedTo(e2,e1)
+tracedTo(e2,e1,[ex:param="a"])
+tracedTo(id,e2,e1,[ex:param="a"])
+tracedTo(-,e2,e1)
+</pre>
+</div>
 
 </section>
-
-
-<section id="expression-alternate-specialization">
-
-<h4>Alternate  and Specialization</h4>
-
-
+</section>
+<section id="component4"> 
+<h3>Component 4: Alternate Entities</h3>
+<section id="expression-alternate">
+<h4>Alternate</h4>
 
 <p>An alternate relation's text matches the <span class="nonterminal">alternateExpression</span> production.</p>
 
@@ -804,7 +1095,11 @@
 </div>
 
 
-<p>A specialization relation's text matches the <span class="nonterminal">specializationExpression</span>production.</p>
+</section>
+<section id="expression-specialization">
+<h4>Specialization</h4>
+
+<p>A specialization relation's text matches the <span class="nonterminal">specializationExpression</span> production.</p>
 
 <div class='grammar'>
    <span class="nonterminal">specializationExpression</span>&nbsp;::=
@@ -822,15 +1117,260 @@
 </pre>
 </div>
 
+</section>
+</section>
 
+<section id="component5"> 
+<h3>Component 5: Collections</h3>
+
+<div class="note">To be checked: Grammar has not been implemented yet.</div>
+
+<section id="expression-collection-insertion">
+<h3>Insertion</h3>
+
+A Derivation-by-Insertion relation's text matches the <span class="nonterminal">derivationByInsertionFromExpression</span> production.</p>
+
+<div class="grammar">
+ <span class="nonterminal">derivationByInsertionFromExpression</span>&nbsp;::=  
+<span class="name">derivedByInsertionFrom</span> 
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">beforeIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">keyidentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">validentifier</span>
+<span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+  <span class="name">)</span>
+  <br>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+derivedByInsertionFrom(id, c1, c, "k1", v1)  
+derivedByInsertionFrom(id, c1, c, "k1", v1, [])  
+</pre>
+</div>
+
+
+</section>
+
+<section id="expression-collection-removal">
+<h3>Removal</h3>
+
+A Derivation-by-Removal relation's text matches the <span class="nonterminal">derivationByRemovalFromExpression</span> production.</p>
+
+<div class="grammar">
+ <span class="nonterminal">derivationByRemovalFromExpression</span>&nbsp;::=  
+<span class="name">derivedByRemovalFrom</span> 
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">beforeIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">keyidentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+  <span class="name">)</span>
+  <br>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+derivedByRemovalFrom(id, c1, c, "k1")  
+derivedByRemovalFrom(id, c1, c, "k1", [])
+  </pre>
+</div>
+
+</section>
+
+
+<section id="expression-collection-containment">
+<h3>Containment</h3>
+
+A Containment relation's  text matches the <span class="nonterminal">containedExpression</span> production.</p>
+
+<div class="grammar">
+ <span class="nonterminal">containedExpression</span>&nbsp;::=  
+<span class="name">contained</span> 
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">keyidentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">validentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+  <span class="name">)</span>
+  <br>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+contained(id, c, "k", v)
+contained(id, c, "k", v,[])  
+</pre>
+</div>
+
+</section>
+
+<section id="collection-convenience-relations">
+<h3>Convenience relations</h3>
+
+A  Derivation-by-Bulk-Insertion relation's  text matches the <span class="nonterminal">derivationByBulkInsertionFromExpression</span> production.</p>
+
+<div class="grammar">
+ <span class="nonterminal">derivationByBulkInsertionFromExpression</span>&nbsp;::=  
+<span class="name">derivedByBulkInsertionFrom</span> 
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">beforeIdentifier</span>
+ <span class="name">,</span>
+  <span class="name">{</span>
+  <span class="nonterminal">keyValuePairs</span>
+   <span class="name">}</span>
+<span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+  <span class="name">)</span>
+</div>
+
+<div class="anexample">
+  <pre class="codeexample">
+ derivedByBulkInsertionFrom(c1, c, {("k1", v1), ("k2", v2)})  
+ derivedByBulkInsertionFrom(c1, c, {("k1", v1), ("k2", v2)}), []
+</pre>
+</div>
+
+<p> A Derivation-by-Bulk-Removal relation's  text matches the <span class="nonterminal">derivationByBulkRemovalFromExpression</span> production.</p>
+
+  
+<div class="grammar">
+ <span class="nonterminal">derivationByBulkRemovalFromExpression</span>&nbsp;::=  
+<span class="name">derivedByRemovalFrom</span> 
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">beforeIdentifier</span>
+ <span class="name">,</span>
+  <span class="name">{</span>
+  <span class="nonterminal">keySet</span>
+   <span class="name">}</span>
+ <span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+  <span class="name">)</span>
+  <br>
+</div>
+
+<div class="anexample">
+<pre class="codeexample">
+   derivedByBulkRemovalFrom(c3, c1, {"k1", "k3"})               
+   derivedByBulkRemovalFrom(c3, c1, {"k1", "k3"}, [])               
+
+</pre>
+  </div>
+
+
+<p> A Bulk-Containment relation's  text matches the <span class="nonterminal">containedBulkExpression</span> production.</p>
+
+<div class="grammar">
+ <span class="nonterminal">containedBulkExpression</span>&nbsp;::=  
+<span class="name">contained</span> 
+ <span class="name">(</span>
+ <span class="optional"><span class="nonterminal">identifier</span>
+ <span class="name">,</span></span>
+<span class="nonterminal">afterIdentifier</span>
+ <span class="name">,</span>
+  <span class="name">{</span>
+  <span class="nonterminal">keyValuePairs</span>
+   <span class="name">}</span>
+<span class="nonterminal">validentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">optional-attribute-values</span>
+  <span class="name">)</span>
+  <br>
+</div>
+
+<div class="anexample">
+  <pre class="codeexample">
+   containedBulk(c3, {("k4", v4), ("k5", v5)})
+   containedBulk(c3, {("k4", v4), ("k5", v5)},[])  
+</pre>
+</div>
+
+  In the productions above, nonterminals <span class="nonterminal">keyValuePairs</span> and <span class="nonterminal">keySet</span> are defined as follows.
+
+
+  <div class="grammar">
+<span class="nonterminal">keyValuePairs</span> &nbsp;::= 
+<span class="name">(</span>
+    <span class="nonterminal">keyidentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">validentifier</span>
+    <span class="name">)</span>
+|
+<span class="name">(</span>
+  <span class="nonterminal">keyidentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">validentifier</span>
+<span class="name">)</span>
+  <span class="name">,</span>
+<span class="nonterminal">keyValuePairs</span>
+</div>
+
+  <div class="grammar">
+<span class="nonterminal">keySet</span> &nbsp;::= 
+    <span class="nonterminal">keyidentifier</span>
+|
+  <span class="nonterminal">keyidentifier</span>
+ <span class="name">,</span>
+<span class="nonterminal">keySet</span>
+</div>
 
 
 </section>
 
 
+</section>   <!-- end collections-->
+<section id="component6"> 
+<h3>Component 6: Annotations</h3>
+   <section id="expression-note"> 
+<h4>Note</h4>
+
+<div class="withPn">
+<p>A note's text matches the <span class="nonterminal">noteExpression</span> production.
+</p>
 
 
+<div class='grammar'>
+<span class="nonterminal">noteExpression</span>&nbsp;::= 
+<span class="name">note</span>
+<span class="name">(</span>
+<span class="nonterminal">identifier</span>
+<span class="nonterminal">optional-attribute-values</span>
+<span class="name">)</span>
+</div>
+</div>
 
+<div class="anexample">
+<pre class="codeexample">
+note(ann1,[ex:color="blue", ex:screenX=20, ex:screenY=30])
+</pre>
+</div>
+
+   </section> 
 
 <section id="expression-annotation">
 <h4>Annotation</h4>
@@ -846,7 +1386,6 @@
 <span class="nonterminal">identifier</span>
 <span class="name">,</span>
 <span class="nonterminal">nIdentifier</span>
-<span class="nonterminal">optional-attribute-values</span>
 <span class="name">)</span>
 </div>
 
@@ -858,9 +1397,30 @@
 </div>
 
 
-
+</section>
+<section  id="second-class-elements">
+<section id="expression-NamespaceDeclaration">
+</section>
+<section id="expression-identifier">
+</section>
+<section id="expression-attribute">
+<section id="expression-attribute-role">
+</section>
+<section id="expression-attribute-type">
+</section>
+<section id="expression-attribute-label">
+</section>
+<section id="expression-attribute-location">
 </section>
 </section>
+<section id="expression-value">
+</section>
+</section>
+</section>
+
+
+
+
 
 
 <section  id="subexpressions">
@@ -1011,14 +1571,6 @@
 </section>
 </section>
 
-<section id="common-relations"> 
-<h2>Common Relations</h2>
-
-<div class="note">
-TO ADD
-</div>
-</section>
-
 
 
 
@@ -1168,16 +1720,12 @@
 
 </section>
 
-<!-- no longer necessary to say that.
 
-<p>All the records in <span class="name">recs</span> are implictly wrapped in a default account, scoping all the record identifiers they declare directly, and constituting a toplevel
-account, in the hierarchy of accounts.  Consequently, every provenance record is always expressed in the context of an account, either explicitly in an asserted account, or implicitly in a
-container's default account.</p>
-
+<div id="glossary_div" class="remove">
+<!-- glossary loaded from glossary.js will be hooked up here,
+     class remove, will remove this element from the final output.
 -->
-
-
-
+</div>