update prov-dm document
authorLuc Moreau <l.moreau@ecs.soton.ac.uk>
Wed, 21 Mar 2012 22:21:04 +0000
changeset 1960 662d4d854263
parent 1959 a554cf497d9e
child 1961 cca47d27f07a
update prov-dm document
model/prov-dm.html
--- a/model/prov-dm.html	Wed Mar 21 22:14:19 2012 +0000
+++ b/model/prov-dm.html	Wed Mar 21 22:21:04 2012 +0000
@@ -251,6 +251,7 @@
 
 
 
+
     <section id="introduction"> 
       <h2>Introduction<br>
 </h2> 
@@ -316,13 +317,11 @@
 applied to a short scenario, encoded in PROV-N, and illustrated
 graphically.</p>
 
-<p><a href="#data-model-concepts">Section 4</a> provides the definition of PROV-DM constructs.</p>
-
-<p><a href="#common-relations">Section 5</a> introduces further relations offered by PROV-DM, including relations for data collections and domain-independent common relations.</p>
-
-<p><a href="#extensibility-section">Section 6</a> summarizes PROV-DM extensibility points.</p>
-
-<p><a href="#FurtherConsiderations">Section 7</a> introduces constraints that can be applied to the PROV data model 
+<p><a href="#data-model-components">Section 4</a> provides the definition of PROV-DM concepts, structured according to six components.</p>
+
+<p><a href="#extensibility-section">Section 5</a> summarizes PROV-DM extensibility points.</p>
+
+<p><a href="#FurtherConsiderations">Section 6</a> introduces constraints that can be applied to the PROV data model 
 and that are covered in [[PROV-DM-CONSTRAINTS]].</p>
 
 
@@ -373,7 +372,7 @@
 physical things such as a building or a printed book, or a car as well as abstract concepts and ideas. One can regard any Web resource as an example of Entity in this context. </p>
 
 <p>
-<div class="glossary-ref" ref="glossary-entity">
+<div class="glossary-ref" ref="glossary-entity"  withspan="true">
 </div>
 
 
@@ -385,7 +384,7 @@
 
 
 <p>
-<span class="glossary-ref" ref="glossary-activity"></span> Activities that operate on digital entities may for example move, copy, or duplicate them.
+<span class="glossary-ref" ref="glossary-activity"  withspan="true"></span> Activities that operate on digital entities may for example move, copy, or duplicate them.
 </p>
 
 
@@ -396,7 +395,7 @@
 
 
 <p>
-<span class="glossary-ref" ref="glossary-agent">
+<span class="glossary-ref" ref="glossary-agent"  withspan="true">
 </span>
 </p>
 
@@ -424,12 +423,12 @@
  The term 'generation' refers to the completion of the the act of producing; likewise, the term 'usage' refers to the beginning of the act of consuming entities. Thus, we define the following notions of generation and usage. </p>
 
 <p>
-<div class="glossary-ref" ref="glossary-generation">
+<div class="glossary-ref" ref="glossary-generation"  withspan="true">
 </div>
 
 
 <p>
-<div class="glossary-ref" ref="glossary-usage">
+<div class="glossary-ref" ref="glossary-usage"  withspan="true">
 </div>
 
 
@@ -453,7 +452,7 @@
 <p>Activities are consumers of entities and producers of entities. In some case, the consumption of an entity influences the creation of another in some way. This notion is captured by derivations, defined as follows.</p>
 
 <p>
-<span class="glossary-ref" ref="glossary-derivation"></span>
+<span class="glossary-ref" ref="glossary-derivation"  withspan="true"></span>
 
 
 
@@ -470,7 +469,7 @@
 <p>There are some useful types of entities and agents that are commonly encountered in applications making data and documents available on the Web; we introduce them in this section. </p>
 
 <p>
-<span class="glossary-ref" ref="glossary-plan">
+<span class="glossary-ref" ref="glossary-plan"  withspan="true">
 </span>
 PROV-DM is not
 prescriptive about the nature of plans, their representation, the
@@ -487,7 +486,7 @@
 </div>
 
 <p>
-<span class="glossary-ref" ref="glossary-collection"></span> This concept allows for the provenance of the collection, but also of its constituents to be expressed.  Such a notion of collection corresponds to a wide variety of  concrete data structures, such as a <em>maps</em>, <em>dictionaries</em> or <em>associative arrays</em>.</p>
+<span class="glossary-ref" ref="glossary-collection"  withspan="true"></span> This concept allows for the provenance of the collection, but also of its constituents to be expressed.  Such a notion of collection corresponds to a wide variety of  concrete data structures, such as a <em>maps</em>, <em>dictionaries</em> or <em>associative arrays</em>.</p>
 
 <div class="anexample" id="collection-example">
 <p>
@@ -497,7 +496,7 @@
 
 <!-- alternative names: provenance record, bundle -->
 <p>
-<span class="glossary-ref" ref="glossary-accountEntity">
+<span class="glossary-ref" ref="glossary-accountEntity"  withspan="true">
 </span>
 
 <div class="anexample" id="account-example">
@@ -553,7 +552,7 @@
 
 
 <p>
-<span class="glossary-ref" ref="glossary-activityAssociation"></span>
+<span class="glossary-ref" ref="glossary-activityAssociation"  withspan="true"></span>
 </p>
 
 <div class="anexample" id="association-example">
@@ -567,7 +566,7 @@
 </div>
 
 <p>
-<span class="glossary-ref" ref="glossary-responsibility">
+<span class="glossary-ref" ref="glossary-responsibility"  withspan="true">
 </span> The nature of this relation is intended to be broad,  including delegation or a contractual relation. </p>
 
 <!--<div class="note">Propose to rephrase as follows: <br/>
@@ -842,17 +841,110 @@
 
 </section>
 
-<section id="data-model-concepts"> 
-
-<h2>PROV-DM Core</h2>
-
-<p>In this section, we revisit each concept introduced in <a href="'#conceptualization'">Section 2</a>, and provide its detailed definition in the PROV data model, in terms of its various constituents. </p>
-
-<p>In PROV-DM, we distinguish elements from relations, which are respectively discussed in 
-<a href="'#term-element'">Section 4.1</a> and <a href="'#term-relation'">Section 4.2</a>.</p>
-
-<section id="term-element"> 
-<h3>Element</h3>
+
+<section id="data-model-components"> 
+
+<h2>PROV-DM Concepts and Relations</h2>
+
+<p>PROV-DM Concepts are structured according to six components that are introduced here.
+Components and their dependencies are illustrated in Figure <a href="#prov-dm-components">prov-dm-components</a>. A component that relies on concepts defined in another also sits above it, in this figure.
+PROV-DM consists of the following components.</p>
+
+<ol>
+<li><b>Component 1: entities and activities.</b> The first component consists of entities, activities, and all concepts linking them, such as generation, usage, start, end. The first component is the only one comprising time-related concepts. </li>
+<li><b>Component 2: agents and responsibility.</b> The second component consists of agents and concepts ascribing responsibility to agents.</li>
+<li><b>Component 3: derivations.</b>  The third component is formed with derivations and its subtypes.</li>
+<li><b>Component 4: alternate.</b> The fourth component consists of relations linking entities somehow denoting a same thing. </li>
+<li><b>Component 5: collections.</b> The fifth component is comprised of collections and operations related to collections. </li>
+<li><b>Component 6: annotations.</b> The sixth component is concerned with annotations to PROV-DM  concepts.</li>
+</ol>
+
+
+<div style="text-align: center;">
+<figure style="max-width: 90%; ">
+<img  usemap="#componentMap" src="images/components.png" alt="PROV-DM Components"  style="max-width: 90%; " />
+<map id="componentMap" name="componentMap">
+<area title="collections" href="#component5" coords="220,0,440,70"  alt="collections" shape="rect"/>
+<area title="alternate"   href="#component4" coords="450,0,510,140" alt="alternate"   shape="rect"/>
+<area title="annotations" href="#component6" coords="530,0,590,220" alt="annotations" shape="rect"/>
+<area title="activities/entities" href="#component1" coords="80,150,510,220" alt="activities/entities" shape="rect"/>
+<area title="derivations" href="#component3" coords="80,0,210,70"   alt="derivations" shape="rect"/>
+<area title="agents/responsibility" href="#component2" coords="0,0,70,220"   alt="agents/responsibility" shape="rect"/>
+</map>
+<figcaption id="prov-dm-components">PROV-DM Components</figcaption>
+</figure>
+</div>
+
+<p>
+While  not all PROV-DM relations are binary, they all involve two primary elements. Hence, Table <a href="#relations-at-a-glance">relations-at-a-glance</a> indexes all relations according to their two primary elements.  The table adopts the same color scheme as in Figure <a href="#prov-dm-components">prov-dm-components</a>, allowing components to be readily identified.
+Note that for simplicity, this table  does not include collection-oriented relations.
+</p>
+
+<div style="text-align: center;">
+<table border="1" style="margin-left: auto; margin-right: auto;">
+<caption id="relations-at-a-glance">PROV-DM Relations At a Glance</caption>
+<tr><td></td><td>Entity</td><td>Activity</td><td>Agent</td><td>Note</td></tr> 
+<tr><td>Entity</td><td><div class="component3-color"><a>wasDerivedFrom</a><br><a>wasRevisionOf</a><br><a>wasQuotedFrom</a><br><a>hadOriginalSource</a></div><div class="component4-color"><a>alternateOf</a><br><a>specializationOf</a></div></td><td class="component1-color"><a
+title="dfn-Generation">wasGeneratedBy</a></td><td class="component2-color"><a>wasAttributedTo</a></td><td class="component6-color"><a>hasAnnotation</a></td></tr>
+<tr><td>Activity</td><td><div class="component1-color"><a>used</a><br><a>wasStartedBy</a><br><a>wasEndedBy</a></div></td><td class="component1-color"><a>wasStartedByActivity</a><br><a>wasInformedBy</a></td><td class="component2-color"><a>wasAssociatedWith</a></td><td class="component6-color"><a>hasAnnotation</a></td></tr>
+<tr><td>Agent</td><td>&mdash;</td><td>&mdash;</td><td class="component2-color"><a>actedOnBehalfOf</a></td><td class="component6-color"><a>hasAnnotation</a></td></tr>
+<tr><td>Note</td><td>&mdash;</td><td>&mdash;</td><td>&mdash;</td><td class="component6-color"><a>hasAnnotation</a></td></tr>
+</table>
+</div>
+
+<p>Table <a href="#prov-dm-concepts-and-relations">prov-dm-concepts-and-relations</a> is a complete index of all the concepts and relations in prov-dm, color-coded according to the component they belong too.  In the first column, one finds concept names directly linking to their English definition. In the second column, we find their representation in the PROV-N notation, directly linking to the definition of their various constituents.</p>
+
+
+<div style="text-align: left;">
+<table border="1" style="margin-left: auto; margin-right: auto;">
+<caption id="prov-dm-concepts-and-relations">PROV-DM Concepts and Relations</caption>
+<tr class="component1-color"><td><a>Entity</a></td><td><a title="dfn-Entity">entity(id, [ attr1=val1, ...])</a></td></tr>
+<tr class="component1-color"><td><a>Activity</a></td><td><a title="dfn-Activity">activity(id, st, et, [ attr1=val1, ...])</a></td></tr>
+<tr class="component1-color"><td><a>Generation</a></td><td><a title="dfn-Generation">wasGeneratedBy(id,e,a,t,attrs)</a></td></tr>
+<tr class="component1-color"><td><a>Usage</a></td><td><a title="used">used(id,a,e,t,attrs)</a></td></tr>
+<tr class="component1-color"><td><a>Start</a></td><td><a title="wasStartedBy">wasStartedBy(id,a,e,t,attrs)</a></td></tr>
+<tr class="component1-color"><td><a>End</a></td><td><a title="wasEndedBy">wasEndedBy(id,a,e,t,attrs)</a></td></tr>
+<tr class="component1-color"><td><a>Communication</a></td><td><a title="wasInformedBy">wasInformedBy(id,a2,a1,attrs)</a></td></tr>
+<tr class="component1-color"><td><a>Start by Activity</a></td><td><a title="wasStartedByActivity">wasStartedByActivity(id, a2, a1, attrs)</a></td></tr>
+<tr class="component2-color"><td><a>Agent</a></td><td><a title="dfn-agent">agent(id, [ attr1=val1, ...])</a></td></tr>
+<tr class="component2-color"><td><a>Attribution</a></td><td><a title="wasAttributedTo">wasAttributedTo(id,e,ag,attr)</a></td></tr>
+<tr class="component2-color"><td><a>Association</a></td><td><a title="wasAssociatedWith">wasAssociatedWith(id,a,ag,pl,attrs)</a></td></tr>
+<tr class="component2-color"><td><a>Responsibility</a></td><td><a title="actedOnBehalfOf">actedOnBehalfOf(id,ag2,ag1,a,attrs)</a></td></tr>
+<tr class="component3-color"><td><a>Derivation</a></td><td><a title="wasDerivedFrom">wasDerivedFrom(id, e2, e1, a, g2, u1, attrs)</a></td></tr>
+<tr class="component3-color"><td><a>Revision</a></td><td><a title="wasRevisionOf">wasRevisionOf(id,e2,e1,ag,attrs)</a></td></tr>
+<tr class="component3-color"><td><a>Quotation</a></td><td><a title="wasQuotedFrom">wasQuotedFrom(id,e2,e1,ag2,ag1,attrs)</a></td></tr>
+<tr class="component3-color"><td><a>Original Source</a></td><td><a title="hadOriginalSource">hadOriginalSource(id,e2,e1,attrs)</a></td></tr>
+<tr class="component3-color"><td><a>Traceability</a></td><td><a title="tracedTo">tracedTo(id,e2,e1,attrs)</a></td></tr>
+<tr class="component4-color"><td><a>Alternate</a></td><td><a title="alternateOf">alternateOf(alt1, alt2)</a></td></tr>
+<tr class="component4-color"><td><a>Specialization</a></td><td><a title="specializationOf">specializationOf(sub, super)</a></td></tr>
+<tr class="component5-color"><td>Derivation by Insertion</td><td>derivedByInsertionFrom(id, collAfter, collBefore, key, value, attrs)</td></tr>
+<tr class="component5-color"><td>Derivation by Removal</td><td>derivedByRemovalFrom(id, collAfter, collBefore, key, attrs)</td></tr>
+<tr class="component5-color"><td>Containment</td><td>contained(id, coll, key, values, attrs)</td></tr>
+<tr class="component5-color"><td></td><td>derivedByBulkInsertionFrom(id, collAfter, collBefore, key-value-set, attrs)</td></tr>
+<tr class="component5-color"><td></td><td>derivedByBulkRemovalFrom(id, collAfter, collBefore, key-set, attrs)</td></tr>
+<tr class="component5-color"><td></td><td>containedBulk(id, coll, key-value-set, attrs)</td></tr>
+<tr class="component6-color"><td><a>Note</a></td><td><a title="note">note(id, [ attr1=val1, ...])</a></td></tr>
+<tr class="component6-color"><td><a>Annotation</a></td><td><a title="hasAnnotation">hasAnnotation(r,n)</a></td></tr>
+</table>
+</div>
+
+<p>In the rest of the section, each concept and relation is defined, in English initially, followed by a more formal definition and some example.</p>  
+
+<section id="component1"> 
+<h3>Component 1: Entities and Activities</h3>
+
+<p>The first component of PROV-DM is concerned with <a title="entity">entities</a> and <a title="activity">activities</a>, and their inter-relations: <a>Usage</a>, <a>Generation</a>, <a>Start</a>, <a>End</a>, <a>Communication</a>, and <a>Start by Activity</a>. Figure <a href="#figure-component1">figure-component1</a> overviews the first component, with two classes and binary associations between them. Associations are not just binary; indeed, <a>Usage</a>, <a>Generation</a>, <a>Start</a>, <a>End</a> are remarkable because they have  <em>time</em> attributes, which are placeholders for time information related to provenance.
+</p>
+
+<div style="text-align: center;">
+<figure>
+<img src="images/Entities-Activities.png" alt="entities and activities"/>
+<figcaption id="figure-component1">Entities and Activities Component Overview</figcaption>
+</figure>
+</div>
+
+
+
 
 
    <section id="term-Entity"> 
