--- a/model/prov-dm.html Fri May 18 13:55:26 2012 +0100
+++ b/model/prov-dm.html Fri May 18 13:57:05 2012 +0100
@@ -323,8 +323,8 @@
<li> component 2: agents bearing responsibility for entities that were generated and activities that happened;
<li> component 3: derivations of entities from others;
<li> component 4: properties to link entities that refer to a same thing;
-<li> component 5: collections forming a logical structure for its members;
-<li> component 6: a simple annotation mechanism.
+<li> component 5: bundles, a mechanism to support provenance of provenance;
+<li> component 6: collections forming a logical structure for its members.
</ul>
@@ -596,10 +596,31 @@
</div>
</section>
-<section id="section-types-entities-agents">
-<h2>Further Entities: Collections and Accounts</h2>
-
-<p>There are two further types of entities, collections and accounts, which are now introduced. </p>
+<section id="section-provenance-of-provnance">
+<h2>Provenance of Provenance</h2>
+
+
+
+
+<p>
+<span class="glossary-ref" data-ref="glossary-bundle" data-withspan="true">
+</span>
+
+<div class="conceptexample" id="bundle-example">
+<p>
+For users to decide whether they can place their trust in
+a resource, they may want to analyze the resource's provenance, but also determine
+who its provenance is attributed to, and when it was
+generated. In other words, users need to be able to determine the provenance of provenance.
+Hence, provenance is also
+regarded as an entity (of type Bundle), by which provenance of provenance can then be
+expressed.
+</p>
+</div>
+</section>
+
+<section id="section-collections">
+<h2>Collections</h2>
<p>
<span class="glossary-ref" data-ref="glossary-collection" data-withspan="true"></span> This concept allows for the provenance of the collection itself to be expressed in addition to that of the members. Many different types of collections exist, such as a <em>set</em>, <em>dictionaries</em>, or <em>lists</em>, all of which involve a membership relationship between the constituents and the collection. </p>
@@ -610,28 +631,13 @@
</div>
-<!-- alternative names: provenance record, bundle -->
-<p>
-<span class="glossary-ref" data-ref="glossary-account" data-withspan="true">
-</span>Making an account an entity allows for provenance of provenance to be expressed.
-
-<div class="conceptexample" id="account-example">
-<p>
-For users to decide whether they can place their trust in
-a resource, they may want to analyze the resource's provenance, but also determine
-who its provenance is attributed to, and when it was
-generated. In other words, users need to be able to determine the provenance of provenance.
-Hence, provenance is also
-regarded as an entity (of type Account), by which provenance of provenance can then be
-expressed.
-</p>
-</div>
-
</section>
+
+
<section id="section-UML">
<h2>Simplified Overview Diagram</h2>
@@ -915,20 +921,47 @@
<section id="section-example-c">
<h3>Attribution of Provenance</h3>
-<p>The two previous sections provide two different perspectives on the provenance of a document By design, the PROV approach allows for the provenance of a subject to be provided by multiple sources. For users to decide whether they can place their trust in the document, they may want to analyze its provenance, but also determine
-who the provenance is attributed to, and when it was
+<p>The two previous sections offer two different perspectives on the provenance of a document. PROV allows for multiple sources to provide the provenance of a subject. For users to decide whether they can place their trust in the document, they may want to analyze its provenance, but also determine who the provenance is attributed to, and when it was
generated, etc. In other words, we need to be able to express the provenance of provenance.</p>
-<p>No new mechanism is required to support this requirement. PROV-DM makes the assumption that provenance statements have been bundled up, and named, by some mechanism outside the scope of PROV-DM. For instance, in this case, provenance statements were put in a file and exposed on the Web, respectively at <a href="examples/w3c-publication1.pn">ex:w3c-publication1.pn</a> and <a href="examples/w3c-publication3.pn">ex:w3c-publication3.pn</a>. To express their respective provenance, these resources must be seen as entities, and all the constructs of PROV-DM are now available to characterize their provenance. In the example below, <span class="name">ex:w3c-publication1.pn</span> is attributed to the agent <span class="name">w3:Consortium</span>, whereas <span class="name">ex:w3c-publication3.pn</span> to <span class="name">ex:Simon</span>.
-
-<pre>
-entity(ex:w3c-publication1.pn, [prov:type='prov:Account' ])
-wasAttributedTo(ex:w3c-publication1.pn, w3:Consortium)
-
-entity(ex:w3c-publication3.pn, [prov:type='prov:Account' ])
-wasAttributedTo(ex:w3c-publication3.pn, ex:Simon)
+<p>PROV-DM offers a construct to name a bundle of provenance descriptions. </p>
+
+<pre class="codeexample">
+bundle ex:author-view
+
+ agent(ex:Paolo, [ prov:type='prov:Person' ])
+ agent(ex:Simon, [ prov:type='prov:Person' ])
+
+
+...
+
+endBundle
</pre>
+Likewise, the process view can be expressed as a separate named bundle.
+<pre class="codeexample">
+bundle ex:process-view
+
+ agent(w3:Consortium, [ prov:type='prov:Organization' ])
+
+...
+
+endBundle
+</pre>
+
+<p>To express their respective provenance, these bundles must be seen as entities, and all PROV constructs are now available to express their provenance. In the example below, <span class="name">ex:author-view</span> is attributed to the agent <span class="name">ex:Simon</span>, whereas <span class="name">ex:process-view</span> to <span class="name">w3:Consortium</span>.
+
+<pre class="codeexample">
+entity(ex:author-view, [prov:type='prov:Bundle' ])
+wasAttributedTo(ex:author-view, ex:Simon)
+
+entity(ex:process-view, [prov:type='prov:Bundle' ])
+wasAttributedTo(ex:process-view, w3:Consortium)
+</pre>
+
+<div class="note">
+<p>TODO: full details of bundles can be found at <a href="examples/w3c-publication1.pn">ex:process-view</a> and <a href="examples/w3c-publication3.pn">ex:author-view</a>.</p>
+</div>
</section>
@@ -950,15 +983,16 @@
<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 derivation subtypes.</li>
<li><b>Component 4: alternate.</b> The fourth component consists of relations linking entities referring to the same thing. </li>
-<li><b>Component 5: collections.</b> The fifth component is about collections and concepts capturing their transformation, such as insertion and removal. </li>
-<li><b>Component 6: annotations.</b> The sixth component is concerned with annotations to PROV-DM instances.</li>
+<li><b>Component 5: bundles.</b> The fifth component is concerned with bundles, a mechanism to support provenance of provenance.</li>
+<li><b>Component 6: collections.</b> The sixth component is about collections and concepts capturing their transformation, such as insertion and removal. </li>
</ul>
</div>
+<!-- TODO: update map for linking -->
<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%; " />
+<img usemap="#componentMap" src="images/components-with-bundle.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"/>
@@ -973,19 +1007,18 @@
<p>
While not all PROV-DM relations are binary, they all involve two primary elements. Hence, <a href="#relations-at-a-glance">Table 3</a> indexes all relations according to their two primary elements. The table adopts the same color scheme as <a href="#prov-dm-components">Figure 4</a>, allowing components to be readily identified.
-Note that for simplicity, this table does not include collection-oriented relations.
+Note that for simplicity, this table does not include bundle-oriented and collection-oriented relations.
</p>
<div id="relations-at-a-glance-div" style="text-align: center;">
<table border="1" style="margin-left: auto; margin-right: auto;">
<caption id="relations-at-a-glance">Table 3: 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></td><td>Entity</td><td>Activity</td><td>Agent</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="wasGeneratedBy">wasGeneratedBy</a><br><a
-title="wasInvalidatedBy">wasInvalidatedBy</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>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>—</td><td>—</td><td class="component2-color"><a>actedOnBehalfOf</a></td><td class="component6-color"><a>hasAnnotation</a></td></tr>
-<tr><td>Note</td><td>—</td><td>—</td><td>—</td><td class="component6-color"><a>hasAnnotation</a></td></tr>
+title="wasInvalidatedBy">wasInvalidatedBy</a></td><td class="component2-color"><a>wasAttributedTo</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>wasInformedBy</a></td><td class="component2-color"><a>wasAssociatedWith</a></td></tr>
+<tr><td>Agent</td><td>—</td><td>—</td><td class="component2-color"><a>actedOnBehalfOf</a></td></tr>
</table>
</div>
@@ -995,8 +1028,8 @@
<div id="prov-dm-types-and-relations-fig" style="text-align: left;">
<table border="1" style="margin-left: auto; margin-right: auto;">
<caption id="prov-dm-types-and-relations">Table 4: PROV-DM Types and Relations</caption>
-<tr><td><a><b>Type or Relation Name</b></a></td><td><b>Representation in the PROV-N notation</b></td></tr>
-<tr class="component1-color"><td><a>Entity</a></td><td><a title="dfn-Entity">entity(id, [ attr1=val1, ...])</a></td></tr>
+<tr><td><a><b>Type or Relation Name</b></a></td><td><b>Representation in the PROV-N notation</b></td><td><b>Component</b></td></tr>
+<tr class="component1-color"><td><a>Entity</a></td><td><a title="dfn-Entity">entity(id, [ attr1=val1, ...])</a></td><td rowspan="8">Component 1: entities/activities</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="wasGeneratedBy">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>
@@ -1004,24 +1037,25 @@
<tr class="component1-color"><td><a>End</a></td><td><a title="wasEndedBy">wasEndedBy(id;a2,e,a1,t,attrs)</a></td></tr>
<tr class="component1-color"><td><a>Invalidation</a></td><td><a title="wasInvalidatedBy">wasInvalidatedBy(id;e,a,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="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>Agent</a></td><td><a title="dfn-agent">agent(id, [ attr1=val1, ...])</a></td><td rowspan="4">Component 2: agents/responsibility</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>Derivation</a></td><td><a title="wasDerivedFrom">wasDerivedFrom(id; e2, e1, a, g2, u1, attrs)</a></td><td rowspan="5">Component 3: derivation</td></tr>
<tr class="component3-color"><td><a>Revision</a></td><td><a title="wasRevisionOf">wasRevisionOf(id; e2, e1, a, g2, u1, attrs)</a></td></tr>
<tr class="component3-color"><td><a>Quotation</a></td><td><a title="wasQuotedFrom">wasQuotedFrom(id; e2, e1, a, g2, u1, attrs)</a></td></tr>
<tr class="component3-color"><td><a>Original Source</a></td><td><a title="hadOriginalSource">hadOriginalSource(id; e2, e1, a, g2, u1, attrs)</a></td></tr>
<tr class="component3-color"><td><a>Trace</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>Alternate</a></td><td><a title="alternateOf">alternateOf(alt1, alt2)</a></td><td rowspan="2">Component 4: alternate</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><a>Collection</a></td><td><a>Collection</a></td></tr>
+<tr class="component6-color"><td><a title="bundle">Bundle constructor</a></td><td><a title="dfn-bundle">bundle id description_1 ... description_n endBundle</a></td><td rowspan="3">Component 5: bundles</td></tr>
+<tr class="component6-color"><td><a title="bundle">Bundle description</a></td><td><a>Bundle</a></td></tr>
+<tr class="component6-color"><td><a>Provenance Locator</a></td><td><a title="hasProvenanceIn">hasProvenanceIn(id, subject, bundle, target, service, prov, attrs)</a></td></tr>
+<tr class="component5-color"><td><a>Collection</a></td><td><a>Collection</a></td><td rowspan="5">Component 6: Collections</td></tr>
<tr class="component5-color"><td><a>Dictionary</a></td><td><a>Dictionary</a></td></tr>
<tr class="component5-color"><td><a>Insertion</a></td><td><a title="derivedByInsertionFrom">derivedByInsertionFrom(id; c2, c1, {(key_1, e_1), ..., (key_n, e_n)}, attrs)</a></td></tr>
<tr class="component5-color"><td><a>Removal</a></td><td><a title="derivedByRemovalFrom">derivedByRemovalFrom(id; c2, c1, {key_1, ... key_n}, attrs)</a></td></tr>
<tr class="component5-color"><td><a>Membership</a></td><td><a title="memberOf">memberOf(c, {(key_1, e_1), ..., (key_n, e_n)})</a></td></tr>
-<tr class="component6-color"><td><a>Note</a></td><td><a title="dfn-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>
@@ -2020,12 +2054,290 @@
</div>
</section>
-
</section>
<section id="component5">
-<h3>Component 5: Collections</h3>
+<h3>Component 5: Bundles</h3>
+
+
+<p>The fifth component of PROV-DM is concerned with bundles, a mechanism to support provenance of provenance. </p>
+
+
+
+
+
+<section id="term-bundle">
+
+<h3>Bundle constructor</h3>
+
+
+<p>
+<span class="glossary-ref" data-ref="glossary-bundle" >
+</span>
+ </p>
+
+
+
+
+<p>
+<div class="attributes" id="attributes-bundle">
+ A <dfn title="dfn-bundle" id="dfn-bundle-declaration">bundle constructor</dfn> allows the content and the name of a bundle to be specified; it is written <span class="pnExpression">bundle id description_1 ... description_n endBundle</span> and consists of:
+<ul>
+<li><span class='attribute' id="bundle.declaration.id">id</span>: an identifier for the bundle;</li>
+<li><span class='attribute' id="bundle.declaration.descriptions">descriptions</span>: a set of provenance descriptions <span class="name">
+description_1</span>, ..., <span class="name">description_n</span>.</li>
+</ul>
+<p>A bundle's identifier <span class="name">id</span> identifies a unique set of descriptions.</p>
+</section>
+
+
+
+
+
+<section id="term-bundle-entity">
+
+<h3>Bundle Description</h3>
+
+<p>A bundle is a named set of descriptions, but also it is also an entity so that its provenance can be described. </p>
+
+PROV defines the following type for bundles:
+<ul>
+<li><span class="name">prov:Bundle</span> is the type that denotes <a title="bundle">bundles</a>.
+</ul>
+
+
+<p>
+A bundle description is of the form <span class="pnExpression">entity(id,[prov:type='prov:Bundle', attr1=val1, ...])</span>
+where <span class='name'>id</span> is an identifier denoting a bundle,
+ a type <span>prov:Bundle</span> and
+an OPTIONAL set of attribute-value pairs ((<span class="name">attr1</span>, <span class="name">val1</span>), ...) representing additional information about this bundle.
+</p>
+
+
+<p>The provenance of provenance can then be described using PROV constructs, as illustrated by the following example. </p>
+
+<div class="anexample" id="anexample-provenance-of-provenance">
+<p>Let us consider an example consisting of two entities <span class="name">ex:report1</span> and <span class="name">ex:report2</span>.</p>
+<pre class="codeexample">
+entity(ex:report1, [ prov:type="report", ex:version=1 ])
+wasGeneratedBy(ex:report1, -, 2012-05-24T10:00:01)
+entity(ex:report2, [ prov:type="report", ex:version=2])
+wasGeneratedBy(ex:report2, -, 2012-05-25T11:00:01)
+wasDerivedFrom(ex:report2, ex:report1)
+</pre>
+
+<p>Let us assume that Bob observed the creation of <span class="name">ex:report1</span>.
+A first bundle can be expressed.</p>
+<pre class="codeexample">
+bundle bob:bundle1
+ entity(ex:report1, [ prov:type="report", ex:version=1 ])
+ wasGeneratedBy(ex:report1, -, 2012-05-24T10:00:01)
+endBundle
+</pre>
+
+<p>In contrast,
+Alice observed the creation of <span class="name">ex:report2</span> and its derivation from <span class="name">ex:report1</span>.
+A separate bundle can also be expressed.</p>
+<pre class="codeexample">
+bundle alice:bundle2
+ entity(ex:report1)
+ entity(ex:report2, [ prov:type="report", ex:version=2 ])
+ wasGeneratedBy(ex:report2, -, 2012-05-25T11:00:01)
+ wasDerivedFrom(ex:report2, ex:report1)
+endBundle
+</pre>
+
+<p>The first bundle contains the descriptions corresponding to Bob observing the creation of <span class="name">ex:report1</span>. Its provenance can be described as follows.</p>
+<pre class="codeexample">
+entity(bob:bundle1, [prov:type='prov:Bundle'])
+wasGeneratedBy(bob:bundle1, -, 2012-05-24T10:30:00)
+wasAttributedTo(bob:bundle1, ex:Bob)
+</pre>
+
+<p>In contrast, the second bundle is attributed to Alice who
+observed the derivation of <span class="name">ex:report2</span> from <span class="name">ex:report1</span>.</p>
+<pre class="codeexample">
+entity(alice:bundle2, [ prov:type='prov:Bundle' ])
+wasGeneratedBy(alice:bundle2, -, 2012-05-25T11:15:00)
+wasAttributedTo(alice:bundle2, ex:Alice)
+</pre>
+</div>
+
+<div class="anexample" id="anexample-provenance-aggregation">
+<p>A provenance aggregator could merge two bundles, resulting in a novel bundle, whose provenance is described as follows.</p>
+<pre class="codeexample">
+bundle agg:bundle3
+ entity(ex:report1, [ prov:type="report", ex:version=1 ])
+ wasGeneratedBy(ex:report1, -, 2012-05-24T10:00:01)
+
+ entity(ex:report2, [ prov:type="report", ex:version=2 ])
+ wasGeneratedBy(ex:report2, -, 2012-05-25T11:00:01)
+ wasDerivedFrom(ex:report2, ex:report1)
+endBundle
+
+entity(agg:bundle3, [ prov:type='prov:Bundle' ])
+agent(ex:aggregator01, [ prov:type='ex:Aggregator' ])
+wasAttributedTo(agg:bundle3, ex:aggregator01)
+wasDerivedFrom(agg:bundle3, bob:bundle1)
+wasDerivedFrom(agg:bundle3, alice:bundle2)
+</pre>
+<p>The new bundle is given a new identifier <span class="name">agg:bundle3</span> and is attributed to the <span class="name">ex:aggregator01</span> agent.
+</div>
+
+
+</section>
+
+<section id="term-hasProvenanceIn">
+
+<h3>Provenance Locator</h3>
+
+
+In <a href="#anexample-provenance-of-provenance">Example anexample-provenance-of-provenance</a>, we initially presented a scenario involving two entities <span class="name">report1</span> and <span class="name">report2</span>, and showed how the descriptions can be organized into two bundles. There is no explicit indication that the second bundle "continues" the description offered by the first bundle. Given that bundles may be retrieved separately [[PROV-AQ]], it is not obvious for a provenance consumer to navigate descriptions across bundles. To aid consumers,
+ Alice may wish to express that there is further provenance information about <span class="name">report1</span> in bundle <span class="name">bob:bundle1</span>. To this end, PROV introduces the notion of provenance locator, inspired by [[PROV-AQ]].
+
+
+<p><div class="glossary-ref" data-ref="glossary-provenance-locator"></div></p>
+
+
+<div class="attributes" id="attributes-hasProvenanceIn">
+A <dfn title="hasProvenanceIn">provenance locator</dfn>,
+written
+<span class="pnExpression">hasProvenanceIn(id, subject, bundle, target, service, prov, attrs)</span>, has:
+<ul>
+<li><span class='attribute' id="prov.locator.id">id</span>: an identifier for a provenance locator; </li>
+<li><span class='attribute' id="prov.locator.subject">subject</span>: an identifier denoting something (entity, activity, agent, or relation instance);</li>
+<li><span class='attribute' id="prov.locator.bundle">bundle</span>: an OPTIONAL identifier (<span class="name">bundle</span>) for a bundle;
+<li><span class='attribute' id="prov.locator.target">target</span>: an OPTIONAL identifier (<span class="name">target</span>) denoting something described in another set of descriptions (referred to as <a href="http://www.w3.org/TR/prov-aq/#dfn-target-uri">Target-URI</a> in [[PROV-AQ]]);
+<li><span class='attribute' id="prov.locator.service">service-uri</span>: an OPTIONAL URI (<span class="name">service</span>) denoting a <a href="http://www.w3.org/TR/prov-aq/#dfn-provenance-service">provenance service</a> from which provenance can be retrieved (referred to as <a href="http://www.w3.org/TR/prov-aq/#dfn-service-uri">Service-URI</a> in [[PROV-AQ]]);
+<li><span class='attribute' id="prov.locator.provenance">provenance-uri</span>: an OPTIONAL URI (<span class="name">prov</span>), which when dereferenced, allows access to provenance descriptions (referred to as <a href="http://www.w3.org/TR/prov-aq/#dfn-provenance-uri">Provenance-URI</a> in [[PROV-AQ]]);
+<li><span class='attribute' id="prov.locator.attributes">attributes</span>: an OPTIONAL set (<span class="name">attrs</span>) of attribute-value pairs representing additional information about this locator.</li>
+</ul>
+<p>In <span class="pnExpression">hasProvenanceIn(id, subject, bundle, target, service, prov, attrs)</span>, <span class="name">service</span> and <span class="name">prov</span> are both optional and mutually exclusive: if specified, either <span class="name">service</span> or <span class="name">prov</span> is provided.</p>
+</div>
+
+<p>A provenance locator specifies a context, referred to
+as <em>located context</em> in which further descriptions can be found
+about something.</p>
+
+<div class="note">
+It is suggested that prov:service-uri and prov:provenance-uri should be made optional reserved attributes.
+In the target is not specified, it is assumed that the target is the same identifier as subject.
+</div>
+
+<p>When the subject and optional target denote entities,
+a provenance locator not only provides a located context, but it also expresses an <a>alternate</a> relation between the entity denoted by <span class="name">subject</span> and the entity described in the located context. This is a alternate since the entity denoted by <span class="name">subject</span> in the current context presents other aspects than the entity in the located one.</p>
+
+<div class="anexample" id="anexample-provenance-locator">
+<p>According to the following provenance locator, provenance descriptions about <span class="name">ex:report1</span> can be found in bundle <span class="name">bob:bundle1</span>.</p>
+<pre class="codeexample">
+hasProvenanceIn(ex:report1, bob:bundle1, -, -, -)
+</pre>
+<p>According to the following provenance locator, provenance descriptions about <span class="name">ex:report1</span> can be found in bundle <span class="name">bob:bundle1</span>, which is available from the provenance service identified by the provided URI.</p>
+<pre class="codeexample">
+hasProvenanceIn(ex:report1, bob:bundle1, -, "http://example.com/service"^xsd:anyURI, -)
+</pre>
+<p>According to the following provenance locator, provenance descriptions about <span class="name">ex:report1</span> can be found in resource identified by the provided URI.</p>
+<pre class="codeexample">
+hasProvenanceIn(ex:report1, -, -, -, "http://example.com/some-provenance.pn"^xsd:anyURI)
+</pre>
+</div>
+
+
+<div class="anexample" id="anexample-provenance-locator2">
+<p>Let us again consider the same scenario involving two entities <span class="name">ex:report1</span> and <span class="name">ex:report2</span>.</p>
+<p>The first bundle can be expressed with all Bob's observations about the creation of <span class="name">ex:report1</span>.
+</p>
+<pre class="codeexample">
+bundle bob:bundle4
+ entity(ex:report1, [ prov:type="report", ex:version=1 ])
+ wasGeneratedBy(ex:report1, -, 2012-05-24T10:00:01)
+endBundle
+</pre>
+
+<p>Likewise, Alice's observation about the derivation of <span class="name">ex:report2</span> from <span class="name">ex:report1</span>, is expressed in a separate bundle.</p>
+<pre class="codeexample">
+bundle alice:bundle5
+ entity(ex:report1)
+ hasProvenanceIn(ex:report1, bob:bundle4, -, -, -)
+ entity(ex:report2, [ prov:type="report", ex:version=2 ])
+ wasGeneratedBy(ex:report2, -, 2012-05-25T11:00:01)
+ wasDerivedFrom(ex:report2, ex:report1)
+endBundle
+</pre>
+<p>In bundle <span class="name">alice:bundle5</span>, there is a description for entity <span class="name">ex:report1</span>, and
+a provenance locator pointing to bundle <span class="name">bob:bundle4</span>.
+The locator indicates that some provenance description for <span class="name">ex:report1</span> can be found in bundle <span class="name">bob:bundle4</span>. The purpose of the locator is twofold. First, it allows for <a href="http://www.w3.org/TR/prov-aq/#incremental-provenance-retrieval">incremental navigation</a> of provenance [[PROV-AQ]]. Second, it makes entity <span class="name">ex:report1</span> described in <span class="name">alice:bundle5</span> an <a>alternate</a> of <span class="name">ex:report1</span> described in <span class="name">bob:bundle4</span>.
+</p>
+</div>
+
+
+<div class="anexample" id="anexample-provenance-locator3">
+<p>Alternatively, Alice may have decided to use a different identifier for <span class="name">ex:report1</span>.</p>
+<pre class="codeexample">
+bundle alice:bundle6
+ entity(alice:report1)
+ hasProvenanceIn(alice:report1, bob:bundle4, ex:report1, -, -)
+ entity(ex:report2, [ prov:type="report", ex:version=2 ])
+ wasGeneratedBy(ex:report2, -, 2012-05-25T11:00:01)
+ wasDerivedFrom(ex:report2, alice:report1)
+endBundle
+</pre>
+<p>Alice can specify the <a href="#prov.locator.target">target</a> in the provenance locator to be <span class="name">ex:report1</span>.
+With such a statement, Alice states that provenance information about <span class="name">alice:report1</span> can be found in bundle
+<span class="name">bob:bundle4</span> under the name <span class="name">ex:report1</span>. In effect, <span class="name">alice:report1</span> and <span class="name">ex:report1</span> are declared to be alternate.</p>
+</div>
+
+<div class="anexample" id="aexample-note">
+<p>Consider that the following bundle of descriptions, in which derivation and generations have been identified.
+<pre class="codeexample">
+bundle obs:bundle7
+ entity(ex:report1, [prov:type="report", ex:version=1])
+ wasGeneratedBy(ex:g1; ex:report1,-,2012-05-24T10:00:01)
+ entity(ex:report2, [prov:type="report", ex:version=2])
+ wasGeneratedBy(ex:g2; ex:report2,-,2012-05-25T11:00:01)
+ wasDerivedFrom(ex:d; ex:report2, ex:report1)
+endBundle
+entity(obs:bundle7, [ prov:type='prov:Bundle' ])
+wasAttributedTo(obs:bundle7, ex:observer01)
+</pre>
+Bundle <span class="name">obs:bundle7</span> is rendered by a visualisation tool. It may useful for the tool configuration for this bundle to be shared along with the provenance descriptions, so that other users can render provenance as it was originally rendered. The original bundle obviously cannot be changed. However, one can create a new bundle, as follows.
+<pre class="codeexample">
+bundle tool:bundle8
+ entity(tool:bundle8, [ prov:type='viz:Configuration', prov:type='prov:Bundle' ])
+ wasAttributedTo(tool:bundle8, viz:Visualizer)
+
+ entity(ex:report1, [viz:color="orange"])
+ hasProvenanceIn(ex:report1, obs:bundle7, -, -, -)
+
+ entity(ex:report2, [viz:color="blue"])
+ hasProvenanceIn(ex:report2, obs:bundle7, -, -, -)
+
+ wasDerivedBy(ex:d; ex:report2, ex:report1, [viz:style="dotted"])
+ hasProvenanceIn(ex:d, obs:bundle7, -, -, -)
+endBundle
+</pre>
+
+<p>In bundle <span class="name">tool:bundle8</span>, the prefix <span class="name">viz</span> is used for naming visualisation-specific attributes, types or values.</p>
+
+<p>Bundle <span class="name">tool:bundle8</span> is given type <span class="name">viz:Configuration</span> to indicate that it consists of descriptions that pertain to the configuration of the visualisation tool. This type attribute can be used for searching bundles containing visualization-related descriptions.
+</p>
+
+<p>Alternates of the entities <span class="name">ex:report1</span> and <span class="name">ex:report2</span> have a visualization attribute for the color to be used when rendering these entities.
+Likewise, the derivation has a style attribute. </p>
+
+<p>According to their definition,
+derivations have an <a href="#derivation.id">optional identifier</a>.
+To express an alternate for a derivation, we need to be able to reference it, by means of an identifier. Hence, it is necessary for it to have an identifier in the first place (<span class="name">ex:d</span>).</p>
+</div>
+
+</section>
+</section>
+
+
+
+<section id="component6">
+<h3>Component 6: Collections</h3>
<p>The fifth component of PROV-DM is concerned with the notion of collections.
A collection is an entity that has some members. The members are themselves entities, and therefore their provenance can be expressed. Some applications need to be able to express the provenance of the collection itself: e.g. who maintains the collection, which members it contains as it evolves, and how it was assembled. The purpose of Component 5 is to define the types and relations that are useful to express the provenance of collections. In PROV, the concept of Collection is implemented by means of dictionaries, which we introduce in this section. </p>
@@ -2308,116 +2620,6 @@
</section> <!-- end dictionaries-->
-<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>
-
-<p>As provenance descriptions are exchanged between systems, it may be useful for a third party 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 occurring in provenance records it is given access to. Likewise, an interactive visualization component may want to enrich an existing 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.
-For this, a type and and a relation are introduced.</p>
-
-
-<p>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>
- <section id="term-note">
-
-<h4>Note</h4>
-
-<span class="glossary-ref" data-ref="glossary-note"></span>
-
-
-<p><div class="attributes" id="attributes-note">A <dfn title="dfn-note" id="dfn-note">note</dfn><span class="withPn">, written <span class="pnExpression">note(id, [attr1=val1, ...])</span> in PROV-N,</span> has:
-<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 ((<span class="name">attr1</span>, <span class="name">val1</span>), ...) representing application-specific information.</li>
-</ul>
-</div>
-
-
-
-
-<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 the pre-existing entity it is associated with, by
-specifying its color and its position on the screen.</p>
-<pre class="codeexample">
-note(ex:n1,[draw:color="blue", draw:screenX=20, draw:screenY=30])
-hasAnnotation(tr:WD-prov-dm-20111215,ex:n1)
-</pre>
-<p>The note is linked to the entity <span class="name">tr:WD-prov-dm-20111215</span>, with
-relation <a title="annotation">hasAnnotation</a>
-discussed in <a href="#term-annotation">Section 4.6.2</a>.
-The note's identifier is declared in the namespace denoted by prefix <span class="name">ex</span> to illustrate that the rendering application may differ from the application involving entity <span class="name">tr:WD-prov-dm-20111215</span>. The prefix <span class="name">draw</span> also denotes an application specific namespace.
-</p>
-</div>
-
-<div class="anexample" id="anexample-note2">
-<p>In contrast, a reputation service may enrich an existing provenance record with notes providing reputation ratings about agents. In the following fragment, both agents <span class="name">ex2:Simon</span> and <span class="name">ex2:Paolo</span> are rated "excellent".</p>
-<pre class="codeexample">
-note(ex3:n2,[trust:reputation="excellent"])
-hasAnnotation(ex2:Simon,ex3:n2)
-hasAnnotation(ex2:Paolo,ex3:n2)
-</pre>
-<p>The note's identifier is declared in a separate namespace denoted by prefix <span class="name">ex3</span>. The prefix <span class="name">trust</span> also denotes an application specific namespace.</p>
-
-</div>
-
-
- </section>
-
-<section id="term-annotation">
-<h4>Annotation</h4>
-
-
-
-<span class="glossary-ref" data-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. </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:
-<ul>
-<li><span class='attribute' id="annotation.id">something</span>: the identifier (<span class="name">r</span>) of something being annotated;</li>
-<li><span class='attribute' id="annotation.note">note</span>: an identifier (<span class="name">n</span>) of a note.</li>
-</ul>
-</div>
-
-<div class="anexample">
-<p>
-The following expressions</p>
-<pre class="codexample">
-entity(e1,[prov:type="document"])
-entity(e2,[prov:type="document"])
-activity(a,t1,t2)
-used(u1,a,e1,[ex:file="stdin"])
-wasGeneratedBy(e2, a, [ex:file="stdout"])
-
-note(n1,[ex:icon="doc.png"])
-hasAnnotation(e1,n1)
-hasAnnotation(e2,n1)
-
-note(n2,[ex:style="dotted"])
-hasAnnotation(u1,n2)
-</pre>
-<p>describe two documents (attribute-value pair: <span class="name">prov:type="document"</span>) identified by <span class="name">e1</span> and <span
-class="name">e2</span>, and their annotation with a note indicating that the icon (an application specific way of rendering provenance) is <span class="name">doc.png</span>. The example also
-includes an activity, its usage of the first entity, and its generation of the second entity. The <a title="dfn-usage">usage</a> is annotated with a style (an application specific way
-of rendering this edge graphically). To be able to express this annotation, the usage was provided with an identifier <span class="name">u1</span>, which was then referred to in <span
-class="name">hasAnnotation(u1,n2)</span>.
-</p>
-</div>
-
-
-</section>
-
-
-</section>
-
@@ -2437,7 +2639,7 @@
A <dfn id="dfn-defaultNamespaceDeclaration">default namespace declaration</dfn> consists of a namespace. Every un-prefixed qualified name in the scope of this default namespace declaration
refers to this namespace.</p>
-<p>The <dfn title="prov-namespace">PROV namespace</dfn> is identified by the URI <span class="name">http://www.w3.org/ns/prov#</span>.</p>
+<p>The <dfn title="prov-namespace">PROV namespace</dfn> is identified by the URI <a href="http://www.w3.org/ns/prov#">http://www.w3.org/ns/prov#</a>.</p>
</section>
@@ -2785,7 +2987,8 @@
<li>
-<p>The idea of bundling provenance descriptions is crucial to the PROV approach. Indeed, it allows multiple provenance perspectives to be provided for a given entity. It is also the mechanism by which provenance of provenance can be expressed. Such a named bundle is referred to as an <dfn>account</dfn> and is regarded as an <a title="concept-account">Account</a> so that its provenance can be expressed. The notion of account is specified in the companion specification [[PROV-CONSTRAINTS]], as well as the constraints that <dfn>structurally well-formed</dfn> descriptions SHOULD satisfy.</p>
+<p>The idea of bundling provenance descriptions is crucial to the PROV approach. Indeed, it allows multiple provenance perspectives to be provided for a given entity. It is also the mechanism by which provenance of provenance can be expressed.
+Descriptions in bundles are expected to satisfy constraints specified in the companion specification [[PROV-CONSTRAINTS]].</p>
</li>