* Revised constraints to address my minor comments
authorJames Cheney <jcheney@inf.ed.ac.uk>
Fri, 13 Apr 2012 12:44:38 +0100
changeset 2284 f25b9ac6f798
parent 2283 621c82d35855
child 2286 f48c54eb0561
* Revised constraints to address my minor comments
model/extra.css
model/images/constraints2.svg
model/working-copy/extra.css
model/working-copy/wd5-prov-dm-constraints-revised.html
--- a/model/extra.css	Thu Apr 12 22:42:11 2012 +0100
+++ b/model/extra.css	Fri Apr 13 12:44:38 2012 +0100
@@ -157,6 +157,30 @@
     padding:    3px 1em;
 }
 
+.definition {
+    padding:    1em;
+    margin: 1em 0em 0em;
+    border: 1px solid #777;
+    background: #fff;
+}
+
+.definition[id]::before {
+    content:    "Definition: " attr(id);
+    width:  380px; 
+}
+
+
+.definition::before {
+    content:    "Definition";
+    display:    block;
+    width:  150px;
+    margin: -1.5em 0 0.5em 0;
+    font-weight:    bold;
+    border: 1px solid #000;
+    background: #fff;
+    padding:    3px 1em;
+}
+
 
 .deprecatedconstraint {
     padding:    1em;
--- a/model/images/constraints2.svg	Thu Apr 12 22:42:11 2012 +0100
+++ b/model/images/constraints2.svg	Fri Apr 13 12:44:38 2012 +0100
@@ -1862,7 +1862,7 @@
            y="138.64082"
            x="624.41888"
            id="tspan3217-8-7-5-4-4"
-           sodipodi:role="line">end of of a</tspan></text>
+           sodipodi:role="line">end of a</tspan></text>
       <path
          transform="matrix(1,0,0,0.68177752,405.57801,145.82825)"
          d="m 143.99446,116.88141 -34.79061,20.08637 0,-40.172738 34.79061,20.086368 z"
--- a/model/working-copy/extra.css	Thu Apr 12 22:42:11 2012 +0100
+++ b/model/working-copy/extra.css	Fri Apr 13 12:44:38 2012 +0100
@@ -158,6 +158,9 @@
 }
 
 