@@ -860,13 +952,13 @@
 <h4>Entity</h4>
 
 
-<div class="glossary-ref" ref="glossary-entity" withspan="true"></div>
-
-
-<p><div class="attributes" id="attributes-entity">An entity<span class="withPn">, written <span class="pnExpression" id="pn-entity">entity(id, [ attr1=val1, ...])</span> in PROV-N, </span> contains:
+<div class="glossary-ref" ref="glossary-entity"></div>
+
+
+<p><div class="attributes" id="attributes-entity">An <dfn title="dfn-Entity">entity</dfn><span class="withPn">, written <span class="pnExpression" id="pn-entity">entity(id, [ attr1=val1, ...])</span> in PROV-N, </span> contains:
 <ul>
-<li><span class='attribute'>id</span>: an identifier for an entity; </li>
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs representing this entity's situation in the world.</li>
+<li><span class='attribute' id="entity.id">id</span>: an identifier for an entity; </li>
+<li><span class='attribute' id="entity.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs representing this entity's situation in the world.</li>
 </ul></div>
 
 <div class="anexample">
@@ -906,14 +998,14 @@
       
 <h3>Activity</h3>
 
-<div class="glossary-ref" ref="glossary-activity" withspan="true"></div>
-
-<p><div class="attributes" id="attributes-activity"> An activity<span class="withPn">, written <span class="pnExpression" id="pn-activity">activity(id, st, et, [ attr1=val1, ...])</span> in PROV-N,</span> contains:
+<div class="glossary-ref" ref="glossary-activity"></div>
+
+<p><div class="attributes" id="attributes-activity"> An <dfn title="dfn-Activity">activity</dfn><span class="withPn">, written <span class="pnExpression" id="pn-activity">activity(id, st, et, [ attr1=val1, ...])</span> in PROV-N,</span> contains:
 <ul>
-<li><span class='attribute'>id</span>: an identifier for an activity;</li>
-<li><span class='attribute'>startTime</span>: an OPTIONAL time for the start of the activity;</li>
-<li><span class='attribute'>endTime</span>: an OPTIONAL time for the end of the activity;</li>
-<li><span class='attribute'>attributes</span>:  an OPTIONAL set of attribute-value pairs for this activity.</li>
+<li><span class='attribute' id="activity.id">id</span>: an identifier for an activity;</li>
+<li><span class='attribute' id="activity.startTime">startTime</span>: an OPTIONAL time for the start of the activity;</li>
+<li><span class='attribute' id="activity.endTime">endTime</span>: an OPTIONAL time for the end of the activity;</li>
+<li><span class='attribute' id="activity.attributes">attributes</span>:  an OPTIONAL set of attribute-value pairs for this activity.</li>
 </ul></div>
 
 <div class="anexample">
@@ -938,142 +1030,23 @@
 </ul>
 
 
-</section> 
-
-<section id="term-Agent">
-<h3>Agent</h3>
-
-<div class="glossary-ref" ref="glossary-agent" withspan="true"></div>
-
-
-<p><div class="attributes" id="attributes-agent">An agent<span class="withPn">, noted <span class="pnExpression" id="pn-agent">agent(id, [ attr1=val1, ...])</span> in PROV-N,</span> contains:
-<ul>
-<li><span class='attribute'>id</span>: an identifier for an agent;</li>
-<li><span class='attribute'>attributes</span>: a set of attribute-value pairs representing this agent's situation in the world.
-</li>
-</ul></div>
-
-
-<p>
-From an interoperability perspective, it is useful to define some basic categories of agents since
-it will improve the use of provenance by applications.  
-There should be very few of these basic categories to keep the model simple and accessible. 
-There are three types of agents in the model since they are common across most anticipated domains of use:
-<ul>
-<li><span class="name">Person</span>: agents of type Person are people.</li> 
-<li><span class="name">Organization</span>: agents of type Organization are social institutions such as companies, societies etc.</li> 
-<li><span class="name">SoftwareAgent</span>: a software agent is a piece of software. </li>
-</ul>
-<p>These types are mutually exclusive, though they do not cover all kinds of agent. </p>
-
-
-
-<div class="anexample">
-<p>The following expression is about an agent identified by <span class="name">e1</span>, which is a person, named Alice, with employee number 1234.</p>
-<pre class="codeexample">
-agent(e1, [ex:employee="1234", ex:name="Alice", prov:type="prov:Person" %% xsd:QName])
-</pre>
-<p>It is optional to specify the type of an agent. When present, it is expressed using the <span class="name">prov:type</span> attribute.</p>
-</div>
-
-<div class='issue'> Shouldn't we allow for entities (not agent) to be associated with an activity?  Should we drop the inference association-agent? <a
-href="http://www.w3.org/2011/prov/track/issues/203">ISSUE-203</a>.</div>
-
 </section>
 
-   <section id="term-note"> 
-      
-<h4>Note</h4>
-
-<p>As provenance descriptions are exchanged between systems, it may be useful to add extra-information to what they are describing. For instance, a "trust service" may add value-judgements about the
-trustworthiness of some of the entities or agents involved. Likewise, an interactive visualization component may want to enrich a set of provenance descriptions with information helping reproduce their
-visual representation. To help with interoperability, PROV-DM introduces a simple annotation mechanism allowing anything that is identifiable to be associated with notes.</p>
-
-<p><div class="attributes" id="attributes-note">A <dfn title="dfn-note">note</dfn><span class="withPn">, noted <span class="pnExpression">note(id, [ attr1=val1, ...])</span> in PROV-N,</span> contains:
-<ul>
-<li><span class='attribute'>id</span>: an identifier for a note;</li>
-<li><span class='attribute'>attributes</span>: a set of attribute-value pairs, whose meaning is application specific.</li>
-</ul></div>
-
-
-
-
-<p>A separate PROV-DM relation is used to associate a note with something that is identifiable (see <a href="#term-annotation">Section on annotation</a>). A given note may be associated with
-multiple identifiable things.
-</p>
-
-
-<div class="anexample" id="anexample-note1">
-<p>
-The following note consists of a set of application-specific attribute-value pairs, intended
-to help the rendering of what it is associated with, by
-specifying its color and its position on the screen.</p>
-<pre class="codeexample">
-note(ex2:n1,[ex2:color="blue", ex2:screenX=20, ex2:screenY=30])
-hasAnnotation(tr:WD-prov-dm-20111215,ex2:n1)
-</pre>
-<p>The note is associated with the entity <span class="name">tr:WD-prov-dm-20111215</span> previously introduced (<a title="annotation">hasAnnotation</a> is 
-discussed in Section <a href="#term-annotation">Annotation</a>).  The note's identifier and attributes are declared in a separate namespace denoted by prefix <span class="name">ex2</span>.
-</p>
-</div>
-
-<div class="anexample" id="anexample-note2">
-<p>Alternatively, a reputation service may enrich a provenance record with notes providing reputation ratings about agents. In the following fragment, both agents <span class="name">ex:Simon</span> and <span class="name">ex:Paolo</span> are rated "excellent".</p>
-<pre class="codeexample">
-note(ex3:n2,[ex3:reputation="excellent"])
-hasAnnotation(ex:Simon,ex3:n2)
-hasAnnotation(ex:Paolo,ex3:n2)
-</pre>
-<p>The note's identifier and attributes are declares in a separate namespace denoted by prefix <span class="name">ex3</span>.</p>
-
-</div>
-
-
-   </section> 
-
-</section>
-
-
-<section id="term-relation">
-<h3>Relation</h3>
-
-<p>
-This section describes all the PROV-DM relations between the elements introduced in <a href="#term-element">Section Element</a>. While these relations are not
-binary,  they all involve two primary elements. They can be summarized as follows. </p>
-
-
-<div style="text-align: center;">
-<table border="1" style="margin-left: auto; margin-right: auto;">
-<caption>PROV-DM Core Relation Summary</caption>
-<tr><td></td><td>Entity</td><td>Activity</td><td>Agent</td><td>Note</td></tr> 
-<tr><td>Entity</td><td><a title="derivations">wasDerivedFrom</a><br><a title="dfn-alternate">alternateOf</a><br><a title="dfn-specialization">specializationOf</a></td><td><a
-title="dfn-Generation">wasGeneratedBy</a></td><td>&mdash;</td><td><a title="dfn-annotation">hasAnnotation</a></td></tr>
-<tr><td>Activity</td><td><a title="usage">used</a></td><td>&mdash;</td><td><a title="start record">wasStartedBy</a><br><a title="end record">wasEndedBy</a><br><a title="dfn-activity-association">wasAssociatedWith</a></td><td><a title="dfn-annotation">hasAnnotation</a></td></tr>
-<tr><td>Agent</td><td>&mdash;</td><td>&mdash;</td><td><a title="dfn-responsibility-chain">actedOnBehalfOf</a></td><td><a title="dfn-annotation">hasAnnotation</a></td></tr>
-<tr><td>Note</td><td>&mdash;</td><td>&mdash;</td><td>&mdash;</td><td><a title="dfn-annotation">hasAnnotation</a></td></tr>
-</table>
-</div>
-
-
-
-<section id="activity-entity-relation">
-<h3>Activity-Entity Relation</h3>
-
 <section id="term-Generation">
 <h4>Generation</h4>
 
