--- 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/>