fixed paste gremlins in collections
authorPaolo Missier <pmissier@acm.org>
Wed, 21 Mar 2012 12:26:06 +0000
changeset 1953 564ba6d8b7da
parent 1952 b468571dab93
child 1954 e810b4f73529
fixed paste gremlins in collections
model/working-copy/wd5-prov-dm-components.html
--- a/model/working-copy/wd5-prov-dm-components.html	Wed Mar 21 11:49:12 2012 +0000
+++ b/model/working-copy/wd5-prov-dm-components.html	Wed Mar 21 12:26:06 2012 +0000
@@ -1934,7 +1934,7 @@
 
 The following relations allow for insertion and removal assertions involving a set of key-value pairs..
 
-<p> A  Derivation-by-Bulk-Insertion relation <span class="withPn">, written <span class="pnExpression"> derivedByBulkInsertionFrom(id, collAfter, collBefore, key-value-set, attrs)</span>,</span> contains:</p>
+<p> A  <strong>Derivation-by-Bulk-Insertion</strong> relation <span class="withPn">, written <span class="pnExpression"> derivedByBulkInsertionFrom(id, collAfter, collBefore, key-value-set, attrs)</span>,</span> contains:</p>
 <ul>
 <li><span class='attribute'>id</span>:  an OPTIONAL identifier identifying the relation;</li>
 <li><span class='attribute'>after</span>: an identifier for the collection <em>after</em> insertion; </li>
@@ -1943,7 +1943,7 @@
 <li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
 </ul>
 
-<p> A Derivation-by-Bulk-Removal relation, written <span class="pnExpression"> derivedByBulkRemovalFrom(id, collAfter, collBefore, key-set, attrs)</span>, contains:</p>
+<p> A <strong>Derivation-by-Bulk-Removal</strong> relation, written <span class="pnExpression"> derivedByBulkRemovalFrom(id, collAfter, collBefore, key-set, attrs)</span>, contains:</p>
 <ul>
 <li><span class='attribute'>id</span>:  an OPTIONAL identifier identifying the relation;</li>
 <li><span class='attribute'>after</span>: an identifier  for the collection  <em>after</em> the deletion; </li>
@@ -1953,34 +1953,6 @@
 </ul>
 
 
-<p> A Bulk-Containment relation, written <span class="pnExpression"> containedBulk(id, coll, key-value-set, attrs)</span>, contains:</p>
-<ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier identifying the relation;</li>
-<li><span class='attribute'>after</span>: an identifier  for the collection whose members are asserted; </li>
-<li><span class='attribute'>key-value-set</span>: a set of key-value pairs contained in the collection, of the form {(key_1, value_1), ..., (key_n, value_n)}</li>
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
-</ul>
-
-<div class="anexample">
-<pre class="codeexample">
-   entity(c, [prov:type="EmptyCollection"])    // e is a collection, with unknown content
-  
-   entity(v1)
-   entity(v2)
-   derivedByBulkInsertionFrom(c1, c, {("k1", v1), ("k2", v2)})  
-   derivedByInsertionFrom(c2, c1, "k3", v3)                 
-   derivedByBulkRemovalFrom(c3, c1, {"k1", "k3"})               
-
-   containedBulk(c3, {("k4", v4), ("k5", v5)})  
-</pre>
-  From this set of assertions, we conclude:
-  <pre class="codeexample">
-   c =  {  }
-   c1  = { ("k1", v1) ("k2", v2)}
-   c2  = { ("k1", v1) ("k2", v2), ("k3", v3)}
-   c3  = { ("k2", v2), ("k4", v4), ("k5", v5)}
-  </pre>
-</div>
 
 </section> <!-- bulk ops -->
 
@@ -1993,7 +1965,7 @@
 <span class="name">contained(c,k, v)</span> iff there exists a collection <span class="name">c0</span>  such that <span class="name">derivedByInsertionFrom(c, c0, k, v)</span>.     
 
 