-<div class="glossary-ref" ref="glossary-generation" withspan="true"></div>
+<div class="glossary-ref" ref="glossary-generation"></div>
 
 <p>
 <div class="attributes" id="attributes-generation"><dfn title="dfn-Generation">Generation</dfn><span class="withPn">, written <span class="pnExpression">wasGeneratedBy(id,e,a,t,attrs)</span> in PROV-N,</span> has the following components:
 <ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier for a generation;</li> 
-<li><span class='attribute'>entity</span>:  an identifier for a created entity; </li>
-<li><span class='attribute'>activity</span>:  an OPTIONAL identifier for the activity that creates the entity;</li>
-
-<li><span class='attribute'>time</span>: an OPTIONAL "generation time", the time at which the entity was completely created;</li>
-
-<li><span class='attribute'>attributes</span>:  an OPTIONAL set of attribute-value pairs that describes the modalities of generation of this entity by this activity.</li>
+<li><span class='attribute' id="generation.id">id</span>:  an OPTIONAL identifier for a generation;</li> 
+<li><span class='attribute' id="generation.entity">entity</span>:  an identifier for a created entity; </li>
+<li><span class='attribute' id="generation.activity">activity</span>:  an OPTIONAL identifier for the activity that creates the entity;</li>
+
+<li><span class='attribute' id="generation.time">time</span>: an OPTIONAL "generation time", the time at which the entity was completely created;</li>
+
+<li><span class='attribute' id="generation.attributes">attributes</span>:  an OPTIONAL set of attribute-value pairs that describes the modalities of generation of this entity by this activity.</li>
 </ul></div>
 <p>While each of the components <span class='attribute'>activity</span>, <span class='attribute'>time</span>, and  <span class='attribute'>attributes</span> is OPTIONAL, at least one of them MUST be present.</p>
 
@@ -1112,16 +1085,16 @@
 <section id="term-Usage">
 <h3>Usage</h3>
 
-<div class="glossary-ref" ref="glossary-usage" withspan="true"></div>
-
-
-<p><div class="attributes" id="attributes-usage"><dfn title="dfn-Usage">Usage</dfn><span class="withPn">, written <span class="pnExpression">used(id,a,e,t,attrs)</span> in PROV-N,</span> has the following constituents:
+<div class="glossary-ref" ref="glossary-usage"></div>
+
+
+<p><div class="attributes" id="attributes-usage"><dfn title="used">Usage</dfn><span class="withPn">, written <span class="pnExpression">used(id,a,e,t,attrs)</span> in PROV-N,</span> has the following constituents:
 <ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier for a usage;</li> 
-<li><span class='attribute'>activity</span>: an identifier for the consuming activity;</li>
-<li><span class='attribute'>entity</span>: an identifier for the consumed entity;</li>
-<li><span class='attribute'>time</span>: an OPTIONAL "usage time", the time at which the entity started to be used;</li>
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs that describe the modalities of usage of this entity by this activity.</li>
+<li><span class='attribute' id="usage.id">id</span>:  an OPTIONAL identifier for a usage;</li> 
+<li><span class='attribute' id="usage.activity">activity</span>: an identifier for the consuming activity;</li>
+<li><span class='attribute' id="usage.entity">entity</span>: an identifier for the consumed entity;</li>
+<li><span class='attribute' id="usage.time">time</span>: an OPTIONAL "usage time", the time at which the entity started to be used;</li>
+<li><span class='attribute' id="usage.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs that describe the modalities of usage of this entity by this activity.</li>
 </ul></div>
 
 <p>
@@ -1157,35 +1130,262 @@
 
 
 </section>
+
+
+<section id="term-Start">
+<h4>Start</h4>
+
+<div class="glossary-ref" ref="glossary-start"></div>
+
+
+<p>An activity <dfn title="wasStartedBy">start</dfn><span class="withPn">, written <span class="pnExpression">wasStartedBy(id,a,e,t,attrs)</span> in PROV-N,</span> contains:</p>
+<ul>
+<li><span class='attribute' id="start.id">id</span>:  an OPTIONAL identifier for the activity start;</li> 
+<li><span class='attribute' id="start.activity">activity</span>: an identifier for the started activity;</li> 
+<li><span class='attribute' id="start.trigger">trigger</span>: an OPTIONAL identifier for the entity triggering the activity;</li> 
+<li><span class='attribute' id="start.time">time</span>: the OPTIONAL time at which the activity was started; </li> 
+<li><span class='attribute' id="start.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs describing modalities according to which the activity was started.
+</ul>
+
+<div class="anexample">
+<p>
+The following example contains the description of an activity <span class="name">a1</span> (a discussion), which was started at a specific time, and was triggered by an email message <span class="name">e1</span>.</p>
+<pre class="codeexample">
+entity(e1,[prov:type="email message"])
+activity(a1,[prov:type="Discuss"])
+wasStartedBy(a1,e1,2011-11-16T16:05:00)
+</pre>
+Furthermore, if the activity happens to consume the message content, then the message would also be regarded as an input to the activity, which we describe as follows:
+<pre class="codeexample">
+used(a1,e1)
+</pre>
+</div>
+
+<div class="anexample">
+<p>
+In the following example, a race is started by a bang, and responsibility for this trigger is attributed to an agent 
+ <span class="name">ex:DarthVader</span>.
+<pre class="codeexample">
+activity(ex:foot_race)
+wasStartedBy(ex:foot_race,ex:bang,2012-03-09T08:05:08-05:00)
+entity(ex:bang)
+agent(ex:DarthVader)
+wasAttributedTo(ex:foot_race,ex:DarthVader)
+</pre>
+</div>
+
+
+<p>The relations wasStartedBy and used are orthogonal, and thus need to be asserted independently, according to the situation being described.</p>
+
 </section>
 
-
-
-
-
-<section id="activity-agent-relation">
-<h3>Activity-Agent Relation</h3>
+<section id="term-End">
+<h4>End</h4>
+
+<div class="glossary-ref" ref="glossary-end"></div>
+
+
+<p>An activity <dfn title="wasEndedBy">end</dfn><span class="withAsn">, written <span class="pnExpression">wasEndedBy(id,a,e,t,attrs)</span> in PROV-ASN,</span> contains:</p>
+<ul>
+<li><span class='attribute' id="end.id">id</span>:  an OPTIONAL identifier for the activity end;</li> 
+<li><span class='attribute' id="end.activity">activity</span>: an identifier for the ended activity;
+<li><span class='attribute' id="end.trigger">trigger</span>: an OPTIONAL identifier for the entity triggering the activity ending;
+<li><span class='attribute' id="end.time">time</span>: the OPTIONAL time at which the activity was ended; </li> 
+<li><span class='attribute' id="end.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs describing modalities according to which the activity was ended.
+</ul>
+
+<div class="anexample">
+<p>
+The following example is a description of an activity <span class="name">a1</span> (editing) that was ended following an approval document <span class="name">e1</span>.</p>
+<pre class="codeexample">
+entity(e1,[prov:type="approval document"])
+activity(a1,[prov:type="Editing"])
+wasEndedBy(a1,e1)
+</pre>
+</div>
+
+
+<div class="note">
+Constraints need to be added to part II, to ensure that time information on activity matches time information on Start/End.
+</div>
+
+
+</section>
+
+<section id="term-wasInformedBy">
+<h3>Communication</h3>
+
+<div class="glossary-ref" ref="glossary-communication"></div>
+
+
+<p>A communication implies that activity  <span class="name">a2</span> is dependent on another <span class="name">a1</span>, by way of some entity <span class="name">e</span> that is generated by <span class="name">a1</span> and used by <span class="name">a2</span>.</p>
+
+
+
+
+<div class="attributes" id="attributes-wasInformedBy">
+A <dfn title="wasInformedBy">communication</dfn> <span class="withPn">, written as 
+<span class="pnExpression">wasInformedBy(id,a2,a1,attrs)</span> in PROV-N,</span> contains: 
+<ul>
+<li><span class='attribute'>id</span>:  an OPTIONAL identifier  identifying the relation;</li> 
+<li><span class='attribute'>informed</span>: the identifier of the informed activity;
+<li><span class='attribute'>informant</span>: the identifier of the informant activity;
+<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs to further describe properties of the relation.</li>
+</ul>
+</div>
+
+<p> Relation <span class="name">wasInformedBy</span> is not transitive.</p>
+
+
+<div class="anexample">
+<p>
+Consider two long running services, which we represent by activities  <span class="name">s1</span> and <span class="name">s2</span>.  
+<pre class="codeexample">
+activity(s1,,,[prov:type="service"])
+activity(s2,,,[prov:type="service"])
+wasInformedBy(s2,s1)
+</pre>
+The last line indicates that some entity was generated by  <span class="name">s1</span> and used by  <span class="name">s2</span>.
+</div>
+</section>
+
+<section id="term-wasStartedByActivity">
+<h3>Start by Activity</h3>
+
+<div class="glossary-ref" ref="glossary-startByActivity"></div>
+
+
+
+<p><div class="attributes" id="attributes-startByActivity">
+A <dfn title="wasStartedByActivity">start by activity</dfn><span class="withPn">, written as 
+<span class="pnExpression">wasStartedByActivity(id, a2, a1, attrs)</span> in PROV-N,</span> contains: </p>
+<ul>
+<li><span class='attribute' id="startByActivity.id">id</span>:  an OPTIONAL identifier of the relation;</li> 
+<li><span class='attribute' id="startByActivity.started">started</span>: the identifier of  the started activity;
+<li><span class='attribute' id="startByActivity.starter">starter</span>: the identifier of the activity that started the other;</li>
+<li><span class='attribute' id="startByActivity.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
+</ul>
+</div>
+
+
+
+<div class="anexample">
+<p>
+Suppose activities <span class="name">a1</span> and <span class="name">a2</span> are computer processes that are executed on different hosts, and that <span class="name">a1</span> started <span class="name">a2</span>. This can be expressed as in the following fragment:</p>
+<pre class="codeexample">
+activity(a1,t1,t2,[ex:host="server1.example.org",prov:type="workflow"])
+activity(a2,t3,t4,[ex:host="server2.example.org",prov:type="subworkflow"])
+wasStartedByActivity(a2,a1)
+</pre>
+</div>
+
+</section>
+
+
+</section>
+
+<section id="component2"> 
+<h3>Component 2: Agents and Responsibility</h3>
+
+<p>The second component of PROV-DM is concerned with <a title="agent">agents</a> and the notions of
+<a>Attribution</a>, <a>Association</a>, <a>Responsibility</a>, relating agents to entities, activities, and agents, respectively.
+Figure <a href="#figure-component2">figure-component2</a> overviews the second component, with three classes (Entity, Activity, and Agent) and associations between them. So-called "association classes" are used to express ternary relations.
+</p>
+
+
+<div style="text-align: center;">
+<figure>
+<img src="images/Agents-Responsibility.png" alt="agents and responsibilities"/>
+<figcaption id="figure-component2">Agents and Responsibilities Component Overview</figcaption>
+</figure>
+</div>
+
+<section id="term-Agent">
+<h3>Agent</h3>
+
+<div class="glossary-ref" ref="glossary-agent"></div>
+
+
+<p><div class="attributes" id="attributes-agent">An <dfn title="dfn-agent">agent</dfn><span class="withPn">, noted <span class="pnExpression" id="pn-agent">agent(id, [ attr1=val1, ...])</span> in PROV-N,</span> contains:
+<ul>
+<li><span class='attribute' id="agent.id>id</span>: an identifier for an agent;</li>
+<li><span class='attribute' id="agent.attributes>attributes</span>: a set of attribute-value pairs representing this agent's situation in the world.
+</li>
+</ul></div>
+
+
+<p>
+From an interoperability perspective, it is useful to define some basic categories of agents since
+it will improve the use of provenance by applications.  
+There should be very few of these basic categories to keep the model simple and accessible. 
+There are three types of agents in the model since they are common across most anticipated domains of use:
+<ul>
+<li><span class="name">Person</span>: agents of type Person are people.</li> 
+<li><span class="name">Organization</span>: agents of type Organization are social institutions such as companies, societies etc.</li> 
+<li><span class="name">SoftwareAgent</span>: a software agent is a piece of software. </li>
+</ul>
+<p>These types are mutually exclusive, though they do not cover all kinds of agent. </p>
+
+
+
+<div class="anexample">
+<p>The following expression is about an agent identified by <span class="name">e1</span>, which is a person, named Alice, with employee number 1234.</p>
+<pre class="codeexample">
+agent(e1, [ex:employee="1234", ex:name="Alice", prov:type="prov:Person" %% xsd:QName])
+</pre>
+<p>It is optional to specify the type of an agent. When present, it is expressed using the <span class="name">prov:type</span> attribute.</p>
+</div>
+
+</section>
+
+<section id="term-attribution">
+<h3>Attribution</h3> 
+
+<div class="glossary-ref" ref="glossary-attribution"></div>
+
+<p>When an entity  <span class="name">e</span> is attributed to agent  <span class="name">ag</span>, entity <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>
+
+<p> An <dfn title="wasAttributedTo">attribution relation</dfn><span class="withPn">, written <span class="pnExpression">wasAttributedTo(id,e,ag,attr)</span> in PROV-N,</span> contains the following elements:</p>
+<ul>
+<li><span class='attribute' id="attribution.id>id</span>: an OPTIONAL identifier for the relation;</li> 
+<li><span class='attribute' id="attribution.entity>entity</span>: an entity identifier;</li>
+<li><span class='attribute' id="attribution.agent>agent</span>: the identifier of the agent whom the entity is ascribed to;</li>
+<li><span class='attribute' id="attribution.attributes>attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
+</ul>
+
+<div class="anexample">
+<p>
+Revisiting the example of <a href="#section-example-b">Section 3.2</a>,
+we can ascribe <span class="name">tr:WD-prov-dm-20111215</span> to some agents without having to make an activity explicit.
+<pre class="codeexample">
+agent(ex:Paolo, [ prov:type="Person" ])
+agent(ex:Simon, [ prov:type="Person" ])
+entity(tr:WD-prov-dm-20111215, [ prov:type="pr:RecsWD" %% xsd:QName ])
+wasAttributedTo(tr:WD-prov-dm-20111215, ex:Paolo, [prov:role="editor"])
+wasAttributedTo(tr:WD-prov-dm-20111215, ex:Simon, [prov:role="contributor"])
+</pre>
+</div>
+
+</section>  <!-- end attribution -->
+
 
 <section id="term-ActivityAssociation">
