interim edit of collections sectioN
authorPaolo Missier <pmissier@acm.org>
Fri, 20 Jan 2012 09:16:26 +0000
changeset 1423 34b110edc35f
parent 1422 6f1037d11d5d
child 1424 5c78159bc626
interim edit of collections sectioN
model/ProvenanceModel.html
--- a/model/ProvenanceModel.html	Thu Jan 19 22:07:27 2012 +0000
+++ b/model/ProvenanceModel.html	Fri Jan 20 09:16:26 2012 +0000
@@ -3511,31 +3511,10 @@
 Because of the <strong>copy semantics</strong> interpretation of collection manipulation, one cannot have two assertions of the form:<br/>
 <span class="name">CollectionAfterInsertion(c2,c1, k1, v1, t1)</span><br/>
 <span class="name">CollectionAfterInsertion(c2,c1, k2, v2, t2)</span><br/>
-<em>within the same account.</em>, regardless of the values of <span class="name">k1, v1, k2, v2, t1, t2</span>.
+<em>within the same account</em>, regardless of the values of <span class="name">k1, k2, v1, v2, t1, t2</span>. This is because <span class="name">c2</span> is the result of exactly one insertion into <span class="name">c1</span>.  
 <p/>
 
- The <strong>set semantics</strong> intepretation means that a collection cannot contain two pairs with the same key. In practice, the following two assertions:<br/>
-<span class="name">CollectionAfterInsertion(c2,c1, k, v, t1)</span><br/>
-<span class="name">CollectionAfterInsertion(c3,c2, k, v', t2)</span><br/>
-are interpreted as follows:<br/>
- <span class="name">c2</span> was derived from <span class="name">c1</span> by adding pair <span class="name">(k,v)</span> to it (at time <span class="name">t1</span>).
-Then <span class="name">c3</span> was derived from <span class="name">c2</span> by replacing  value <span class="name">v</span> with value <span class="name">v'</span> for key <span
-class="name">k</span>.  Notice that, as an additional requirement, if both  <span class="name">t1, t2</span> are specified, then <span class="name">t2>t1</span> must hold.<p/>
-
-A set of assertions that involve these records makes it possible, potentially, to obtain the the state of a collection at a certain point  <span class="name">t</span> in time, by retrieving
-all the assertions that account for a sequence of changes to an original collections. Thus, the state of a collection can be reconstructed by means of a query (the specification of such
-query, however, is out of the scope of the PROV language).</br>  
-
-There are two caveats to the statement above.
-<ul>
-
-  <li>Firstly, for the reconstruted state of a collection to be complete, it is necessary to assert a starting point in time, when the collection begins to exist. 
-This is done by introducing the built-in type <span class="name">collection</span> for entities. Specifically, the assertion:</br>
- <span class="name">entity(e, [prov:type="collection"]</span>
-is interpreted to mean that <span class="name">e</span> is a collection. If nothing else is known about the contents of <span class="name">e</span>, then it is assumed to be an empty
-collection.<p/>
-
-<li>Secondly,  the <em>complete</em> state of a collection at a certain time may not be known, because there is no guarantee that all real insertion/deletion events have been recorded using
+Collections follow <strong>set semantics</strong> have been recorded using
 collection assertions (note that the problem of state completeness is common to other provenance assertions, and not specific to the case of collections or part-of relations).
 
 </ul>
@@ -3578,9 +3557,25 @@
 </pre>
 </div>
 
-
-
- A collection record is defined as follows.
+<p> An assertion CollectionAfterInsertion, written <span class="name"> CollectionAfterInsertion(collAfter, collBefore, key, value, [time])</span>, contains:</p>
+<ul>
+<li><em>entity</em>: an identifier <span class="name">collAfter</span> for the collection record representing the collection <em>after</em> the insertion; </li>
+<li><em>source</em>: an identifier <span class="name">collBefore</span>  for the collection record representing the collection <em>before</em> the insertion;</li>
+<li><em>source</em>: an identifier <span class="name">key</span>  for the key that has been inserted into <span class="name">collBefore</span></li>
+<li><em>source</em>: an identifier <span class="name">value</span>  for the value corresponding to the key that has been inserted into <span class="name">collBefore</span></li>
+<li><em>attributes</em>: an OPTIONAL <span class="name">time</span> at which the insertion was performed.</li>
+</ul>
+
+<p> An assertion CollectionAfterDeletion, written <span class="name"> CollectionAfterDeletion(collAfter, collBefore, key, [time])</span>, contains:</p>
+<ul>
+<li><em>entity</em>: an identifier <span class="name">collAfter</span> for the collection record representing the collection <em>after</em> the deletion; </li>
+<li><em>source</em>: an identifier <span class="name">collBefore</span>  for the collection record representing the collection <em>before</em> the deletion;</li>
+<li><em>source</em>: an identifier <span class="name">key</span>  for the key corresponding to the (key, value) pair that has been deleted from <span class="name">collBefore</span></li>
+<li><em>attributes</em>: an OPTIONAL <span class="name">time</span> at which the insertion was performed.</li>
+</ul>
+
+
+<p>In PROV-ASN, an collection record's text matches the <span class="nonterminal">collectionRecord</span> production of the grammar:</p>
 <div class='grammar'>
   <span class="nonterminal">collectionRecord</span>&nbsp;::=  
 <span class="nonterminal">collectionInsertionRecord</span>