-<p> A Containment relation, written <span class="pnExpression"> contained(id, coll, key, values, attrs)</span>, contains:</p>
+<p> A <strong>Containment</strong> relation, written <span class="pnExpression"> contained(id, coll, key, values, attrs)</span>, contains:</p>
 <ul>
 <li><span class='attribute'>id</span>:  an OPTIONAL identifier identifying the relation;</li>
 <li><span class='attribute'>after</span>: an identifier  for the collection whose members are asserted; </li>
@@ -2030,6 +2002,36 @@
   one would conclude that, based on these assertions,  <span class="name">c1 = {("k1", v1) ("k2", v2), ("k3",v3)}</span>.
 </div>
 
+<p> A <strong>Bulk-Containment</strong> relation, written <span class="pnExpression"> containedBulk(id, coll, key-value-set, attrs)</span>, contains:</p>
+<ul>
+<li><span class='attribute'>id</span>:  an OPTIONAL identifier identifying the relation;</li>
+<li><span class='attribute'>after</span>: an identifier  for the collection whose members are asserted; </li>
+<li><span class='attribute'>key-value-set</span>: a set of key-value pairs contained in the collection, of the form {(key_1, value_1), ..., (key_n, value_n)}</li>
+<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
+</ul>
+
+<div class="anexample">
+<pre class="codeexample">
+   entity(c, [prov:type="EmptyCollection"])    // e is a collection, with unknown content
+  
+   entity(v1)
+   entity(v2)
+   derivedByBulkInsertionFrom(c1, c, {("k1", v1), ("k2", v2)})  
+   derivedByInsertionFrom(c2, c1, "k3", v3)                 
+   derivedByBulkRemovalFrom(c3, c1, {"k1", "k3"})               
+
+   containedBulk(c3, {("k4", v4), ("k5", v5)})  
+</pre>
+  From this set of assertions, we conclude:
+  <pre class="codeexample">
+   c =  {  }
+   c1  = { ("k1", v1) ("k2", v2)}
+   c2  = { ("k1", v1) ("k2", v2), ("k3", v3)}
+   c3  = { ("k2", v2), ("k4", v4), ("k5", v5)}
+  </pre>
+</div>
+
+
 </section>  <!-- Containment -->
 
 
@@ -2046,7 +2048,39 @@
   entity(c, [prov:type="collection"])    // c is a collection, possibly not empty
   entity(v1)
   entity(v2, [prov:type="collection"])    // v2 is a collection
-</pre></div>
+
+ derivedByInsertionFrom(c1, c, k1, v1)       
+   derivedByInsertionFrom(c2, c1, k2, v2)    
+ </pre>
+     From this set of assertions, we conclude:
+   <pre class="codeexample">
+    c1 includes (k1,v1) but may contain additional unknown pairs
+    c2 includes (k1,v1), (k2 v2) (and possibly more pairs), 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 because the collection is constructed from partially known other collections.
+ 
+ <div class="anexample">
+ <pre class="codeexample">
+   entity(c, [prov:type="emptyCollection"])    // c is an empty collection
+   entity(v1)
+   entity(v2)
+   entity(c1, [prov:type="collection"])    
+   entity(c2, [prov:type="collection"])    
+   entity(c3, [prov:type="collection"])    
+ 
+   derivedByInsertionFrom(c1, c, k1, v1)       
+   wasDerivedFrom(c2, c1)                       
+   derivedByInsertionFrom(c3, c2, k2, v2)       
+ </pre>
+     From this set of assertions, we conclude:
+   <pre class="codeexample">
+    c1 = { (k1,v1) }
+    c2 is somehow derived from c1, but the precise sequence of updates is unknown
+    c3  includes  (k2 v2) but the earlier "gap" leaves uncertainty regarding  (k1,v1) <br/>  (it may have been removed) or any other pair that may have been added as part of the derivation activities.
+   </pre>
+ </div>
 
 Further considerations: <p/>