derivation
authorLuc Moreau <l.moreau@ecs.soton.ac.uk>
Wed, 07 Sep 2011 12:06:04 +0100
changeset 233 65eee668e176
parent 232 5a5160007189
child 234 4666de2770a6
derivation
model/ProvenanceModel.html
--- a/model/ProvenanceModel.html	Wed Sep 07 09:53:14 2011 +0100
+++ b/model/ProvenanceModel.html	Wed Sep 07 12:06:04 2011 +0100
@@ -317,12 +317,12 @@
 </p>
 
 <p>
-Derivations (construct described in <a href="#expression-Derivation">Section Derivation</a>): derivations express that an entity is derived from another.
+Derivations (construct described in <a href="#expression-Derivation">Section Derivation</a>): derivations express that an entity is derived from another.  The first two are expressed in their compact version, whereas the following two are expressed in their full version.
 <pre>
 wasDerivedFrom(e2,e1)
 wasDerivedFrom(e3,e2)
-wasDerivedFrom(e4,e2)
-wasDerivedFrom(e5,e3)
+wasDerivedFrom(e4,e2,pe2,attachment,in)
+wasDerivedFrom(e5,e3,pe4,attachment,in)
 </pre>
 </p>
 
@@ -708,12 +708,20 @@
 
 <p>A given entity can be generated at most by one process execution in the scope of a given <a href="#expression-Account">account</a>.
 The rationale for this constraint is as follows.
-If two process executions sequentially set different values to some attribute by means of two different generate events, then they generate distinct entities. Alternatively,  for two process executions to generate an entity simultaneously, they would require some synchronization by which they agree the entity is released for use; the end of this synchronization would constitute the actual generation of the entity, but is performed by a single process execution. </p>
-</p>
+If two process executions sequentially set different values to some attribute by means of two different generate events, then they generate distinct entities. Alternatively,  for two process executions to generate an entity simultaneously, they would require some synchronization by which they agree the entity is released for use; the end of this synchronization would constitute the actual generation of the entity, but is performed by a single process execution. This unicity constraint is formalized as follows.
+
+<div class='constraint' id='generation-unicity'>Given an entity denoted by <span class="name">e</span>, two process executions denoted by <span class="name">pe1</span> and <span class="name">pe2</span>, and two roles <span class="name">r1</span> and <span class="name">r2</span>,
+<span class='conditional'>if</span> the expressions <span class="name">wasGeneratedBy(e,pe1,r1)</span> and <span class="name">wasGeneratedBy(e,pe2,r2)</span> exist in the scope of a given account,
+<span class='conditional'>then</span> <span class="name">pe1</span>=<span class="name">pe2</span>  and <span class="name">r1</span>=<span class="name">r2</span>.
+</div> 
+
+
+A generation event SHOULD have some visibility on the attributes of the generated entity, as expressed by the following constraint.
+
 
 <div class='constraint' id='generation-affects-attributes'><a name="PIL:0002">Given a process execution <span class="name">pe</span>, entity <span class="name">e</span>, role <span class="name">r</span>, and optional time <span class="name">t</span>,
-if the assertion <span class="name">wasGeneratedBy(e,pe,r)</span>
-or <span class="name">wasGeneratedBy(e,pe,r,t)</span> holds, the values of <em>some</em> of <span class="name">e</span>'s
+<span class='conditional'>if</span> the assertion <span class="name">wasGeneratedBy(e,pe,r)</span>
+or <span class="name">wasGeneratedBy(e,pe,r,t)</span> holds, <span class='conditional'>then</span> the values of <em>some</em> of <span class="name">e</span>'s
 attributes are determined by the activity denoted by <span class="name">pe</span> and the
 entities used by <span class="name">pe</span>.
 Only some (possibly none) of the attributes values  may be determined
@@ -721,8 +729,10 @@
 asserted.</a>  [<a href="../ontology/ProvenanceFormalModel.html#PIL:0002">PIL:0002</a>]
 </div>
 