-<h4>Activity Association</h4>
-
-<div class="glossary-ref" ref="glossary-activityAssociation" withspan="true"></div>
-
-<p>As far as responsibility is concerned, PROV-DM offers two kinds of constructs. The first, introduced in this section, is a relation between an agent, a plan, and an activity; the second, introduced in <a
-href="#term-responsibility">Section Responsibility</a>, is a relation between agents expressing that an agent was acting on behalf of another, in the context of an activity. </p>
-
-
-<p><div class="attributes" id="attributes-activity-association">An <dfn title="dfn-activity-association">activity association</dfn><span class="withPn">, written <span class="pnExpression">wasAssociatedWith(id,a,ag,pl,attrs)</span> in PROV-N,</span> has the following
+<h4>Association</h4>
+
+<div class="glossary-ref" ref="glossary-activityAssociation"></div>
+
+
+<p><div class="attributes" id="attributes-activity-association">An <dfn title="wasAssociatedWith">activity association</dfn><span class="withPn">, written <span class="pnExpression">wasAssociatedWith(id,a,ag,pl,attrs)</span> in PROV-N,</span> has the following
 constituents:
 <ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier for the association between an activity and an agent;</li> 
-<li><span class='attribute'>activity</span>: an identifier for the activity;</li>
-<li><span class='attribute'>agent</span>: an identifier for the agent associated with the activity;</li>
-<li><span class='attribute'>plan</span>: an OPTIONAL identifier for the plan adopted by the agent in the context of this activity;
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs that describe the modalities of association of this activity with this agent.</li>
+<li><span class='attribute' id="association.id">id</span>:  an OPTIONAL identifier for the association between an activity and an agent;</li> 
+<li><span class='attribute' id="association.activity">activity</span>: an identifier for the activity;</li>
+<li><span class='attribute' id="association.agent">agent</span>: an OPTIONAL identifier for the agent associated with the activity;</li>
+<li><span class='attribute' id="association.plan">plan</span>: an OPTIONAL identifier for the plan adopted by the agent in the context of this activity;
+<li><span class='attribute' id="association.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs that describe the modalities of association of this activity with this agent.</li>
 </ul></div>
 
-<div class="anexample">
+<div class="anexample id="anexample-wasAssociateWith">
 In the following example, a designer and an operator agents are associated with an activity. The designer's goals are achieved by a workflow <span class="name">ex:wf</span>.   
 <pre class="codeexample">
 activity(ex:a,[prov:type="workflow execution"])
@@ -1200,6 +1400,20 @@
 for instance.
 </div>
 
+<div class="anexample" id="anexample-wasAssociateWith-2">
+In some cases, one wants to indicate a plan was followed, without having to specify which agent was involved.
+<pre class="codeexample">
+activity(ex:a,[prov:type="workflow execution"])
+wasAssociatedWith(ex:a,-,ex:wf)
+entity(ex:wf,[prov:type="prov:Plan"%% xsd:QName, ex:label="Workflow 1", 
+              ex:url="http://example.org/workflow1.bpel" %% xsd:anyURI])
+</pre>
+In this case, it is assumed that an agent exists, but simply it has not been specified.
+</div>
+
+
+
+
 <div class='issue'> The activity association record does not allow for a plan to be asserted without an agent.
 This seems over-restrictive. Discussed in the context of <a href="http://www.w3.org/2011/prov/track/issues/203">ISSUE-203</a>.</div>
 
@@ -1207,68 +1421,13 @@
 <div class='issue'> Agents should not be inferred. WasAssociatedWith should also work with entities.
 This is <a href="http://www.w3.org/2011/prov/track/issues/206">ISSUE-206</a>.</div>
 
-
-</section>
-
-<section id="term-Start-End">
-<h4>Activity Start and Activity End</h4>
-
-<p> A <dfn title="dfn-Start">activity start</dfn> is a representation of an agent starting an activity.
- An <dfn title="dfn-End">activity end</dfn> is a representation of an agent ending an activity. Both relations are specialized forms of <span class="name">wasAssociatedWith</span>. They contain
-attributes describing the modalities of acting/ending activities.</p>
-
-
-
-<p>An activity start<span class="withPn">, written <span class="pnExpression">wasStartedBy(id,a,ag,attrs)</span> in PROV-N,</span> contains:</p>
-<ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier for the activity start;</li> 
-<li><span class='attribute'>activity</span>: an identifier for the started activity;
-<li><span class='attribute'>agent</span>: an identifier for the agent starting the activity;
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs describing modalities according to which the agent started the activity.
-</ul>
-
-<p>An activity end<span class="withPn">, written <span class="pnExpression">wasEndedBy(id,a,ag,attrs)</span> in PROV-N,</span> contains:</p>
-<ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier for the activity end;</li> 
-<li><span class='attribute'>activity</span>: an identifier for the ended activity;
-<li><span class='attribute'>agent</span>: an identifier for the agent ending the activity;
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs describing modalities according to which the agent ended the activity.
-</ul>
-
-
-<div class="anexample">
-<p>
-In the following example,</p>
-<pre class="codeexample">
-wasStartedBy(a,ag,[ex:mode="manual"])
-wasEndedby(a,ag,[ex:mode="manual"])
-</pre>
-<p>there is an activity denoted by <span class="name">a</span>
-that was started and ended by an agent denoted by  <span class="name">ag</span>, in "manual" mode, an application specific characterization of these relations.
-</p>
-</div>
-
-<div class='issue'> 
-Should we define start/end records as representation of activity start/end events.
-Should time be associated with these events rather than with activities. This will be similar to what
-we do for entities. This is issue <a href="http://www.w3.org/2011/prov/track/issues/207">ISSUE-207</a>.</div>
-
-
-</section>
-
-
-
-
-</section>
-
-<section id="entity-entity-agent-agent-relation">
-<h4>Entity-Entity or Agent-Agent Relation</h4>
+</section>  <!-- end wasAssociatedWith -->
 
 <section id="term-responsibility">
 
-<h4>Responsibility Chain</h4>
-
-<div class="glossary-ref" ref="glossary-responsibilityChain" withspan="true"></div>
+<h4>Responsibility</h4>
+
+<div class="glossary-ref" ref="glossary-responsibility"></div>
 
 <p>PROV-DM offers a mild version of responsibility
 in the form of a relation to represent when an agent acted on another
@@ -1293,14 +1452,14 @@
 might be a need to define specific aspects of control that various
 agents exert over a given activity.</p>
 
-<p><div class="attributes" id="attributes-responsibility-chain">A <dfn title="dfn-responsibility-chain">responsibility chain</dfn><span class="withPn">, written <span class="pnExpression">actedOnBehalfOf(id,ag2,ag1,a,attrs)</span> in PROV-N,</span> has the following constituents:
+<p><div class="attributes" id="attributes-responsibility-chain">A <dfn title="actedOnBehalfOf">responsibility</dfn> relation<span class="withPn">, written <span class="pnExpression">actedOnBehalfOf(id,ag2,ag1,a,attrs)</span> in PROV-N,</span> has the following constituents:
 <ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier for the responsibility chain;</li> 
-<li><span class='attribute'>subordinate</span>: an identifier for the agent associated with an activity, acting on behalf of the responsible
+<li><span class='attribute' id="responsibility.id">id</span>:  an OPTIONAL identifier for the responsibility chain;</li> 
+<li><span class='attribute' id="responsibility.subordinate">subordinate</span>: an identifier for the agent associated with an activity, acting on behalf of the responsible
 agent;</li>
-<li><span class='attribute'>responsible</span>: an identifier for the agent,  on behalf of which the subordinate agent acted;</li>
-<li><span class='attribute'>activity</span>: an OPTIONAL identifier of an activity for which the responsibility chain holds;</li>
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs that describe the modalities of this relation.</li>
+<li><span class='attribute' id="responsibility.responsible">responsible</span>: an identifier for the agent,  on behalf of which the subordinate agent acted;</li>
+<li><span class='attribute' id="responsibility.activity">activity</span>: an OPTIONAL identifier of an activity for which the responsibility chain holds;</li>
+<li><span class='attribute' id="responsibility.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs that describe the modalities of this relation.</li>
 </ul></div>
 
 
@@ -1327,11 +1486,36 @@
 </li>
 </ul>
 </section>
+
+
+
+</section>
+
+<section id="component3"> 
+<h3>Component 3: Derivations</h3>
+
+
+
+<p>The third component of PROV-DM is concerned with <a title="derivation">derivations</a> between <a title="entity">entities</a>, and subtypes of derivations <a>Revision</a>, <a>Quotation</a>, <a>Original Source</a>, and <a>Traceability</a>.
+Figure <a href="#figure-component3">figure-component3</a> overviews the third component, with three classes (Entity, Activity, and Agent) and associations between them. So-called "association classes" are used to express n-ary relations.
+</p>
+
+
+<div style="text-align: center;">
+<figure>
+<img src="images/Derivation.png" alt="derivation"/>
+<figcaption id="figure-component3">Derivation Component Overview</figcaption>
+</figure>
+</div>
+
 <section id="Derivation-Relation">
-
 <h4>Derivation</h4>
 
-<div class="glossary-ref" ref="glossary-derivation" withspan="true"></div>
+
+
+
+
+<div class="glossary-ref" ref="glossary-derivation"></div>
 
 
 
@@ -1341,15 +1525,15 @@
 A derivation can be described at various levels of precision. In its simplest form, derivation relates two entities. Optionally, attributes can be added to describe modalities of derivation.  If the derivation is the result of a single known activity, then this activity can also be optionally expressed. And to provide a completely accurate description of derivation, the generation and usage of the generated and used entities, respectively, can be provided. The reason for optional information such as activity, generation, and usage to be linked to derivations is to aid analysis of provenance and to facilitate provenance-based reproducibility. </p>
 
 
