--- a/model/ProvenanceModel.html Fri Jan 20 12:07:27 2012 +0000
+++ b/model/ProvenanceModel.html Fri Jan 20 12:20:55 2012 +0000
@@ -3585,7 +3585,7 @@
one can infer: <span class="name">c1==c2, k1==k2, v1==v</span>.<p/>
-<li> The state of a collection is only known to the extent that a chain of derivations starting from an empty collection can be found. It is understood that a set of assertions regarding a collection's evolution may be incomplete, and therefore so is the reconstructed state obtained by querying those assertions. For example:
+<li> The state of a collection is only known to the extent that a chain of derivations starting from an empty collection can be found. It is understood that a set of assertions regarding a collection's evolution may be incomplete, and therefore so is the reconstructed state obtained by querying those assertions. In general, all assertions reflect the asserter's partial knowledge of a sequence of data transformation events. In the particular case of collection evolution, in which the asserter <em>knows</em> that some of the state changes may have been missed, then the more generic <span class="name">wasDerivedFrom</span> relation should be used to signal that some updates may have occurred, which cannot be precisely asserted as insertions or removals. The following two examples illustrate this.
<div class="anexample">
<pre class="codeexample">
@@ -3599,7 +3599,22 @@
<span class="name">CollectionAfterInsertion(c2, c1, k2, v2) </span> // c2 includes { (k1,v1), (k2 v2) } where v2 is a collection with unknown state
</pre>
</div>
- In the example, the state of <span class="name">c2</span> is only partially known.
+ In the example, the state of <span class="name">c2</span> is only partially known because the collection is constructed from partially known other collections.
+
+<div class="anexample">
+<pre class="codeexample">
+ <span class="name">entity(c, [prov:type="emptyCollection"])</span> // <span class="name">e</span> is an empty collection
+ <span class="name">entity(k1).
+ <span class="name">entity(v1).
+ <span class="name">entity(k2).
+ <span class="name">entity(v2).
+
+ <span class="name">CollectionAfterInsertion(c1, c, k1, v1) </span> // c1 = { (k1,v1) }
+ <span class="name">wasDerivedFrom(c2, c1) </span> // the asserted knows that c2 is somehow derived from c1, but cannot assert the precise sequence of updates
+ <span class="name">CollectionAfterInsertion(c3, c2, k2, v2) </span>
+</pre>
+</div>
+Here <span class="name">c3</span> includes <span class="name">{ (k2 v2) }</span> but the earlier "gap" leaves uncertainty regarding <span class="name">(k1,v1)</span> (it may have been removed) or any other pair that may have been added as part of the derivation activities.
</ul>