+
+
+
 .deprecatedconstraint {
     padding:    1em;
     margin: 1em 0em 0em;
--- a/model/working-copy/wd5-prov-dm-constraints-revised.html	Thu Apr 12 22:42:11 2012 +0100
+++ b/model/working-copy/wd5-prov-dm-constraints-revised.html	Fri Apr 13 12:44:38 2012 +0100
@@ -112,7 +112,9 @@
           // editors, add as many as you like
           // only "name" is required
           editors:  [
-              { name: "James Cheney" },
+              { name: "James Cheney", url:
+          "http://homepages.inf.ed.ac.uk/jcheney", company:
+          "University of Edinburgh" },
               { name: "Paolo Missier", url: "http://www.cs.ncl.ac.uk/people/Paolo.Missier",
                 company: "Newcastle University" },
               { name: "Luc Moreau", url: "http://www.ecs.soton.ac.uk/~lavm/",
@@ -156,11 +158,13 @@
 PROV-DM, the PROV data model, is a data model for provenance that describes the entities, people and activities involved in producing a piece of data or thing. PROV-DM is structured in six components, dealing with: (1) entities and activities, and the time at which they were created, used, or ended; (2) agents bearing responsibility for entities that were generated and actities that happened; (3) derivations between entities; (4) properties to link entities that refer to a same thing; (5) collections of entities, whose provenance can itself be tracked; (6) a simple annotation mechanism.</p>
 
 
-<p>
-  This document introduces a
- further set of concepts underpinning the PROV-DM data model and defines constraints that well-structured provenance descriptions should follow. These constraints help provide an interpretation for provenance descriptions.  They are useful for readers who develop applications that generate provenance or reason over provenance.
-</p>
-    </section> 
+<p> This document introduces a further set of concepts underpinning
+  the PROV-DM data model and defines <i>inferences</i> that are
+  allowed on provenance descriptions and <i>validity constraints</i>
+  that well-structured provenance descriptions should follow. These
+  inferences and constraints are useful for readers who develop
+  applications that generate provenance or reason over provenance.
+  </p> </section>
 
 <section id="sotd">
 <h4>PROV Family of Specifications</h4>
@@ -188,7 +192,13 @@
 
 
 <h4>Fourth Public Working Draft</h4>
-<p>This is the fourth public release of the PROV-DM document. Following feedback, the Working Group has decided to reorganize this document substantially, separating the data model, from its contraints, and the notation used to illustrate it. The PROV-DM release is synchronized with the release of the PROV-O, PROV-PRIMER, PROV-N, PROV-DM-CONSTRAINTS documents. We are now making clear what the entry path to the PROV family of specifications is.</p>
+<p>This is the fourth public release of the PROV-DM
+document. Following feedback, the Working Group has decided to
+reorganize this document substantially, separating the data model,
+from its contraints, and the notation used to illustrate it. The
+PROV-DM release is synchronized with the release of the PROV-O,
+PROV-PRIMER, PROV-N, PROV-DM-CONSTRAINTS documents. @@TODO: Describe
+the order of reading the documents.</p>
 </section>
 
 
@@ -341,7 +351,7 @@
 </p>
 
 <p>An <dfn id="dfn-generation-event">entity generation event</dfn> is the <a title="event">instantaneous event</a> that marks the  final instant of an entity's creation timespan, after which
-it is no longer available for use.</p>
+it is available for use.</p>
 
 <p>An <dfn id="dfn-usage-event">entity usage event</dfn> is the <a title="event">instantaneous event</a> that marks the first instant of an entity's consumption timespan by an activity.</p>
 
@@ -374,26 +384,26 @@
 timeline. The actual mapping is not in scope of this
 specification. Likewise, whether this timeline is formed of a single
 global timeline or whether it consists of multiple Lamport's style
-clocks is also beyond this specification.  It is anticipated
-that <a>follows</a> and <a>precedes</a> correspond to some ordering
-over this timeline.
+clocks is also beyond this specification.  The <a>follows</a> and
+<a>precedes</a> orderings of events should be consistent with the
+ordering of their associated times
+over these timelines.
 </p>
 
 
-<p>This specification introduces a set of "temporal interpretation"
-rules allowing ordering constraints between  <a title="event">instantaneous event</a> to inferred from
-provenance descriptions.  According to such temporal interpretation,
-descriptions MUST satisfy such constraints.  We note that the
-actual verification of such ordering constraints is outside the
-scope of this specification. </p>
-
-<p>PROV-DM also allows for time observations to be inserted in specific
-descriptions, for each recognized <a title="event">instantaneous event</a> introduced
-in this specification.  The presence of a time observation for a
-given <a title="event">instantaneous event</a> fixes the mapping of this <a title="event">instantaneous event</a> to the
-timeline. It can also help with the verification of associated
-ordering constraints (though, again, this verification is outside the
-scope of this specification).
+<p>This specification introduces a set of <i>event ordering constraints</i>
+between  <a title="event">instantaneous events</a> associated with 
+provenance descriptions.  According to such temporal interpretations,
+descriptions MUST satisfy such constraints.  </p>
+
+<p>PROV-DM also allows for time observations to be inserted in
+specific descriptions, for each recognized <a
+ title="event">instantaneous event</a> introduced in this
+specification.  The presence of a time observation for a given <a
+ title="event">instantaneous event</a> fixes the mapping of this <a
+ title="event">instantaneous event</a> to the timeline. It can also
+help with the verification of associated ordering constraints (though,
+again, this verification is outside the scope of this specification).
 </p>
 
 
@@ -405,25 +415,46 @@
 
 
     <section id='section-attributes'> 
-<h4>Attributes in Entities and Beyond </h4>
+<h4>Entities and Attributes</h4>
 
 <p>When we talk about things in the world in natural language and even when we assign identifiers, we are often imprecise in ways that make it difficult to clearly and unambiguously report
 provenance: a resource with a URL may be understood as referring to a report available at that URL, the version of the report available there today, the report independent of where it is
-hosted over time, etc.</p>
-
-<p>From a provenance viewpoint, it is important to identify a "<em>partial state</em>" of something, i.e. something with some aspects that have been fixed, so that it becomes possible to express its provenance, and what causes that thing, with these specific aspects to be as such. </p>
-
-<p>It is the purpose of attributes in PROV-DM to help fix some aspect of entities.
+hosted over time, etc.
+However, to write precise descriptions of the provenance of things
+that change over time, we need ways of disambiguating which versions
+of things we are talking about.  
+</p>
+
+<p>
+<!--From a provenance viewpoint, it is important to identify a
+<em>partial state</em> of something, i.e. something with some
+aspects that have been fixed, so that it becomes possible to express
+its provenance, and what causes that thing, with these specific
+aspects.-->
+
+To describe the provenance of things that can change over time,
+PROV-DM uses the concept of <i>entities</i> with fixed attributes.  An
+entity encompasses a part of a thing's history during which some of the
+attributes are fixed.  An entity can thus be thought of as a part of a
+thing with some associated partial state.
+</p>
+
+<!--<p>Attributes in PROV-DM describe some aspects of entities.
 Indeed, we previously defined 
 entities as things one wants to provide provenance for;
-we refine this definition as follows, using attribute-values to describe entities' "partial states", and linking them to the very existence of entities.</p>
+we refine this definition as follows, using attribute-values to describe entities' partial states, and linking them to the very existence of entities.</p>
+-->
 
 <p>
-An <dfn>entity</dfn> is a thing one wants to provide provenance for and whose situation in the world is described by some attribute-value pairs. An entity's attribute-value pairs are specified when the entity description is created and remain unchanged. An entity's attribute-value pairs are expected to describe the entity's situation and (partial) state  during an entity's characterization interval, which  is defined as the period comprised between its <a title="entity generation event">generation event</a> and its <a title="entity invalidation event">invalidation event</a>.</p>
+An <dfn>entity</dfn> is a thing one wants to provide provenance for
+and whose situation in the world is described by some fixed attributes. An entity's attributes pairs are expected to describe the entity's situation and (partial) state  during an entity's characterization interval, which  is defined as the period between its <a title="entity generation event">generation event</a> and its <a title="entity invalidation event">invalidation event</a>.</p>
 
 <p>An entity fixes some aspects of a thing and its situation in the
-world. An alternative entity may fix other aspects, and its provenance
-may be different.</p>
+world. A different entity (perhaps representing a different user or
+system perspective) may fix other aspects of the same thing, and its provenance
+may be different.  Different entities that are aspects of the same
+thing are called <em>alternate</em>, and the PROV-DM relations of
+specialization and alternate can be used to link such entities.</p>
 
 
 
@@ -432,7 +463,7 @@
 
 <div class="anexample" id="a-report-example">
 Different users may take different perspectives on a resource with
-a URL. For each perspective, an entity may be expressed:
+a URL. For each perspective, an entity may be expressed as:
 <ul>
 <li>a report available at a URL: fixes the nature of the thing, i.e. a document, and its location; </li>
 <li>the version of the report available there today: fixes its version number, contents, and its date;</li>
@@ -446,10 +477,26 @@
 </ul>
 </div>
 
-<p>We do not assume that any entity is more important than any other; in fact, it is possible to describe the processing that occurred for the report to be commissioned, for
-individual versions to be created, for those versions to be published at the given URL, etc., each via a different entity with attribute-value pairs that fix some aspect of the report appropriately.</p>
-
-<p>Attributes are not restricted to entities, but they belong to a variety of PROV-DM objects, including activity, generation, usage, start, end, communication, attribution, association, responsibility, and derivation. Each object has its duration interval (potentially collapsing to a single time point), and attribute-value pairs for a given object, are expected to be descriptions that hold for the object's duration.</p>
+<p>We do not assume that any entity is a better or worse description of
+reality than any other.  That is, we do not assume an absolute ground truth with
+respect to which we can judge correctness or completeness of
+descriptions.  In fact, it is possible to describe the processing that occurred for the report to be commissioned, for
+individual versions to be created, for those versions to be published at the given URL, etc., each via a different entity with attribute-value pairs that fix some aspects of the report appropriately.</p>
+
+<p>Besides entities, a variety of other PROV-DM objects have
+attributes, including activity, generation, usage, start, end,
+communication, attribution, association, responsibility, and
+derivation. Each object has an associated duration interval (which may
+be a single time point), and attribute-value pairs for a given object
+are expected to be descriptions that hold for the object's duration.
+</p>
+<p>
+However, the attributes of entities have special meaning because they
+are considered to be fixed aspects
+of underlying, changing things.  This means, for example, that
+if two entities have overlapping lifetimes and they have some
+attributes in common, those attributes SHOULD match.  @@TODO:
+Constraints for this?</p>
 </section>
 
 
@@ -480,8 +527,8 @@
 
 <p>
 Sometimes, inferences about the world can be made from descriptions
-conformant to the PROV-DM data model. When this is the case, this
-specification defines such inferences, allowing new descriptions
+conformant to the PROV-DM data model. This
+specification defines some such inferences, allowing new descriptions
 to be inferred from existing ones. Hence, descriptions of the world
 can result either from direct assertion or from inference 
 by application of inference rules defined by this specification.
@@ -572,8 +619,11 @@
 <li>In order to describe something over several intervals, it is required to create multiple entities, each with its own identifier. This allow potential dependencies between the various entities to be expressed.  
 </li>
 
-<li>There is no assumption that the set of attributes is complete and that the attributes are independent or orthogonal of each other.</li>
-
+<li>There is no assumption that the set of attributes is complete, nor
+that the attributes are independent or orthogonal of each other.</li>
+<li>There is no assumption that the attributes of an entity uniquely
+identify it.  Two different entities that are aspects of different
+things can have the same attributes.</li>
 <li>A characterization interval may collapse into a single instant.</li>
 </ul>
 
@@ -593,7 +643,8 @@
 
 
 <p>An activity is delimited by its <a title="activity start event">start</a> and its <a title="activity end event">end</a> events; hence, it occurs over
-an interval delimited by two <a title="event">instantaneous events</a>. However, an activity need not mention time information, nor duration, because they may not be known.
+an interval delimited by two <a title="event">instantaneous
+events</a>. However, an activity record need not mention start or end time information, because they may not be known.
 An activity's attribute-value pairs are expected to describe the activity's situation during its interval, i.e. an interval between two instantaneous events, namely its <a title="activity start event">start</a> event and its <a title="activity end event">end</a> event.
 </p>
 
@@ -625,7 +676,8 @@
 <p>A <dfn id="dfn-Generation">generation</dfn> is an instantaneous world <a title="entity generation event">event</a>, the completed creation of a new
 entity by an activity. This entity becomes available for usage after this <a title="event">instantaneous
 event</a>. This entity did not exist before creation. 
- This <a title="event">instantaneous event</a> encompasses a description of the modalities of generation of this entity by this activity, by means of key-value pairs.</p> 
+Generation events can have attributes that describe how the entity was
+generated by the activity..</p> 
 
 
 
@@ -723,17 +775,17 @@
 
 <p>Communication is formally defined as follows.</p>
 
-<div class='constraint' id='wasInformedBy-Definition'>Given two activities identified by <span class="name">a1</span> and <span class="name">a2</span>, 
+<div class='definition' id='wasInformedBy-Definition'>Given two activities identified by <span class="name">a1</span> and <span class="name">a2</span>, 
  <span class="name">wasInformedBy(a2,a1)</span>
 holds, <span class='conditional'>if and only if</span>
  there is an entity  with some identifier <span class="name">e</span> and some sets of attribute-value pairs <span class="name">attrs1</span> and <span class="name">attrs2</span>,
-such that <span class="name">wasGeneratedBy(e,a1,-,attrs1)</span> and <span class="name">used(a2,e,-,attrs2)</span> hold.
+such that <span class="name">wasGeneratedBy(-,e,a1,-,attrs1)</span> and <span class="name">used(-,a2,e,-,attrs2)</span> hold.
 </div>
 
 
 <p>
 <div class="interpretation-forward">
-For the interpretation of an information flow ordering, see <a href="#wasInformedBy-ordering">wasInformedBy-ordering</a>.
+For the constraints on  ordering of communication events, see <a href="#wasInformedBy-ordering">wasInformedBy-ordering</a>.
 </div>
 
 
@@ -770,21 +822,21 @@
 
 <p>Start of <span class="name">a2</span> by activity <span class="name">a1</span> is specified as follows.</p>
 
-<div class='constraint' id='wasStartedBy'>Given two activities with identifiers <span class="name">a1</span> and <span class="name">a2</span>, 
+<div class='definition' id='wasStartedBy'>Given two activities with identifiers <span class="name">a1</span> and <span class="name">a2</span>, 
  <span class="name">wasStartedBy(a2,a1)</span>
 holds <span class='conditional'>if and only if</span>
  there exist an entity with some identifier <span class="name">e</span> 
 and some attributes  <span class="name">gAttr</span> and  <span class="name">sAttr</span>,
 such that
- <span class="name">wasGeneratedBy(e,a1,-,gAttr)</span> 
- and <span class="name">wasStartedBy(a2,e,-,sAttr)</span> hold.
+ <span class="name">wasGeneratedBy(-,e,a1,-,gAttr)</span> 
+ and <span class="name">wasStartedBy(-,a2,e,-,sAttr)</span> hold.
 </div>
 
 
 <p>
 
 <div class="interpretation-forward">
-For the interpretation of a control flow ordering, see <a href="#wasStartedBy-ordering">wasStartedBy-ordering</a>.
+For constraints on ordering of start events, see <a href="#wasStartedBy-ordering">wasStartedBy-ordering</a>.
 </div>
 
 
@@ -800,6 +852,11 @@
 <section id="term-attribution">
 <h3>Attribution</h3> 
 
+Attribution identifies an agent as responsible for an entity.  An
+agent can only be responsible for an entity if it was associated with
+an activity that generated the entity.  If the activity, generation
+and association events are not explicit in the description, they can
+be inferred.
 
 <div class='inference' id='attribution-implication'>
 <span class='conditional'>If</span>
@@ -808,10 +865,11 @@
 <span class='conditional'>then</span> there exists an activity with some identifier <span class="name">a</span> such that the following statements hold:
 <pre>
 activity(a, t1, t2, attr1)
-wasGenerateBy(e, a, -)
-wasAssociatedWith(a, ag, -, attr2)
+wasGeneratedBy(-,e, a, -)
+wasAssociatedWith(-,a, ag, -, attr2)
 </pre>
-for some sets of attribute-value pairs <span class="name">attr1</span> and  <span class="name">attr2</span>, time <span class="name">t1</span>, and <span class="name">t2</span>.
+for some sets of attribute-value pairs <span class="name">attr1</span>
+  and  <span class="name">attr2</span>, and times <span class="name">t1</span> and <span class="name">t2</span>.
 </div>
 
 </section>
@@ -822,6 +880,15 @@
 <section id="term-Association">
 <h4>Association</h4>
 
+<p>
+An association relates an agent to an activity for which the agent had
+some responsibility.  Associations can mention a <em>plan</em> that
+describes how the agent expected to participate.  The plan may or may
+not have been followed; PROV-DM does not constrain the plan in any
+way.  Additional attributes can be used to describe how the agent
+participated, for example to name a role or indicate when the agent
+was associated with a long-running activity.
+</p>
 <div id="optional-attributes4">
 <p>In an association of the form <span class="name">wasAssociatedWith(a, ag, -, attr)</span>, the absence of a plan means: either no plan exists, or a plan exists but it is not identified.</p>
 
@@ -842,6 +909,22 @@
 <h3>Responsibility</h3>
 </section> 
 
+<p> Responsibility relates agents where one agent acts on behalf of
+another, in the context of some activity.  The supervising agent
+delegates some responsibility for part of the activity to the
+subordinate agent, while retaining some responsibility for the overall
+activity.  </p>
+
+<div id="optional-activity">
+<p>In a a delegation of the form <span class="name">actedOnBehalfOf(a,
+  ag2, ag1, -, attr)</span>, the absence of an activity means that
+  <span class="name">a2</span> acts on behalf of <span
+  class="name">a1</span> for all activities with which <span
+  class="name">a2</span> is
+  associated. @@TODO: Could this be an inference? Does it imply that
+  a1 is associated with all activities a2 is associated with?</p>
+</div>
+
 <div class="interpretation-forward">
 For the interpretation of responsibility, see <a href="#actedOnBehalfOf-ordering">actedOnBehalfOf-ordering</a>.
 </div>
@@ -869,15 +952,21 @@
 
 
 <p>
-Note that inferring derivation from usage and generation does not hold
-in general. Indeed, when a generation <span class="name">wasGeneratedBy(g, e2, a, -, attrs2)</span>
+Note that derivation cannot in general be inferred from the existence
+of related usage and generation events. Indeed, when a generation <span class="name">wasGeneratedBy(g, e2, a, -, attrs2)</span>
 <a>precedes</a> <span class="name">used(u, a, e1, -, attrs1)</span>, for
 some <span class="name">e1</span>, <span class="name">e2</span>, <span class="name">attrs1</span>, <span class="name">attrs2</span>, and <span class="name">a</span>, one
 cannot infer derivation <span class="name">wasDerivedFrom(e2, e1, a, g, u)</span>
 or <span class="name">wasDerivedFrom(e2,e1)</span> since 
-of <span class="name">e2</span> cannot possibly be derived from
+ <span class="name">e2</span> cannot possibly be derived from
  <span class="name">e1</span>, given the creation of <span class="name">e2</span> <a>precedes</a> the use
-of <span class="name">e1</span>.
+of <span class="name">e1</span>.  That is, if <span class="name">e1</span> is generated
+by an activity before <span class="name">e2</span> is used, then
+obviously  <span class="name">e2</span> cannot have been derived from
+<span class="name">e1</span>.  However, even if  <span
+class="name">e2</span> happens used before   <span class="name">e1</span>
+is generated, it is not safe to assume that  <span
+class="name">e2</span> was derived from  <span class="name">e1</span>.
 </p>
 
 <p> Derivation is not defined to be transitive. Domain-specific specializations of derivation may be defined in such a way that the transitivity property
@@ -980,30 +1069,40 @@
 class="name">actedOnBehalfOf(ag2,ag1,a,rAttr)</span> hold, for some  <span class="name">a</span>, <span class="name">ag2</span>, <span class="name">ag1</span>, <span class="name">aAttr</span>,  <span class="name">gAttr</span>, and <span class="name">rAttr</span>, <span
 class='conditional'>then</span>  <span class="name">tracedTo(e2,ag1)</span> also holds.</li>
 
-<li><span class='conditional'>If</span> <span class="name">wasGeneratedBy(e2,a,gAttr)</span> and <span class="name">wasStartedBy(a,e1,sAttr)</span> hold, for some  <span class="name">a</span>, <span class="name">gAttr</span> , <span class="name">sAttr</span> </li>
+<li><span class='conditional'>If</span> <span
+class="name">wasGeneratedBy(e2,a,gAttr)</span> and <span
+class="name">wasStartedBy(a,e1,sAttr)</span> hold, for some  <span
+class="name">a</span>, <span class="name">gAttr</span> , <span
+class="name">sAttr</span>  then <span
+class="name">tracedTo(e2,e1)</span> holds.</li>
 <li><span class='conditional'>If</span>  <span class="name">tracedTo(e2,e)</span> and  <span class="name">tracedTo(e,e1)</span> hold for some  <span class="name">e</span>, <span
 class='conditional'>then</span>  <span class="name">tracedTo(e2,e1)</span> also holds.</li>
 </ol>
 </div>
 
-<p>We note that the inference rule <a href="#traceability-inference">traceability-inference</a> does not allow us to infer attributes, which are application specific. </p>
+<p>We note that the inference rule <a
+href="#traceability-inference">traceability-inference</a> does not
+allow us to infer anything about the attributes of the related
+entities or events. </p>
 
 <div class='constraint' id='traceability-assertion'>
-<span class='conditional'>If</span> <span class="name">tracedTo(r2,r1,attrs)</span> holds for two identifiers <span class="name">r2</span> and  <span class="name">r1</span>
-identifying entities, and attribute-value pairs <span class="name">attrs</span>,
+<span class='conditional'>If</span> <span
+  class="name">tracedTo(r2,r1,attrs)</span> holds for two entity identifiers <span class="name">r2</span> and  <span class="name">r1</span>, and attribute-value pairs <span class="name">attrs</span>,
  <span class='conditional'>then</span> there exist
-<span class="name">e<sup>0</sup></span>, <span class="name">e<sup>1</sup></span>, ..., <span class="name">e<sup>n</sup></span> for <span class="name">n&ge;1</span>, with <span
-class="name">e<sup>0</sup></span>=<span class="name">r2</span>  and <span class="name">e<sup>n</sup></span>=<span class="name">r1</span>, and
-for any i such that <span class="name">0&le;i&le;n-1</span>, at least of the following statements holds:
+<span class="name">e<sub>0</sub></span>, <span class="name">e<sub>1</sub></span>, ..., <span class="name">e<sub>n</sub></span> for <span class="name">n&ge;1</span>, with <span
+class="name">e<sub>0</sub></span>=<span class="name">r2</span>  and <span class="name">e<sub>n</sub></span>=<span class="name">r1</span>, and
+for any i such that <span class="name">0&le;i&le;n-1</span>, at least
+  one of the following statements holds:
 <ul> 
-<li> <span class="name">wasDerivedFrom(e<sup>i</sup>,e<sup>i+1</sup>,a,g2,u1)</span> holds, for some <span class="name">a</span>, <span class="name">g2</span>, <span class="name">u1</span>,
+<li> <span class="name">wasDerivedFrom(e<sub>i</sub>,e<sub>i+1</sub>,a,g2,u1)</span> holds, for some <span class="name">a</span>, <span class="name">g2</span>, <span class="name">u1</span>,
 or</li>
-<li> <span class="name">wasDerivedFrom(e<sup>i</sup>,e<sup>i+1</sup>)</span> holds, or</li>
-<li> <span class="name">wasAttributedTo(e<sup>i</sup>,e<sup>i+1</sup>)</span> holds, or</li>
-<li> <span class="name">wasAttributedTo(e<sup>i</sup>,e)</span>, <span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr)</span>,  and <span class="name">actedOnBehalfOf(e,e<sup>i+1</sup>,a,rAttr)</span> hold,
+<li> <span class="name">wasDerivedFrom(e<sub>i</sub>,e<sub>i+1</sub>)</span> holds, or</li>
+<li> <span class="name">wasAttributedTo(e<sub>i</sub>,e<sub>i+1</sub>)</span> holds, or</li>
+<li> <span class="name">wasAttributedTo(e<sub>i</sub>,e)</span>, <span class="name">wasGeneratedBy(e<sub>i</sub>,a,gAttr)</span>,  and <span class="name">actedOnBehalfOf(e,e<sub>i+1</sub>,a,rAttr)</span> hold,
 for some  <span class="name">a</span>, <span class="name">e</span> and  <span class="name">gAttr</span>, <span class="name">rAttr</span>, or</li>
-<li> <span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr) and wasStartedBy(a,e<sup>i+1</sup>,sAttr)</span> hold, for some  <span class="name">a</span>, <span class="name">e</span>, and 
-<span class="name">gAttr</span>, and  <span class="name">sAttr</span>.</li>
+<li> <span class="name">wasGeneratedBy(e<sub>i</sub>,a,gAttr) and wasStartedBy(a,e<sub>i+1</sub>,sAttr)</span> hold, for some  <span class="name">a</span>, <span class="name">e</span>, and 
+<span class="name">gAttr</span>, and  <span
+class="name">sAttr</span>.</li>
 </ul>
 </div>
 
@@ -1017,7 +1116,9 @@
 
 <section id="component4"> 
 <h3>Component 4: Alternate Entities</h3>
-
+<div class='note'>TODO:
+This section is under review, pending ISSUE-29.
+</div>
 
 <section id="term-Specialization">
 <h3>Specialization</h3>
@@ -1035,7 +1136,19 @@
 </div>
 
 
-<p>Specialization is <em>transitive</em>. Indeed if <span class="name">specializationOf(e1,e2)</span> holds, then there is some common thing, say <span class="name">T1-2</span> they both refer to. Likewise, if <span class="name">specializationOf(e2,e3)</span> holds, then there is some common thing, say <span class="name">T2-3</span> they both refer to.  The Things <span class="name">T1-2</span> and <span class="name">T2-3</span> are the same since <span class="name">e2</span> refers to only one thing. </p>
+<p>Specialization is <em>transitive</em>. Indeed if <span
+class="name">specializationOf(e1,e2)</span> holds, then there is some
+common thing, say <span class="name">T1-2</span> they both refer to,
+and  <span class="name">e1</span> is a more specific aspect of this
+thing than <span class="name">e2</span>. Likewise, if <span
+class="name">specializationOf(e2,e3)</span> holds, then there is some
+common thing, say <span class="name">T2-3</span> they both refer to, and  <span class="name">e2</span> is a more specific aspect of this
+thing than <span class="name">e3</span>.  The things <span
+class="name">T1-2</span> and <span class="name">T2-3</span> are the
+same since <span class="name">e2</span> is an aspect of both of them,
+so <span
+class="name">specializationOf(e1,e3)</span> follows since <span class="name">e1<span class="name"> and <span class="name">e3<span class="name">
+are aspects fo the same thing and <span class="name">e1<span class="name"> is more specific than <span class="name">e3<span class="name">. </p>
 
 
 <div class="anexample" id="anexample-specialization-is-transitive">
@@ -1133,11 +1246,18 @@
 <p>Two different descriptions of a same entity cannot co-exist in a same account
  as formalized in <a href="#unique-description-in-account">unique-description-in-account</a>.</p>
 
+<div class="note">
+  TODO:
+  We should list all of the other expressions to which this applies,
+  maybe by defining the set of "object expressions" that have an
+  identity.
+  </div>
 <div class='constraint' id='unique-description-in-account'>
 <p>Given an entity identifier <span class="name">e</span>, there is at most one description 
 <span class="name">entity(e,attrs)</span> occurring in a given account, where <span class="name">attrs</span> is some set of attribute-values. Other descriptions of the same entity can exist in different accounts.</p>
 
-<p>This constraint similarly applies to all other types and relations, with explicit identity.</p>
+<p>This constraint similarly applies to all other types and relations,
+  with explicit identity.</p>
 </div>
 
 <p>
@@ -1154,7 +1274,6 @@
 entity(tr:WD-prov-dm-20111215, [ prov:type="pr:RecsWD" %% xsd:QName ])
 entity(ex:alternate-20111215, [ prov:type="document", ex:version="2" ])
 alternateOf(tr:WD-prov-dm-20111215,ex:alternate-20111215)
-alternateOf(ex:alternate-20111215,tr:WD-prov-dm-20111215)
 </pre>
 </div>
 
@@ -1177,7 +1296,7 @@
 though the actual mapping is not in scope of this specification.</p>
 
 <p>Given that provenance consists of a description of past entities
-and activities, to be meaningful provenance descriptions MUST
+and activities, to be valid provenance descriptions MUST
 satisfy <em>ordering constraints</em> between instantaneous events, which we introduce in
 this section.  For instance, an entity can only be used after it was
 generated; hence, we say that an entity's <a title="entity generation
@@ -1196,7 +1315,7 @@
 mapping of this <a>instantaneous event</a> to the timeline. The presence of time
 information in a provenance description instantiates the ordering constraint with
 that time information. It is expected that such instantiated
-constraint can help corroborate provenance information. We anticipate
+constraints can help corroborate provenance information. We anticipate
 that verification algorithms could be developed, though this
 verification is outside the scope of this specification.
 </p>
@@ -1206,7 +1325,7 @@
 right. Activities are represented by rectangles, whereas entities are
 represented by circles. Usage, generation and derivation are
 represented by the corresponding edges between entities and
-activities.  The four kind of <a title="event">instantaneous events</a> are represented by vertical
+activities.  The five kinds of <a title="event">instantaneous events</a> are represented by vertical
 dotted lines (adjacent to the vertical sides of an activity's
 rectangle, or intersecting usage and generation edges).  The ordering
 constraints are represented by triangles: an occurrence of a triangle between two <a title="event">instantaneous event</a> vertical dotted lines represents that the event denoted by the left
@@ -1221,7 +1340,7 @@
 
 
 
-<p>The mere existence of an activity entails some <a>event</a> ordering, since an <a>activity start event</a> always <a>precedes</a> the corresponding <a>activity end
+<p>The existence of an activity implies that the <a>activity start event</a> always <a>precedes</a> the corresponding <a>activity end
 event</a>.  This is
 illustrated by Subfigure <a href="#constraint-summary">constraint-summary</a> (a) and  expressed by constraint <a href="#start-precedes-end">start-precedes-end</a>.</p> 
 
@@ -1243,9 +1362,16 @@
 <a>precedes</a> its <a title="entity invalidation event">invalidation</a>.
 </div>
 
-<p>By transitivity with <a href="#generation-precedes-usage">generation-precedes-usage</a>, generation of an entity precedes its invalidation. </p>
-
-
+<p>Similarly, generation of an entity precedes its invalidation. (This
+follows from other constraints if the entity is used, but we state it
+explicitly to cover the case of an entity that is generated and
+invalidated without being used.)</p>
+
+<div class='interpretation' id='generation-precedes-invalidation'>For
+  any entity, the following ordering constraint holds: the <a
+  title="entity generation event">generation</a> of an entity always
+<a>precedes</a> its <a title="entity invalidation event">invalidation</a>.
+</div>
 
 <p>A usage implies ordering of <a title="event">events</a>, since the <a title="entity usage event">usage event</a> had to occur during the associated activity. This is
 illustrated by Subfigure <a href="#constraint-summary">constraint-summary</a> (c) and  expressed by constraint <a href="#usage-within-activity">usage-within-activity</a>.</p>
@@ -1341,13 +1467,13 @@
 
 <div style="text-align: center;">
 <figure>
-<img src="images/constraints2.png" alt="further constraints between events" />
+<img src="../images/constraints2.png" alt="further constraints between events" />
 <figcaption id="constraint-summary2">Summary of <a title="event">instantaneous event</a> ordering constraints (continued)</figcaption>
 </figure>
 </div>
 
 
-<p>A trigger of an activity must exist when the activity starts.
+<p>The agent that started an activity must exist before the activity starts.
 This is
 illustrated by Subfigure <a href="#constraint-summary2">constraint-summary2</a> (a) and  expressed by constraint <a href="#wasStartedByAgent-ordering">wasStartedByAgent-ordering</a>.</p>
 
@@ -1361,7 +1487,9 @@
 the same entity.
 </div>
 
-<p> A similar constraints exists for the trigger of activity end, illustrated by Subfigure <a href="#constraint-summary2">constraint-summary2</a> (b).</p>
+<p> Similarly, if an agent is associated with an activity then the
+agent must exist before the activity starts and persist until the
+activity ends, as illustrated by Subfigure <a href="#constraint-summary2">constraint-summary2</a> (b).</p>
 
 
 <div class='interpretation' id='wasEndedByAgent-ordering'>
@@ -1391,16 +1519,18 @@
 </div>
 
 
-<p>An entity that was attributed to an agent must have some overlap with the agent. The agent may be generated, or may only become attributed with the activity, after its generation: so, the agent is required to exist before the entity invalidation. Likewise, the agent may be destructed, or the entity may no longer be attributed to the agent, before the entity invalidation: hence, the agent invalidation is required to happen after the entity generation.
+<p>An entity that was attributed to an agent must have some overlap
+with the agent. The agent is required to exist before the entity
+invalidation. Likewise, the entity generation must precede the agent destruction.
 This is
 illustrated by Subfigure <a href="#constraint-summary2">constraint-summary2</a> (d) and  expressed by constraint <a href="#wasAttributedWith-ordering">wasAttributedWith-ordering</a>.</p>
 
 
 
  
-<div class='interpretation' id='wasAttributedWith-ordering'>
+<div class='interpretation' id='wasAttributedTo-ordering'>
 Given an entity denoted by <span class="name">e</span> and an agent denoted by   <span class="name">ag</span>, <span class='conditional'>if</span> <span
-class="name">wasAttributedWith(e,ag)</span>
+class="name">wasAttributedTo(e,ag)</span>
  holds, <span class='conditional'>then</span> the following ordering constraints hold: the
 <a title="entity generation event">generation</a> event of the entity  denoted by <span class="name">e</span>
 precedes the invalidation event of 
@@ -1409,7 +1539,7 @@
 <a>precedes</a> the entity <a title="entity invalidation event">invalidation</a> event.
 </div>
 
-<p>For responsibility, two agents need to have some overlap.</p>
+<p>For responsibility, two agents need to have some overlap in their lifetime.</p>
 
 
 <div class='interpretation' id='actedOnBehalfOf-ordering'>
@@ -1444,19 +1574,24 @@
 <section id="structural-constraints"> 
 <h3>PROV-DM Structural Constraints</h3>
 
-<p><a href="#definitional-constraints">Section 4</a> provides definitional constraints for data model concepts.
-<a href="#account-constraints">Section 5</a> introduces constraints on descriptions occurring in accounts.
-<a href="#interpretation">Section 6</a> defines an interpretation of this data model, in terms of event ordering
+<p><a href="#definitional-constraints">Section 3</a> provides definitional constraints for data model concepts.
+<a href="#account-constraints">Section 4</a> introduces constraints on descriptions occurring in accounts.
+<a href="#interpretation">Section 5</a> defines an interpretation of this data model, in terms of event ordering
 constraints.  
 This section introduces further constraints on the structure of PROV-DM descriptions.  Descriptions that satisfy these constraints are said to be <dfn>structurally well-formed</dfn>.  A
 benefit of structurally well-formed provenance descriptions is that further inferences can be made, because descriptions are more precise, and therefore, richer. </p>
 
-<p>According to the definition of a <a>generation</a>, an entity becomes available after this entity's generation event, and does not exist before this event.  From this definition,
+<p>We assume that an entity has exactly one generation and
+invalidation event (either or both may, however, be left implicit).
+<!--
+If there are
+multiple generation events, According to the definition of a <a>generation</a>, an entity
+becomes available after its generation event, and does not exist before this event.  From this definition,
 we conclude that PROV-DM does not allow for an entity to have two generations occurring at two different instants.
 The rationale for this constraint is as follows.
  Two distinct <a title="entity generation event">generation events</a> (by a same activity or by two distinct activities), occurring one after the other, necessarily create two distinct
 entities; otherwise, the second <a title="entity generation event">generation event</a> would have resulted in an entity that existed before its creation, which contradicts the definition of
-<a>generation</a>.</p>
+<a>generation</a>.--></p>
 
 <p>So, PROV-DM allows for two distinct <a>generations</a>  <span class="name">g1</span> and <span class="name">g2</span> referencing a same entity provided they occur
 <em>simultaneously</em>. 
@@ -1484,7 +1619,7 @@
 
 <p>While this example is permitted in PROV-DM, it does not make the inter-relation between activities explicit, and  it mixes descriptions expressed from different perspectives together. 
 While this may acceptable in some specific applications, it becomes challenging for inter-operability. Indeed, PROV-DM does not offer any relation describing the structure of activities.
-  Such descriptions are said not be structurally well-formed.</p>
+  Such descriptions are said not to be structurally well-formed.</p>
 
 <p>Structurally well-formed provenance can be obtained by partitioning the generations into different accounts. This makes it clear that these generations provide alternative
 descriptions of the same real-world generation event, rather than describing two distinct generation events for the same entity. When accounts are used, the example can be encoded as follows.</p>
@@ -1510,7 +1645,9 @@
 </div>
 
 
-
+<div class='note'>Collect the discussion of uniqueness of generation
+  in one place</div>
+  
 <p>Structurally well-formed provenance satisfies some constraints, which force the structure of descriptions to be exposed by means of accounts. With these constraints satisfied, further
 inferences can be made about structurally well-formed descriptons.
 The uniqueness of generations in accounts is formulated as follows.
@@ -1528,7 +1665,7 @@
 
 
 
-
+<div class='note'>TODO: Move this back to the place where it is first referenced.</div>
 <p>A further inference is permitted from derivations with an explicit activity and no usage: </p>
 <div class='inference' id='derivation-use'>
 <p>Given an activity <span class="name">a</span>, entities  denoted by <span class="name">e1</span> and <span class="name">e2</span>, and  sets of attribute-value
@@ -1552,6 +1689,10 @@
 it satisfies the constraint  <a href="#generation-uniqueness">generation-uniqueness</a>. If an account is structurally well-formed, it supports the inference <a
 href="#derivation-use">derivation-use</a>.</p>
 
+<div class='note'>
+  Since we are not specifying ways to take the union of two accounts,
+  we may drop this discussion
+  </div>
 <p> Taking the union of two accounts is another account, 
 formed by the union of the descriptions they respectively contain.  We note that the resulting union may or may not invalidate some constraints:
 <ul>
@@ -1615,7 +1756,7 @@
 
 <p>Membership is a convenience notation, since it can be expressed in terms of an insertion into some collection. The membership definition is formalized by constraint <a href="#membership-as-insertion">membership-as-insertion</a>.</p>
 
-<div class='constraint' id='membership-as-insertion'>
+<div class='definition' id='membership-as-insertion'>
  <span class="name">memberOf(c, {(k1, v1), ...})</span> holds
 <span class='conditional'>if and only if</span> there exists a collection <span class="name">c0</span>, such that
 <span class="name">derivedByInsertionFrom(c, c0, {(k1, v1), ...})</span>.
@@ -1631,8 +1772,10 @@
 <p>The following constraint ensures unique derivation.</p>
 
 
+<div class='note'> The following constraint is unclear.</div>
 <div class='constraint' id='collection-unique-derivation'>
-A collection MUST NOT be derived through multiple insertions, removal, or membership relations.
+A collection MUST NOT be derived through multiple insertions, removal,
+  or membership relations. 
 </div>
 
 <div class="anexample">
@@ -1767,6 +1910,11 @@
 </section>
 
 
+<div class='note'>
+  Do the insertion/removal derivation steps imply wasDerivedFrom,
+  wasVersionOf, alternateOf?
+  </div>
+ 
 </section>  <!-- end of collections -->