-<p><div class="attributes" id="attributes-derivation">A <dfn>derivation</dfn><span class="withPn">, written <span class="pnExpression" id="pn-wasDerivedFrom">wasDerivedFrom(id, e2, e1, a, g2, u1, attrs)</span> in PROV-N,</span> contains:
+<p><div class="attributes" id="attributes-derivation">A <dfn title="wasDerivedFrom">derivation</dfn><span class="withPn">, written <span class="pnExpression" id="pn-wasDerivedFrom">wasDerivedFrom(id, e2, e1, a, g2, u1, attrs)</span> in PROV-N,</span> contains:
 <ul>
-<li><em>id</em>:  an OPTIONAL identifier  for a derivation;</li> 
-<li><em>generatedEntity</em>: the identifier of the entity generated by the derivation;</li>
-<li><em>usedEntity</em>: the identifier of the entity used by the derivation;</li>
-<li><em>activity</em>: an OPTIONAL identifier for the activity using and generating the above entities;</li>
-<li><em>generation</em>: an OPTIONAL identifier for the generation involving the generated entity and activity;</li> 
-<li><em>usage</em>: an OPTIONAL identifier for the usage involving the used entity and activity;</li> 
-<li><em>attributes</em>: an OPTIONAL set of attribute-value pairs that describe the modalities of this derivation.</li>
+<li><span class='attribute' id="derivation.id">id</span>:  an OPTIONAL identifier  for a derivation;</li> 
+<li><span class='attribute' id="derivation.generatedEntity">generatedEntity</span>: the identifier of the entity generated by the derivation;</li>
+<li><span class='attribute' id="derivation.usedEntity">usedEntity</span>: the identifier of the entity used by the derivation;</li>
+<li><span class='attribute' id="derivation.activity">activity</span>: an OPTIONAL identifier for the activity using and generating the above entities;</li>
+<li><span class='attribute' id="derivation.generation">generation</span>: an OPTIONAL identifier for the generation involving the generated entity and activity;</li> 
+<li><span class='attribute' id="derivation.usage">usage</span>: an OPTIONAL identifier for the usage involving the used entity and activity;</li> 
+<li><span class='attribute' id="derivation.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs that describe the modalities of this derivation.</li>
 </ul>
 </div>
 
@@ -1386,12 +1570,184 @@
 
 </section>
 
-
-<section id="term-alternate-specialization">
-
-<h4>Alternate and Specialization</h4>
-
-<p>The purpose of this section is to introduce relations between two entities that refer to the same thing in the world.
+<section id="term-Revision">
+<h3>Revision</h3>
+
+<p><span class="glossary-ref" ref="glossary-revision"></span></p>
+
+<p> Deciding whether something is made available as a revision of something else usually involves an agent who takes responsibility for approving that the former is a due variant of the latter.
+ The agent who is responsible for the revision may optionally be specified.
+ Revision is a particular case of  <a href="#Derivation-Relation">derivation</a> of an entity into its revised version.</p>
+
+<p> A <dfn title="wasRevisionOf">revision</dfn> relation<span class="withPn">, written <span class="pnExpression">wasRevisionOf(id,e2,e1,ag,attrs)</span> in PROV-N,</span> contains:</p>
+<ul>
+<li><span class='attribute' id="revision.id">id</span>: an OPTIONAL identifier for the relation;</li> 
+<li><span class='attribute' id="revision.newer">newer</span>: the identifier of the revised  entity;
+<li><span class='attribute' id="revision.older">older</span>: the identifier of the older entity;
+<li><span class='attribute' id="revision.responsibility">responsibility</span>: an OPTIONAL  identifier for the agent who approved the newer entity as a variant of the older;
+<li><span class='attribute' id="revision.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of this relation.</li>
+</ul>
+
+
+
+<div class="anexample" id="anexample-revision">
+<p>
+Revisiting the example of <a href="#section-example-a">Section 3.1</a>,
+we can now state that the report 
+ <span class="name">tr:WD-prov-dm-20111215</span> is a revision of 
+ the report <span class="name">tr:WD-prov-dm-20111018</span>, approved by
+agent  <span class="name">w3:Consortium</span>.
+<pre class="codeexample">
+entity(tr:WD-prov-dm-20111215, [ prov:type="pr:RecsWD" %% xsd:QName ])
+entity(tr:WD-prov-dm-20111018, [ prov:type="pr:RecsWD" %% xsd:QName ])
+wasRevisionOf(tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018, w3:Consortium)
+</pre>
+</div>
+
+
+
+</section>  <!-- end revision -->
+
+<section id="term-quotation">
+<h3>Quotation</h3>
+
+<p> 
+<span class="glossary-ref" ref="glossary-quotation"></span>
+</p>
+
+<p>Quotation
+ is a particular case of  <a href="#Derivation-Relation">derivation</a> in which entity <span class="name">e2</span> is derived from an original entity <span class="name">e1</span> by copying, or "quoting", some or all of it.
+  A <dfn title="wasQuotedFrom">quotation</dfn> relation <span class="withPn">, written <span class="pnExpression">wasQuotedFrom(id,e2,e1,ag2,ag1,attrs)</span> in PROV-N,</span> contains:</p>
+<ul>
+<li><span class='attribute' id="quotation.id">id</span>: an OPTIONAL identifier for the relation;</li> 
+<li><span class='attribute' id="quotation.quote">quote</span>:  an identifier (<span class="name">e2</span>) for the entity that represents the quote (the partial copy);
+<li><span class='attribute' id="quotation.original">original</span>: an identifier (<span class="name">e1</span>) for the original entity being quoted;
+<li><span class='attribute' id="quotation.quoterAgent">quoterAgent</span>: an OPTIONAL identifier (<span class="name">ag2</span>) for the agent who performs the quote;
+<li><span class='attribute' id="quotation.originalAgent">originalAgent</span>: an OPTIONAL identifier (<span class="name">ag1</span>) for the agent to whom the original entity is attributed;
+<li><span class='attribute' id="quotation.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
+
+</ul>
+
+<div class="anexample" id="anexample-quotation">
+<p>
+The following paragraph is a quote from one of  <a href="http://thinklinks.wordpress.com/2012/03/07/thoughts-from-the-dagstuhl-principles-of-provenance-workshop/">the author's blogs</a>.
+<blockquote id="paul-quote"><em>
+"During the workshop, it became clear to me that the consensus based models (which are often graphical in nature) can not only be formalized but also be directly connected to these database focused formalizations. I just needed to get over the differences in syntax.  This could imply that we could have nice way to trace provenance across systems and through databases and be able to understand the mathematical properties of this interconnection."</em>
+</blockquote>
+<p>If <a href="http://thinklinks.wordpress.com/2012/03/07/thoughts-from-the-dagstuhl-principles-of-provenance-workshop/"><span class="name">ex:blog</span></a> denotes the original blog by agent <span class="name">ex:Paul</span>, and 
+ <a href="#paul-quote"><span class="name">ex:blockquote</span></a> denotes the above paragraph, then the following descriptions express that the above paragraph is copied by agent <span class="name">ex:Luc</a> from a part of the blog, attributed to the agent <span class="name">ex:Paul</a>.</p>
+<pre class="codeexample">
+entity(ex:blog)
+agent(ex:Luc)
+agent(ex:Paul)
+wasQuotedFrom(ex:blockQuote,ex:blog,ex:Luc,ex:Paul)
+</pre>
+
+</pre>
+</div>
+
+
+</section>  <!-- end quotation -->
+
+
+<section id="term-original-source">
+<h3>Original Source</h3>
+
+<p>
+<span class="glossary-ref" ref="glossary-original-source"></span>
+</p>
+
+<p>An <dfn>original source relation</dfn> is a particular case of <a href="#Derivation-Relation">derivation</a> 
+which aims to give
+credit to the source that originated some information. It is recognized that it may be
+hard to determine which entity constitutes an original source. This definition is inspired by
+<tt>orginal-source</tt> as defined in
+<a href="http://googlenewsblog.blogspot.com/2010/11/credit-where-credit-is-due.html">http://googlenewsblog.blogspot.com/2010/11/credit-where-credit-is-due.html<a/>.
+
+
+<p> An <dfn title="hadOriginalSource">original source</dfn> relation<span class="withPn">, written <span class="pnExpression">hadOriginalSource(id,e2,e1,attrs)</span>,</span> contains:</p>
+<ul>
+<li><span class='attribute' id="originalSource.id">id</span>:  an OPTIONAL identifier for the relation;</li> 
+<li><span class='attribute' id="originalSource.derived">derived</span>: an identifier for the derived entity; </li>
+<li><span class='attribute' id="originalSource.source">source</span>: an identifier  for the original source entity;</li>
+<li><span class='attribute' id="originalSource.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
+</ul>
+
+<div class="anexample">
+<p>
+Let us consider the current section <a href="#term-original-source"><span class="name">dm:term-original-source</span></a>, and
+the Google page <a href="http://googlenewsblog.blogspot.com/2010/11/credit-where-credit-is-due.html"><span class="name">go:credit-where-credit-is-due.html</span></a>, where the notion was originally described.
+<pre class="codeexample">
+entity(dm:term-original-source)
+entity(go:credit-where-credit-is-due.html)
+hadOriginalSource(dm:term-original-source,go:credit-where-credit-is-due.html)
+</pre>
+</div>
+
+
+</section>  <!-- end original source -->
+
+<section id="term-traceability">
+<h3>Traceability</h3>
+
+<p>
+<span class="glossary-ref" ref="glossary-traceability"></span>
+</p>
+
+
+<p> A traceability relation between two entities  <span class="name">e2</span> and  <span class="name">e1</span> is a generic dependency of <span class="name">e2</span>
+on  <span class="name">e1</span> that indicates either that <span class="name">e1</span> may have been necessary for <span class="name">e2</span> to be created, or that <span class="name">e1</span> bears 
+some responsibility for  <span class="name">e2</span>'s existence.
+
+
+<p><dfn title="tracedTo">Traceability</dfn><span class="withPn">, written <span class="pnExpression">tracedTo(id,e2,e1,attrs)</span> in PROV-N,</span> contains:</p>
+<ul>
+<li><span class='attribute' id="traceability.id">id</span>:  an OPTIONAL identifier identifying the relation;</li> 
+<li><span class='attribute' id="traceability.entity">entity</span>:  an identifier identifying an entity;
+<li><span class='attribute' id="traceability.ancestor">ancestor</span>: an identifier identifying an ancestor entity that the former depends on;
+<li><span class='attribute' id="traceability.attributes">attributes</span>: an OPTIONAL set of attribute-value pairs to further describe properties of the relation.</li>
+</ul>
+<p>We note that the ancestor is allowed to be an agent since agents are entities. </p>
+
+<div class="anexample">
+<p>We refer to the example of <a href="#section-example-a">Section 3.1</a>, and specifically to <a href="#prov-tech-report">Figure prov-tech-report</a>. We can see that there is a path from 
+<span class="name">tr:WD-prov-dm-20111215</span> to 
+<span class="name">w3:Consortium</span> or to
+<span class="name">pr:rec-advance</span>. This is expressed as follows.
+<pre class="codeexample">
+ tracedTo(tr:WD-prov-dm-20111215,w3:Consortium)
+ tracedTo(tr:WD-prov-dm-20111215,pr:rec-advance)
+</pre>
+</div>
+
+
+<p>
+<a>Derivation</a> and <a>association</a> are particular cases of  traceability.
+</p>
+
+
+</section>
+
+</section>
+
+<section id="component4"> 
+<h3>Component 4: Alternate Entities</h3>
+
+
+<p>The fourth component of PROV-DM is concerned with relations <a>alternate</a> and <a>specialization</a> between entities.
+Figure <a href="#figure-component4">figure-component4</a> overviews the component.
+</p>
+
+
+<div style="text-align: center;">
+<figure>
+<img src="images/Alternates.png" alt="alternates"/>
+<figcaption id="figure-component4">Alternates Component Overview</figcaption>
+</figure>
+</div>
+
+
+<p>This component consists of relations between two entities that refer to the same thing in the world.
 Consider for example three entities:
 </p>
 <ul>
@@ -1406,22 +1762,34 @@
 
 
 <ol>
-  <li>e1 and e2 refer to Bob in two contexts (as Facebook and Twitter users, respectively)
-  <li> both of e1 and e2  are more detailed than e3.
+  <li><span class="name">e1</span> and <span class="name">e2</span> refer to Bob in two contexts (as Facebook and Twitter users, respectively)
+  <li> both of <span class="name">e1</span> and <span class="name">e2</span>  are more detailed than <span class="name">e3</span>.
 </ol>
 
 
 