-<div class='constraint' id='generation-pe-ordering'><a name="PIL:0003">Given an assertion <span class="name">wasGeneratedBy(x,pe,r)</span> or <span class="name">wasGeneratedBy(x,pe,r,t)</span>, one can
-infer that the generation of the thing denoted by <span class="name">x</span> precedes the end
+The assertion of a generation event implies ordering of events in the world.
+
+
+<div class='constraint' id='generation-pe-ordering'><a name="PIL:0003"><span class='conditional'>If</span> an assertion <span class="name">wasGeneratedBy(x,pe,r)</span> or <span class="name">wasGeneratedBy(x,pe,r,t)</span>, <span class='conditional'>then</span> generation of the thing denoted by <span class="name">x</span> precedes the end
 of <span class="name">pe</span> and follows the beginning of <span class="name">pe</span>.</a> [<a href="../ontology/ProvenanceFormalModel.html#PIL:0003">PIL:0003</a>]
 </div> 
 
@@ -880,16 +890,25 @@
 
 <p>In its full form, a process-execution linked derivation expression, noted <span class="name">wasDerivedFrom(e2,e1,pe,r2,r1)</span> in the Provenance Abstract Syntax Notation:
 <ul>
-<li> refers to an entity identified by <span class="name">e2</span>, which is a representation of the used characterized thing;
-<li> refers to an entity identified by <span class="name">e1</span>, which is a representation of the generated characterized thing;
+<li> refers to an entity identified by <span class="name">e2</span>, which is a representation of the generated characterized thing;
+<li> refers to an entity identified by <span class="name">e1</span>, which is a representation of the used characterized thing;
 <li> refers to a process execution identified by <span class="name">pe</span>, which is a representation of the activity using and generating the above characterized things;
 <li> contains a role <span class="name">r2</span>, which is the function of <span class="name">e2</span> during its generation by <span class="name">pe</span> .
 <li> contains a role <span class="name">r1</span>, which is the function of <span class="name">e1</span> during its use by <span class="name">pe</span>.
 </ul>
-This assertion expresses that the activity represented by process execution <span class="name">pe</span>, by
-using the thing represented by <span class="name">e1</span> with role <span class="name">r1</span> derived the
-thing represented by entity <span class="name">e2</span> and generated it with
-role <span class="name">r2</span>.
+
+
+<p>The following derivation assertions
+<pre class="example">
+wasDerivedFrom(e5,e3,pe4,attachment,in)
+wasDerivedFrom(e3,e2)
+</pre>
+</p>
+state the existence of process-linked derivations;
+the first expresses that the activity represented by process execution <span class="name">pe4</span>, by
+using the thing represented by <span class="name">e3</span> with role <span class="name">in</span> derived the
+thing represented by entity <span class="name">e5</span> and generated it with
+role <span class="name">attachment</span>. The second is similar for <span class="name">e3</span> and <span class="name">e2</span>, but it leaves the process execution and associated roles implicit.
 </p>
 
 <p>
@@ -903,19 +922,19 @@
 </div>
 
 
-<p>For convenience, PIL allows for a compact, process-execution linked derivation assertion, written <span class="name">wasDerivedFrom(e2,e1)</span>, which:
+<p>For convenience, PIDM allows for a compact, process-execution linked derivation assertion, written <span class="name">wasDerivedFrom(e2,e1)</span> in the Provenance Abstract Syntax Notation, which:
 <ul>
-<li> refers to an entity <span class="name">e2</span>, denoting the generated characterized thing;
-<li> refers to an entity <span class="name">e1</span>, denoting the used characterized thing.
+<li> refers to an entity identified by <span class="name">e2</span>, which is a representation of the generated characterized thing;
+<li> refers to an entity identified by <span class="name">e1</span>, which is a represenation of the used characterized thing.
 </ul>
 </p>
 
 
 <p>The compact version has the same meaning as the fully formed process-execution linked derivation, except that a process execution is known to exist, though it does not need to be asserted.
 This is formalized by the following inference rule, referred to as <em>process execution introduction</em>:<br/>
-<div class='inference'>
+<div class='constraint' id="derivation-process-execution">
   <a name="PIL:0009">
