--- 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> ::=
<span class="nonterminal">collectionInsertionRecord</span>