+
+
 <p>The following two relations are introduced for expressing alternative or specialized entities. </p>
 
+<section id="term-alternate">
+
+<h4>Alternate</h4>
+
+<div class="note">To define</div>
+
+
+<span class="glossary" id="glossary-alternate">  
+An entity is <dfn id="concept-alternate">alternate</dfn> of another if they refer to a same thing.
+</span>
+
 
   
 
-<p><div class="attributes" id="attributes-alternate">
-An <dfn title="dfn-Alternate">alternate relation</dfn><span class="withPn">, written <span class="pnExpression">alternateOf(alt1, alt2)</span> in PROV-N,</span> addresses case (1). It has the following constituents:
+<p><div class="attributes" id="attributes-alternate">An <dfn title="alternateOf">alternate relation</dfn><span class="withPn">, written <span class="pnExpression">alternateOf(alt1, alt2)</span> in PROV-N,</span> addresses case (1). It has the following constituents:
 <ul>
-<li><span class='attribute'>firstAlternate</span>: an identifier of the first of the two entities;</li>
-<li><span class='attribute'>secondAlternate</span>: an identifier of the second of the two entities.</li>
+<li><span class='attribute' id="alternate.firstAlternate">firstAlternate</span>: an identifier of the first of the two entities;</li>
+<li><span class='attribute' id="alternate.secondAlternate">secondAlternate</span>: an identifier of the second of the two entities.</li>
 </ul>
 </div>
 
@@ -1434,15 +1802,26 @@
 </pre>
 </div>
 
+</section>
+
+<section id="term-specialization">
+
+<h4>Specialization</h4>
+
+<div class="note">To define</div>
+
+<span class="glossary" id="glossary-specialization">  
+An entity is a <dfn id="concept-alternate">specialization</dfn> of another if the latter is a more 
+general entity than the former.
+</span>
 
 
 <p>
-<div class="attributes" id="attributes-specialization">
-A <dfn title="dfn-Specialization">specialization relation</dfn><span class="withPn">, written <span class="pnExpression">specializationOf(sub, super)</span> in PROV-N,</span> addresses case  (2). It  has the following constituents:
+<div class="attributes" id="attributes-specialization">A <dfn title="specializationOf">specialization relation</dfn><span class="withPn">, written <span class="pnExpression">specializationOf(sub, super)</span> in PROV-N,</span> addresses case  (2). It  has the following constituents:
 
 <ul>
-<li><span class='attribute'>specializedEntity</span>: an identifier of the specialized entity;</li>
-<li><span class='attribute'>generalEntity</span>: an identifier of the entity that is being specialized.</li>
+<li><span class='attribute' id="specialization.specializedEntity">specializedEntity</span>: an identifier of the specialized entity;</li>
+<li><span class='attribute' id="specialization.generalEntity">generalEntity</span>: an identifier of the entity that is being specialized.</li>
 </ul>
 </div>
 
@@ -1455,6 +1834,7 @@
 </pre>
 </div>
 
+
 <!--
 <p>To promote take up of these relations, it is not specified whether they are transitive or symmetric.  We anticipate that applications will specialize these relations according to their needs. </p>
 -->
@@ -1466,25 +1846,371 @@
 </section>
 </section>
 