-If <span class="name">wasDerivedFrom(e2,e1)</span> holds, then there exists a process execution <span class="name">pe</span>, and roles <span class="name">r1</span>,<span class="name">r2</span>,
+<span class='conditional'>If</span> <span class="name">wasDerivedFrom(e2,e1)</span> holds, <span class='conditional'>then</span> there exists a process execution <span class="name">pe</span>, and roles <span class="name">r1</span>,<span class="name">r2</span>,
 such that:
   <span class="name">wasGeneratedBy(e2,pe,r2)</span> and <span class="name">used(pe,e1,r1)</span>. [<a href="../ontology/ProvenanceFormalModel.html#PIL:0009">PIL:0009</a>]
 </div></p>
@@ -924,10 +943,10 @@
 
 
 <p>If <span class="name">e2</span> is derived from <span class="name">e1</span>, then 
-this means that the thing represented by <span class="name">e1</span> has an influence on the thing represented by <span class="name">e2</span>, which is captured by a dependency between their attribute values; it also implies temporal ordering. These are specified as follows:</p>
+this means that the thing represented by the entity identified by <span class="name">e1</span> has an influence on the thing represented by the entity identified <span class="name">e2</span>, which is captured by a dependency between their attribute values; it also implies temporal ordering. These are specified as follows:</p>
 
 <div class='constraint' id='derivation-attributes'><a name="PIL:0007">Given a process execution <span class="name">pe</span>, entities <span class="name">e1</span> and <span class="name">e2</span>, roles <span class="name">r1</span> and <span class="name">r2</span>, the assertion <span class="name">wasDerivedFrom(e2,e1,pe,r2,r1)</span>
-or <span class="name">wasDerivedFrom(e2,e1)</span> holds, <span class='conditional'>if and only if</span>:
+or <span class="name">wasDerivedFrom(e2,e1)</span> holds, <span class='conditional'>if and only if</span>
  the values of some attributes
 of <span class="name">e2</span> are partly or fully determined by the values of some
 attributes of <span class="name">e1</span>.</a> [<a
@@ -958,29 +977,23 @@
 of <span class="name">e1</span>.
 </p>
 
-<p>
-<pre class="example">
-wasDerivedFrom(e5,e3)
-</pre>
-</p>
 
 <p>A further inference is permitted from the compact version of derivation: 
-<div class='inference'>
+<div class='constraint' id='derivation-use'>
 <a name="PIL:0011">Given a process execution <span class="name">pe</span>, entities <span class="name">e1</span> and <span class="name">e2</span>, and role <span class="name">r2</span>,
-if <span class="name">wasDerivedFrom(e2,e1)</span> and <span class="name">wasGeneratedBy(e2,pe,r2)</span> hold, then there exists a role <span class="name">r1</span>,
+<span class='conditional'>if</span> <span class="name">wasDerivedFrom(e2,e1)</span> and <span class="name">wasGeneratedBy(e2,pe,r2)</span> hold, <span class='conditional'>then</span> there exists a role <span class="name">r1</span>,
 such that <span class="name">used(pe,e1,r1)</span> also holds.</a>
   [<a href="../ontology/ProvenanceFormalModel.html#PIL:0011">PIL:0011</a>]
 </div>
-This inference is justified by the fact that <span class="name">e2</span> is generated by at most one process execution. Hence,  this process execution is also the one that used <span class="name">e1</span>.
+This inference is justified by the fact that <span class="name">e2</span> is generated by at most one process execution in a given account (see <a href="#generation-unicity">generation-unicity</a>). Hence,  this process execution is also the one that used <span class="name">e1</span>. 
 </p>
 
-<div class='note'>There is a suggestion by Simon that this notion of derivation is only meaningful in the context of an account. <a href="http://lists.w3.org/Archives/Public/public-prov-wg/2011Aug/0101.html">See email</a>.  It is not clear it is the case anymore. However, the inference above is only meaning full if unicity of generation hold.</div>
 
 
 <p>We note that the "symmetric" inference, does not hold.
 From <span class="name">wasDerivedFrom(e2,e1)</span> and <span class="name">used(pe,e1)</span>, one cannot
 derive <span class="name">wasGeneratedBy(e2,pe,r2)</span> because <span class="name">e1</span> may be used by
-many process execution, not all of them generating <span class="name">e2</span>.</p>
+many process executions, not all of them generating <span class="name">e2</span>.</p>