prov-dictionary constraints
authorLuc Moreau <l.moreau@ecs.soton.ac.uk>
Fri, 29 Jun 2012 13:52:29 +0100
changeset 3527 5b485e2836de
parent 3526 df422d9b57b8
child 3528 175f338a41a8
prov-dictionary constraints
model/prov-constraints-dictionaries-old.html
--- a/model/prov-constraints-dictionaries-old.html	Fri Jun 29 13:51:46 2012 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,185 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
-<html> <head>
-<title></title>
-</head>
-
-<body>
-<h1></h1>
-
-
-<section id="dictionary-constraints">
-<h2>Dictionary Constraints</h2>
-
-
-  <div class="note">
-    As resolved at F2F3, the material in this section goes, if
-    anywhere, into the PROV-COLLECTIONS note.
-  </div>
-
-<hr>
-  
-<p id='membership-as-insertion_text'>Membership is a convenience notation, since it can be expressed in terms of an insertion into some  dictionary. The membership definition is formalized by <a class="rule-ref" href="#membership-as-insertion"><span/></a>.</p>
-
-<div class='definition' id='membership-as-insertion'>
-<p>
- <span class="name">memberOf(d, {(k1, v1), ...})</span> holds
-<span class='conditional'>IF AND ONLY IF</span> there exists a dictionary <span class="name">d0</span>, such that
-<span class="name">derivedByInsertionFrom(d, d0, {(k1, v1), ...})</span>.</p>
-</div>
-
-<p>
-
-<hr>
-
-<p id='dictionary-unique-derivation_text'>A dictionary may be obtained by insertion or removal, or said to satisfy the membership relation.
-To provide an interpretation of dictionaries, PROV-DM 
- restricts one dictionary to be involved in a single derivation by insertion or removal, or to one membership relation.
-PROV-DM does not provide an interpretation for statements that consist of two (or more) insertion, removal, membership relations that result in the same dictionary.</p>
-
-
-
-<p>The following constraint ensures unique derivation.</p>
-
-
-<div class='note'> The following constraint is unclear.</div>
-<div class='constraint' id='dictionary-unique-derivation'>
-<p>A dictionary MUST NOT be derived through multiple insertions, removal,
-  or membership relations. </p>
-</div>
-
-<div class="anexample">
-Consider the following statements about three dictionaries.
-  <pre class="codeexample">
-entity(d1, [prov:type='prov:Dictionary'])
-entity(d2, [prov:type='prov:Dictionary'])
-entity(d3, [prov:type='prov:Dictionary'])
-
-
-derivedByInsertionFrom(d3, d1, {("k1", e1), ("k2", e2)})
-derivedByInsertionFrom(d3, d2, {("k3", e3)})
-</pre>
-<p>There is no interpretation for such statements since <span class="name">d3</span> is derived multiple times by insertion.</p>
-</div>
-
-
-<div class="anexample">
-<p>As a particular case, dictionary <span class="name">d</span> is derived multiple times from the same <span class="name">d1</span>. </p>
-<pre class="codeexample">
-derivedByInsertionFrom(id1, d, d1, {("k1", e1), ("k2", e2)})
-derivedByInsertionFrom(id2, d, d1, {("k3", e3), ("k4", e4)})
-</pre>
-<p>The interpretation of such statements is also unspecified. </p>
-<p>To describe the insertion of the 4 key-entity pairs, one would instead write:</p>
-<pre class="codeexample">
-derivedByInsertionFrom(id1, d, d1, {("k1", e1), ("k2", e2), ("k3", e3), ("k4", e4)})
-</pre>  
-</div>
-
-The same is true for any combination of insertions, removals, and membership relations:
-<div class="anexample">
-<p>The following statements</p>
-<pre class="codeexample">
-derivedByInsertionFrom(d, d1, {("k1", e1)})
-derivedByRemovalFrom(d, d2, {"k2"})
-</pre>
-have no interpretation.
-Nor have the following:
-<pre class="codeexample">
-derivedByInsertionFrom(d, d1, {("k1", e1)})
-memberOf(d, {"k2",e2})
-</pre>
-</div>
-
-
-
-<section id="dictionary-branching">
-<h4>Dictionary branching</h4>
-
-It is allowed to have multiple derivations from a single root dictionary, as long as the resulting entities are distinct, as shown in the following example.
-
-<div class="anexample">
-<pre class="codeexample">
-entity(d0, [prov:type='prov:EmptyDictionary'])    // d0 is an empty dictionary
-entity(d1, [prov:type='prov:Dictionary'])
-entity(d2, [prov:type='prov:Dictionary'])
-entity(d3, [prov:type='prov:Dictionary'])
-entity(e1)
-entity(e2)
-entity(e3)
-
-derivedByInsertionFrom(d1, d0, {("k1", e1)})      
-derivedByInsertionFrom(d2, d0, {("k2", e2)})       
-derivedByInsertionFrom(d3, d1, {("k3", e3)})       
-</pre>
-From this set of statements, we conclude:
-<pre class="codeexample">
-  d1 = { ("k1", e1) }
-  d2 = { ("k2", e2) }
-  d3 = { ("k1", e1), ("k3", e3)}
-</pre>
-</div>
-
-</section>
-
-  
-
-<section id="dictionaries-and-derivation">
-
-  
-<h4>Dictionaries and Weaker Derivation Relation</h4>
-
-<p>Since a
-set of statements regarding a dictionary's evolution may be
-incomplete, so is the reconstructed state obtained by querying those
-statements. In general, all statements reflect partial knowledge regarding a sequence of data transformation events. In the particular case of dictionary evolution, in which some of the state changes may have been missed, the more generic derivation relation should be used to signal that some updates may have occurred, which cannot be expressed as insertions or removals. The following  example illustrates this.</p>
-
-
- 
- <div class="anexample">
-In the example, the state of <span class="name">d2</span> is only partially known because the dictionary is constructed from partially known other dictionaries.
- <pre class="codeexample">
-entity(d0, [prov:type='prov:EmptyDictionary'])    // d0 is an empty dictionary
-entity(d1, [prov:type='prov:Dictionary'])    
-entity(d2, [prov:type='prov:Dictionary'])    
-entity(d3, [prov:type='prov:Dictionary'])    
-entity(e1)
-entity(e2)
-
-derivedByInsertionFrom(d1, d0, {("k1", e1)})       
-wasDerivedFrom(d2, d1)                       
-derivedByInsertionFrom(d3, d2, {("k2", e2)})       
- </pre>
-From this set of statements, we conclude:
-<ul>
-<li>    <span class="name">d1 = { ("k1", e1) }</span>
-<li>    <span class="name">d2</span> is somehow derived from <span class="name">d1</span>, but the precise sequence of updates is unknown
-<li>    <span class="name">d3</span>  includes  <span class="name">("k2", e2)</span> but the earlier "gap" leaves uncertainty regarding  <span class="name">("k1", e1)</span>  (it may have been removed) or any other pair that may have been added as part of the derivation activities.
-</ul>
- </div>
-
-</section>
-
-
-<div class='note'>
-  Do the insertion/removal derivation steps imply wasDerivedFrom,
-  wasVersionOf, alternateOf?
-  </div>
-  
-
-  
-<section id="dictionaries-and-contents">
-
-  
-<h4>Dictionaries and Contents</h4>
-
-<div class="note">
-Axiomatisation of dictionaries to be expressed here. See <a href="./working-copy/wd6-collections-constraints.html">here</a>.
-</div>
-</section>
- 
-</section> <!-- dictionary-constraints -->
-
-<hr>
-<address></address>
-<!-- hhmts start --> Last modified: Thu Jun 28 23:35:34 CDT 2012 <!-- hhmts end -->
-</body> </html>