-
+<section id="component5"> 
+<h3>Component 5: Collections</h3>
+
+
+<p><strong>Collection relations and entity types</strong> address the need to describe the evolution of entities that have a collection structure, that is, which may contain other entities. The intent of these relations and entity types is to capture the <em>history of changes that occurred to a collection</em>. Indirectly, such history provides a way to reconstruct, with some limitations discussed <a href="#term-collection-state">below</a>, the contents of a collection entity. Thus, for the purpose of provenance a collection entity is viewed an immutable representation of the state of a collection data structure, following a sequence of insertion and deletion operations.
+
+<br/>A collection entity is an entity that has a logical internal structure consisting of key-value pairs, often referred to as a <strong>map</strong>. This collection type provides a generic indexing structure that can be used to model commonly used data structures, including associative lists (also known as "dictionaries" in some programming languages), relational tables, ordered lists, and more (the specification of such specialized structures in terms of key-value pairs is out of the scope of this document).
+
+<section id="term-collection-types">
+<h3>Collection types</h3>
+
+The following new entity types are introduced:
+
+<ul>
+  <li> <span class="name">prov:Collection</span>  denotes an entity of type collection, i.e. an entity that  can participate in  relations amongst collections;
+
+  <li><span class="name">prov:EmptyCollection</span> denotes an empty collection.
+</ul>
+
+<div class="anexample">
+<pre class="codeexample">
+   entity(c, [prov:type="EmptyCollection"])    // e is an empty collection
+   entity(c1, [prov:type="Collection"])   // c1 is a collection, with unknown content
+</pre>
+</div>
+
+</section>  <!-- end of collection-types -->
+
+
+<section id="term-collection-insertion">
+<h3>Insertion</h3>
+
+
+<strong>Derivation-by-Insertion</strong> relation <span class="name">derivedByInsertionFrom(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>.
+
+<p> A Derivation-by-Insertion relation<span class="withPn">, written <span class="pnExpression"> derivedByInsertionFrom(id, collAfter, collBefore, key, value, 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>
+<li><span class='attribute'>before</span>: an identifier for the collection <em>before</em> insertion;</li>
+<li><span class='attribute'>key</span>: the key that has been inserted</li>
+<li><span class='attribute'>value</span>: an identifier  for the value that has been inserted with the key.</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"])    // c is an empty collection
+   entity(v1)
+   entity(v2)
+   entity(c1, [prov:type="Collection"])
+   entity(c2, [prov:type="Collection"])
+  
+  derivedByInsertionFrom(c1, c, "k1", v1)       
+  derivedByInsertionFrom(c2, c1, "k2", v2)    
+</pre>
+  From this set of assertions, we conclude:
+  <pre class="codeexample">
+   c =  {  }
+   c1 = { ("k1",v1) }
+   c2 = { ("k1",v1), ("k2", v2) }
+  </pre>
+</div>
+
+</section>  <!-- insertion -->
+
+
+<section id="term-collection-removal">
+<h3>Removal</h3>
+
+<strong>Derivation-by-Removal</strong> relation <span class="name">derivedByRemovalFrom(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>.
+
+<p> A Derivation-by-Removal relation, written <span class="pnExpression"> derivedByRemovalFrom(id, collAfter, collBefore, key, 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>
+<li><span class='attribute'>before</span>: an identifier  for the collection <em>before</em> the deletion;</li>
+<li><span class='attribute'>key</span>: the key corresponding to the (key, value) pair that has been deleted from the collection.</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 an empty collection
+   entity(v1)
+   entity(v2)
+   entity(c1, [prov:type="Collection"])
+   entity(c2, [prov:type="Collection"])
+  
+  derivedByInsertionFrom(c1, c, "k1", v1)       
+  derivedByInsertionFrom(c2, c1, "k2", v2)      
+  derivedByRemovalFrom(c3, c2, k1)              
+</pre>
+  From this set of assertions, we conclude:
+  <pre class="codeexample">
+   c =  {  }
+   c1 = { ("k1",v1) }
+   c2 = { ("k1",v1), ("k2", v2) }
+   c3 = { ("k2",v2) }
+  </pre>
+
+  
+</div>
+
+</section>  <!-- removal -->
+
+
+
+<section id="collection-convenience-relations">
+<h3>Convenience relations</h3>
+
+The following set of additional relations are introduced to simplify assertions about the state and state changes of collections.
+
+<section id="term-collection-bulk">
+<h3>Bulk insertion and removal</h3>
+
+The following relations allow for insertion and removal assertions involving a set of key-value pairs..
+
+<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>
+<li><span class='attribute'>before</span>: an identifier for the collection <em>before</em> insertion;</li>
+<li><span class='attribute'>key-value-set</span>: a set of inserted key-value pairs, 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>
+
+<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>
+<li><span class='attribute'>before</span>: an identifier  for the collection <em>before</em> the deletion;</li>
+<li><span class='attribute'>key-set</span>: a set of deleted keys, of the form {key_1,..., key_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>
+
+
+
+</section> <!-- bulk ops -->
+
+<section id="term-collection-containment">
+<h3>Containment</h3>
+
+The insertion and removal relations make insertions and removals explicit as part of the history of a collection. This, however, requires explicit mention of the state of the collection prior to each insertion. The containment relation removes this needs, allowing the state of a collection <span class="name">c</span> to be asserted without having to introduce a prior state. This allows for the natural expression of a collection state, for instance in cases where a program or workflow block produces a new collection <span class="name">c</span>  with known content. In such cases, 
+<span class="name">contained(c,k, v)</span> asserts that  <span class="name">c</span> is known to contain <span class="name">(k,v)</span>, without having to introduce an initial state. <br/>
+This relation is introduced as a convenience, as it can be rewritten as an insertion operation by introducing a prior state:  <br/>
+<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 <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>
+<li><span class='attribute'>key</span>: the key of the pair contained by the collection;</li>
+<li><span class='attribute'>value</span>: an identifier for the value corresponding to the key;</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="Collection"])    // e is a collection, with unknown content
+   activity(a)
+   wasGeneratedBy(c,a)   // a produced c
+  
+   entity(v1)
+   entity(v2)
+   contained(c, "k1", v1)
+   contained(c, "k1", v2)    // c is contains at least ("k1", v1)  and ("k2", v2)
+  
+   entity(v2)
+   entity(c1, [prov:type="Collection"])
+  
+   derivedByInsertionFrom(c1, c, "k3", v3)     
+</pre>
+  From this set of assertions, we conclude:
+  <pre class="codeexample">
+   c  contains   ("k1", v1), ("k2", v2) 
+   c1 contains   ("k1", v1), ("k2", v2), ("k3", v3) 
+  </pre>
+ Note that the state of <span class="name">c1</span> after these assertions is only partially known, because the initial state of <span class="name">c</span> is unknown. Alternatively, had the first assertion been
+  <span class="name"> entity(c, [prov:type="EmptyCollection"])</span>,
+  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 -->
+
+
+</section> <!-- convenience relations -->
+
+<section id="term-collection-state">
+
+<h3>State of collections and use of weaker <a href="#Derivation-Relation">derivation</a> relation</h3>
+
+<p>The state of a collection is only known to the extent that a chain of derivations starting from an empty collection can be found. Since a set of assertions regarding a collection's evolution may be incomplete, so is the reconstructed state obtained by querying those assertions. In general, all assertions reflect partial knowledge reagrding a sequence of data transformation events. In the particular case of collection evolution, in which some of the state changes may have been missed, the more generic  <a href="#Derivation-Relation">derivation</a> relation should be used to signal that some updates may have occurred, which cannot be precisely asserted as insertions or removals. The following two examples illustrate this.</p>
+
+<div class="anexample">
+<pre class="codeexample">
+  entity(c, [prov:type="collection"])    // c is a collection, possibly not empty
+  entity(v1)
+  entity(v2, [prov:type="collection"])    // v2 is a collection
+
+ 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/>
+
+<ul>
+<li>In Key-Value pairs, Keys are <a href="#term-value">values</a>, and Values are entities. This allows expressing nested collections, that is, collections whose values include entities of type collection.</li>
+
+<li>As the relation names suggest, insertion and removal relations are a particular case of <a href="#Derivation-Relation">derivation</a>.</li>
+
+
+
+<li>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 derivations 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.</li>
+
+
+<li>The representation of a collection through these relations, 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. Entities, however, are immutable and this applies  to those entities that represent collections. This is reflected in the constraints listed in Part II.  </li>
+</ul>
+
+
+  </section> <!-- term-collection-state -->
+  
+</section>   <!-- end collections-->
+
+
+<section id="component6"> 
+<h3>Component 6: Annotations</h3>
+
+<p>The sixth component of PROV-DM is concerned with <a title="note">notes</a> and <a title="annotation">annotations</a>.
+</p>
+
+
+   <section id="term-note"> 
+      
+<h4>Note</h4>
+
+<p>As provenance descriptions are exchanged between systems, it may be useful to add extra-information to what they are describing. For instance, a "trust service" may add value-judgements about the
+trustworthiness of some of the entities or agents involved. Likewise, an interactive visualization component may want to enrich a set of provenance descriptions with information helping reproduce their
+visual representation. To help with interoperability, PROV-DM introduces a simple annotation mechanism allowing anything that is identifiable to be associated with notes.</p>
+
+<p><div class="attributes" id="attributes-note">A <dfn>note</dfn><span class="withPn">, noted <span class="pnExpression">note(id, [ attr1=val1, ...])</span> in PROV-N,</span> contains:
+<ul>
+<li><span class='attribute' id="note.id">id</span>: an identifier for a note;</li>
+<li><span class='attribute' id="note.attributes">attributes</span>: a set of attribute-value pairs, whose meaning is application specific.</li>
+</ul></div>
+
+
+
+
+<p>A separate PROV-DM relation is used to associate a note with something that is identifiable (see <a href="#term-annotation">Section on annotation</a>). A given note may be associated with
+multiple identifiable things.
+</p>
+
+
+<div class="anexample" id="anexample-note1">
+<p>
+The following note consists of a set of application-specific attribute-value pairs, intended
+to help the rendering of what it is associated with, by
+specifying its color and its position on the screen.</p>
+<pre class="codeexample">
+note(ex2:n1,[ex2:color="blue", ex2:screenX=20, ex2:screenY=30])
+hasAnnotation(tr:WD-prov-dm-20111215,ex2:n1)
+</pre>
+<p>The note is associated with the entity <span class="name">tr:WD-prov-dm-20111215</span> previously introduced (<a title="annotation">hasAnnotation</a> is 
+discussed in Section <a href="#term-annotation">Annotation</a>).  The note's identifier and attributes are declared in a separate namespace denoted by prefix <span class="name">ex2</span>.
+</p>
+</div>
+
+<div class="anexample" id="anexample-note2">
+<p>Alternatively, a reputation service may enrich a provenance record with notes providing reputation ratings about agents. In the following fragment, both agents <span class="name">ex:Simon</span> and <span class="name">ex:Paolo</span> are rated "excellent".</p>
+<pre class="codeexample">
+note(ex3:n2,[ex3:reputation="excellent"])
+hasAnnotation(ex:Simon,ex3:n2)
+hasAnnotation(ex:Paolo,ex3:n2)
+</pre>
+<p>The note's identifier and attributes are declares in a separate namespace denoted by prefix <span class="name">ex3</span>.</p>
+
+</div>
+
+
+   </section> 
 
 <section id="term-annotation">
 <h4>Annotation</h4>
 
 
 
-<span class="glossary-ref" ref="glossary-annotation" withspan="true"></span>
+<span class="glossary-ref" ref="glossary-annotation"></span>
 
 <p>Multiple notes can
 be associated with a given identified object; symmetrically, multiple objects can be associated with a given note.  Since notes have identifiers,  they can also be
 annotated. The annotation mechanism (with note and annotation) forms a key aspect of the extensibility mechanism of PROV-DM (see <a
 href="#extensibility-section">extensibility section</a>).</p>
 
-<p>An <dfn title="dfn-annotation">annotation relation</dfn><span class="withPn">, written <span class="pnExpression">hasAnnotation(r,n)</span> in PROV-N,</span> has the following constituents:</p>
+<p></p><div class="attributes" id="attributes-annotation">An <dfn title="hasAnnotation">annotation relation</dfn><span class="withPn">, written <span class="pnExpression">hasAnnotation(r,n)</span> in PROV-N,</span> has the following constituents:
 <ul>
-<li><span class='attribute'>something</span>: the identifier of something being annotated;</li>
-<li><span class='attribute'>note</span>: an identifier of a note.</li>
+<li><span class='attribute' id="annotation.id">something</span>: the identifier of something being annotated;</li>
+<li><span class='attribute' id="annotation.note">note</span>: an identifier of a note.</li>
 </ul>
+</div>
 
 <div class="anexample">
 <p>
@@ -1513,10 +2239,13 @@
 
 
 </section>
+
+
 </section>
 
 
 
+
 <section  id="second-class-elements">
 <h3>Further Elements of PROV-DM</h3>
 
@@ -1525,7 +2254,7 @@
 <section id="term-NamespaceDeclaration">
 <h3>Namespace Declaration</h3>
 
-<p>A PROV-DM <dfn id="dfn-namespace">namespace</dfn> is identified by an IRI reference [[!IRI]]. In PROV-DM, attributes, identifiers, and literals with <a title="qualified name">qualified names</a> as data type can be placed in a namespace using the mechanisms described in this specification. </p>
+<p>A PROV-DM <dfn id="dfn-namespace">namespace</dfn> is identified by an IRI reference [[!IRI]]. In PROV-DM, attributes, identifiers, and values with <a title="qualified name">qualified names</a> as data type can be placed in a namespace using the mechanisms described in this specification. </p>
 
 
 <p>A <dfn id="dfn-namespaceDeclaration">namespace declaration</dfn> consists of a binding between a prefix and a namespace. Every qualified name with this prefix in the scope of this
@@ -1572,7 +2301,7 @@
 
 <p>The attribute <dfn title="dfn-role"><span class="name">prov:role</span></dfn>  denotes the function of an entity with respect to an activity, in the context of a usage, generation,
 activity association, activity start, and activity end. The attribute <span class="name">prov:role</span> is allowed to occur multiple times in a list of attribute-value pairs. The value associated with a <span
-class="name">prov:role</span> attribute MUST be a PROV-DM <a title="literal">Literal</a>.</p>
+class="name">prov:role</span> attribute MUST be a PROV-DM <a title="value">Value</a>.</p>
 
 <div class="anexample">
 <p>The following activity start describes the role of the agent identified by <span class="name">ag</span> in this start relation with activity <span class="name">a</span>. </p>
@@ -1587,7 +2316,7 @@
 
 <p>The attribute <dfn title="dfn-type"><span class="name">prov:type</span></dfn>  provides further typing information for an element or relation. PROV-DM liberally
 defines a type as a category of things having common characteristics. PROV-DM is agnostic about the representation of types, and only states that
-the value associated with a <span class="name">prov:type</span> attribute MUST be a PROV-DM Literal. The attribute <span class="name">prov:type</span>
+the value associated with a <span class="name">prov:type</span> attribute MUST be a PROV-DM <a title="value">Value.</a> The attribute <span class="name">prov:type</span>
 is allowed to occur multiple times.</p>
 
 <div class="anexample">
@@ -1618,7 +2347,7 @@
 
 
 <p>
-The attribute <dfn title="dfn-location"><span class="name">prov:location</span></dfn> is an OPTIONAL attribute of entity and activity.  The value associated with the  attribute <span class="name">prov:location</span> MUST be a PROV-DM Literal, expected to denote a location.
+The attribute <dfn title="dfn-location"><span class="name">prov:location</span></dfn> is an OPTIONAL attribute of entity and activity.  The value associated with the  attribute <span class="name">prov:location</span> MUST be a PROV-DM <a title="value">Value</a>, expected to denote a location.
 </p>
 
 <div class="anexample">
@@ -1633,27 +2362,47 @@
 
 
 </section>
- 
-
-</section>
-
-
-
-
-<section id="term-literal">
-<h4>Literal</h4>
-
-<div class='note'>
-Usually, in programming languages, Literal are a notation for values. So, Literals should probably be moved to the serialization. Here, instead, we should define the types of values.  Thoughts?
-</div>
+
+<section id="term-value">
+<h4>Value</h4>
 
 <p>
-A PROV-DM Literal represents a data value such as a particular string
-or number.  A PROV-DM Literal represents a value whose interpretation is outside the scope of PROV-DM.
+By means of attribute-value pairs, the PROV data model can refer to <dfn title="value">values</dfn> such as strings, numbers, time, qualified names, and IRIs.  
+The interpretation of such values is outside the scope of PROV-DM.</p>
+Each kind of such values is called a <em>datatype</em>. Each datatype is identified by an <a>qualified name</a>.</p>
+
+<p>The data types are taken from 
+the set of XML Schema Datatypes, version 1.1 [[!XMLSCHEMA-2]] and the RDF specification [[!RDF-CONCEPTS]]. The normative definitions of these datatypes are provided by the respective specifications. 
 </p>
 
-
-<div class="anexample">
+<p>We note that PROV-DM <dfn title="dfn-time">time instants</dfn> are defined according to xsd:dateTime [[!XMLSCHEMA-2]].</p> 
+
+
+
+<table border="1" style="margin-left: auto; margin-right: auto;">
+<caption>PROV-DM Data Types</caption>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#decimal">xsd:decimal</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#double">xsd:double</a></td>  <td><a href="http://www.w3.org/TR/xmlschema-2/#dateTime">xsd:dateTime</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#integer">xsd:integer</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#float">xsd:float</a></td>  </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger">xsd:nonNegativeInteger</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#string">xsd:string</a></td> <td><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-XMLLiteral">rdf:XMLLiteral</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger">xsd:nonPositiveInteger</a></td><td><a href="http://www.w3.org/TR/xmlschema-2/#normalizedString">xsd:normalizedString</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#positiveInteger">xsd:positiveInteger</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#token">xsd:token</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#negativeInteger">xsd:negativeInteger</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#language">xsd:language</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#long">xsd:long</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#Name">xsd:Name</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#int">xsd:int</a></td>  <td><a href="http://www.w3.org/TR/xmlschema-2/#NCName">xsd:NCName</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#short">xsd:short</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#NMTOKEN">xsd:NMTOKEN</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#byte">xsd:byte</a></td>  <td><a href="http://www.w3.org/TR/xmlschema-2/#boolean">xsd:boolean</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#unsignedLong">xsd:unsignedLong</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#hexBinary">xsd:hexBinary</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#unsignedInt">xsd:unsignedInt</a></td>  <td><a href="http://www.w3.org/TR/xmlschema-2/#base64Binary">xsd:base64Binary</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#unsignedShort">xsd:unsignedShort</a></td><td><a href="http://www.w3.org/TR/xmlschema-2/#anyURI">xsd:anyURI</a></td> </tr>
+<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#unsignedByte">xsd:unsignedByte</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#anyURI">xsd:QName</a></td></tr>
+</table>
+
+
+
+
+
+
+<div class="anexample" id="anexample-value">
 <p>
 The following examples respectively are the string "abc", the string "abc", the integer number 1, and the IRI "http://example.org/foo".
 <pre class="codeexample">
@@ -1661,372 +2410,32 @@
   1
   "http://example.org/foo" %% xsd:anyURI
 </pre>
-<p>The following example shows a literal of type <span class="name">xsd:QName</span> (see
+<p>The following example shows a value of type <span class="name">xsd:QName</span> (see
 <a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#QName">QName</a> [[!XMLSCHEMA-2]]).
 The prefix <span class="name">ex</span>  MUST be bound to a <a>namespace</a> declared in a <a>namespace declaration</a>.</p>
-<pre class="codeexample">
+<pre class="codeexample"> 
   "ex:value" %% xsd:QName
 </pre>
 </div>
 
 
 
+<div class="anexample" id="anexample-time">
+<p>
+In the following example, the generation time of entity <span class="name">e1</span> is expressed according to 
+<a href="http://www.w3.org/TR/xmlschema-2/#dateTime">xsd:dateTime</a>  [[!XMLSCHEMA-2]].</p>
+<pre class="codeexample"> 
+  wasGeneratedBy(e1,a1, 2001-10-26T21:32:52)
+</pre>
 </section>
-
-
-
-
-<section id="term-Time">
-<h4>Time</h4>
-
-<div class='note'>
-It's a legacy of the charter that time is a top level section. Time is a specific kind of value, and should be folded into the "value" section.
-</div>
-
-
-<p><dfn title="dfn-time">Time instants</dfn> are defined according to xsd:dateTime [[!XMLSCHEMA-2]].</p> 
-
-
-
-<p>Time is OPTIONAL in usage, generation, and activity</p>
-
-
+ 
+
+</section>
 
 
 
 </section>
 
-</section>
-
-
-
-
-<section  id="common-relations">
-<h2>PROV-DM Common Relations</h2>
-
-<p>The following figure summarizes the additional relations described in this section.
-</p>
-
-<div style="text-align: center;">
-<figure>
-<img src="images/commonRelations.svg" alt="common relations"/>
-<figcaption>PROV-DM Common Relations</figcaption>
-</figure>
-</div>
-
-
-
-
-
-<section id="term-Revision">
-<h3>Revision</h3>
-
-<p> A <dfn title="dfn-Revision">revision</dfn> is the result of revising an entity into a revised version.
- Deciding whether something is made available as a revision of something else usually involves an agent who takes responsibility for approving that the former is a due variant of the latter.
- The agent who is responsible for the revision may optionally be specified.
- Revision is a particular case of  <a href="#Derivation-Relation">derivation</a> of an entity into its revised version.</p>
-
-<p> A revision relation<span class="withPn">, written <span class="pnExpression">wasRevisionOf(id,e2,e1,ag,attrs)</span> in PROV-N,</span> contains:</p>
-<ul>
-<li><span class='attribute'>id</span>: an OPTIONAL identifier for the relation;</li> 
-<li><span class='attribute'>newer</span>: the identifier of the revised  entity;
-<li><span class='attribute'>older</span>: the identifier of the older entity;
-<li><span class='attribute'>responsibility</span>: an OPTIONAL  identifier for the agent who approved the newer entity as a variant of the older;
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of this relation.</li>
-</ul>
-
-
-
-<div class="anexample">
-<p>
-Revisiting the example of <a href="#section-example-a">Section 3.1</a>,
-we can now state that the report 
- <span class="name">tr:WD-prov-dm-20111215</span> is a revision of 
- the report <span class="name">tr:WD-prov-dm-20111018</span>, approved by
-agent  <span class="name">w3:Consortium</span>.
-<pre class="codeexample">
-entity(tr:WD-prov-dm-20111215, [ prov:type="pr:RecsWD" %% xsd:QName ])
-entity(tr:WD-prov-dm-20111018, [ prov:type="pr:RecsWD" %% xsd:QName ])
-wasRevisionOf(tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018, w3:Consortium)
-</pre>
-</div>
-
-
-
-</section>  <!-- end revision -->
-
-
-<section id="term-attribution">
-<h3>Attribution</h3> 
-
-<p><dfn id="dfn-attribution">Attribution</dfn> is the ascribing of an entity to an agent. More precisely, when an entity  <span class="name">e</span> is attributed to agent  <span class="name">ag</span>, entity <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 relation<span class="withPn">, written <span class="pnExpression"> wasAttributedTo(id,e,ag,attr)</span> in PROV-N,</span> contains the following elements:</p>
-<ul>
-<li><span class='attribute'>id</span>: an OPTIONAL identifier for the relation;</li> 
-<li><span class='attribute'>entity</span>: an entity identifier;</li>
-<li><span class='attribute'>agent</span>: the identifier of the agent whom the entity is ascribed to;</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">
-<p>
-Revisiting the example of <a href="#section-example-b">Section 3.2</a>,
-we can ascribe <span class="name">tr:WD-prov-dm-20111215</span> to some agents without having to make an activity explicit.
-<pre class="codeexample">
-agent(ex:Paolo, [ prov:type="Person" ])
-agent(ex:Simon, [ prov:type="Person" ])
-entity(tr:WD-prov-dm-20111215, [ prov:type="pr:RecsWD" %% xsd:QName ])
-wasAttributedTo(tr:WD-prov-dm-20111215, ex:Paolo, [prov:role="editor"])
-wasAttributedTo(tr:WD-prov-dm-20111215, ex:Simon, [prov:role="contributor"])
-</pre>
-</div>
-
-</section>  <!-- end attribution -->
-
-<section id="term-OrderingOfActivities">
-<h3>Activity Ordering</h3>
-
-
-<p>The following  relations express dependencies amongst activities.</p>
-
-<ul>
-  <li> An <dfn title="InformationFlowOrdering">information flow ordering relation</dfn> states that activity  <span class="name">a2</span> is dependent on another <span class="name">a1</span>, by way of some entity <span class="name">e</span> that is generated by <span class="name">a1</span> and used by <span class="name">a2</span>.
-    <li>A <dfn title="ControlOrdering">control ordering relation</dfn> states that  activity <span class="name">a2</span> was initiated by another activity <span class="name">a1</span>.
-</ul>
-
-<p>
-An information flow ordering relation<span class="withPn">, written as 
-<span class="pnExpression">wasInformedBy(id,a2,a1,attrs)</span> in PROV-N,</span> contains: 
-<ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier  identifying the relation;</li> 
-<li><span class='attribute'>informed</span>: the identifier of the informed activity;
-<li><span class='attribute'>informant</span>: the identifier of the informant activity;
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs to further describe properties of the relation.</li>
-</ul>
-<p> Relation <span class="name">wasInformedBy</span> is not transitive.</p>
-
-
-<div class="anexample">
-<p>
-Consider two long running services, which we represent by activities  <span class="name">s1</span> and <span class="name">s2</span>.  
-<pre class="codeexample">
-activity(s1,,,[prov:type="service"])
-activity(s2,,,[prov:type="service"])
-wasInformedBy(s2,s1)
-</pre>
-The last line indicates that some entity was generated by  <span class="name">s1</span> and used by  <span class="name">s2</span>.
-</div>
-
-
-<p>
-A control ordering relation<span class="withPn">, written as 
-<span class="pnExpression">wasStartedBy(id, a2, a1, attrs)</span> in PROV-N,</span> contains: </p>
-<ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier of the relation;</li> 
-<li><span class='attribute'>started</span>: the identifier of  the started activity;
-<li><span class='attribute'>starter</span>: the identifier of the activity that started the other;</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">
-<p>
-Suppose activities <span class="name">a1</span> and <span class="name">a2</span> are computer processes that are executed on different hosts, and that <span class="name">a1</span> started <span class="name">a2</span>. This can be expressed as in the following fragment:</p>
-<pre class="codeexample">
-activity(a1,t1,t2,[ex:host="server1.example.org",prov:type="workflow"])
-activity(a2,t3,t4,[ex:host="server2.example.org",prov:type="subworkflow"])
-wasStartedBy(a2,a1)
-</pre>
-</div>
-
-</section>
-
-<section id="term-traceability">
-<h3>Traceability</h3>
-
-<p> A <dfn title="dfn-Traceability">traceability relation</dfn> between two entities  <span class="name">e2</span> and  <span class="name">e1</span> is a generic dependency of <span class="name">e2</span>
-on  <span class="name">e1</span> that indicates either that <span class="name">e1</span> was necessary for <span class="name">e2</span> to be created, or that <span class="name">e1</span> bears 
-some responsibility for  <span class="name">e2</span>'s existence.
-
-
-<p> A traceability relation<span class="withPn">, written <span class="pnExpression">tracedTo(id,e2,e1,attrs)</span> in PROV-N,</span> contains:</p>
-<ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier identifying the relation;</li> 
-<li><span class='attribute'>entity</span>:  an identifier identifying an entity;
-<li><span class='attribute'>ancestor</span>: an identifier identifying an ancestor entity that the former depends on;
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs to further describe properties of the relation.</li>
-</ul>
-<p>We note that the ancestor is allowed to be an agent since agents are entities. </p>
-
-<div class="anexample">
-<p>We refer to the example of <a href="#section-example-a">Section 3.1</a>, and specifically to <a href="#prov-tech-report">Figure prov-tech-report</a>. We can see that there is a path from 
-<span class="name">tr:WD-prov-dm-20111215</span> to 
-<span class="name">w3:Consortium</span> or to
-<span class="name">pr:rec-advance</span>. This is expressed as follows.
-<pre class="codeexample">
- tracedTo(tr:WD-prov-dm-20111215,w3:Consortium)
- tracedTo(tr:WD-prov-dm-20111215,pr:rec-advance)
-</pre>
-</div>
-
-
-<p>
-<a href="#Derivation-Relation">Derivation</a> and association are particular cases of  traceability.
-</p>
-
-
-</section>
-
-
-
-<section id="term-quotation">
-<h3>Quotation</h3>
-
-<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]. Need example [DG].</div>
-
-<p> A <dfn>quotation</dfn>
- is the repeat of an entity (such as text or image) by
-someone other that its original author. Quotation
- is a particular case of  <a href="#Derivation-Relation">derivation</a> in which 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 relation<span class="withPn">, written <span class="pnExpression"> wasQuotedFrom(id,e2,e1,ag2,ag1,attrs)</span> in PROV-N,</span> contains:</p>
-<ul>
-<li><span class='attribute'>id</span>: an OPTIONAL identifier for the relation;</li> 
-<li><span class='attribute'>quote</span>:  an identifier  of the entity that represents the quote (the partial copy);
-<li><span class='attribute'>quoted</span>: an identifier  of the original entity being quoted;
-<li><span class='attribute'>quoterAgent</span>: an OPTIONAL identifier of the agent who is doing the quoting;
-<li><span class='attribute'>quotedAgent</span>: an OPTIONAL identifier of the agent who attributed to the original entity;
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
-
-</ul>
-
-</section>  <!-- end quotation -->
-
-
-<section id="term-orignal-source">
-<h3>Original Source</h3>
-
-<div class="note"> I find this relation confusing. Please add an example. I wouldn't really know when to use this. [PM]. Need example [DG]</div>
-
-<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 relation<span class="withPn">, written <span class="pnExpression"> hadOriginalSource(id,e2,e1,attrs)</span>,</span> contains:</p>
-<ul>
-<li><span class='attribute'>id</span>:  an OPTIONAL identifier identifying the relation;</li> 
-<li><span class='attribute'>derived</span>: an identifier for the derived entity; </li>
-<li><span class='attribute'>source</span>: an identifier  for the original source entity;</li>
-<li><span class='attribute'>attributes</span>: an OPTIONAL set of attribute-value pairs to further describe the properties of the relation.</li>
-</ul>
-
-</section>  <!-- end original source -->
-
-
-
-<section id="term-Collection">
-<h3>Collections</h3>
-
-<p><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 exploits the built-in type for entities, called <a title="concept-collection">collection</a>, 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>.
-Thus, a collection entity is an immutable representation of the state of a collection data structure following a sequence of insertion and deletion operations.
-</p>
-
-<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">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 relate a collection <span class="name">c1</span> with a collection <span class="name">c2</span> obtained after adding or removing a new pair to (resp. from) <span class="name">c1</span>:
-
-<ul>
-  <li>Insertion relation <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 relation <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(v1)
-   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) }
-</pre>
-</div>
-
-
-<p> A relation CollectionAfterInsertion<span class="withPn">, written <span class="pnExpression"> CollectionAfterInsertion(collAfter, collBefore, key, value)</span>,</span> contains:</p>
-<ul>
-<li><span class='attribute'>after</span>: an identifier for the collection <em>after</em> insertion; </li>
-<li><span class='attribute'>before</span>: an identifier for the collection <em>before</em> insertion;</li>
-<li><span class='attribute'>key</span>: the key that has been inserted</li>
-<li><span class='attribute'>value</span>: an identifier  for the value that has been inserted with the key.</li>
-</ul>
-
-<p> A relation CollectionAfterDeletion, written <span class="pnExpression"> CollectionAfterDeletion(collAfter, collBefore, key)</span>, contains:</p>
-<ul>
-<li><span class='attribute'>after</span>: an identifier  for the collection  <em>after</em> the deletion; </li>
-<li><span class='attribute'>before</span>: an identifier  for the collection <em>before</em> the deletion;</li>
-<li><span class='attribute'>key</span>: the key corresponding to the (key, value) pair that has been deleted from the collection.</li>
-</ul>
-
-<div class='note'>
-I propose to call them afterInsertion instead of CollectionAfterInsertion (likewise, for deletion).
-What about attributes and optional Id?
-</div>
-
-
-<p>Further considerations:</p>
-
-<ul>
-  <li>The <strong>map</strong> collection type provides a generic indexing structure that can be used to model commonly used data structures, including associative lists (also known as "dictionaries" in some programming languages), relational tables, ordered lists, and more (the specification of such specialized structures in terms of key-value pairs is out of the scope of this document).</li>
-
-<li>Keys are literals, and values are entities. This allows expressing nested collections, that is, collections whose values include entities of type collection.</li>
-
-<li>Insertion and removal relations are a particular case of <a href="#Derivation-Relation">derivation</a>.</li>
-
- <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 derivations 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.</li>
-
-<li>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 derivations 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.</li>
-
-  <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>
-
-<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(c0, [prov:type="EmptyCollection"])    // e is an empty collection
-   activity(a)
-   entity(c1, [prov:type="Collection"]) 
-   wasGeneratedBy(c1,a)  
-   derivedByBulkInsertionFrom(c1, c0, {("k1", v1), {("k2", v2) )       // c1 = { ("k1",v1), ("k2",v2) }
-</pre>
-</div>
-
-</ul>
-<div class='note'>Deleted further items. Some of them are constraints which belong to part 2.</div>
-
-
-</section>   <!-- end collections-->
-
-
-</section>
 
 <!-- end sec. 5 -->