simplifying common relations
authorLuc Moreau <l.moreau@ecs.soton.ac.uk>
Thu, 09 Feb 2012 23:12:15 +0000
changeset 1514 805fb9f89de6
parent 1513 487377a1c492
child 1515 446758b83990
simplifying common relations
model/working-copy/towards-wd4.html
--- a/model/working-copy/towards-wd4.html	Thu Feb 09 15:37:12 2012 +0000
+++ b/model/working-copy/towards-wd4.html	Thu Feb 09 23:12:15 2012 +0000
@@ -145,9 +145,6 @@
 
 <div class="buttonpanel"> 
 <form action="#"><p> 
-<input id="hide-bnf" onclick="set_display_by_class('div','grammar','none'); set_display_by_id('hide-bnf','none');  set_display_by_id('show-bnf','');" type="button" value="Hide Grammar" /> 
-<input id="show-bnf" onclick="set_display_by_class('div','grammar',''); set_display_by_id('hide-bnf','');  set_display_by_id('show-bnf','none');" style="display: none" type="button"
-value="Show Grammar" /> 
 <input id="hide-asn" onclick="set_display_by_class('div','withAsn','none');set_display_by_class('span','withAsn','none'); set_display_by_id('hide-asn','none'); set_display_by_id('show-asn','');" type="button"
 value="Hide ASN" /> 
 <input id="show-asn" onclick="set_display_by_class('div','withAsn',''); set_display_by_class('span','withAsn','');  set_display_by_id('hide-asn',''); set_display_by_id('show-asn','none');" style="display: none"
@@ -766,7 +763,14 @@
 trustworthiness of some of the assertions made. Likewise, an interactive visualization component may want to enrich a set of provenance assertions with information helping reproduce their
 visual representation. To help with inter-operability, PROV-DM introduces a simple annotation mechanism allowing anythig that is identifiable to be associated with notes.</p>
 
-<p>A <dfn id="dfn-note">note</dfn> is a set of attribute-value pairs, whose meaning is application specific.</p> 
+<p>A <dfn id="dfn-note">note</dfn><span class="withAsn">, noted <span class="name">note(id, [ attr1=val1, ...])</span> in PROV-ASN,</span> contains:</p>
+<ul>
+<li><em>id</em>: an identifier identifying the note;</li>
+<li><em>attributes</em>: a set of attribute-value pairs, whose meaning is application specific.</li>
+</ul>
+
+
+
 
 
 <p>A separate PROV-DM construct is used to associate a note with something that is identifiable (see <a href="#record-annotation">Section on annotation</a>). A given note may be associated with
@@ -780,7 +784,7 @@
 to help the rendering of the assertion it is associated with, by
 specifying its color and its position on the screen.</p>
 <pre class="codeexample">
-note(ann1,[ex:color="blue", ex:screenX=20, ex:screenY=30])
+note(n1,[ex:color="blue", ex:screenX=20, ex:screenY=30])
 hasAnnotation(g1,n1)
 </pre>
 <p>The note is associated with an assertion <span class="name">g1</span> previously introduced (<a title="annotation record">hasAnnotation</a> is 
@@ -824,13 +828,13 @@
 <h4>Generation</h4>
 
 
-<p><a title="dfn-Generation">Generation</a><span class="withAsn">, written <span class="name">wasGeneratedBy(id,e,a,t,attrs)</span> in PROV-ASN,</span> has the following components:</p>
+<p><dfn id="dfn-Generation">Generation</dfn><span class="withAsn">, written <span class="name">wasGeneratedBy(id,e,a,t,attrs)</span> in PROV-ASN,</span> has the following components:</p>
 <ul>
 <li><em>id</em>:  an OPTIONAL identifier identifying the generation;</li> 
 <li><em>entity</em>:  an identifier identifying a created entity; </li>
 <li><em>activity</em>:  an OPTIONAL identifier identifying the activity that creates the entity;</li>
 
-<li><em>time</em>: an OPTIONAL "generation time" <span class="name">t</span>, the time at which the entity was completely created;</li>
+<li><em>time</em>: an OPTIONAL "generation time", the time at which the entity was completely created;</li>
 
 <li><em>attributes</em>:  an OPTIONAL set of attribute-value pairs that describes the modalities of generation of this entity by this activity.</li>
 </ul>
@@ -884,7 +888,7 @@
 
 
 
-<p><a dfn="dfn-Usage">Usage</a><span class="withAsn">, written <span class="name">used(id,a,e,t,attrs)</span> in PROV-ASN,</span> has the following constituents:</p>
+<p><dfn id="dfn-Usage">Usage</dfn><span class="withAsn">, written <span class="name">used(id,a,e,t,attrs)</span> in PROV-ASN,</span> has the following constituents:</p>
 <ul>
 <li><em>id</em>:  an OPTIONAL identifier identifying the usage;</li> 
 <li><em>activity</em>: an identifier for the consuming activity;</li>
@@ -1611,7 +1615,7 @@
 
 
 <p>
-A control ordering assertion<span class="withAsn", written as 
+A control ordering assertion<span class="withAsn">, written as 
 <span class="name">wasStartedBy(a2,a1, attrs)</span> in PROV-ASN,</span> contains: </p>
 <ul>
 <li><em>id</em>:  an OPTIONAL identifier of the relation;</li> 
@@ -1645,15 +1649,15 @@
 <section id="record-Revision">
 <h3>Revision</h3>
 
-<p> A <dfn id="dfn-Revision">revision relation</dfn> is a particular case of  <a href="#Derivation-Relation">derivation</a>, used to state that  an entity is a revised version of another. The agent who is responsible for making the revision may optionally be specified.</p>
-
-<p> A revision assertion, written <span class="name">wasRevisionOf(e2,e1,ag,attrs)</span> in PROV-ASN, contains:</p>
+<p> A <dfn id="dfn-Revision">revision relation</dfn> is a particular case of  <a href="#Derivation-Relation">derivation</a> that states that an entity is a revised version of another. The agent who is responsible for making the revision may optionally be specified.</p>
+
+<p> A revision assertion<span class="withAsn">, written <span class="name">wasRevisionOf(e2,e1,ag,attrs)</span> in PROV-ASN,</span> contains:</p>
 <ul>
 <li><em>id</em>: an OPTIONAL identifier for the relation;</li> 
 <li><em>newer</em>: the identifier of the revised  entity;
 <li><em>older</em>: the identifier of the older entity;
-<li><em>responsibility</em>: an OPTIONAL  identifier for the agent who approved that former entity is a variant of the latter.;
-<li><em>attributes</em>: an OPTIONAL set <span class="name">attrs</span> of attribute-value pairs to further describe this record.</li>
+<li><em>responsibility</em>: an OPTIONAL  identifier for the agent who approved that newer entity is a variant of the older;
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs to further describe this record.</li>
 </ul>
 
 
@@ -1686,12 +1690,12 @@
 
 <p>An <dfn>attribution relation</dfn> states that an entity is attributed to an agent. More precisely, asserting that an entity  <span class="name">e</span> is attributed to agent  <span class="name">ag</span> means that <span class="name">e</span> was generated by some activity <span class="name">a</span>, which in turn was associated to agent  <span class="name">ag</span>. Thus, this relation is useful when the activity is not known, or irrelevant.
 
-<p> An attribution assertion, written <span class="name"> wasAttributedTo(e,ag,attr)</span> in PROV-ASN, contains the following elements:</p>
+<p> An attribution assertion<span class="withAsn">, written <span class="name"> wasAttributedTo(e,ag,attr)</span> in PROV-ASN,</span> contains the following elements:</p>
 <ul>
 <li><em>id</em>: an OPTIONAL identifier for the relation;</li> 
-<li><em>entity</em>: an entity identifier <span class="name">e</span>;</li>
-<li><em>agent</em>: an agent identifier <span class="name">ag</span>. This is the agent who the entity is ascribed to;</li>
-<li><em>attributes</em>: an OPTIONAL set <span class="name">attrs</span> of attribute-value pairs to further describe the properties of the relation.</li>
+<li><em>entity</em>: an entity identifier;</li>
+<li><em>agent</em>: the identifier of the agent whom the entity is ascribed to;</li>
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
 </ul>
 
 <div class="anexample">
@@ -1702,7 +1706,7 @@
 <pre class="codeexample">
 agent(ag,[prov:type="QualityController"])
 entity(e,[prov:type="document"])
-wasAttributedTo(e,ag, )
+wasAttributedTo(e,ag)
 </pre>
 </div>
 
@@ -1714,27 +1718,17 @@
 
 <div class="note">I find that quotation is really a misnomer. This expands into derivation with attribution, in what sense is the derived entity a "quote" of the original?  . The agent that is quoted is particularly obscure. It does not seem to be involved in the quoting at all.  Why isn't quoting an activity with the quoting agent associated with it? [PM]</div>
 
-<p> A <dfn>quotation relation</dfn> is a particular case of  <a href="#Derivation-Relation">derivation</a>, used to state that entity <span class="name">e2</span> is derived from entity <span class="name">e1</span> by copying, or "quoting", parts of it.</p>
-
-<p>  A quotation assertion, written <span class="name"> wasQuotedFrom(e2,e1,ag2,ag1,attrs)</span> in PROV-ASN, contains:</p>
+<p> A <dfn>quotation relation</dfn> is a particular case of  <a href="#Derivation-Relation">derivation</a> that states that entity <span class="name">e2</span> is derived from entity <span class="name">e1</span> by copying, or "quoting", parts of it.</p>
+
+<p>  A quotation assertion<span class="withAsn">, written <span class="name"> wasQuotedFrom(id,e2,e1,ag2,ag1,attrs)</span> in PROV-ASN,</span> contains:</p>
 <ul>
-<li><em>quote</em>:  an identifier  <span class="name">e2</span> of the entity that represents the quote (the partial copy);
-<li><em>quoted</em>: an identifier  <span class="name">e1</span> of the entity being quoted;
-<li><em>quoterAgent</em>: an OPTIONAL identifier <span class="name">ag2</span> of the agent who is doing the quoting;
-<li><em>quotedAgent</em>: an OPTIONAL identifier <span class="name">ag1</span> of the agent that is quoted;
-<li><em>attributes</em>: an OPTIONAL set <span class="name">attrs</span> of attribute-value pairs to further describe the properties of the relation.</li>
-
-</ul>
-
-<p>Further considerations:<p/>
-
-<ul>
-  <li>When both agents involved in the relation are known, an assertion of the form <span class="name"> wasQuotedFrom(e2,e1,ag2,ag1,attrs)</span> expands into the following:
-<pre>
-wasDerivedFrom(e2,e1)
-wasAttributedTo(e2,ag2)
-wasAttributedTo(e1,ag1)
-</pre>
+<li><em>id</em>: an OPTIONAL identifier for the relation;</li> 
+<li><em>quote</em>:  an identifier  of the entity that represents the quote (the partial copy);
+<li><em>quoted</em>: an identifier  of the original entity being quoted;
+<li><em>quoterAgent</em>: an OPTIONAL identifier of the agent who is doing the quoting;
+<li><em>quotedAgent</em>: an OPTIONAL identifier of the agent that is quoted;
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
+
 </ul>
 
 </section>  <!-- end quotation -->
@@ -1756,13 +1750,13 @@
 
 <div class="note"> I find this relation confusing. Please add an example. I wouldn't really know when to use this. [PM]</div>
 
-<p> An <dfn>original source relation</dfn> is a particular case of <a href="#Derivation-Relation">derivation</a>, used to state that an entity <span class="name">e2</span> (derived) was originally part of some other entity <span class="name">e1</span> (the original source).</p>
+<p> An <dfn>original source relation</dfn> is a particular case of <a href="#Derivation-Relation">derivation</a> that states that an entity <span class="name">e2</span> (derived) was originally part of some other entity <span class="name">e1</span> (the original source).</p>
 
 <p> An original source assertion, written <span class="name"> hadOriginalSource(e2,e1,attrs)</span>, contains:</p>
 <ul>
-<li><em>derived</em>: an identifier <span class="name">e2</span> for the derived entity; </li>
-<li><em>source</em>: an identifier <span class="name">e1</span> for the original source entity;</li>
-<li><em>attributes</em>: an OPTIONAL set <span class="name">attrs</span> of attribute-value pairs to further describe the properties of the relation.</li>
+<li><em>derived</em>: an identifier for the derived entity; </li>
+<li><em>source</em>: an identifier  for the original source entity;</li>
+<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
 </ul>
 
 </section>  <!-- end original source -->
@@ -1775,56 +1769,53 @@
 <strong>Collection relations</strong> address the need to describe the evolution of entities that have a collection structure, that is, which may contain other entities. Specifically this section introduces a new built-in type for entities, called <span class="name">collection</span>, and two relations to describe the effect of adding elements to, and removing elements from, a collection entity.
 The intent of these relations and entity types is to capture the <em>history of changes that occurred to a collection</em>. </p>
 
-<p>The <span class="name">collection</span> entity type denotes an abstract data type consisting of a <strong>set of key-value pairs</strong>, often referred to as a <strong>map</strong>.
-
+<p>A collection is an entity that has a logical internal structure consisting of key-value pairs, often referred to as a map.
 More precisely, the following entity types are introduced:
 
 <ul>
-  <li> <span class="name">prov:type="Collection"%%xsd:QName</span>  denotes that a collection. An entity of this type can participate in insertion and removal relations;
-
-  <li><span class="name">prov:type="emptyCollection"%%xsd:QName</span> denotes an empty collection.
+  <li> <span class="name">Collection</span>  denotes an entity of type collection, i.e. an entity that  can participate in insertion and removal relations;
+
+  <li><span class="name">EmptyCollection</span> denotes an empty collection.
 </ul>
 
-The following relations are used to describe the effect of adding or removing a new pair to (resp. from) a collection:
+The following relations relate a collection <span class="name">c1</span> with a collection <span class="name">c2</span> obtainted after adding or removing a new pair to (resp. from) <span class="name">c1</span>:
 
 <ul>
-  <li>Insertion assertion <span class="name">CollectionAfterInsertion(c2,c1, k, v)</span> states that collection  <span class="name">c2</span> represents the new state of collection <span class="name">c1</span>,
-following the insertion of pair <span class="name">(k,v)</span> into  <span class="name">c1</span>;</li>
-
-<li>  Removal assertion <span class="name">CollectionAfterRemoval(c2,c1, k)</span> states that collection  <span class="name">c2</span> represents the  new state of collection <span class="name">c1</span>, following the removal of the pair corresponding to key  <span class="name">k</span> from  <span class="name">c1</span>.</li>
+  <li>Insertion assertion <span class="name">CollectionAfterInsertion(c2,c1, k, v)</span> states that  <span class="name">c2</span> is the state of the collection
+following the insertion of pair <span class="name">(k,v)</span> into collection  <span class="name">c1</span>;</li>
+
+<li>  Removal assertion <span class="name">CollectionAfterRemoval(c2,c1, k)</span> states that  <span class="name">c2</span> is  the  state of the collection following the removal of the pair corresponding to key  <span class="name">k</span> from  <span class="name">c1</span>.</li>
 
 </ul>
 
 <div class="anexample">
 <pre class="codeexample">
    entity(c, [prov:type="EmptyCollection"])    // e is an empty collection
-   entity(k1)
    entity(v1)
-   entity(k2)
    entity(v2)
    entity(c1, [prov:type="Collection"])
    entity(c2, [prov:type="Collection"])
   
-  CollectionAfterInsertion(c1, c, k1, v1)       // c1 = { (k1,v1) }
-  CollectionAfterInsertion(c2, c1, k2, v2)      // c2 = { (k1,v1), (k2 v2) }
-  CollectionAfterRemoval(c3, c2, k1)            // c3 = { (k2,v2) }
+  CollectionAfterInsertion(c1, c, "k1", v1)       // c1 = { ("k1",v1) }
+  CollectionAfterInsertion(c2, c1, "k2", v2)      // c2 = { ("k1",v1), ("k2", v2) }
+  CollectionAfterRemoval(c3, c2, k1)              // c3 = { ("k2",v2) }
 </pre>
 </div>
 
 
-<p> An assertion CollectionAfterInsertion, written <span class="name"> CollectionAfterInsertion(collAfter, collBefore, key, value)</span>, contains:</p>
+<p> An assertion CollectionAfterInsertion<span class="withAsn">, written <span class="name"> CollectionAfterInsertion(collAfter, collBefore, key, value)</span>,</span> contains:</p>
 <ul>
-<li><em>entity</em>: an identifier <span class="name">collAfter</span> for the collection <em>after</em> the insertion; </li>
-<li><em>source</em>: an identifier <span class="name">collBefore</span>  for the collection <em>before</em> the insertion;</li>
-<li><em>source</em>: an identifier <span class="name">key</span>  for the key that has been inserted into <span class="name">collBefore</span></li>
-<li><em>source</em>: an identifier <span class="name">value</span>  for the value corresponding to the key that has been inserted into <span class="name">collBefore</span></li>
+<li><em>after</em>: an identifier for the collection <em>after</em> insertion; </li>
+<li><em>before</em>: an identifier for the collection <em>before</em> insertion;</li>
+<li><em>key</em>: the key that has been inserted</li>
+<li><em>value</em>: an identifier  for the value that has been inserted with the key.</li>
 </ul>
 
 <p> An assertion CollectionAfterDeletion, written <span class="name"> CollectionAfterDeletion(collAfter, collBefore, key)</span>, contains:</p>
 <ul>
-<li><em>entity</em>: an identifier <span class="name">collAfter</span> for the collection  <em>after</em> the deletion; </li>
-<li><em>source</em>: an identifier <span class="name">collBefore</span>  for the collection <em>before</em> the deletion;</li>
-<li><em>source</em>: an identifier <span class="name">key</span>  for the key corresponding to the (key, value) pair that has been deleted from <span class="name">collBefore</span></li>
+<li><em>after</em>: an identifier  for the collection  <em>after</em> the deletion; </li>
+<li><em>before</em>: an identifier  for the collection <em>before</em> the deletion;</li>
+<li><em>key</em>: the key corresponding to the (key, value) pair that has been deleted from the collection.</li>
 </ul>
 
 
@@ -1838,24 +1829,24 @@
 
 <li>Insertion and removal relations are a particular case of <a href="#Derivation-Relation">derivation</a>.</p>
 
- <li>This representation of a collection's evolution makes no assumption regarding the underlying data structure used to store and manage collections. In particular, no assumptions are needed regarding the mutability of a data structure that is subject to updates.   In fact, the state of a collection (i.e., the set of key-value pairs it contains) at a given point in a sequence of operations is never stated explicitly. Rather, it can be obtained by querying the chain of derivation assertions involving insertions and removals. Entity type <span class="name">prov:type="emptyCollection"</span> can be used in this context as it marks the start of a sequence of collection operations.</p>
-
+ <li>This representation of a collection's evolution makes no assumption regarding the underlying data structure used to store and manage collections. In particular, no assumptions are needed regarding the mutability of a data structure that is subject to updates.   In fact, the state of a collection (i.e., the set of key-value pairs it contains) at a given point in a sequence of operations is never stated explicitly. Rather, it can be obtained by querying the chain of derivation assertions involving insertions and removals. Entity type <span class="name">emptyCollection</span> can be used in this context as it marks the start of a sequence of collection operations.</p>
+
+<div class='note'>Delete further items. Some of them are constraints which belong to part 2.</div>
+
+<!-- 
   <li> One can have multiple assertions regarding the state of a collection following a <em>set</em> of insertions, for example:<br/>
 <span class="name">CollectionAfterInsertion(c2,c1, k1, v1)</span><br/>
 <span class="name">CollectionAfterInsertion(c2,c1, k2, v2)</span><br/>
   <span class="name">...</span><br/>
-This is interpreted as <em>" <span class="name">c2</span> is the state that results from inserting  <span class="name">(k1, v1)</span>,  <span class="name">(k2, v2)</span> etc. into  <span class="name">c1</span></em></li></p>
+This is interpreted as <em>" <span class="name">c2</span> is the state that results from inserting  <span class="name">(k1, v1)</span>,  <span class="name">(k2, v2)</span> etc. into  <span class="name">c1</span>"</em></li></p>
 
 <li> It is possible to have multiple derivations from a single root collection, possibly by different asserters, as shown in the following example.
 
 <div class="anexample">
 <pre class="codeexample">
   entity(c, [prov:type="EmptyCollection"])    // e is an empty collection
-  entity(k1)
   entity(v1)
-  entity(k2)
   entity(v2)
-  entity(k3)
   entity(v3)
   entity(c1, [prov:type="Collection"])
   entity(c2, [prov:type="Collection"])
@@ -1866,6 +1857,8 @@
   CollectionAfterInsertion(c3, c1, k3,v3)       // c3 = { (k1,v1),  (k3,v3) }
 </pre>
 </div>
+
+<div class='note'>Asserter not defined</div>
 </li></p>
 
 
@@ -1890,9 +1883,7 @@
 <div class="anexample">
 <pre class="codeexample">
   entity(c, [prov:type="collection"])    // e is a collection, possibly not empty
-  entity(k1)
   entity(v1)
-  entity(k2)
   entity(v2, [prov:type="collection"])    // v2 is a collection
 
   CollectionAfterInsertion(c1, c, k1, v1)       // c1 <em>includes</em> { (k1,v1) } but may contain additional unknown pairs
@@ -1904,9 +1895,7 @@
 <div class="anexample">
 <pre class="codeexample">
   entity(c, [prov:type="emptyCollection"])    // e is an empty collection
-  entity(k1)
   entity(v1)
-  entity(k2)
   entity(v2)
 
   CollectionAfterInsertion(c1, c, k1, v1)       // c1 = { (k1,v1) }
@@ -1915,7 +1904,7 @@
 </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.</li></p>
-
+-->
 </ul>