--- a/model/all-divs.js Tue Apr 17 13:51:14 2012 +0100
+++ b/model/all-divs.js Tue Apr 17 15:02:16 2012 +0100
@@ -3,102 +3,136 @@
// with <script src="all-divs.js" class="remove"></script>
//Insert glossary definitions with the following
// <div class="glossary-ref" ref="glossary-generation"></div>
-divs_hg='http://dvcs.w3.org/hg/prov/file/baac41bffc1f/model/prov-dm.html';
+divs_hg='http://dvcs.w3.org/hg/prov/file/4482fa5dd39f/model/prov-dm.html';
divs_string=
'<html> \n' +
-'<div class="note"> \n' +
-' TO EDIT \n' +
-' </div><div class="note"> \n' +
-' TO EDIT \n' +
-' </div><div class="buttonpanel"> \n' +
-' <form action="#"> \n' +
-' <p> \n' +
-' <input id="hide-asn" onclick="set_display_by_class(\'div\',\'withAsn\',\'none\');set_display_by_class(\'span\',\'withAsn\',\'none\'); set_display_by_id(\'hide-asn\',\'none\'); set_display_by_id(\'show-asn\',\'\');" type="button" value="Hide ASN" /> <input id="show-asn" onclick="set_display_by_class(\'div\',\'withAsn\',\'\'); set_display_by_class(\'span\',\'withAsn\',\'\'); set_display_by_id(\'hide-asn\',\'\'); set_display_by_id(\'show-asn\',\'none\');" style="display: none" type="button" value="Show ASN" /> \n' +
-' </p> \n' +
-' </form> \n' +
-' </div><div class="issue"> \n' +
-' There is a desire to use a single namespace that all specifications of the \n' +
-' PROV family can share to refer to common provenance terms. This is <a href="http://www.w3.org/2011/prov/track/issues/224">ISSUE-224</a>. \n' +
+'<div style="text-align: left;"> \n' +
+' <table border="1" style="margin-left: auto; margin-right: auto;"> \n' +
+' <caption id="namespace-table"> \n' +
+' Table 1: Prefix and Namespaces used in this specification \n' +
+' </caption> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>prefix</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' namespace uri \n' +
+' </td> \n' +
+' <td> \n' +
+' definition \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>prov</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' http://www.w3.org/ns/prov# \n' +
+' </td> \n' +
+' <td> \n' +
+' The PROV namespace (see Section <a href="#term-NamespaceDeclaration">4.7.1</a>) \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>xsd</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' http://www.w3.org/2000/10/XMLSchema# \n' +
+' </td> \n' +
+' <td> \n' +
+' XML Schema Namespace [[!XMLSCHEMA-2]] \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>rdf</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' http://www.w3.org/1999/02/22-rdf-syntax-ns# \n' +
+' </td> \n' +
+' <td> \n' +
+' The RDF namespace [[!RDF-CONCEPTS]] \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>(others)</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' (various) \n' +
+' </td> \n' +
+' <td> \n' +
+' All other namespace prefixes are used in examples only. <br /> In \n' +
+' particular, URIs starting with "http://example.com" represent<br /> \n' +
+' some application-dependent URI [[!URI]] \n' +
+' </td> \n' +
+' </tr> \n' +
+' </table> \n' +
' </div><div class="glossary-ref"> \n' +
-' </div><div class="anexample" id="entity-example"> \n' +
+' </div><div class="conceptexample" id="entity-example"> \n' +
' <p> \n' +
-' An entity may be the document at URI <a href="http://www.w3.org/TR/prov-dm/">http://www.w3.org/TR/prov-dm/</a>, \n' +
-' a file in a file system, a car or an idea. \n' +
+' An entity may be the document at URI <a href="http://www.bbc.co.uk/news/science-environment-17526723">http://www.bbc.co.uk/news/science-environment-17526723</a>, \n' +
+' a file in a file system, a car, or an idea. \n' +
' </p> \n' +
-' </div><div class="anexample" id="activity-example"> \n' +
+' </div><div class="conceptexample" id="activity-example"> \n' +
' <p> \n' +
-' An activity may be the publishing of a document on the web, sending a \n' +
-' twitter message, extracting metadata embedded in a file, or driving a \n' +
-' car from Boston to Cambridge, assembling a data set based on a set of \n' +
+' An activity may be the publishing of a document on the Web, sending a \n' +
+' twitter message, extracting metadata embedded in a file, driving a car \n' +
+' from Boston to Cambridge, assembling a data set based on a set of \n' +
' measurements, performing a statistical analysis over a data set, sorting \n' +
' news items according to some criteria, running a SPARQL query over a \n' +
-' triple store, and editing a file. \n' +
-' </p> \n' +
-' </div><div class="anexample" id="agent-example"> \n' +
-' <p> \n' +
-' Software for checking the use of grammar in a document may be defined as \n' +
-' an agent of a document preparation activity, and at the same time one \n' +
-' can describe its provenance, including for instance the vendor and the \n' +
-' version history. \n' +
+' triple store, or editing a file. \n' +
' </p> \n' +
' </div><div class="glossary-ref"> \n' +
' </div><div class="glossary-ref"> \n' +
-' </div><div class="anexample" id="generation-example"> \n' +
-' Examples of generation are the completed creation of a file by a program, \n' +
-' the completed creation of a linked data set, and the completed publication \n' +
-' of a new version of a document. \n' +
-' </div><div class="anexample" id="usage-example"> \n' +
-' Usage examples include a procedure beginning to consume an argument, a \n' +
-' service starting to read a value on a port, a program beginning to read a \n' +
-' configuration file, or the point at which an ingredient, such as eggs, is \n' +
-' being added in a baking activity. Usage may entirely consume an entity \n' +
-' (e.g. eggs are no longer available after being added to the mix); \n' +
-' alternatively, a same entity may be used multiple times, possibly by \n' +
-' different activities (e.g. a file on a file system can be read \n' +
-' indefinitely). \n' +
-' </div><div class="anexample" id="derivation-example"> \n' +
+' </div><div class="conceptexample" id="generation-example"> \n' +
+' <p> \n' +
+' Examples of generation are the completed creation of a file by a \n' +
+' program, the completed creation of a linked data set, and the completed \n' +
+' publication of a new version of a document. \n' +
+' </p> \n' +
+' </div><div class="conceptexample" id="usage-example"> \n' +
+' <p> \n' +
+' Usage examples include a procedure beginning to consume an argument, a \n' +
+' service starting to read a value on a port, a program beginning to read \n' +
+' a configuration file, or the point at which an ingredient, such as eggs, \n' +
+' is being added in a baking activity. Usage may entirely consume an \n' +
+' entity (e.g. eggs are no longer available after being added to the mix); \n' +
+' alternatively, the same entity may be used multiple times, possibly by \n' +
+' different activities (e.g. a file on a file system can be read \n' +
+' indefinitely). \n' +
+' </p> \n' +
+' </div><div class="conceptexample" id="derivation-example"> \n' +
' <p> \n' +
' Examples of derivation include the transformation of a relational table \n' +
' into a linked data set, the transformation of a canvas into a painting, \n' +
' the transportation of a work of art from London to New York, and a \n' +
' physical transformation such as the melting of ice into water. \n' +
' </p> \n' +
-' </div><div class="anexample" id="plan-example"> \n' +
+' </div><div class="conceptexample" id="agent-example"> \n' +
+' <p> \n' +
+' Software for checking the use of grammar in a document may be defined as \n' +
+' an agent of a document preparation activity, and at the same time one \n' +
+' can describe its provenance, including for instance the vendor and the \n' +
+' version history. A site selling books on the Web, the services involved \n' +
+' in the processing of orders, and the companies hosting them are also \n' +
+' agents. \n' +
+' </p> \n' +
+' </div><div class="conceptexample" id="plan-example"> \n' +
' <p> \n' +
' A plan can be a blog post tutorial for how to set up a web server, a \n' +
' list of instructions for a micro-processor execution, a cook\'s written \n' +
' recipe for a chocolate cake, or a workflow for a scientific experiment. \n' +
' </p> \n' +
-' </div><div class="anexample" id="collection-example"> \n' +
-' <p> \n' +
-' An example of collection is an archive of documents. Each document has \n' +
-' its own provenance, but the archive itself also has some provenance: who \n' +
-' maintained it, which documents it contained at which point in time, how \n' +
-' it was assembled, etc. \n' +
-' </p> \n' +
-' </div><div class="anexample" id="account-example"> \n' +
+' </div><div class="glossary-ref" /><div class="conceptexample" id="attribution-example"> \n' +
' <p> \n' +
-' Having found a resource, a user may want to retrieve its provenance. For \n' +
-' users to decide whether they can place their trust in that resource, \n' +
-' they may want to analyze its provenance, but also determine who the \n' +
-' provenance is attributed to, and when it was generated. Hence, from the \n' +
-' PROV-DM data model, the provenance is regarded as an entity, an \n' +
-' AccountEntity, for which provenance can be sought. \n' +
+' A blog post can be attributed to an author, a mobile phone to its \n' +
+' manufacturer. \n' +
' </p> \n' +
-' </div><div class="anexample" id="software-agents-example"> \n' +
+' </div><div class="conceptexample" id="association-example"> \n' +
' <p> \n' +
-' Even software agents can be assigned some responsibility for the effects \n' +
-' they have in the world, so for example if one is using a Text Editor and \n' +
-' one\'s laptop crashes, then one would say that the Text Editor was \n' +
-' responsible for crashing the laptop. If one invokes a service to buy a \n' +
-' book, that service can be considered responsible for drawing funds from \n' +
-' one\'s bank to make the purchase (the company that runs the service and \n' +
-' the web site would also be responsible, but the point here is that we \n' +
-' assign some measure of responsibility to software as well). \n' +
-' </p> \n' +
-' </div><div class="anexample" id="association-example"> \n' +
-' <p> \n' +
-' Examples of association between an activity and agent are: \n' +
+' Examples of association between an activity and an agent are: \n' +
' </p> \n' +
' <ul> \n' +
' <li> \n' +
@@ -112,10 +146,11 @@
' a public event, sponsored by a company, and hosted by a museum; \n' +
' </li> \n' +
' <li> \n' +
-' an XSLT transform initiated by a user; \n' +
+' an XSLT transform launched by a user based on an XSL style sheet (a \n' +
+' plan). \n' +
' </li> \n' +
' </ul> \n' +
-' </div><div class="anexample" id="responsibilityChain-example"> \n' +
+' </div><div class="conceptexample" id="responsibility-example"> \n' +
' <p> \n' +
' A student publishing a web page describing an academic department could \n' +
' result in both the student and the department being agents associated \n' +
@@ -123,24 +158,520 @@
' page but it matters a lot that the department told the student to put up \n' +
' the web page. \n' +
' </p> \n' +
-' </div><div class="note"> \n' +
-' TODO: short text required to explain the overview diagram \n' +
-' </div><div class="note"> \n' +
-' Illustration to be hand crafted instead of being generated automatically. \n' +
-' It\'s important to adopt a common style for all illustrations across all \n' +
-' PROV documents. \n' +
-' </div><div class="glossary-ref" /><div class="attributes" id="attributes-entity"> \n' +
-' An entity<span class="withAsn">, written <span class="name">entity(id, [ \n' +
-' attr1=val1, ...])</span> in PROV-ASN, </span> contains: \n' +
+' </div><div class="conceptexample" id="collection-example"> \n' +
+' <p> \n' +
+' An example of collection is an archive of documents. Each document has \n' +
+' its own provenance, but the archive itself also has some provenance: who \n' +
+' maintained it, which documents it contained at which point in time, how \n' +
+' it was assembled, etc. \n' +
+' </p> \n' +
+' </div><div class="conceptexample" id="account-example"> \n' +
+' <p> \n' +
+' For users to decide whether they can place their trust in a resource, \n' +
+' they may want to analyze the resource\'s provenance, but also determine \n' +
+' who its provenance is attributed to, and when it was generated. In other \n' +
+' words, users need to be able to determine the provenance of provenance. \n' +
+' Hence, provenance is also regarded as an entity (of type Account), by \n' +
+' which provenance of provenance can then be expressed. \n' +
+' </p> \n' +
+' </div><div style="text-align: left;"> \n' +
+' <table border="1" style="margin-left: auto; margin-right: auto;"> \n' +
+' <caption id="overview-types-and-relations"> \n' +
+' Table 2: Mapping of Provenance concepts to types and relations \n' +
+' </caption> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a><b>PROV Concepts</b></a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <b>PROV-DM types or relations</b> \n' +
+' </td> \n' +
+' <td> \n' +
+' <b>Name</b> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>Entity</a> \n' +
+' </td> \n' +
+' <td rowspan="3"> \n' +
+' PROV-DM Types \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="dfn-Entity">entity</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>Activity</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="dfn-Activity">activity</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>Agent</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="dfn-agent">agent</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>Generation</a> \n' +
+' </td> \n' +
+' <td rowspan="6"> \n' +
+' PROV-DM Relations \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasGeneratedBy">wasGeneratedBy</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>Usage</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="used">used</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>Attribution</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasAttributedTo">wasAttributedTo</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>Association</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasAssociatedWith">wasAssociatedWith</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>Responsibility</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="actedOnBehalfOf">actedOnBehalfOf</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a>Derivation</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasDerivedFrom">wasDerivedFrom</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' </table> \n' +
+' </div><div style="text-align: center; "> \n' +
+' <img src="images/OverviewDiagram.png" alt="Simplified Overview of PROV-DM" style="max-width: 70%; " /> Figure 1: Simplified Overview of PROV-DM \n' +
+' </div><div class="anexample"> \n' +
+' <p> \n' +
+' An activity with identifier <span class="name">a1</span> and an \n' +
+' attribute <span class="name">type</span> with value <span class="name">createFile</span>. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'activity(a1, [prov:type="createFile"]) \n' +
+'</pre> \n' +
+' Two entities with identifiers <span class="name">e1</span> and <span class="name">e2</span>. \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(e1) \n' +
+'entity(e2) \n' +
+'</pre> \n' +
+' The activity <span class="name">a1</span> used <span class="name">e1</span>, \n' +
+' and <span class="name">e2</span> was generated by <span class="name">a1</span>. \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'used(a1,e1) \n' +
+'wasGeneratedBy(e2,a1) \n' +
+'</pre> \n' +
+' The same description, but with an explicit identifier <span class="name">u1</span> \n' +
+' for the usage, and the syntactic marker <span class="name">-</span> to \n' +
+' mark the absence of identifier in the generation. \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'used(u1,a1,e1) \n' +
+'wasGeneratedBy(-,e2,a1) \n' +
+'</pre> \n' +
+' </div><div style="text-align: center; "> \n' +
+' <img src="images/w3-publication3.png" alt="Provenance of a Document (1)" style="max-width: 98%; " /> Figure 2: Provenance of a Document (1) \n' +
+' </div><div style="text-align: center;"> \n' +
+' <img src="images/w3-publication1.png" alt="Provenance of a Document (2)" style="max-width: 90%; " /> Figure 3: Provenance of a Document (2) \n' +
+' </div><div id="prov-dm-components-ul"> \n' +
' <ul> \n' +
' <li> \n' +
-' <span class="attribute">id</span>: an identifier identifying an \n' +
+' <b>Component 1: entities and activities.</b> The first component \n' +
+' consists of entities, activities, and concepts linking them, such as \n' +
+' generation, usage, start, end. The first component is the only one \n' +
+' comprising time-related concepts. \n' +
+' </li> \n' +
+' <li> \n' +
+' <b>Component 2: agents and responsibility.</b> The second component \n' +
+' consists of agents and concepts ascribing responsibility to agents. \n' +
+' </li> \n' +
+' <li> \n' +
+' <b>Component 3: derivations.</b> The third component is formed with \n' +
+' derivations and derivation subtypes. \n' +
+' </li> \n' +
+' <li> \n' +
+' <b>Component 4: alternate.</b> The fourth component consists of \n' +
+' relations linking entities referring to the same thing. \n' +
+' </li> \n' +
+' <li> \n' +
+' <b>Component 5: collections.</b> The fifth component is about \n' +
+' collections and concepts capturing their transformation, such as \n' +
+' insertion and removal. \n' +
+' </li> \n' +
+' <li> \n' +
+' <b>Component 6: annotations.</b> The sixth component is concerned with \n' +
+' annotations to PROV-DM instances. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div style="text-align: center;"> \n' +
+' <img src="images/components.png" alt="PROV-DM Components" style="max-width: 90%; " /> <map id="componentMap"> \n' +
+' <area title="collections" href="#component5" coords="220,0,440,70" alt="collections" shape="rect" /> \n' +
+' <area title="alternate" href="#component4" coords="450,0,510,140" alt="alternate" shape="rect" /> \n' +
+' <area title="annotations" href="#component6" coords="530,0,590,220" alt="annotations" shape="rect" /> \n' +
+' <area title="activities/entities" href="#component1" coords="80,150,510,220" alt="activities/entities" shape="rect" /> \n' +
+' <area title="derivations" href="#component3" coords="80,0,210,70" alt="derivations" shape="rect" /> \n' +
+' <area title="agents/responsibility" href="#component2" coords="0,0,70,220" alt="agents/responsibility" shape="rect" /></map> \n' +
+' Figure 4: PROV-DM Components \n' +
+' </div><div id="relations-at-a-glance-div" style="text-align: center;"> \n' +
+' <table border="1" style="margin-left: auto; margin-right: auto;"> \n' +
+' <caption id="relations-at-a-glance"> \n' +
+' Table 3: PROV-DM Relations At a Glance \n' +
+' </caption> \n' +
+' <tr> \n' +
+' <td /> \n' +
+' <td> \n' +
+' Entity \n' +
+' </td> \n' +
+' <td> \n' +
+' Activity \n' +
+' </td> \n' +
+' <td> \n' +
+' Agent \n' +
+' </td> \n' +
+' <td> \n' +
+' Note \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' Entity \n' +
+' </td> \n' +
+' <td> \n' +
+' <div class="component3-color"> \n' +
+' <a>wasDerivedFrom</a><br /><a>wasRevisionOf</a><br /><a>wasQuotedFrom</a><br /><a>hadOriginalSource</a> \n' +
+' </div> \n' +
+' <div class="component4-color"> \n' +
+' <a>alternateOf</a><br /><a>specializationOf</a> \n' +
+' </div> \n' +
+' </td> \n' +
+' <td class="component1-color"> \n' +
+' <a title="wasGeneratedBy">wasGeneratedBy</a> \n' +
+' </td> \n' +
+' <td class="component2-color"> \n' +
+' <a>wasAttributedTo</a> \n' +
+' </td> \n' +
+' <td class="component6-color"> \n' +
+' <a>hasAnnotation</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' Activity \n' +
+' </td> \n' +
+' <td> \n' +
+' <div class="component1-color"> \n' +
+' <a>used</a><br /><a>wasStartedBy</a><br /><a>wasEndedBy</a> \n' +
+' </div> \n' +
+' </td> \n' +
+' <td class="component1-color"> \n' +
+' <a>wasStartedByActivity</a><br /><a>wasInformedBy</a> \n' +
+' </td> \n' +
+' <td class="component2-color"> \n' +
+' <a>wasAssociatedWith</a> \n' +
+' </td> \n' +
+' <td class="component6-color"> \n' +
+' <a>hasAnnotation</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' Agent \n' +
+' </td> \n' +
+' <td> \n' +
+' </td> \n' +
+' <td> \n' +
+' </td> \n' +
+' <td class="component2-color"> \n' +
+' <a>actedOnBehalfOf</a> \n' +
+' </td> \n' +
+' <td class="component6-color"> \n' +
+' <a>hasAnnotation</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr> \n' +
+' <td> \n' +
+' Note \n' +
+' </td> \n' +
+' <td> \n' +
+' </td> \n' +
+' <td> \n' +
+' </td> \n' +
+' <td> \n' +
+' </td> \n' +
+' <td class="component6-color"> \n' +
+' <a>hasAnnotation</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' </table> \n' +
+' </div><div class="component3-color"> \n' +
+' <a>wasDerivedFrom</a><br /><a>wasRevisionOf</a><br /><a>wasQuotedFrom</a><br /><a>hadOriginalSource</a> \n' +
+' </div><div class="component4-color"> \n' +
+' <a>alternateOf</a><br /><a>specializationOf</a> \n' +
+' </div><div class="component1-color"> \n' +
+' <a>used</a><br /><a>wasStartedBy</a><br /><a>wasEndedBy</a> \n' +
+' </div><div id="prov-dm-types-and-relations" style="text-align: left;"> \n' +
+' <table border="1" style="margin-left: auto; margin-right: auto;"> \n' +
+' <caption id="prov-dm-types-and-relations_"> \n' +
+' Table 4: PROV-DM Types and Relations \n' +
+' </caption> \n' +
+' <tr> \n' +
+' <td> \n' +
+' <a><b>Type or Relation Name</b></a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <b>Representation in the PROV-N notation</b> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component1-color"> \n' +
+' <td> \n' +
+' <a>Entity</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="dfn-Entity">entity(id, [ attr1=val1, ...])</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component1-color"> \n' +
+' <td> \n' +
+' <a>Activity</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="dfn-Activity">activity(id, st, et, [ attr1=val1, ...])</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component1-color"> \n' +
+' <td> \n' +
+' <a>Generation</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasGeneratedBy">wasGeneratedBy(id,e,a,t,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component1-color"> \n' +
+' <td> \n' +
+' <a>Usage</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="used">used(id,a,e,t,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component1-color"> \n' +
+' <td> \n' +
+' <a>Start</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasStartedBy">wasStartedBy(id,a,e,t,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component1-color"> \n' +
+' <td> \n' +
+' <a>End</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasEndedBy">wasEndedBy(id,a,e,t,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component1-color"> \n' +
+' <td> \n' +
+' <a>Communication</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasInformedBy">wasInformedBy(id,a2,a1,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component1-color"> \n' +
+' <td> \n' +
+' <a>Start by Activity</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasStartedByActivity">wasStartedByActivity(id, a2, a1, \n' +
+' attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component2-color"> \n' +
+' <td> \n' +
+' <a>Agent</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="dfn-agent">agent(id, [ attr1=val1, ...])</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component2-color"> \n' +
+' <td> \n' +
+' <a>Attribution</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasAttributedTo">wasAttributedTo(id,e,ag,attr)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component2-color"> \n' +
+' <td> \n' +
+' <a>Association</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasAssociatedWith">wasAssociatedWith(id,a,ag,pl,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component2-color"> \n' +
+' <td> \n' +
+' <a>Responsibility</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="actedOnBehalfOf">actedOnBehalfOf(id,ag2,ag1,a,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component3-color"> \n' +
+' <td> \n' +
+' <a>Derivation</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasDerivedFrom">wasDerivedFrom(id, e2, e1, a, g2, u1, \n' +
+' attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component3-color"> \n' +
+' <td> \n' +
+' <a>Revision</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasRevisionOf">wasRevisionOf(id,e2,e1,ag,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component3-color"> \n' +
+' <td> \n' +
+' <a>Quotation</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="wasQuotedFrom">wasQuotedFrom(id,e2,e1,ag2,ag1,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component3-color"> \n' +
+' <td> \n' +
+' <a>Original Source</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="hadOriginalSource">hadOriginalSource(id,e2,e1,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component3-color"> \n' +
+' <td> \n' +
+' <a>Traceability</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="tracedTo">tracedTo(id,e2,e1,attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component4-color"> \n' +
+' <td> \n' +
+' <a>Alternate</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="alternateOf">alternateOf(alt1, alt2)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component4-color"> \n' +
+' <td> \n' +
+' <a>Specialization</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="specializationOf">specializationOf(sub, super)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component5-color"> \n' +
+' <td> \n' +
+' <a>Collection</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a>Collection</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component5-color"> \n' +
+' <td> \n' +
+' <a>Insertion</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="derivedByInsertionFrom">derivedByInsertionFrom(id, c2, c1, \n' +
+' {(key_1, e_1), ..., (key_n, e_n)}, attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component5-color"> \n' +
+' <td> \n' +
+' <a>Removal</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="derivedByRemovalFrom">derivedByRemovalFrom(id, c2, c1, \n' +
+' {key_1, ... key_n}, attrs)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component5-color"> \n' +
+' <td> \n' +
+' <a>Membership</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="memberOf">memberOf(c, {(key_1, e_1), ..., (key_n, e_n)})</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component6-color"> \n' +
+' <td> \n' +
+' <a>Note</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="dfn-note">note(id, [ attr1=val1, ...])</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' <tr class="component6-color"> \n' +
+' <td> \n' +
+' <a>Annotation</a> \n' +
+' </td> \n' +
+' <td> \n' +
+' <a title="hasAnnotation">hasAnnotation(r,n)</a> \n' +
+' </td> \n' +
+' </tr> \n' +
+' </table> \n' +
+' </div><div style="text-align: center;"> \n' +
+' <img src="images/Entities-Activities.png" alt="entities and activities" /> \n' +
+' Figure 5: Entities and Activities Component Overview \n' +
+' </div><div class="glossary-ref" /><div class="attributes" id="attributes-entity"> \n' +
+' An <dfn title="dfn-Entity" id="dfn-entity">entity</dfn><span class="withPn">, \n' +
+' written <span class="pnExpression" id="pn-entity">entity(id, [attr1=val1, \n' +
+' ...])</span> in PROV-N, </span> has: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="entity.id">id</span>: an identifier for an \n' +
' entity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">attributes</span>: an OPTIONAL set of \n' +
-' attribute-value pairs representing this entity\'s situation in the \n' +
-' world. \n' +
+' <span class="attribute" id="entity.attributes">attributes</span>: an \n' +
+' OPTIONAL set of attribute-value pairs ((<span class="name">attr1</span>, \n' +
+' <span class="name">val1</span>), ...) representing additional \n' +
+' information about this entity. \n' +
' </li> \n' +
' </ul> \n' +
' </div><div class="anexample"> \n' +
@@ -151,9 +682,10 @@
'entity(tr:WD-prov-dm-20111215, [ prov:type="document", ex:version="2" ]) \n' +
'</pre> \n' +
' states the existence of an entity, denoted by identifier <span class="name">tr:WD-prov-dm-20111215</span>, \n' +
-' with type <span class="name">document</span> and version number <span class="name">2</span>. The attributes <span class="name">ex:version</span> \n' +
+' with type <span class="name">document</span> and version number <span class="name">2</span>. The attribute <span class="name">ex:version</span> \n' +
' is application specific, whereas the attribute <span class="name">type</span> \n' +
-' is reserved in the PROV-DM namespace. \n' +
+' (see <a href="#term-attribute-type">Section 4.7.4.4</a>) is reserved in \n' +
+' the <a title="prov-namespace">PROV namespace</a>. \n' +
' <!-- The following expression</p> <pre class="codeexample"> \n' +
' entity(tr:WD-prov-dm-20111215, [ prov:type="document", ex:version="2" ]) \n' +
' entity(e0, [ prov:type="File", ex:path="/shared/crime.txt", \n' +
@@ -163,39 +695,31 @@
' class="name">/shared/crime.txt</span> in the file system, and creator \n' +
' alice. The attributes <span class="name">path</span> and <span \n' +
' class="name">creator</span> are application specific, whereas the \n' +
-' attribute <span class="name">type</span> is reserved in the PROV-DM \n' +
+' attribute <span class="name">type</span> is reserved in the PROV \n' +
' namespace. --> \n' +
-' </div><div class="issue"> \n' +
-' The characterization interval of an entity is currently implicit. Making \n' +
-' it explicit would allow us to define wasComplementOf more precisely. \n' +
-' Beginning and end of characterization interval could be expressed by \n' +
-' attributes (similarly to activities). How do we define the end of an \n' +
-' entity? This is <a href="http://www.w3.org/2011/prov/track/issues/204">ISSUE-204</a>. \n' +
-' </div><div class="issue"> \n' +
-' There is still some confusion about what the identifiers really denote. \n' +
-' For instance, are they entity identifiers or entity record identifiers. \n' +
-' This is <a href="http://www.w3.org/2011/prov/track/issues/183">ISSUE-183</a>. \n' +
-' An example and questions appear in <a href="http://www.w3.org/2011/prov/track/issues/215">ISSUE-215</a>. A \n' +
-' related issued is also raised in <a href="http://www.w3.org/2011/prov/track/issues/145">ISSUE-145</a>. \n' +
' </div><div class="glossary-ref" /><div class="attributes" id="attributes-activity"> \n' +
-' An activity<span class="withAsn">, written <span class="name">activity(id, \n' +
-' st, et, [ attr1=val1, ...])</span> in PROV-ASN,</span> contains: \n' +
+' An <dfn title="dfn-Activity" id="dfn-activity">activity</dfn><span class="withPn">, written <span class="pnExpression" id="pn-activity">activity(id, \n' +
+' st, et, [attr1=val1, ...])</span> in PROV-N,</span> has: \n' +
' <ul> \n' +
' <li> \n' +
-' <span class="attribute">id</span>: an identifier identifying an \n' +
+' <span class="attribute" id="activity.id">id</span>: an identifier for \n' +
+' an activity; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="activity.startTime">startTime</span>: an \n' +
+' OPTIONAL time (<span class="name">st</span>) for the start of the \n' +
' activity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">startTime</span>: an OPTIONAL time for the \n' +
-' start of the activity; \n' +
+' <span class="attribute" id="activity.endTime">endTime</span>: an \n' +
+' OPTIONAL time (<span class="name">et</span>) for the end of the \n' +
+' activity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">endTime</span>: an OPTIONAL time for the end \n' +
-' of the activity; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="attribute">attributes</span>: an OPTIONAL set of \n' +
-' attribute-value pairs for this activity. \n' +
+' <span class="attribute" id="activity.attributes">attributes</span>: an \n' +
+' OPTIONAL set of attribute-value pairs ((<span class="name">attr1</span>, \n' +
+' <span class="name">val1</span>), ...) representing additional \n' +
+' information about this activity. \n' +
' </li> \n' +
' </ul> \n' +
' </div><div class="anexample"> \n' +
@@ -213,104 +737,35 @@
' The attribute <span class="name">host</span> is application specific \n' +
' (declared in some namespace with prefix <span class="name">ex</span>). \n' +
' The attribute <span class="name">type</span> is a reserved attribute of \n' +
-' PROV-DM, allowing for sub-typing to be expressed. \n' +
+' PROV-DM, allowing for sub-typing to be expressed (see <a href="#term-attribute-type">Section 4.7.4.4</a>). \n' +
' </p> \n' +
-' </div><div class="glossary-ref" /><div class="attributes" id="attributes-agent"> \n' +
-' An agent<span class="withAsn">, noted <span class="name">agent(id, [ \n' +
-' attr1=val1, ...])</span> in PROV-ASN,</span> contains: \n' +
+' </div><div class="glossary-ref" /><div class="attributes" id="attributes-generation"> \n' +
+' <dfn title="wasGeneratedBy">Generation</dfn><span class="withPn">, written \n' +
+' <span class="pnExpression">wasGeneratedBy(id,e,a,t,attrs)</span> in \n' +
+' PROV-N,</span> has: \n' +
' <ul> \n' +
' <li> \n' +
-' <span class="attribute">id</span>: an identifier identifying an agent; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="attribute">attributes</span>: a set of attribute-value \n' +
-' pairs representing this agent\'s situation in the world. \n' +
-' </li> \n' +
-' </ul> \n' +
-' </div><div class="anexample"> \n' +
-' <p> \n' +
-' The following expression is about an agent identified by <span class="name">e1</span>, which is a person, named Alice, with employee \n' +
-' number 1234. \n' +
-' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-'agent(e1, [ex:employee="1234", ex:name="Alice", prov:type="prov:Human" %% xsd:QName]) \n' +
-'</pre> \n' +
-' <p> \n' +
-' It is optional to specify the type of an agent. When present, it is \n' +
-' expressed using the <span class="name">prov:type</span> attribute. \n' +
-' </p> \n' +
-' </div><div class="issue"> \n' +
-' Shouldn\'t we allow for entities (not agent) to be associated with an \n' +
-' activity? Should we drop the inference association-agent? <a href="http://www.w3.org/2011/prov/track/issues/203">ISSUE-203</a>. \n' +
-' </div><div class="attributes" id="attributes-note"> \n' +
-' A <dfn title="dfn-note">note</dfn><span class="withAsn">, noted <span class="name">note(id, [ attr1=val1, ...])</span> in PROV-ASN,</span> \n' +
-' contains: \n' +
-' <ul> \n' +
-' <li> \n' +
-' <span class="attribute">id</span>: an identifier identifying the note; \n' +
+' <span class="attribute" id="generation.id">id</span>: an OPTIONAL \n' +
+' identifier for a generation; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">attributes</span>: a set of attribute-value \n' +
-' pairs, whose meaning is application specific. \n' +
-' </li> \n' +
-' </ul> \n' +
-' </div><div class="anexample" id="anexample-note1"> \n' +
-' <p> \n' +
-' The following note consists of a set of application-specific \n' +
-' attribute-value pairs, intended to help the rendering of what it is \n' +
-' associated with, by specifying its color and its position on the screen. \n' +
-' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-'note(ex2:n1,[ex2:color="blue", ex2:screenX=20, ex2:screenY=30]) \n' +
-'hasAnnotation(tr:WD-prov-dm-20111215,ex2:n1) \n' +
-'</pre> \n' +
-' <p> \n' +
-' The note is associated with the entity <span class="name">tr:WD-prov-dm-20111215</span> \n' +
-' previously introduced (<a title="annotation">hasAnnotation</a> is \n' +
-' discussed in Section <a href="#term-annotation">Annotation</a>). The \n' +
-' note\'s identifier and attributes are declares in a separate namespace \n' +
-' denoted by prefix <span class="name">ex2</span>. \n' +
-' </p> \n' +
-' </div><div class="anexample" id="anexample-note2"> \n' +
-' <p> \n' +
-' Alternatively, a reputation service may enrich a provenance record with \n' +
-' notes providing reputation ratings about agents. In the following \n' +
-' fragment, both agents <span class="name">ex:Simon</span> and <span class="name">ex:Paolo</span> are rated "excellent". \n' +
-' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-'note(ex3:n2,[ex3:reputation="excellent"]) \n' +
-'hasAnnotation(ex:Simon,ex3:n2) \n' +
-'hasAnnotation(ex:Paolo,ex3:n2) \n' +
-'</pre> \n' +
-' <p> \n' +
-' The note\'s identifier and attributes are declares in a separate \n' +
-' namespace denoted by prefix <span class="name">ex3</span>. \n' +
-' </p> \n' +
-' </div><div class="glossary-ref" /><div class="attributes" id="attributes-generation"> \n' +
-' <dfn title="dfn-Generation">Generation</dfn><span class="withAsn">, \n' +
-' written <span class="name">wasGeneratedBy(id,e,a,t,attrs)</span> in \n' +
-' PROV-ASN,</span> has the following components: \n' +
-' <ul> \n' +
-' <li> \n' +
-' <span class="attribute">id</span>: an OPTIONAL identifier identifying \n' +
-' a generation; \n' +
+' <span class="attribute" id="generation.entity">entity</span>: an \n' +
+' identifier (<span class="name">e</span>) for a created entity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">entity</span>: an identifier identifying a \n' +
-' created entity; \n' +
+' <span class="attribute" id="generation.activity">activity</span>: an \n' +
+' OPTIONAL identifier (<span class="name">a</span>) for the activity \n' +
+' that creates the entity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">activity</span>: an OPTIONAL identifier \n' +
-' identifying the activity that creates the entity; \n' +
+' <span class="attribute" id="generation.time">time</span>: an OPTIONAL \n' +
+' "generation time" (<span class="name">t</span>), the time at which the \n' +
+' entity was completely created; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">time</span>: an OPTIONAL "generation time", \n' +
-' the time at which the entity was completely created; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="attribute">attributes</span>: an OPTIONAL set of \n' +
-' attribute-value pairs that describes the modalities of generation of \n' +
-' this entity by this activity. \n' +
+' <span class="attribute" id="generation.attributes">attributes</span>: \n' +
+' an OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this generation. \n' +
' </li> \n' +
' </ul> \n' +
' </div><div class="anexample"> \n' +
@@ -318,53 +773,54 @@
' The following expressions \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-' wasGeneratedBy(e1,a1, 2001-10-26T21:32:52, [ex:port="p1", ex:order=1]) \n' +
-' wasGeneratedBy(e2,a1, 2001-10-26T10:00:00, [ex:port="p1", ex:order=2]) \n' +
+' wasGeneratedBy(e1,a1, 2001-10-26T21:32:52, [ex:port="p1"]) \n' +
+' wasGeneratedBy(e2,a1, 2001-10-26T10:00:00, [ex:port="p2"]) \n' +
'</pre> \n' +
' <p> \n' +
' state the existence of two generations (with respective times <span class="name">2001-10-26T21:32:52</span> and <span class="name">2001-10-26T10:00:00</span>), \n' +
' at which new entities, identified by <span class="name">e1</span> and \n' +
' <span class="name">e2</span>, are created by an activity, identified by \n' +
-' <span class="name">a1</span>. The first one is available as the first \n' +
-' value on port p1, whereas the other is the second value on port p1. The \n' +
-' semantics of <span class="name">port</span> and <span class="name">order</span> \n' +
+' <span class="name">a1</span>. The first one is available on port <span class="name">p1</span>, whereas the other is available on port <span class="name">p2</span>. The semantics of <span class="name">port</span> \n' +
' are application specific. \n' +
' </p> \n' +
' </div><div class="anexample"> \n' +
' <p> \n' +
' In some cases, we may want to record the time at which an entity was \n' +
' generated without having to specify the activity that generated it. To \n' +
-' support this requirement, the activity component in generation is \n' +
+' support this requirement, the activity element in generation is \n' +
' optional. Hence, the following expression indicates the time at which an \n' +
' entity is generated, without naming the activity that did it. \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-' wasGeneratedBy(e,,2001-10-26T21:32:52) \n' +
+' wasGeneratedBy(e,-,2001-10-26T21:32:52) \n' +
'</pre> \n' +
+' </div><div class="issue"> \n' +
+' A construct that marks the "end of life" of an entity may be introduced. \n' +
+' This is <a href="http://www.w3.org/2011/prov/track/issues/204">ISSUE-204</a>. \n' +
' </div><div class="glossary-ref" /><div class="attributes" id="attributes-usage"> \n' +
-' <dfn title="dfn-Usage">Usage</dfn><span class="withAsn">, written <span class="name">used(id,a,e,t,attrs)</span> in PROV-ASN,</span> has the \n' +
-' following constituents: \n' +
+' <dfn title="used">Usage</dfn><span class="withPn">, written <span class="pnExpression">used(id,a,e,t,attrs)</span> in PROV-N,</span> has: \n' +
' <ul> \n' +
' <li> \n' +
-' <span class="attribute">id</span>: an OPTIONAL identifier identifying \n' +
-' a usage; \n' +
+' <span class="attribute" id="usage.id">id</span>: an OPTIONAL \n' +
+' identifier for a usage; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">activity</span>: an identifier for the \n' +
-' consuming activity; \n' +
+' <span class="attribute" id="usage.activity">activity</span>: an \n' +
+' identifier (<span class="name">a</span>) for the consuming activity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">entity</span>: an identifier for the consumed \n' +
-' entity; \n' +
+' <span class="attribute" id="usage.entity">entity</span>: an identifier \n' +
+' (<span class="name">e</span>) for the consumed entity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">time</span>: an OPTIONAL "usage time", the \n' +
-' time at which the entity started to be used; \n' +
+' <span class="attribute" id="usage.time">time</span>: an OPTIONAL \n' +
+' "usage time" (<span class="name">t</span>), the time at which the \n' +
+' entity started to be used; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">attributes</span>: an OPTIONAL set of \n' +
-' attribute-value pairs that describe the modalities of usage of this \n' +
-' entity by this activity. \n' +
+' <span class="attribute" id="usage.attributes">attributes</span>: an \n' +
+' OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this usage. \n' +
' </li> \n' +
' </ul> \n' +
' </div><div class="anexample"> \n' +
@@ -376,122 +832,325 @@
' used(a1,e2,2011-11-16T16:00:01,[ex:parameter="p2"]) \n' +
'</pre> \n' +
' <p> \n' +
-' state that the activity identified by <span class="name">a1</span> \n' +
-' consumed two entities identified by <span class="name">e1</span> and \n' +
-' <span class="name">e2</span>, at times <span class="name">2011-11-16T16:00:00</span> \n' +
+' state that the activity identified by <span class="name">a1</span> used \n' +
+' two entities identified by <span class="name">e1</span> and <span class="name">e2</span>, at times <span class="name">2011-11-16T16:00:00</span> \n' +
' and <span class="name">2011-11-16T16:00:01</span>, respectively; the \n' +
' first one was found as the value of parameter <span class="name">p1</span>, \n' +
' whereas the second was found as value of parameter <span class="name">p2</span>. \n' +
' The semantics of <span class="name">parameter</span> is application \n' +
' specific. \n' +
' </p> \n' +
-' </div><div class="note"> \n' +
-' <p> \n' +
-' A usage record\'s id is OPTIONAL. It MUST be present when annotating \n' +
-' usage records (see Section <a href="#term-annotation">Annotation Record</a>) \n' +
-' or when defining precise-1 derivations (see <a href="#Derivation-Relation">Derivation</a>). \n' +
-' </p> \n' +
-' </div><div class="glossary-ref" /><div class="attributes" id="attributes-activity-association"> \n' +
-' An <dfn title="dfn-activity-association">activity association</dfn><span class="withAsn">, written <span class="name">wasAssociatedWith(id,a,ag,pl,attrs)</span> \n' +
-' in PROV-ASN,</span> has the following constituents: \n' +
+' </div><div class="glossary-ref" /><div class="attributes" id="attributes-start"> \n' +
+' An activity <dfn title="wasStartedBy">start</dfn><span class="withPn">, \n' +
+' written <span class="pnExpression">wasStartedBy(id,a,e,t,attrs)</span> in \n' +
+' PROV-N,</span> has: \n' +
' <ul> \n' +
' <li> \n' +
-' <span class="attribute">id</span>: an OPTIONAL identifier for the \n' +
-' association between an activity and an agent; \n' +
+' <span class="attribute" id="start.id">id</span>: an OPTIONAL \n' +
+' identifier for the activity start; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">activity</span>: an identifier for the \n' +
+' <span class="attribute" id="start.activity">activity</span>: an \n' +
+' identifier (<span class="name">a</span>) for the started activity; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="start.trigger">trigger</span>: an OPTIONAL \n' +
+' identifier (<span class="name">e</span>) for the entity triggering the \n' +
' activity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">agent</span>: an identifier for the agent \n' +
+' <span class="attribute" id="start.time">time</span>: the OPTIONAL time \n' +
+' (<span class="name">t</span>) at which the activity was started; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="start.attributes">attributes</span>: an \n' +
+' OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this activity start. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="anexample"> \n' +
+' <p> \n' +
+' The following example contains the description of an activity <span class="name">a1</span> (a discussion), which was started at a specific \n' +
+' time, and was triggered by an email message <span class="name">e1</span>. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(e1,[prov:type="email message"]) \n' +
+'activity(a1,[prov:type="Discuss"]) \n' +
+'wasStartedBy(a1,e1,2011-11-16T16:05:00) \n' +
+'</pre> \n' +
+' Furthermore, if the message is also an input to the activity, this can be \n' +
+' described as follows: \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'used(a1,e1,-) \n' +
+'</pre> \n' +
+' </div><div class="anexample"> \n' +
+' <p> \n' +
+' In the following example, a race is started by a bang, and \n' +
+' responsibility for this trigger is attributed to an agent <span class="name">ex:DarthVader</span>. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'activity(ex:foot_race) \n' +
+'wasStartedBy(ex:foot_race,ex:bang,2012-03-09T08:05:08-05:00) \n' +
+'entity(ex:bang) \n' +
+'agent(ex:Bob) \n' +
+'wasAttributedTo(ex:bang,ex:Bob) \n' +
+'</pre> \n' +
+' </div><div class="glossary-ref" /><div class="anexample"> \n' +
+' <p> \n' +
+' The following example is a description of an activity <span class="name">a1</span> \n' +
+' (editing) that was ended following an approval document <span class="name">e1</span>. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(e1,[prov:type="approval document"]) \n' +
+'activity(a1,[prov:type="Editing"]) \n' +
+'wasEndedBy(a1,e1) \n' +
+'</pre> \n' +
+' </div><div class="glossary-ref" /><div class="attributes" id="attributes-wasInformedBy"> \n' +
+' A <dfn title="wasInformedBy">communication</dfn><span class="withPn">, \n' +
+' written as <span class="pnExpression">wasInformedBy(id,a2,a1,attrs)</span> \n' +
+' in PROV-N,</span> has: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="wasInformedBy.id">id</span>: an OPTIONAL \n' +
+' identifier identifying the relation; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="wasInformedBy.informed">informed</span>: \n' +
+' the identifier (<span class="name">a2</span>) of the informed \n' +
+' activity; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="wasInformedBy.informant">informant</span>: \n' +
+' the identifier (<span class="name">a1</span>) of the informant \n' +
+' activity; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="wasInformedBy.attributes">attributes</span>: \n' +
+' an OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this communication. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="anexample"> \n' +
+' <p> \n' +
+' Consider two activities <span class="name">a1</span> and <span class="name">a2</span>, the former performed by a government agency, and \n' +
+' the latter by a driver caught speeding. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'activity(a1, [prov:type="traffic regulations enforcing"]) \n' +
+'activity(a2, [prov:type="fine paying; check writing; mailing"]) \n' +
+'wasInformedBy(a2,a1) \n' +
+'</pre> \n' +
+' The last line indicates that some implicit entity was generated by <span class="name">a1</span> and used by <span class="name">a2</span>; this \n' +
+' entity may be a traffic ticket that had a notice of fine, amount, and \n' +
+' payment mailing details. \n' +
+' </div><div class="glossary-ref" /><div class="attributes" id="attributes-startByActivity"> \n' +
+' A <dfn title="wasStartedByActivity">start by activity</dfn><span class="withPn">, written as <span class="pnExpression">wasStartedByActivity(id, \n' +
+' a2, a1, attrs)</span> in PROV-N,</span> has: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="startByActivity.id">id</span>: an OPTIONAL \n' +
+' identifier of the relation; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="startByActivity.started">started</span>: \n' +
+' the identifier (<span class="name">a2</span>) of the started activity; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="startByActivity.starter">starter</span>: \n' +
+' the identifier (<span class="name">a1</span>) of the activity that \n' +
+' started the other; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="startByActivity.attributes">attributes</span>: \n' +
+' an OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this start by \n' +
+' activity. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="anexample"> \n' +
+' <p> \n' +
+' Suppose activities <span class="name">a1</span> and <span class="name">a2</span> \n' +
+' are computer processes that are executed on different hosts, and that \n' +
+' <span class="name">a1</span> started <span class="name">a2</span>. This \n' +
+' can be expressed as in the following fragment: \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'activity(a1,t1,t2,[ex:host="server1.example.org",prov:type="workflow"]) \n' +
+'activity(a2,t3,t4,[ex:host="server2.example.org",prov:type="subworkflow"]) \n' +
+'wasStartedByActivity(a2,a1) \n' +
+'</pre> \n' +
+' It is assumed that the activities <span class="name">a1</span> and <span class="name">a2</span> are of type "workflow" and "subworkflow", \n' +
+' respectively; the latter was started by the former. \n' +
+' </div><div style="text-align: center;"> \n' +
+' <img src="images/Agents-Responsibility.png" alt="agents and responsibilities" /> Figure 6: Agents and Responsibilities \n' +
+' Component Overview \n' +
+' </div><div class="glossary-ref" /><div class="attributes" id="attributes-agent"> \n' +
+' An <dfn title="dfn-agent" id="dfn-agent">agent</dfn><span class="withPn">, \n' +
+' written <span class="pnExpression" id="pn-agent">agent(id, [attr1=val1, \n' +
+' ...])</span> in PROV-N,</span> has: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="agent.id">id</span>: an identifier for an \n' +
+' agent; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="agent.attributes">attributes</span>: a set \n' +
+' of attribute-value pairs ((<span class="name">attr1</span>, <span class="name">val1</span>), ...) representing additional information \n' +
+' about this agent. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="glossary-ref" /><div class="glossary-ref" /><div class="glossary-ref" /><div class="anexample"> \n' +
+' <p> \n' +
+' The following expression is about an agent identified by <span class="name">e1</span>, which is a person, named Alice, with employee \n' +
+' number 1234. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'agent(e1, [ex:employee="1234", ex:name="Alice", prov:type="prov:Person" %% xsd:QName]) \n' +
+'</pre> \n' +
+' <p> \n' +
+' It is optional to specify the type of an agent. When present, it is \n' +
+' expressed using the <span class="name">prov:type</span> attribute. \n' +
+' </p> \n' +
+' </div><div class="glossary-ref" /><div class="attributes" id="attributes-attribution"> \n' +
+' An <dfn title="wasAttributedTo">attribution</dfn> relation<span class="withPn">, written <span class="pnExpression">wasAttributedTo(id,e,ag,attrs)</span> \n' +
+' in PROV-N,</span> has: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="attribution.id">id</span>: an OPTIONAL \n' +
+' identifier for the relation; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="attribution.entity">entity</span>: an \n' +
+' entity identifier (<span class="name">e</span>); \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="attribution.agent">agent</span>: the \n' +
+' identifier (<span class="name">ag</span>) of the agent whom the entity \n' +
+' is ascribed to; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="attribution.attributes">attributes</span>: \n' +
+' an OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this attribution. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="anexample" id="anexample-attribution"> \n' +
+' <p> \n' +
+' Revisiting the example of <a href="#section-example-one">Section 3.1</a>, \n' +
+' we can ascribe <span class="name">tr:WD-prov-dm-20111215</span> to some \n' +
+' agents without an explicit activity. The reserved attribute <span class="name">role</span> (see <a href="#term-attribute-role">Section \n' +
+' 4.7.4.3</a>) allows for role of the agent in the attribution to be \n' +
+' specified. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'agent(ex:Paolo, [ prov:type="Person" ]) \n' +
+'agent(ex:Simon, [ prov:type="Person" ]) \n' +
+'entity(tr:WD-prov-dm-20111215, [ prov:type="process:RecsWD" %% xsd:QName ]) \n' +
+'wasAttributedTo(tr:WD-prov-dm-20111215, ex:Paolo, [prov:role="editor"]) \n' +
+'wasAttributedTo(tr:WD-prov-dm-20111215, ex:Simon, [prov:role="contributor"]) \n' +
+'</pre> \n' +
+' </div><div class="glossary-ref" /><div class="attributes" id="attributes-activity-association"> \n' +
+' An <dfn title="wasAssociatedWith">activity association</dfn><span class="withPn">, written <span class="pnExpression">wasAssociatedWith(id,a,ag,pl,attrs)</span> \n' +
+' in PROV-N,</span> has: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="association.id">id</span>: an OPTIONAL \n' +
+' identifier for the association between an activity and an agent; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="association.activity">activity</span>: an \n' +
+' identifier (<span class="name">a</span>) for the activity; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="association.agent">agent</span>: an \n' +
+' OPTIONAL identifier (<span class="name">ag</span>) for the agent \n' +
' associated with the activity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">plan</span>: an OPTIONAL identifier for the \n' +
-' plan adopted by the agent in the context of this activity; \n' +
+' <span class="attribute" id="association.plan">plan</span>: an OPTIONAL \n' +
+' identifier (<span class="name">pl</span>) for the plan adopted by the \n' +
+' agent in the context of this activity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">attributes</span>: an OPTIONAL set of \n' +
-' attribute-value pairs that describe the modalities of association of \n' +
+' <span class="attribute" id="association.attributes">attributes</span>: \n' +
+' an OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this association of \n' +
' this activity with this agent. \n' +
' </li> \n' +
' </ul> \n' +
-' </div><div class="anexample"> \n' +
-' In the following example, a designer and an operator agents are associated \n' +
-' with an activity. The designer\'s goals are achieved by a workflow <span class="name">ex:wf</span>. \n' +
+' </div><div class="anexample" id="anexample-wasAssociateWith"> \n' +
+' <p> \n' +
+' In the following example, a designer and an operator agents are \n' +
+' associated with an activity. The designer\'s goals are achieved by a \n' +
+' workflow <span class="name">ex:wf</span>, described as an an entity of \n' +
+' type <span class="name"><a>plan</a></span>. \n' +
+' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-'activity(ex:a,[prov:type="workflow execution"]) \n' +
-'agent(ex:ag1,[prov:type="operator"]) \n' +
-'agent(ex:ag2,[prov:type="designer"]) \n' +
-'wasAssociatedWith(ex:a,ex:ag1,[prov:role="loggedInUser", ex:how="webapp"]) \n' +
-'wasAssociatedWith(ex:a,ex:ag2,ex:wf,[prov:role="designer", ex:context="project1"]) \n' +
-'entity(ex:wf,[prov:type="prov:Plan"%% xsd:QName, ex:label="Workflow 1", \n' +
+'activity(ex:a, [prov:type="workflow execution"]) \n' +
+'agent(ex:ag1, [prov:type="operator"]) \n' +
+'agent(ex:ag2, [prov:type="designer"]) \n' +
+'wasAssociatedWith(ex:a, ex:ag1, -, [prov:role="loggedInUser", ex:how="webapp"]) \n' +
+'wasAssociatedWith(ex:a, ex:ag2, ex:wf,[prov:role="designer", ex:context="project1"]) \n' +
+'entity(ex:wf, [prov:type="prov:Plan" %% xsd:QName, ex:label="Workflow 1", \n' +
' ex:url="http://example.org/workflow1.bpel" %% xsd:anyURI]) \n' +
'</pre> \n' +
' Since the workflow <span class="name">ex:wf</span> is itself an entity, \n' +
' its provenance can also be expressed in PROV-DM: it can be generated by \n' +
' some activity and derived from other entities, for instance. \n' +
-' </div><div class="issue"> \n' +
-' The activity association record does not allow for a plan to be asserted \n' +
-' without an agent. This seems over-restrictive. Discussed in the context of \n' +
-' <a href="http://www.w3.org/2011/prov/track/issues/203">ISSUE-203</a>. \n' +
-' </div><div class="issue"> \n' +
-' Agents should not be inferred. WasAssociatedWith should also work with \n' +
-' entities. This is <a href="http://www.w3.org/2011/prov/track/issues/206">ISSUE-206</a>. \n' +
-' </div><div class="anexample"> \n' +
+' </div><div class="anexample" id="anexample-wasAssociateWith-2"> \n' +
' <p> \n' +
-' In the following example, \n' +
+' In some cases, one wants to indicate a plan was followed, without having \n' +
+' to specify which agent was involved. \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-'wasStartedBy(a,ag,[ex:mode="manual"]) \n' +
-'wasEndedby(a,ag,[ex:mode="manual"]) \n' +
+'activity(ex:a,[prov:type="workflow execution"]) \n' +
+'wasAssociatedWith(ex:a,-,ex:wf) \n' +
+'entity(ex:wf,[prov:type="prov:Plan"%% xsd:QName, ex:label="Workflow 1", \n' +
+' ex:url="http://example.org/workflow1.bpel" %% xsd:anyURI]) \n' +
'</pre> \n' +
-' <p> \n' +
-' there is an activity denoted by <span class="name">a</span> that was \n' +
-' started and ended by an agent denoted by <span class="name">ag</span>, \n' +
-' in "manual" mode, an application specific characterization of these \n' +
-' relations. \n' +
-' </p> \n' +
-' </div><div class="issue"> \n' +
-' Should we define start/end records as representation of activity start/end \n' +
-' events. Should time be associated with these events rather than with \n' +
-' activities. This will be similar to what we do for entities. This is issue \n' +
-' <a href="http://www.w3.org/2011/prov/track/issues/207">ISSUE-207</a>. \n' +
-' </div><div class="glossary-ref" /><div class="attributes" id="attributes-responsibility-chain"> \n' +
-' A <dfn title="dfn-responsibility-chain">responsibility chain</dfn><span class="withAsn">, written <span class="name">actedOnBehalfOf(id,ag2,ag1,a,attrs)</span> \n' +
-' in PROV-ASN,</span> has the following constituents: \n' +
+' In this case, it is assumed that an agent exists, but it has not been \n' +
+' specified. \n' +
+' </div><div class="glossary-ref" /><div class="attributes" id="attributes-responsibility"> \n' +
+' A <dfn title="actedOnBehalfOf">responsibility</dfn> link<span class="withPn">, written <span class="pnExpression">actedOnBehalfOf(id,ag2,ag1,a,attrs)</span> \n' +
+' in PROV-N,</span> has: \n' +
' <ul> \n' +
' <li> \n' +
-' <span class="attribute">id</span>: an OPTIONAL identifier identifying \n' +
-' the responsibility chain; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="attribute">subordinate</span>: an identifier for the \n' +
-' agent associated with an activity, acting on behalf of the responsible \n' +
-' agent; \n' +
+' <span class="attribute" id="responsibility.id">id</span>: an OPTIONAL \n' +
+' identifier for the responsibility link between subordinate and \n' +
+' responsible; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">responsible</span>: an identifier for the \n' +
-' agent, on behalf of which the subordinate agent acted; \n' +
+' <span class="attribute" id="responsibility.subordinate">subordinate</span>: \n' +
+' an identifier (<span class="name">ag2</span>) for the agent associated \n' +
+' with an activity, acting on behalf of the responsible agent; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">activity</span>: an OPTIONAL identifier of an \n' +
-' activity for which the responsibility chain holds; \n' +
+' <span class="attribute" id="responsibility.responsible">responsible</span>: \n' +
+' an identifier (<span class="name">ag1</span>) for the agent, on behalf \n' +
+' of which the subordinate agent acted; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">attributes</span>: an OPTIONAL set of \n' +
-' attribute-value pairs that describe the modalities of this relation. \n' +
+' <span class="attribute" id="responsibility.activity">activity</span>: \n' +
+' an OPTIONAL identifier (<span class="name">a</span>) of an activity \n' +
+' for which the responsibility link holds; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="responsibility.attributes">attributes</span>: \n' +
+' an OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this responsibility \n' +
+' link. \n' +
' </li> \n' +
' </ul> \n' +
' </div><div class="anexample"> \n' +
-' In the following example, a programmer, a researcher and a funder agents \n' +
-' are described. The programmer and researcher are associated with a \n' +
-' workflow activity. The programmer acts on behalf of the researcher \n' +
-' (delegation) encoding the commands specified by the researcher; the \n' +
-' researcher acts on behalf of the funder, who has an contractual agreement \n' +
-' with the researcher. The terms \'delegation\' and \'contact\' used in this \n' +
-' example are domain specific. \n' +
+' <p> \n' +
+' The following fragment describes three agents: a programmer, a \n' +
+' researcher, and a funder. The programmer and researcher are associated \n' +
+' with a workflow activity. The programmer acts on behalf of the \n' +
+' researcher (delegation) encoding the commands specified by the \n' +
+' researcher; the researcher acts on behalf of the funder, who has a \n' +
+' contractual agreement with the researcher. The terms \'delegation\' and \n' +
+' \'contact\' used in this example are domain specific. \n' +
+' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
'activity(a,[prov:type="workflow"]) \n' +
'agent(ag1,[prov:type="programmer"]) \n' +
@@ -499,158 +1158,514 @@
'agent(ag3,[prov:type="funder"]) \n' +
'wasAssociatedWith(a,ag1,[prov:role="loggedInUser"]) \n' +
'wasAssociatedWith(a,ag2) \n' +
+'wasAssociatedWith(a,ag3) \n' +
'actedOnBehalfOf(ag1,ag2,a,[prov:type="delegation"]) \n' +
'actedOnBehalfOf(ag2,ag3,a,[prov:type="contract"]) \n' +
'</pre> \n' +
-' </div><div class="glossary-ref" /><div class="note"> \n' +
-' This text was not edited much. It keeps on referring to \n' +
-' asserter/assertion. Before editing this section, we would like to have <a href="http://www.w3.org/2011/prov/track/issues/249">ISSUE-249</a> \n' +
-' resolved. \n' +
-' </div><div class="attributes" id="attributes-derivation"> \n' +
-' A <dfn>precise-1 derivation</dfn><span class="withAsn">, written <span class="name">wasDerivedFrom(id, e2, e1, a, g2, u1, attrs)</span> in \n' +
-' PROV-ASN,</span> contains: \n' +
+' </div><div style="text-align: center;"> \n' +
+' <img src="images/Derivation.png" alt="derivation" /> Figure 7: Derivation \n' +
+' Component Overview \n' +
+' </div><div class="glossary-ref" /><div class="attributes" id="attributes-derivation"> \n' +
+' A <dfn title="wasDerivedFrom">derivation</dfn><span class="withPn">, \n' +
+' written <span class="pnExpression" id="pn-wasDerivedFrom">wasDerivedFrom(id, \n' +
+' e2, e1, a, g2, u1, attrs)</span> in PROV-N,</span> has: \n' +
' <ul> \n' +
' <li> \n' +
-' <span class="attribute">id</span>: an OPTIONAL identifier identifying \n' +
+' <span class="attribute" id="derivation.id">id</span>: an OPTIONAL \n' +
+' identifier for a derivation; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="derivation.generatedEntity">generatedEntity</span>: \n' +
+' the identifier (<span class="name">ee</span>) of the entity generated \n' +
+' by the derivation; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="derivation.usedEntity">usedEntity</span>: \n' +
+' the identifier (<span class="name">e1</span>) of the entity used by \n' +
' the derivation; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">generatedEntity</span>: the identifier of the \n' +
-' generation entity; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="attribute">usedEntity</span>: the identifier of the used \n' +
-' entity; \n' +
+' <span class="attribute" id="derivation.activity">activity</span>: an \n' +
+' OPTIONAL identifier (<span class="name">a</span>) for the activity \n' +
+' using and generating the above entities; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">activity</span>: the identifier of the \n' +
-' activity using and generating the above entities; \n' +
+' <span class="attribute" id="derivation.generation">generation</span>: \n' +
+' an OPTIONAL identifier (<span class="name">g2</span>) for the \n' +
+' generation involving the generated entity and activity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">generation</span>: the identifier the \n' +
-' generation for the generated entity and activity; \n' +
+' <span class="attribute" id="derivation.usage">usage</span>: an \n' +
+' OPTIONAL identifier (<span class="name">u1</span>) for the usage \n' +
+' involving the used entity and activity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">usage</span>: the identifier of the usage for \n' +
-' the used entity and activity; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="attribute">attributes</span>: an OPTIONAL set of \n' +
-' attribute-value pairs that describe the modalities of this derivation, \n' +
-' optionally including the attribute-value pair <span class="name">prov:steps="single"</span>. \n' +
+' <span class="attribute" id="derivation.attributes">attributes</span>: \n' +
+' an OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this derivation. \n' +
' </li> \n' +
' </ul> \n' +
' </div><div class="anexample"> \n' +
' <p> \n' +
-' The following descriptions state the existence of derivations. \n' +
+' The following descriptions are about derivations between <span class="name">e2</span> and <span class="name">e1</span>, but no \n' +
+' information is provided as to the identity of the activity (and usage \n' +
+' and generation) underpinning the derivation. In the second line, a type \n' +
+' attribute is also provided. \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-'wasDerivedFrom(e5,e3,a4,g2,u2) \n' +
-'wasDerivedFrom(e5,e3,a4,g2,u2,[prov:steps="single"]) \n' +
-' \n' +
-'wasDerivedFrom(e3,e2,[prov:steps="single"]) \n' +
-' \n' +
-'wasDerivedFrom(e2,e1,[]) \n' +
-'wasDerivedFrom(e2,e1,[prov:steps="any"]) \n' +
-' \n' +
-'wasDerivedFrom(e2,e1,2012-01-18T16:00:00, [prov:steps="any"]) \n' +
+'wasDerivedFrom(e2, e1) \n' +
+'wasDerivedFrom(e2, e1, [prov:type="physical transform"]) \n' +
'</pre> \n' +
' <p> \n' +
-' The first two are precise-1 derivations expressing that the activity \n' +
-' identified by <span class="name">a4</span>, by using the entity denoted \n' +
-' by <span class="name">e3</span> according to usage <span class="name">u2</span> \n' +
-' derived the entity denoted by <span class="name">e5</span> and generated \n' +
-' it according to generation <span class="name">g2</span>. \n' +
+' The following description expresses that activity <span class="name">a</span>, \n' +
+' using the entity <span class="name">e1</span> according to usage <span class="name">u1</span>, derived the entity <span class="name">e2</span> \n' +
+' and generated it according to generation <span class="name">g2</span>. \n' +
+' It is followed by descriptions for generation <span class="name">g2</span> \n' +
+' and usage <span class="name">u1</span>. \n' +
' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'wasDerivedFrom(e2, e1, a, g2, u1) \n' +
+'wasGeneratedBy(g2, e2, a, -) \n' +
+'used(u1, a, e1, -) \n' +
+'</pre> \n' +
' <p> \n' +
-' The third line describes an imprecise-1 derivation, which is similar for \n' +
-' <span class="name">e3</span> and <span class="name">e2</span>, but it \n' +
-' leaves the activity and associated attributes implicit. The fourth and \n' +
-' fifth lines are about imprecise-n derivations between <span class="name">e2</span> \n' +
-' and <span class="name">e1</span>, but no information is provided as to \n' +
-' the number and identity of activities underpinning the derivation. The \n' +
-' sixth derivation extends the fifth with the derivation time of <span class="name">e2</span>. \n' +
+' With such a comprehensive description of derivation, a program that \n' +
+' analyzes provenance can identify the activity underpinning the \n' +
+' derivation, it can identify how the original entity <span class="name">e1</span> \n' +
+' was used by the activity (e.g. for instance, which argument it was \n' +
+' passed as, if the activity is the result of a function invocation), and \n' +
+' which output the derived entity <span class="name">e2</span> was \n' +
+' obtained from (say, for a function returning multiple results). \n' +
' </p> \n' +
-' </div><div class="issue"> \n' +
-' Several points were raised about the attribute steps. Its name, its \n' +
-' default value <a href="http://www.w3.org/2011/prov/track/issues/180">ISSUE-180</a>. \n' +
-' <a href="http://www.w3.org/2011/prov/track/issues/179">ISSUE-179</a>. \n' +
-' </div><div class="issue"> \n' +
-' Emphasize the notion of \'affected by\' <a href="http://www.w3.org/2011/prov/track/issues/133">ISSUE-133</a>. \n' +
-' </div><div class="issue"> \n' +
-' Is imprecise-1 derivation necessary? Can we just use precise-1 and \n' +
-' imprecise-n? <a href="http://www.w3.org/2011/prov/track/issues/249">ISSUE-249</a>. \n' +
-' </div><div class="attributes" id="attributes-alternate"> \n' +
-' An <dfn title="dfn-Alternate">alternate relation</dfn><span class="withAsn">, \n' +
-' written <span class="name">alternateOf(id, alt1, alt2, attrs)</span> in \n' +
-' PROV-ASN,</span> addresses case (1). It has the following constituents: \n' +
+' </div><div class="anexample" id="anexample-revision"> \n' +
+' <p> \n' +
+' Revisiting the example of <a href="#section-example-two">Section 3.2</a>, \n' +
+' we can now state that the report <span class="name">tr:WD-prov-dm-20111215</span> \n' +
+' is a revision of the report <span class="name">tr:WD-prov-dm-20111018</span>, \n' +
+' approved by agent <span class="name">w3:Consortium</span>. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(tr:WD-prov-dm-20111215, [ prov:type="process:RecsWD" %% xsd:QName ]) \n' +
+'entity(tr:WD-prov-dm-20111018, [ prov:type="process:RecsWD" %% xsd:QName ]) \n' +
+'wasRevisionOf(tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018, w3:Consortium) \n' +
+'</pre> \n' +
+' </div><div class="anexample" id="anexample-quotation"> \n' +
+' <p> \n' +
+' 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 \n' +
+' author\'s blogs</a>. \n' +
+' </p> \n' +
+' <blockquote id="bl-dagstuhl" /> \n' +
+' <em> "During the workshop, it became clear to me that the consensus based \n' +
+' models (which are often graphical in nature) can not only be formalized \n' +
+' but also be directly connected to these database focused formalizations. I \n' +
+' just needed to get over the differences in syntax. This could imply that \n' +
+' we could have nice way to trace provenance across systems and through \n' +
+' databases and be able to understand the mathematical properties of this \n' +
+' interconnection."</em> \n' +
+' <p> \n' +
+' If <a href="http://thinklinks.wordpress.com/2012/03/07/thoughts-from-the-dagstuhl-principles-of-provenance-workshop/"><span class="name">wp:thoughts-from-the-dagstuhl-principles-of-provenance-workshop/</span></a> \n' +
+' denotes the original blog by agent <span class="name">ex:Paul</span>, \n' +
+' and <a href="#bl-dagstuhl"><span class="name">dm:bl-dagstuhl</span></a> \n' +
+' denotes the above paragraph, then the following descriptions express \n' +
+' that the above paragraph is copied by agent <span class="name">ex:Luc</span> \n' +
+' from a part of the blog, attributed to the agent <span class="name">ex:Paul</span>. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(wp:thoughts-from-the-dagstuhl-principles-of-provenance-workshop/) \n' +
+'agent(ex:Luc) \n' +
+'agent(ex:Paul) \n' +
+'wasQuotedFrom(dm:bl-dagstuhl,wp:thoughts-from-the-dagstuhl-principles-of-provenance-workshop/,ex:Luc,ex:Paul) \n' +
+'</pre> \n' +
+' </div><div class="anexample"> \n' +
+' <p> \n' +
+' Let us consider the concept introduced in the current section, \n' +
+' identified as <a href="#concept-original-source"><span class="name">dm:concept-original-source</span></a>, \n' +
+' 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 \n' +
+' notion original-source was originally described (to the knowledge of the \n' +
+' authors). \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(dm:concept-original-source) \n' +
+'entity(go:credit-where-credit-is-due.html) \n' +
+'hadOriginalSource(dm:concept-original-source,go:credit-where-credit-is-due.html) \n' +
+'</pre> \n' +
+' </div><div class="anexample"> \n' +
+' <p> \n' +
+' We refer to the example of <a href="#section-example-two">Section 3.1</a>, \n' +
+' and specifically to <a href="#prov-a-document">Figure 2</a>. We can see \n' +
+' that there is a path from <span class="name">tr:WD-prov-dm-20111215</span> \n' +
+' to <span class="name">w3:Consortium</span> and to <span class="name">process:rec-advance</span>. \n' +
+' This is expressed as follows. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+' tracedTo(tr:WD-prov-dm-20111215,w3:Consortium) \n' +
+' tracedTo(tr:WD-prov-dm-20111215,process:rec-advance) \n' +
+'</pre> \n' +
+' </div><div style="text-align: center;"> \n' +
+' <img src="images/Alternates.png" alt="alternates" /> Figure 8: Alternates \n' +
+' Component Overview \n' +
+' </div><div class="anexample" id="entity-example1"> \n' +
+' <p> \n' +
+' User Alice writes an article. In its provenance, she wishes to refer to \n' +
+' the precise version of the article with a date-specific URI, as she \n' +
+' might edit the article later. Alternatively, user Bob refers to the \n' +
+' article in general, indepedently of its variants over time. \n' +
+' </p> \n' +
+' </div><div class="attributes" id="attributes-specialization"> \n' +
+' A <dfn title="specializationOf">specialization</dfn> relation<span class="withPn">, written <span class="pnExpression">specializationOf(sub, \n' +
+' super)</span> in PROV-N,</span> has: \n' +
' <ul> \n' +
' <li> \n' +
-' <span class="attribute">id</span>: an OPTIONAL identifier for the \n' +
-' association between the two alternates; \n' +
+' <span class="attribute" id="specialization.specializedEntity">specializedEntity</span>: \n' +
+' an identifier (<span class="name">sub</span>) of the specialized \n' +
+' entity; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">firstAlternate</span>: an identifier of the \n' +
-' first of the two entities; \n' +
+' <span class="attribute" id="specialization.generalEntity">generalEntity</span>: \n' +
+' an identifier (<span class="name">super</span>) of the entity that is \n' +
+' being specialized. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="anexample" id="anexample-specialization"> \n' +
+' <p> \n' +
+' The BBC news home page on 2012-03-23 <span class="name">ex:bbcNews2012-03-23</span> \n' +
+' is a specialization of the BBC news page in general <a href="http://www.bbc.co.uk/news/">bbc:news/</a>. This can be expressed \n' +
+' as follows. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'specializationOf(ex:bbcNews2012-03-23, bbc:news/) \n' +
+'</pre> \n' +
+' Given that the BBC news does not define a URI for this day\'s news page, we \n' +
+' are creating a qualified name in the namespace <span class="name">ex</span>. \n' +
+' </div><div class="attributes" id="attributes-alternate"> \n' +
+' An <dfn title="alternateOf">alternate</dfn> relation<span class="withPn">, \n' +
+' written <span class="pnExpression">alternateOf(e1, e2)</span> in PROV-N,</span> \n' +
+' has: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="alternate.alternate1">alternate1</span>: \n' +
+' an identifier (<span class="name">e1</span>) of the first of the two \n' +
+' entities; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">secondAlternate</span>: an identifier of the \n' +
-' second of the two entities; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="attribute">attributes</span>: an OPTIONAL set of \n' +
-' attribute-value pairs to further describe this relation. \n' +
+' <span class="attribute" id="alternate.alternate2">alternate2</span>: \n' +
+' an identifier (<span class="name">e2</span>) of the second of the two \n' +
+' entities. \n' +
' </li> \n' +
' </ul> \n' +
' </div><div class="anexample" id="anexample-alternate"> \n' +
' <p> \n' +
-' The following expressions describe two persons, respectively holder of a \n' +
-' Facebook account and a Twitter account, and their relation as alternate. \n' +
+' A given news item on the BBC News site <a href="http://www.bbc.co.uk/news/science-environment-17526723">bbc:news/science-environment-17526723</a> \n' +
+' for desktop is an alternate of a <a href="http://www.bbc.co.uk/news/mobile/science-environment-17526723">bbc:news/mobile/science-environment-17526723</a> \n' +
+' for mobile devices. \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-'entity(facebook:ABC, [ prov:type="person with Facebook account " ]) \n' +
-'entity(twitter:XYZ, [ prov:type="person with Twitter account" ]) \n' +
-'alternateOf(facebook:ABC, twitter:XYZ) \n' +
+'entity(bbc:news/science-environment-17526723, [ prov:type="a news item for desktop"]) \n' +
+'entity(bbc:news/mobile/science-environment-17526723, [ prov:type="a news item for mobile devices"]) \n' +
+'alternateOf(bbc:news/science-environment-17526723, bbc:news/mobile/science-environment-17526723) \n' +
'</pre> \n' +
-' </div><div class="attributes" id="attributes-specialization"> \n' +
-' A <dfn title="dfn-Specialization">specialization relation</dfn><span class="withAsn">, written <span class="name">specializationOf(id, sub, \n' +
-' super, attrs)</span> in PROV-ASN,</span> addresses case (2). It has the \n' +
-' following constituents: \n' +
+' <p> \n' +
+' They are both specialization of an (unspecified) entity. \n' +
+' </p> \n' +
+' </div><div class="anexample" id="anexample-alternate2"> \n' +
+' <p> \n' +
+' Considering again the two versions of the technical report <span class="name"><a href="http://www.w3.org/TR/2011/WD-prov-dm-20111215">tr:WD-prov-dm-20111215</a></span> \n' +
+' (second working draft) and <span class="name"><span class="name"><a href="http://www.w3.org/TR/2011/WD-prov-dm-20111018">tr:WD-prov-dm-20111018</a></span></span> \n' +
+' (first working draft). They are alternate of each other. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(tr:WD-prov-dm-20111018) \n' +
+'entity(tr:WD-prov-dm-20111215) \n' +
+'alternateOf(tr:WD-prov-dm-20111018,tr:WD-prov-dm-20111215) \n' +
+'</pre> \n' +
+' <p> \n' +
+' They are both specialization of the page <a href="http://www.w3.org/TR/prov-dm/">http://www.w3.org/TR/prov-dm/</a>. \n' +
+' </p> \n' +
+' </div><div style="text-align: center;"> \n' +
+' <img src="images/Collections.png" alt="collections" /> Figure 9: \n' +
+' Collections Component Overview \n' +
+' </div><div class="anexample"> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(c0, [prov:type="prov:EmptyCollection" %% xsd:QName]) // c0 is an empty collection \n' +
+'entity(c1, [prov:type="prov:Collection" %% xsd:QName]) // c1 is a collection, with unknown content \n' +
+'</pre> \n' +
+' </div><div class="attributes" id="attributes-derivedByInsertionFrom"> \n' +
+' <p> \n' +
+' An <dfn title="derivedByInsertionFrom">Insertion</dfn> relation<span class="withPn">, written <span class="pnExpression">derivedByInsertionFrom(id, \n' +
+' c2, c1, {(key_1, e_1), ..., (key_n, e_n)}, attrs)</span>,</span> has: \n' +
+' </p> \n' +
' <ul> \n' +
' <li> \n' +
-' <span class="attribute">id</span>: an OPTIONAL identifier for the \n' +
-' association between the two entities; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="attribute">specializedEntity</span>: an identifier of the \n' +
-' specialized entity; \n' +
+' <span class="attribute" id="derivedByInsertionFrom.id">id</span>: an \n' +
+' OPTIONAL identifier identifying the relation; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">generalEntity</span>: an identifier of the \n' +
-' entity that is being specialized; \n' +
+' <span class="attribute" id="derivedByInsertionFrom.after">after</span>: \n' +
+' an identifier (<span class="name">c2</span>) for the collection <em>after</em> \n' +
+' insertion; \n' +
' </li> \n' +
' <li> \n' +
-' <span class="attribute">attributes</span>: an OPTIONAL set of \n' +
-' attribute-value pairs to further describe this relation. \n' +
+' <span class="attribute" id="derivedByInsertionFrom.before">before</span>: \n' +
+' an identifier (<span class="name">c1</span>) for the collection <em>before</em> \n' +
+' insertion; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="derivedByInsertionFrom.key-entity-set">key-entity-set</span>: \n' +
+' the inserted key-entity pairs <span class="name">(key_1, e_1)</span>, \n' +
+' ..., <span class="name">(key_n, e_n)</span> in which each <span class="name">key_i</span> is a <a>value</a>, and <span class="name">e_i</span> \n' +
+' is an identifier for the entity that has been inserted with the key; \n' +
+' each <span class="name">key_i</span> is expected to be unique for the \n' +
+' key-entity-set; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="derivedByInsertionFrom.attributes">attributes</span>: \n' +
+' an OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this relation. \n' +
' </li> \n' +
' </ul> \n' +
-' </div><div class="anexample" id="anexample-specialization"> \n' +
+' </div><div class="anexample"> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(c0, [prov:type="prov:EmptyCollection" %% xsd:QName]) // c0 is an empty collection \n' +
+'entity(e1) \n' +
+'entity(e2) \n' +
+'entity(e3) \n' +
+'entity(c1, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+'entity(c2, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+' \n' +
+'derivedByInsertionFrom(c1, c0, {("k1", e1), ("k2", e2)}) \n' +
+'derivedByInsertionFrom(c2, c1, {("k3", e3)}) \n' +
+'</pre> \n' +
+' From this set of descriptions, we conclude: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="name">c0</span> is the set <span class="name">{ }</span> \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c1</span> is the set <span class="name">{ ("k1", \n' +
+' e1), ("k2", e2) }</span> \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c2</span> is the set <span class="name">{ ("k1", \n' +
+' e1), ("k2", e2), ("k3", e3) }</span> \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="anexample"> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(c0, [prov:type="prov:EmptyCollection" %% xsd:QName]) // c0 is an empty collection \n' +
+'entity(e1) \n' +
+'entity(e2) \n' +
+'entity(e3) \n' +
+'entity(c1, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+'entity(c2, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+' \n' +
+'derivedByInsertionFrom(c1, c0, {("k1", e1), ("k2", e2)}) \n' +
+'derivedByInsertionFrom(c2, c1, {("k1", e3)}) \n' +
+'</pre> \n' +
+' This is a case of <em>update</em> of <span class="name">e1</span> to <span class="name">e3</span> for the same key, <span class="name">"k1"</span>. \n' +
+' <br /> From this set of descriptions, we conclude: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="name">c0</span> is the set <span class="name">{ }</span> \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c1</span> is the set <span class="name">{ ("k1", \n' +
+' e1), ("k2", e2) }</span> \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c2</span> is the set <span class="name">{ ("k1", \n' +
+' e3), ("k2", e2) }</span> \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="attributes" id="attributes-derivedByRemovalFrom"> \n' +
' <p> \n' +
-' The following expressions describe two persons, the second of which is \n' +
-' holder of a Twitter account. The second entity is a specialization of \n' +
-' the first. \n' +
+' A <dfn title="derivedByRemovalFrom">Removal</dfn> relation, written \n' +
+' <span class="pnExpression">derivedByRemovalFrom(id, c2, c1, {key_1, ... \n' +
+' key_n}, attrs)</span>, has: \n' +
+' </p> \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="derivedByRemovalFrom.id">id</span>: an \n' +
+' OPTIONAL identifier identifying the relation; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="derivedByRemovalFrom.after">after</span>: \n' +
+' an identifier (<span class="name">c2</span>) for the collection <em>after</em> \n' +
+' the deletion; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="derivedByRemovalFrom.before">before</span>: \n' +
+' an identifier (<span class="name">c1</span>) for the collection <em>before</em> \n' +
+' the deletion; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="derivedByRemovalFrom.key-set">key-set</span>: \n' +
+' a set of deleted keys <span class="name">key_1</span>, ..., <span class="name">key_n</span>, for which each <span class="name">key_i</span> \n' +
+' is a <a>value</a>; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="derivedByRemovalFrom.attributes">attributes</span>: \n' +
+' an OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this relation. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="anexample"> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(c0, [prov:type="prov:EmptyCollection"]) // c0 is an empty collection \n' +
+'entity(e1) \n' +
+'entity(e2) \n' +
+'entity(e3) \n' +
+'entity(c1, [prov:type="prov:Collection"]) \n' +
+'entity(c2, [prov:type="prov:Collection"]) \n' +
+' \n' +
+'derivedByInsertionFrom(c1, c0, {("k1", e1), ("k2",e2)}) \n' +
+'derivedByInsertionFrom(c2, c1, {("k3", e3)}) \n' +
+'derivedByRemovalFrom(c3, c2, {"k1", "k3"}) \n' +
+'</pre> \n' +
+' From this set of descriptions, we conclude: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="name">c0</span> is the set <span class="name">{ }</span> \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c1</span> is the set <span class="name">{ ("k1", \n' +
+' e1), ("k2", e2) }</span> \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c2</span> is the set <span class="name">{ ("k1", \n' +
+' e1), ("k2", e2), ("k3", e3) }</span> \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c3</span> is the set <span class="name">{ ("k2", \n' +
+' e2) }</span> \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="attributes" id="attributes-memberOf"> \n' +
+' A <dfn title="memberOf">membership</dfn> relation, written <span class="pnExpression">memberOf(id, c, {(key_1, e_1), ..., (key_n, e_n)}, \n' +
+' attrs)</span>, has: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="memberOf.id">id</span>: an OPTIONAL \n' +
+' identifier identifying the relation; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="memberOf.after">after</span>: an \n' +
+' identifier (<span class="name">c</span>) for the collection whose \n' +
+' members are asserted; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="memberOf.key-entity-set">key-entity-set</span>: \n' +
+' a set of key-entity pairs <span class="name">(key_1, e_1)</span>, ..., \n' +
+' <span class="name">(key_n, e_n)</span> that are members of the \n' +
+' collection; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="memberOf.complete">complete</span>: an \n' +
+' OPTIONAL boolean <a title="value">Value</a>; if true, it indicates \n' +
+' that no other member belongs to the collection; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="memberOf.attributes">attributes</span>: an \n' +
+' OPTIONAL set (<span class="name">attrs</span>) of attribute-value \n' +
+' pairs representing additional information about this relation. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="anexample"> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(c1, [prov:type="prov:Collection" %% xsd:QName]) // c1 is a collection, with unknown content \n' +
+'entity(c2, [prov:type="prov:Collection" %% xsd:QName]) // c2 is a collection, with unknown content \n' +
+' \n' +
+'entity(e1) \n' +
+'entity(e2) \n' +
+' \n' +
+'memberOf(c1, {("k1", e1), ("k2", e2)} ) \n' +
+'memberOf(c2, {("k1", e1), ("k2", e2)}, true) \n' +
+' \n' +
+'entity(e3) \n' +
+'entity(c3, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+' \n' +
+'derivedByInsertionFrom(c3, c1, {("k3", e3)}) \n' +
+'</pre> \n' +
+' From these descriptions, we conclude: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="name">c1</span> has the following pairs as members: <span class="name">("k1", e1), ("k2", e2)</span>, and may contain others. \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c2</span> exactly has the following pairs as \n' +
+' members: <span class="name">("k1", e1), ("k2", e2)</span>, and does \n' +
+' not contain any other. \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c3</span> has the following pairs as members: <span class="name">("k1", e1), ("k2", e2), ("k3", v3)</span>, and may \n' +
+' contain others. \n' +
+' </li> \n' +
+' </ul> \n' +
+' <p> \n' +
+' Thus, the states of <span class="name">c1</span> and <span class="name">c3</span> \n' +
+' are only partially known. \n' +
+' </p> \n' +
+' </div><div class="attributes" id="attributes-note"> \n' +
+' A <dfn title="dfn-note" id="dfn-note">note</dfn><span class="withPn">, \n' +
+' written <span class="pnExpression">note(id, [attr1=val1, ...])</span> in \n' +
+' PROV-N,</span> has: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="note.id">id</span>: an identifier for a \n' +
+' note; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="note.attributes">attributes</span>: a set \n' +
+' of attribute-value pairs ((<span class="name">attr1</span>, <span class="name">val1</span>), ...) representing application-specific \n' +
+' information. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><div class="anexample" id="anexample-note1"> \n' +
+' <p> \n' +
+' The following note consists of a set of application-specific \n' +
+' attribute-value pairs, intended to help the rendering of the \n' +
+' pre-existing entity it is associated with, by specifying its color and \n' +
+' its position on the screen. \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-'entity(ex:Bob, [ prov:type="person", ex:name="Bob" ]) \n' +
-'entity(twitter:XYZ, [ prov:type="person with Twitter account" ]) \n' +
-'specializationOf(twitter:XYZ, ex:Bob) \n' +
+'note(ex:n1,[ex:color="blue", ex:screenX=20, ex:screenY=30]) \n' +
+'hasAnnotation(tr:WD-prov-dm-20111215,ex:n1) \n' +
'</pre> \n' +
-' </div><div class="issue"> \n' +
-' A discussion on alternative definition of these relations has not yet \n' +
-' reached a satisfactory conclusion. This is <a href="http://www.w3.org/2011/prov/track/issues/29">ISSUE-29</a>. Also <a href="http://www.w3.org/2011/prov/track/issues/96">ISSUE-96</a>. \n' +
-' </div><div class="glossary" id="glossary-annotation"> \n' +
-' An <dfn title="concept-annotation">annotation</dfn> is a link between \n' +
-' something that is identifiable and a note referred to by its identifier. \n' +
+' <p> \n' +
+' The note is linked to the entity <span class="name">tr:WD-prov-dm-20111215</span>, \n' +
+' with relation <a title="annotation">hasAnnotation</a> discussed in <a href="#term-annotation">Section 4.6.2</a>. The note\'s identifier and \n' +
+' attributes are declared in the namespace denoted by prefix <span class="name">ex</span> to illustrate that the rendering application may \n' +
+' differ from the application involving entity <span class="name">tr:WD-prov-dm-20111215</span>. \n' +
+' </p> \n' +
+' </div><div class="anexample" id="anexample-note2"> \n' +
+' <p> \n' +
+' Alternatively, a reputation service may enrich an existing provenance \n' +
+' record with notes providing reputation ratings about agents. In the \n' +
+' following fragment, both agents <span class="name">ex2:Simon</span> and \n' +
+' <span class="name">ex2:Paolo</span> are rated "excellent". \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'note(ex3:n2,[ex3:reputation="excellent"]) \n' +
+'hasAnnotation(ex2:Simon,ex3:n2) \n' +
+'hasAnnotation(ex2:Paolo,ex3:n2) \n' +
+'</pre> \n' +
+' <p> \n' +
+' The note\'s identifier and attributes are declared in a separate \n' +
+' namespace denoted by prefix <span class="name">ex3</span>. \n' +
+' </p> \n' +
+' </div><div class="attributes" id="attributes-annotation"> \n' +
+' An <dfn title="hasAnnotation">annotation relation</dfn><span class="withPn">, \n' +
+' written <span class="pnExpression">hasAnnotation(r,n)</span> in PROV-N,</span> \n' +
+' has: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="attribute" id="annotation.id">something</span>: the \n' +
+' identifier (<span class="name">r</span>) of something being annotated; \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="attribute" id="annotation.note">note</span>: an \n' +
+' identifier (<span class="name">n</span>) of a note. \n' +
+' </li> \n' +
+' </ul> \n' +
' </div><div class="anexample"> \n' +
' <p> \n' +
' The following expressions \n' +
@@ -683,47 +1698,56 @@
' </p> \n' +
' </div><div class="anexample"> \n' +
' <p> \n' +
-' The following activity start describes the role of the agent identified \n' +
-' by <span class="name">ag</span> in this start relation with activity \n' +
-' <span class="name">a</span>. \n' +
-' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-' wasStartedBy(a,ag, [prov:role="program-operator"]) \n' +
-'</pre> \n' +
-' </div><div class="anexample"> \n' +
-' <p> \n' +
-' The following describes an agent of type software agent. \n' +
+' The following entity is provided with a label attribute. \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-' agent(ag, [prov:type="prov:ComputingSystem" %% xsd:QName]) \n' +
+' entity(ex:e1, [prov:label="This is a label"]) \n' +
'</pre> \n' +
' </div><div class="anexample"> \n' +
' <p> \n' +
-' The following expression declares an imprecise-1 derivation, which is \n' +
-' known to involve one activity, though its identity, usage details of \n' +
-' <span class="name">ex:e1</span>, and generation details of <span class="name">ex:e2</span> are not explicit. \n' +
-' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-' wasDerivedFrom(ex:e2, ex:e1, [prov:steps="single"]) \n' +
-'</pre> \n' +
-' </div><div class="issue"> \n' +
-' This is <a href="http://www.w3.org/2011/prov/track/issues/219">ISSUE-219</a>. \n' +
-' </div><div class="anexample"> \n' +
-' <p> \n' +
' The following expression describes entity Mona Lisa, a painting, with a \n' +
' location attribute. \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
' entity(ex:MonaLisa, [prov:location="Le Louvres, Paris", prov:type="StillImage"]) \n' +
'</pre> \n' +
-' </div><div class="note"> \n' +
-' Usually, in programming languages, Literal are a notation for values. So, \n' +
-' Literals should probably be moved to the serialization. Here, instead, we \n' +
-' should define the types of values. Thoughts? \n' +
' </div><div class="anexample"> \n' +
' <p> \n' +
-' The following examples respectively are the string "abc", the string \n' +
-' "abc", the integer number 1, and the IRI "http://example.org/foo". \n' +
+' The following activity is associated with an agent acting as the \n' +
+' operator. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+' wasAssociatedWith(a, ag, [prov:role="operator"]) \n' +
+'</pre> \n' +
+' </div><div class="anexample"> \n' +
+' <p> \n' +
+' The following describes an agent of type software agent. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+' agent(ag, [prov:type="prov:SoftwareAgent" %% xsd:QName]) \n' +
+'</pre> \n' +
+' </div><div class="anexample"> \n' +
+' <p> \n' +
+' The following example illustrates the provenance of the number <span class="name">4</span> obtained by an activity that computed the length \n' +
+' of an input string <span class="name">"abcd"</span>. The input and the \n' +
+' output are expressed as entities <span class="name">ex:in</span> and \n' +
+' <span class="name">ex:out</span>, respectively. They each have a <span class="name">prov:value</span> attribute associated with the \n' +
+' corresponding value. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(ex:in, [prov:value="abcd"]) \n' +
+'entity(ex:out, [prov:value=4]) \n' +
+'activity(ex:len, [prov:type="string-length"]) \n' +
+'used(ex:len,ex:in) \n' +
+'wasGeneratedBy(ex:out,ex:len) \n' +
+'wasDerivedFrom(ex:out,ex:in) \n' +
+'</pre> \n' +
+' </div><div class="note"> \n' +
+' Should we also have prov:encoding? \n' +
+' </div><div class="anexample" id="anexample-value"> \n' +
+' <p> \n' +
+' The following examples respectively are the string "abc", the integer \n' +
+' number 1, and the IRI "http://example.org/foo". \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
' "abc" \n' +
@@ -731,149 +1755,45 @@
' "http://example.org/foo" %% xsd:anyURI \n' +
'</pre> \n' +
' <p> \n' +
-' The following example shows a literal of type <span class="name">xsd:QName</span> \n' +
+' The following example shows a value of type <span class="name">xsd:QName</span> \n' +
' (see <a href="http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/#QName">QName</a> \n' +
' [[!XMLSCHEMA-2]]). The prefix <span class="name">ex</span> MUST be bound \n' +
' to a <a>namespace</a> declared in a <a>namespace declaration</a>. \n' +
' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
' "ex:value" %% xsd:QName \n' +
'</pre> \n' +
-' </div><div class="note"> \n' +
-' It\'s a legacy of the charter that time is a top level section. Time is a \n' +
-' specific kind of value, and should be folded into the "value" section. \n' +
-' </div><div class="anexample"> \n' +
-' <p> \n' +
-' Revisiting the example of <a href="#section-example-a">Section 3.1</a>, \n' +
-' we can now state that the report <span class="name">tr:WD-prov-dm-20111215</span> \n' +
-' is a revision of the report <span class="name">tr:WD-prov-dm-20111018</span>, \n' +
-' approved by agent <span class="name">w3:Consortium</span>. \n' +
-' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-'entity(tr:WD-prov-dm-20111215, [ prov:type="pr:RecsWD" %% xsd:QName ]) \n' +
-'entity(tr:WD-prov-dm-20111018, [ prov:type="pr:RecsWD" %% xsd:QName ]) \n' +
-'wasRevisionOf(tr:WD-prov-dm-20111215, tr:WD-prov-dm-20111018, w3:Consortium) \n' +
-'</pre> \n' +
-' </div><div class="anexample"> \n' +
-' <p> \n' +
-' Revisiting the example of <a href="#section-example-b">Section 3.2</a>, \n' +
-' we can ascribe <span class="name">tr:WD-prov-dm-20111215</span> to some \n' +
-' agents without having to make an activity explicit. \n' +
-' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-'agent(ex:Paolo, [ prov:type="Human" ]) \n' +
-'agent(ex:Simon, [ prov:type="Human" ]) \n' +
-'entity(tr:WD-prov-dm-20111215, [ prov:type="pr:RecsWD" %% xsd:QName ]) \n' +
-'wasAttributedTo(tr:WD-prov-dm-20111215, ex:Paolo, [prov:role="editor"]) \n' +
-'wasAttributedTo(tr:WD-prov-dm-20111215, ex:Simon, [prov:role="contributor"]) \n' +
-'</pre> \n' +
-' </div><div class="anexample"> \n' +
+' </div><div class="anexample" id="anexample-time"> \n' +
' <p> \n' +
-' Consider two long running services, which we represent by activities \n' +
-' <span class="name">s1</span> and <span class="name">s2</span>. \n' +
-' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-'activity(s1,,,[prov:type="service"]) \n' +
-'activity(s2,,,[prov:type="service"]) \n' +
-'wasInformedBy(s2,s1) \n' +
-'</pre> \n' +
-' The last line indicates that some entity was generated by <span class="name">s1</span> and used by <span class="name">s2</span>. \n' +
-' </div><div class="anexample"> \n' +
-' <p> \n' +
-' Suppose activities <span class="name">a1</span> and <span class="name">a2</span> \n' +
-' are computer processes that are executed on different hosts, and that \n' +
-' <span class="name">a1</span> started <span class="name">a2</span>. This \n' +
-' can be expressed as in the following fragment: \n' +
+' 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> \n' +
+' [[!XMLSCHEMA-2]]. \n' +
' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-'activity(a1,t1,t2,[ex:host="server1.example.org",prov:type="workflow"]) \n' +
-'activity(a2,t3,t4,[ex:host="server2.example.org",prov:type="subworkflow"]) \n' +
-'wasStartedBy(a2,a1) \n' +
-'</pre> \n' +
-' </div><div class="anexample"> \n' +
-' <p> \n' +
-' We refer to the example of <a href="#section-example-a">Section 3.1</a>, \n' +
-' and specifically to <a href="#prov-tech-report">Figure prov-tech-report</a>. \n' +
-' We can see that there is a path from <span class="name">tr:WD-prov-dm-20111215</span> \n' +
-' to <span class="name">w3:Consortium</span> or to <span class="name">pr:rec-advance</span>. \n' +
-' This is expressed as follows. \n' +
-' </p> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-' tracedTo(tr:WD-prov-dm-20111215,w3:Consortium) \n' +
-' tracedTo(tr:WD-prov-dm-20111215,pr:rec-advance) \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+' wasGeneratedBy(e1,a1, 2001-10-26T21:32:52) \n' +
'</pre> \n' +
' </div><div class="note"> \n' +
-' I propose to delete the following, given that this document does not \n' +
-' mention inferences. [LM] \n' +
-' <p> \n' +
-' Further considerations: \n' +
-' </p> \n' +
-' <ul> \n' +
-' <li> \n' +
-' Traceability is more general than <a href="#Derivation-Relation">Derivation</a>. \n' +
-' This means that an assertion of the form: <span class="name">tracedTo(...,e2,e1,...)</span> \n' +
-' can be inferred from an assertion of the form: <span class="name">wasDerivedFrom(e2,e1,..)</span>. \n' +
-' The precise inference rules are specified in [REF]. \n' +
-' </li> \n' +
-' <li> \n' +
-' Traceability is related to responsibility by way of inference rules \n' +
-' that involve <a href="#term-responsibility">responsibility chain</a> \n' +
-' and <a href="#term-Generation">generation</a> relations. These rules \n' +
-' are specified in [REF] \n' +
-' </li> \n' +
-' </ul> \n' +
-' </div><div class="note"> \n' +
-' looking at the definition, there is something wrong. It\'s not true that e2 \n' +
-' was neceaary for e1 (in the transitive case) and that e1 bears \n' +
-' responsibility. [LM] \n' +
-' </div><div class="note"> \n' +
-' I find that quotation is really a misnomer. This expands into derivation \n' +
-' with attribution, in what sense is the derived entity a "quote" of the \n' +
-' original? . The agent that is quoted is particularly obscure. It does not \n' +
-' seem to be involved in the quoting at all. Why isn\'t quoting an activity \n' +
-' with the quoting agent associated with it? [PM] \n' +
-' </div><div class="note"> \n' +
-' Omitted as this is likely to be removed [PM] \n' +
-' </div><div class="issue"> \n' +
-' Drop this relation <a href="http://www.w3.org/2011/prov/track/issues/220">ISSUE-220</a>. \n' +
-' </div><div class="note"> \n' +
-' I find this relation confusing. Please add an example. I wouldn\'t really \n' +
-' know when to use this. [PM] \n' +
-' </div><div class="anexample"> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-' entity(c, [prov:type="EmptyCollection"]) // e is an empty collection \n' +
-' entity(v1) \n' +
-' entity(v2) \n' +
-' entity(c1, [prov:type="Collection"]) \n' +
-' entity(c2, [prov:type="Collection"]) \n' +
-' \n' +
-' CollectionAfterInsertion(c1, c, "k1", v1) // c1 = { ("k1",v1) } \n' +
-' CollectionAfterInsertion(c2, c1, "k2", v2) // c2 = { ("k1",v1), ("k2", v2) } \n' +
-' CollectionAfterRemoval(c3, c2, k1) // c3 = { ("k2",v2) } \n' +
+' We need to check that we are including all xsd types that are the latest \n' +
+' versions of XML Schema/RDF. \n' +
+' </div><div class="anexample" id="anexample-sub-relation"> \n' +
+' <p> \n' +
+' In the following example, <span class="name">e2</span> is a \n' +
+' translation of <span class="name">e1</span>, expressed as a sub-type \n' +
+' of derivation. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+' wasDerivedFrom(e2,e1, [prov:type="ex:Translation" %% xsd:QName]) \n' +
'</pre> \n' +
-' </div><div class="note"> \n' +
-' I propose to call them afterInsertion instead of CollectionAfterInsertion \n' +
-' (likewise, for deletion). What about attributes and optional Id? \n' +
-' </div><div class="note"> \n' +
-' Deleted further items. Some of them are constraints which belong to part \n' +
-' 2. \n' +
-' </div><div id="glossary_div" class="remove"> \n' +
+' </div><div class="anexample" id="anexample-sub-type"> \n' +
+' <p> \n' +
+' In the following example, <span class="name">e</span> is described \n' +
+' as a Car, a type of entity. \n' +
+' </p> \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+' entity(e, [prov:type="ex:Car" %% xsd:QName]) \n' +
+'</pre> \n' +
+' </div><div id="glossary_div" class="remove"> \n' +
' <!-- glossary loaded from glossary.js will be hooked up here, class \n' +
' remove, will remove this element from the final output. --> \n' +
-' </div><div class="note"> \n' +
-' TO EDIT \n' +
-' </div><div class="note"> \n' +
-' TO EDIT \n' +
-' </div><div class="buttonpanel"> \n' +
-' <form action="#"> \n' +
-' <p> \n' +
-' <input id="hide-bnf" onclick="set_display_by_class(\'div\',\'grammar\',\'none\'); set_display_by_id(\'hide-bnf\',\'none\'); set_display_by_id(\'show-bnf\',\'\');" type="button" value="Hide Grammar" /> <input id="show-bnf" onclick="set_display_by_class(\'div\',\'grammar\',\'\'); set_display_by_id(\'hide-bnf\',\'\'); set_display_by_id(\'show-bnf\',\'none\');" style="display: none" type="button" value="Show Grammar" /> <input id="hide-examples" onclick="set_display_by_class(\'div\',\'anexample\',\'none\'); set_display_by_id(\'hide-examples\',\'none\'); set_display_by_id(\'show-examples\',\'\');" type="button" value="Hide Examples" /> <input id="show-examples" onclick="set_display_by_class(\'div\',\'anexample\',\'\'); set_display_by_id(\'hide-examples\',\'\'); set_display_by_id(\'show-examples\',\'none\');" style="display: none" type="button" value="Show Examples" /> \n' +
-' </p> \n' +
-' </form> \n' +
-' </div><div class="note"> \n' +
-' TODO \n' +
-' </div><div class="note"> \n' +
-' Tentative definition of destruction! \n' +
' </div><div class="anexample" id="a-report-example"> \n' +
' Different users may take different perspectives on a resource with a URL. \n' +
' For each perspective, an entity may be expressed: \n' +
@@ -914,17 +1834,13 @@
' A file at some point during its lifecycle, which includes multiple edits \n' +
' by multiple people, can be described by its type, its location in the file \n' +
' system, a creator, and content. \n' +
-' </div><div class="issue"> \n' +
-' We need to refine the definition of entity and activity, and all the \n' +
-' concepts in general. This is <a href="http://www.w3.org/2011/prov/track/issues/223">ISSUE-223</a>. \n' +
' </div><div class="note"> \n' +
-' The last point is important and needs to be discussed by the Working \n' +
-' Group. It indicates that within an account: \n' +
+' The last point is important. It indicates that within an account: \n' +
' <ul> \n' +
' <li> \n' +
' It is always possible to add new provenance descriptions, e.g. stating \n' +
-' that a given entity was used by an activity. This is very much an open \n' +
-' world assumption. \n' +
+' that a given entity was used by an activity, or derived from another. \n' +
+' This is very much an open world assumption. \n' +
' </li> \n' +
' <li> \n' +
' It is not permitted to add new attributes to a given entity (a form of \n' +
@@ -934,146 +1850,93 @@
' (cf Example <a href="#merge-with-rename">merge-with-rename</a>). \n' +
' </li> \n' +
' </ul> \n' +
-' </div><div class="note"> \n' +
-' <p> \n' +
-' Overview the kind of constraints \n' +
-' </p> \n' +
-' <ul> \n' +
-' <li> \n' +
-' Definitional constraints (<a href="#definitional-constraints">Section \n' +
-' 4</a>) \n' +
-' </li> \n' +
-' <li> \n' +
-' Account constraints (<a href="#account-constraints">Section 5</a>) \n' +
-' </li> \n' +
-' <li> \n' +
-' Event ordering constraints (<a href="#interpretation">Section 6</a>) \n' +
-' </li> \n' +
-' <li> \n' +
-' Structural constraints (<a href="#structural-constraints">Section 7</a>) \n' +
-' </li> \n' +
-' <li> \n' +
-' Collection constraints (<a href="#collection-constraints">Section 8</a>) \n' +
-' </li> \n' +
-' </ul> \n' +
-' </div><div class="note"> \n' +
-' Proposing to remove the subsections in this section, since some have no \n' +
-' constraints. \n' +
-' </div><div class="issue"> \n' +
-' There is still some confusion about what the identifiers really denote. \n' +
-' For instance, are they entity identifiers or entity record identifiers. \n' +
-' This is <a href="http://www.w3.org/2011/prov/track/issues/183">ISSUE-183</a>. \n' +
-' An example and questions appear in <a href="http://www.w3.org/2011/prov/track/issues/215">ISSUE-215</a>. A \n' +
-' related issued is also raised in <a href="http://www.w3.org/2011/prov/track/issues/145">ISSUE-145</a>. \n' +
-' </div><div class="issue"> \n' +
-' The characterization interval of an entity record is currently implicit. \n' +
-' Making it explicit would allow us to define alternateOf and \n' +
-' specializationOf more precisely. Beginning and end of characterization \n' +
-' interval could be expressed by attributes (similarly to activities). How \n' +
-' do we define the end of an entity? This is <a href="http://www.w3.org/2011/prov/track/issues/204">ISSUE-204</a>. \n' +
+' </div><div class="interpretation-forward"> \n' +
+' For the interpretation of an entity, see <a href="#usage-precedes-invalidation">usage-precedes-invalidation</a>. \n' +
' </div><div class="interpretation-forward"> \n' +
' For the interpretation of an activity, see <a href="#start-precedes-end">start-precedes-end</a>. \n' +
-' </div><div class="issue"> \n' +
-' Shouldn\'t we allow for entities (not agent) to be associated with an \n' +
-' activity? Should we drop the inference association-agent? <a href="http://www.w3.org/2011/prov/track/issues/203">ISSUE-203</a>. \n' +
-' <p> \n' +
-' One can assert an agent record or alternatively, one can infer an agent \n' +
-' record by its association with an activity. \n' +
-' </p> \n' +
-' <div class="inference" id="association-agent"> \n' +
-' <span class="conditional">If</span> the records <span class="name">entity(e,attrs)</span> \n' +
-' and <span class="name">wasAssociatedWith(a,e)</span> hold for some \n' +
-' identifiers <span class="name">a</span>, <span class="name">e</span>, \n' +
-' and attribute-values <span class="name">attrs</span>, then the record \n' +
-' <span class="name">agent(e,attrs)</span> also holds. \n' +
-' </div> \n' +
-' </div><div class="inference" id="association-agent"> \n' +
-' <span class="conditional">If</span> the records <span class="name">entity(e,attrs)</span> \n' +
-' and <span class="name">wasAssociatedWith(a,e)</span> hold for some \n' +
-' identifiers <span class="name">a</span>, <span class="name">e</span>, \n' +
-' and attribute-values <span class="name">attrs</span>, then the record \n' +
-' <span class="name">agent(e,attrs)</span> also holds. \n' +
-' </div><div class="interpretation-forward"> \n' +
+' </div><div class="interpretation-forward"> \n' +
' For the interpretation of a generation, see <a href="#generation-within-activity">generation-within-activity</a>. \n' +
+' </div><div class="constraint" id="unique-generation-time"> \n' +
+' Given an entity denoted by <span class="name">e</span> and two time \n' +
+' instants <span class="name">t1</span> and <span class="name">t2</span>, \n' +
+' <span class="conditional">if</span> <span class="name">wasGeneratedBy(e, \n' +
+' -, t1)</span> and <span class="name">wasGeneratedBy(e, -, t2)</span> hold, \n' +
+' then <span class="name">t1</span>=<span class="name">t2</span>. \n' +
' </div><div class="structural-forward"> \n' +
-' See <a href="#generation-uniqueness">generation-uniqueness</a> for a \n' +
-' structural constraint on generations. \n' +
+' See <a href="#generation-uniqueness">generation-uniqueness</a> for further \n' +
+' structural constraints on generations. \n' +
' </div><div class="interpretation-forward"> \n' +
' For the interpretation of a usage, see <a href="#generation-precedes-usage">generation-precedes-usage</a> \n' +
' and <a href="#usage-within-activity">usage-within-activity</a>. \n' +
+' </div><div class="constraint" id="unique-startTime"> \n' +
+' Given an activity <span class="name">activity(a,t1,t2,attrs1)</span> and \n' +
+' its start <span class="name">wasStartedBy(id,a,e,t,attrs2)</span>, then \n' +
+' <span class="name">t</span>=<span class="name">t1</span>. \n' +
+' </div><div class="constraint" id="unique-endTime"> \n' +
+' Given an activity <span class="name">activity(a,t1,t2,attrs1)</span> and \n' +
+' its end <span class="name">wasEndedBy(id,a,e,t,attrs2)</span>, then <span class="name">t</span>=<span class="name">t2</span>. \n' +
+' </div><div class="constraint" id="wasInformedBy-Definition"> \n' +
+' Given two activities identified by <span class="name">a1</span> and <span class="name">a2</span>, <span class="name">wasInformedBy(a2,a1)</span> \n' +
+' holds, <span class="conditional">if and only if</span> there is an entity \n' +
+' with some identifier <span class="name">e</span> and some sets of \n' +
+' attribute-value pairs <span class="name">attrs1</span> and <span class="name">attrs2</span>, such that <span class="name">wasGeneratedBy(e,a1,-,attrs1)</span> \n' +
+' and <span class="name">used(a2,e,-,attrs2)</span> hold. \n' +
' </div><div class="interpretation-forward"> \n' +
-' For the interpretation of an activity association, see <a href="#wasAssociatedWith-ordering">wasAssociatedWith-ordering</a>. \n' +
-' </div><div class="issue"> \n' +
-' The activity association record does not allow for a plan to be asserted \n' +
-' without an agent. This seems over-restrictive. Discussed in the context of \n' +
-' <a href="http://www.w3.org/2011/prov/track/issues/203">ISSUE-203</a>. \n' +
-' </div><div class="issue"> \n' +
-' Agents should not be inferred. WasAssociatedWith should also work with \n' +
-' entities. This is <a href="http://www.w3.org/2011/prov/track/issues/206">ISSUE-206</a>. \n' +
-' </div><div class="issue"> \n' +
-' Should we define start/end records as representation of activity start/end \n' +
-' events. Should time be associated with these events rather than with \n' +
-' activities. This will be similar to what we do for entities. This is issue \n' +
-' <a href="http://www.w3.org/2011/prov/track/issues/207">ISSUE-207</a>. \n' +
-' </div><div class="inference" id="derivation-implications"> \n' +
-' Given two entities denoted by <span class="name">e1</span> and <span class="name">e2</span>, <span class="conditional">if</span> the assertion \n' +
-' <span class="name">wasDerivedFrom(e2, e1, a, g2, u1, attrs)</span> holds \n' +
-' for some generation identified by <span class="name">g2</span>, and usage \n' +
-' identified by <span class="name">u1</span>, then <span class="name">wasDerivedFrom(e2,e1,[prov:steps="single"] \n' +
-' cup; attrs)</span> also holds.<br /> Given two entities denoted by <span class="name">e1</span> and <span class="name">e2</span>, <span class="conditional">if</span> the assertion <span class="name">wasDerivedFrom(e2, \n' +
-' e1, [prov:steps="single"] cup; attrs)</span> holds, then <span class="name">wasDerivedFrom(e2,e1,attrs)</span> also holds.<br /> \n' +
+' For the interpretation of an information flow ordering, see <a href="#wasInformedBy-ordering">wasInformedBy-ordering</a>. \n' +
+' </div><div class="constraint" id="wasStartedBy"> \n' +
+' Given two activities with identifiers <span class="name">a1</span> and \n' +
+' <span class="name">a2</span>, <span class="name">wasStartedBy(a2,a1)</span> \n' +
+' holds <span class="conditional">if and only if</span> there exist an \n' +
+' entity with some identifier <span class="name">e</span> and some \n' +
+' attributes <span class="name">gAttr</span> and <span class="name">sAttr</span>, \n' +
+' such that <span class="name">wasGeneratedBy(e,a1,-,gAttr)</span> and <span class="name">wasStartedBy(a2,e,-,sAttr)</span> hold. \n' +
+' </div><div class="interpretation-forward"> \n' +
+' For the interpretation of a control flow ordering, see <a href="#wasStartedBy-ordering">wasStartedBy-ordering</a>. \n' +
+' </div><div class="inference" id="attribution-implication"> \n' +
+' <span class="conditional">If</span> <span class="name">wasAttributedTo(e,ag)</span> \n' +
+' holds for some identifiers <span class="name">e</span> and <span class="name">ag</span>, <span class="conditional">then</span> there exists \n' +
+' an activity with some identifier <span class="name">a</span> such that the \n' +
+' following statements hold: \n' +
+'<pre xml:space="preserve"> \n' +
+'activity(a, t1, t2, attr1) \n' +
+'wasGenerateBy(e, a, -) \n' +
+'wasAssociatedWith(a, ag, -, attr2) \n' +
+'</pre> \n' +
+' for some sets of attribute-value pairs <span class="name">attr1</span> and \n' +
+' <span class="name">attr2</span>, time <span class="name">t1</span>, and \n' +
+' <span class="name">t2</span>. \n' +
+' </div><div class="interpretation-forward"> \n' +
+' For the interpretation of an association, see <a href="#wasAssociatedWith-ordering">wasAssociatedWith-ordering</a>. \n' +
+' </div><div class="interpretation-forward"> \n' +
+' For the interpretation of responsibility, see <a href="#actedOnBehalfOf-ordering">actedOnBehalfOf-ordering</a>. \n' +
' </div><div class="interpretation-forward"> \n' +
' For the interpretation of a derivation, see <a href="#derivation-usage-generation-ordering">derivation-usage-generation-ordering</a> \n' +
' and <a href="#derivation-generation-generation-ordering">derivation-generation-generation-ordering</a> \n' +
-' </div><div class="inference" id="activity-introduction"> \n' +
-' <span class="conditional">If</span> <span class="name">wasDerivedFrom(e2,e1)</span> \n' +
-' holds, <span class="conditional">then</span> there exist an activity, with \n' +
-' identifier <span class="name">a</span>, a usage identified by <span class="name">u</span>, and a generation identified by <span class="name">g</span> \n' +
-' such that: \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-'activity(a,aAttrs) \n' +
-'wasGeneratedBy(g,e2,a,gAttrs) \n' +
-'used(u,a,e1,uAttrs) \n' +
-'</pre> \n' +
-' for sets of attribute-value pairs <span class="name">gAttrs</span>, <span class="name">uAttrs</span>, and <span class="name">aAttrs</span>. \n' +
-' </div><div class="inference" id="derivation-time-elimination"> \n' +
-' <span class="conditional">If</span> <span class="name">wasDerivedFrom(e2,e1,t,attrs)</span> \n' +
-' holds, <span class="conditional">then</span> the following expressions \n' +
-' also hold: <span class="name">wasDerivedFrom(e2,e1,attrs)</span> and <span class="name">wasGeneratedBy(e2,t)</span>. \n' +
' </div><div class="structural-forward"> \n' +
' See <a href="#derivation-use">derivation-use</a> for a structural \n' +
' constraint on derivations. \n' +
-' </div><div class="issue"> \n' +
-' Several points were raised about the attribute steps. Its name, its \n' +
-' default value <a href="http://www.w3.org/2011/prov/track/issues/180">ISSUE-180</a>. \n' +
-' <a href="http://www.w3.org/2011/prov/track/issues/179">ISSUE-179</a>. \n' +
-' </div><div class="issue"> \n' +
-' Emphasize the notion of \'affected by\' <a href="http://www.w3.org/2011/prov/track/issues/133">ISSUE-133</a>. \n' +
-' </div><div class="issue"> \n' +
-' Simplify derivation <a href="http://www.w3.org/2011/prov/track/issues/249">ISSUE-249</a>. \n' +
-' </div><div class="note"> \n' +
-' In order to further convey the intended meaning, the following properties \n' +
-' are associated to these two relations. \n' +
-' <ul> \n' +
-' <li> \n' +
-' <span class="name">specializationOf(e2,e1)</span> is <strong>transitive</strong>: \n' +
-' <span class="name">specializationOf(e3,e2)</span> and <span class="name">specializationOf(e2,e1)</span> implies <span class="name">specializationOf(e3,e1)</span>. \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="name">specializationOf(e2,e1)</span> is <strong>anti-symmetric</strong>: \n' +
-' <span class="name">specializationOf(e2,e1)</span> implies that <span class="name">specializationOf(e1,e2)</span> does not hold. \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="name">alternateOf(e2,e1)</span> is <strong>symmetric</strong>: \n' +
-' <span class="name">alternateOf(e2,e1)</span> implies <span class="name">alternateOf(e1,e2)</span>. \n' +
-' </li> \n' +
-' </ul> \n' +
-' There are proposals to make alternateOf a transitive property. This is \n' +
-' still under discussion and the default is for alternateOf <strong>not</strong> \n' +
-' to be transitive, and this is what the current text reflects. \n' +
-' </div><div class="issue"> \n' +
-' A discussion on alternative definition of these relations has not reached \n' +
-' a satisfactory conclusion yet. This is <a href="http://www.w3.org/2011/prov/track/issues/29">ISSUE-29</a>. Also <a href="http://www.w3.org/2011/prov/track/issues/96">ISSUE-96</a>. \n' +
+' </div><div class="inference" id="wasRevision"> \n' +
+' Given two identifiers <span class="name">e1</span> and <span class="name">e2</span> \n' +
+' identifying two entities, and an identifier <span class="name">ag</span> \n' +
+' identifying an agent, <span class="conditional">if</span> <span class="name">wasRevisionOf(e2,e1,ag)</span> holds, <span class="conditional">then</span> there exists an entity with some \n' +
+' identifier <span class="name">e</span> and some attribute-values <span class="name">eAttrs</span>, <span class="name">dAttrs</span>, such that \n' +
+' the following hold: \n' +
+'<pre xml:space="preserve"> \n' +
+'wasDerivedFrom(e2,e1,dAttrs) \n' +
+'entity(e,eAttrs) \n' +
+'specializationOf(e2,e) \n' +
+'specializationOf(e1,e) \n' +
+'wasAttributedTo(e2,ag) \n' +
+'</pre> \n' +
+' </div><div class="inference" id="quotation-implication"> \n' +
+' <span class="conditional">If</span> <span class="name">wasQuotedFrom(e2,e1,ag2,ag1,attrs)</span> \n' +
+' holds for some identifiers <span class="name">e2</span>, <span class="name">e1</span>, \n' +
+' <span class="name">ag2</span>, <span class="name">ag1</span>, <span class="conditional">then</span> the following hold: \n' +
+'<pre xml:space="preserve"> \n' +
+'wasDerivedFrom(e2,e1) \n' +
+'wasAttributedTo(e2,ag2) \n' +
+'wasAttributedTo(e1,ag1) \n' +
+'</pre> \n' +
' </div><div class="inference" id="traceability-inference"> \n' +
' Given two identifiers <span class="name">e2</span> and <span class="name">e1</span> \n' +
' for entities, the following statements hold: \n' +
@@ -1090,24 +1953,20 @@
' also holds. \n' +
' </li> \n' +
' <li> \n' +
-' <span class="conditional">If</span> <span class="name">wasGeneratedBy(e2,a,gAttr) \n' +
-' and wasAssociatedWith(a,e1)</span> hold, for some <span class="name">a</span> \n' +
-' and <span class="name">gAttr</span>, <span class="conditional">then</span> \n' +
-' <span class="name">tracedTo(e2,e1)</span> also holds. \n' +
+' <span class="conditional">If</span> <span class="name">wasAttributedTo(e2,ag1,aAttr)</span> \n' +
+' holds, <span class="conditional">then</span> <span class="name">tracedTo(e2,ag1)</span> \n' +
+' also holds. \n' +
' </li> \n' +
' <li> \n' +
-' <span class="conditional">If</span> <span class="name">wasGeneratedBy(e2,a,gAttr)</span>, \n' +
-' <span class="name">wasAssociatedWith(a,e)</span> and <span class="name">actedOnBehalfOf(e,e1)</span> \n' +
-' hold, for some <span class="name">a</span>, <span class="name">e</span>, \n' +
-' and <span class="name">gAttr</span>, <span class="conditional">then</span> \n' +
-' <span class="name">tracedTo(e2,e1)</span> also holds. \n' +
+' <span class="conditional">If</span> <span class="name">wasAttributedTo(e2,ag2,aAttr)</span>, \n' +
+' <span class="name">wasGeneratedBy(e2,a,gAttr)</span>, and <span class="name">actedOnBehalfOf(ag2,ag1,a,rAttr)</span> hold, for some \n' +
+' <span class="name">a</span>, <span class="name">ag2</span>, <span class="name">ag1</span>, <span class="name">aAttr</span>, <span class="name">gAttr</span>, and <span class="name">rAttr</span>, <span class="conditional">then</span> <span class="name">tracedTo(e2,ag1)</span> \n' +
+' also holds. \n' +
' </li> \n' +
' <li> \n' +
-' <span class="conditional">If</span> <span class="name">wasGeneratedBy(e2,a,gAttr) \n' +
-' and wasStartedBy(a,e1,sAttr)</span> hold, for some <span class="name">a</span>, \n' +
-' <span class="name">e</span>, and <span class="name">gAttr</span>, and \n' +
-' <span class="name">sAttr</span>, <span class="conditional">then</span> \n' +
-' <span class="name">tracedTo(e2,e1)</span> also holds. \n' +
+' <span class="conditional">If</span> <span class="name">wasGeneratedBy(e2,a,gAttr)</span> \n' +
+' and <span class="name">wasStartedBy(a,e1,sAttr)</span> hold, for some \n' +
+' <span class="name">a</span>, <span class="name">gAttr</span> , <span class="name">sAttr</span> \n' +
' </li> \n' +
' <li> \n' +
' <span class="conditional">If</span> <span class="name">tracedTo(e2,e)</span> \n' +
@@ -1135,90 +1994,56 @@
' holds, or \n' +
' </li> \n' +
' <li> \n' +
-' <span class="name">wasBasedOn(e<sup>i</sup>,e<sup>i+1</sup>)</span> \n' +
+' <span class="name">wasAttributedTo(e<sup>i</sup>,e<sup>i+1</sup>)</span> \n' +
' holds, or \n' +
' </li> \n' +
' <li> \n' +
-' <span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr) and \n' +
-' wasAssociatedWith(a,e<sup>i+1</sup>)</span> hold, for some <span class="name">a</span> and <span class="name">gAttr</span>, or \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr)</span>, <span class="name">wasAssociatedWith(a,e)</span> and <span class="name">actedOnBehalfOf(e,e<sup>i+1</sup>)</span> \n' +
-' hold, for some <span class="name">a</span>, <span class="name">e</span> \n' +
-' and <span class="name">gAttr</span>, or \n' +
+' <span class="name">wasAttributedTo(e<sup>i</sup>,e)</span>, <span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr)</span>, and <span class="name">actedOnBehalfOf(e,e<sup>i+1</sup>,a,rAttr)</span> hold, \n' +
+' for some <span class="name">a</span>, <span class="name">e</span> and \n' +
+' <span class="name">gAttr</span>, <span class="name">rAttr</span>, or \n' +
' </li> \n' +
' <li> \n' +
' <span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr) and \n' +
' wasStartedBy(a,e<sup>i+1</sup>,sAttr)</span> hold, for some <span class="name">a</span>, <span class="name">e</span>, and <span class="name">gAttr</span>, and <span class="name">sAttr</span>. \n' +
' </li> \n' +
' </ul> \n' +
-' </div><div class="constraint" id="wasInformedBy-Definition"> \n' +
-' Given two activities identified by <span class="name">a1</span> and <span class="name">a2</span>, <span class="name">wasInformedBy(a2,a1)</span> \n' +
-' holds, <span class="conditional">if and only if</span> there is an entity \n' +
-' with some identifier <span class="name">e</span> and some sets of \n' +
-' attribute-value pairs <span class="name">attrs1</span> and <span class="name">attrs2</span>, such that <span class="name">wasGeneratedBy(e,a1,attrs1)</span> \n' +
-' and <span class="name">used(a2,e,attrs2)</span> hold. \n' +
-' </div><div class="interpretation-forward"> \n' +
-' For the interpretation of an information flow ordering, see <a href="#wasInformedBy-ordering">wasInformedBy-ordering</a>. \n' +
-' </div><div class="constraint" id="wasStartedBy"> \n' +
-' Given two activities with identifiers <span class="name">a1</span> and \n' +
-' <span class="name">a2</span>, <span class="name">wasStartedBy(a2,a1)</span> \n' +
-' holds <span class="conditional">if and only if</span> there exist an \n' +
-' entity with some identifier <span class="name">e</span> and some \n' +
-' attributes <span class="name">gAttr</span> and <span class="name">sAttr</span>, \n' +
-' such that <span class="name">wasGeneratedBy(e,a1,gAttr)</span> and <span class="name">wasStartedBy(a2,e,sAttr)</span> hold. \n' +
-' </div><div class="interpretation-forward"> \n' +
-' For the interpretation of a control flow ordering, see <a href="#wasStartedBy-ordering">wasStartedBy-ordering</a>. \n' +
-' </div><div class="inference" id="wasRevision"> \n' +
-' Given two identifiers <span class="name">old</span> and <span class="name">new</span> \n' +
-' identifying two entities, and an identifier <span class="name">ag</span> \n' +
-' identifying an agent, <span class="conditional">if</span> <span class="name">wasRevisionOf(new,old,ag)</span> holds, <span class="conditional">then</span> there exists an entity with some \n' +
-' identifier <span class="name">e</span> and some attribute-values <span class="name">eAttrs</span>, <span class="name">dAttrs</span>, such that \n' +
-' the following hold: \n' +
-' <ul> \n' +
-' <li> \n' +
-' <span class="name">wasDerivedFrom(new,old,dAttrs)</span>; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="name">entity(e,eAttrs)</span>; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="name">specializationOf(new,e)</span>; \n' +
-' </li> \n' +
-' <li> \n' +
-' <span class="name">specializationOf(old,e)</span>. \n' +
-' </li> \n' +
-' </ul> \n' +
-' The derivation may be imprecise-1 or imprecise-n. \n' +
-' </div><div class="inference" id="attribution-implication"> \n' +
-' <span class="conditional">If</span> <span class="name">wasAttributedTo(e,ag)</span> \n' +
-' holds for some identifiers <span class="name">e</span> and <span class="name">ag</span>, <span class="conditional">then</span>, there \n' +
-' exists an activity with some identifier <span class="name">a</span> such \n' +
-' that the following statements hold: \n' +
+' </div><div class="anexample" id="anexample-not-symmetric"> \n' +
+' "Alice\'s toyota car on fifth Avenue" is a specialization of "Alice\'s \n' +
+' toyota car", but the converse does not hold. \n' +
+' </div><div class="anexample" id="anexample-specialization-not-anti-symmetric"> \n' +
+' anti-symmetric counter-example??? \n' +
+' </div><div class="anexample" id="anexample-specialization-is-transitive"> \n' +
+' A specialization of "this email message" would be, for example, the \n' +
+' "printed version on my desk", which is a specialization of "my thoughts on \n' +
+' this email thread". So, the "printed version on my desk" is also a \n' +
+' specialization "my thoughts on this email thread". \n' +
+' </div><div class="anexample" id="anexample-alternate-not-transitive1"> \n' +
+' <p> \n' +
+' At 6pm, the customer in a chair is a woman in a red dress, who happens \n' +
+' to be Alice. After she leaves, another customer arrives at 7pm, a man \n' +
+' with glasses, who happens to be Bob. Transitivity does not hold since \n' +
+' the <span class="name">womanInRedDress</span> is not alternate of <span class="name">customerInChairAt7pm</span>. \n' +
+' </p> \n' +
'<pre xml:space="preserve"> \n' +
-'activity(a,t1,t2,attr1) \n' +
-'wasGenerateBy(e,a) \n' +
-'wasAssociatedWith(a,ag,attr2) \n' +
+'alternate(womanInRedDress,customerInChairAt6pm) \n' +
+'specialization(customerInChairAt6pm,Alice) \n' +
+'specialization(womanInRedDress,Alice) \n' +
+' \n' +
+'alternate(manWithGlasses,customerInChairAt7pm) \n' +
+'specialization(customerInChairAt7pm,Bob) \n' +
+'specialization(manWithGlasses,Bob) \n' +
+' \n' +
+'alternate(customerInChairAt6pm, customerInChairAt7pm) \n' +
+'specialization(customerInChairAt6pm, customerInChair) \n' +
+'specialization(customerInChairAt7pm, customerInChair) \n' +
'</pre> \n' +
-' for some sets of attribute-value pairs <span class="name">attr1</span> and \n' +
-' <span class="name">attr2</span>, time <span class="name">t1</span>, and \n' +
-' <span class="name">t2</span>. \n' +
-' </div><div class="inference" id="quotation-implication"> \n' +
-' <span class="conditional">If</span> <span class="name">wasQuotedFrom(e2,e1,ag2,ag1,attrs)</span> \n' +
-' holds for some identifiers <span class="name">e2</span>, <span class="name">e1</span>, \n' +
-' <span class="name">ag2</span>, <span class="name">ag1</span>, <span class="conditional">then</span> the following hold: \n' +
-'<pre xml:space="preserve"> \n' +
-'wasDerivedFrom(e2,e1) \n' +
-'wasAttributedTo(e2,ag2) \n' +
-'wasAttributedTo(e1,ag1) \n' +
-'</pre> \n' +
-' </div><div class="issue"> \n' +
-' Drop this relation <a href="http://www.w3.org/2011/prov/track/issues/220">ISSUE-220</a>. \n' +
+' </div><div class="anexample"> \n' +
+' Two copies of the same book, where copy A was destroyed before copy B was \n' +
+' made. \n' +
' </div><div class="anexample" id="example-two-entities-one-id"> \n' +
' <p> \n' +
' Let us consider two descriptions of a same entity, which we have taken \n' +
-' from two different contexts (see example). A working draft published by \n' +
-' the <span class="name">w3:Consortium</span>: \n' +
+' from two different contexts. A working draft published by the <span class="name">w3:Consortium</span>: \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
'entity(tr:WD-prov-dm-20111215, [ prov:type="pr:RecsWD" %% xsd:QName ]) \n' +
@@ -1229,19 +2054,20 @@
'</pre> \n' +
' <p> \n' +
' Both descriptions are about the same entity identified by <span class="name">tr:WD-prov-dm-20111215</span>, but they contain different \n' +
-' attributes, reflecting the context in which they occur. \n' +
+' attributes, describing the situation or partial state of the these \n' +
+' entities according to the context in which they occur. \n' +
' </p> \n' +
' </div><div class="constraint" id="unique-description-in-account"> \n' +
' <p> \n' +
' Given an entity identifier <span class="name">e</span>, there is at most \n' +
-' one description <span class="name">entity(e,av)</span> occurring in a \n' +
-' given account, where <span class="name">av</span> is some set of \n' +
+' one description <span class="name">entity(e,attrs)</span> occurring in a \n' +
+' given account, where <span class="name">attrs</span> is some set of \n' +
' attribute-values. Other descriptions of the same entity can exist in \n' +
' different accounts. \n' +
' </p> \n' +
' <p> \n' +
-' This constraint similarly applies to all other types of identifiable \n' +
-' entities and relations. \n' +
+' This constraint similarly applies to all other types and relations, with \n' +
+' explicit identity. \n' +
' </p> \n' +
' </div><div class="structural-forward"> \n' +
' See Section <a href="#structural-constraints">structural-constraints</a> \n' +
@@ -1262,11 +2088,14 @@
' </div><div class="interpretation" id="generation-precedes-usage"> \n' +
' For any entity, the following ordering constraint holds: the <a title="entity generation event">generation</a> of an entity always <a>precedes</a> \n' +
' any of its <a title="entity usage event">usages</a>. \n' +
+' </div><div class="interpretation" id="usage-precedes-invalidation"> \n' +
+' For any entity, the following ordering constraint holds: any <a title="entity usage event">usage</a> of an entity always <a>precedes</a> \n' +
+' its <a title="entity invalidation event">invalidation</a>. \n' +
' </div><div class="interpretation" id="usage-within-activity"> \n' +
' Given an activity with identifier <span class="name">a</span>, an entity \n' +
' with identifier <span class="name">e</span>, a set of attribute-value \n' +
' pairs <span class="name">attrs</span>, and optional time <span class="name">t</span>, \n' +
-' <span class="conditional">if</span> assertion <span class="name">used(a,e,attrs)</span> \n' +
+' <span class="conditional">if</span> <span class="name">used(a,e,attrs)</span> \n' +
' or <span class="name">used(a,e,attrs,t)</span> holds, <span class="conditional">then</span> the following ordering constraint holds: \n' +
' the <a title="entity usage event">usage</a> of the entity denoted by <span class="name">e</span> <a>precedes</a> the <a title="activity end event">end</a> \n' +
' of activity denoted by <span class="name">a</span> and <a>follows</a> its \n' +
@@ -1285,18 +2114,14 @@
' with identifier <span class="name">e1</span> and <span class="name">e2</span>, \n' +
' a generation identified by <span class="name">g2</span>, and a usage \n' +
' identified by <span class="name">u1</span>, <span class="conditional">if</span> \n' +
-' <span class="name">wasDerivedFrom(e2,e1,a,g2,u1,attrs)</span> or <span class="name">wasDerivedFrom(e2,e1,[prov:steps="single"] cup; attrs)</span> \n' +
-' holds, <span class="conditional">then</span> the following ordering \n' +
-' constraint holds: the <a title="entity usage event">usage</a> of entity \n' +
-' denoted by <span class="name">e1</span> <a>precedes</a> the <a title="entity generation event">generation</a> of the entity denoted by \n' +
+' <span class="name">wasDerivedFrom(e2,e1,a,g2,u1,attrs)</span> holds, <span class="conditional">then</span> the following ordering constraint holds: \n' +
+' the <a title="entity usage event">usage</a> of entity denoted by <span class="name">e1</span> <a>precedes</a> the <a title="entity generation event">generation</a> of the entity denoted by \n' +
' <span class="name">e2</span>. \n' +
' </div><div class="interpretation" id="derivation-generation-generation-ordering"> \n' +
-' Given two entities denoted by <span class="name">e1</span> and <span class="name">e2</span>, <span class="conditional">if</span> <span class="name">wasDerivedFrom(e2,e1,[prov:steps="any"] cup; attrs)</span> \n' +
-' holds, <span class="conditional">then</span> the following ordering \n' +
-' constraint holds: the <a title="entity generation event">generation event</a> \n' +
-' of the entity denoted by <span class="name">e1</span> <a>precedes</a> the \n' +
-' <a title="entity generation event">generation event</a> of the entity \n' +
-' denoted by <span class="name">e2</span>. \n' +
+' Given two entities denoted by <span class="name">e1</span> and <span class="name">e2</span>, <span class="conditional">if</span> <span class="name">wasDerivedFrom(e2,e1, attrs)</span> holds, <span class="conditional">then</span> the following ordering constraint holds: \n' +
+' the <a title="entity generation event">generation event</a> of the entity \n' +
+' denoted by <span class="name">e1</span> <a>precedes</a> the <a title="entity generation event">generation event</a> of the entity denoted \n' +
+' by <span class="name">e2</span>. \n' +
' </div><div class="interpretation" id="wasInformedBy-ordering"> \n' +
' Given two activities denoted by <span class="name">a1</span> and <span class="name">a2</span>, <span class="conditional">if</span> <span class="name">wasInformedBy(a2,a1)</span> holds, <span class="conditional">then</span> \n' +
' the following ordering constraint holds: the <a title="activity start event">start event</a> of the activity denoted by \n' +
@@ -1306,45 +2131,57 @@
' the following ordering constraint holds: the <a title="activity start event">start</a> event of the activity denoted by \n' +
' <span class="name">a1</span> <a>precedes</a> the <a title="activity start event">start event</a> of the activity denoted by \n' +
' <span class="name">a2</span>. \n' +
-' </div><div class="issue"> \n' +
-' In the following, we assume that we can talk about the end of an entity \n' +
-' (or agent) For this, we use the term \'destruction\' This is <a href="http://www.w3.org/2011/prov/track/issues/204">ISSUE-204</a>. \n' +
' </div><div class="interpretation" id="wasStartedByAgent-ordering"> \n' +
-' Given an activity denoted by <span class="name">a</span> and an agent \n' +
-' denoted by <span class="name">ag</span>, <span class="conditional">if</span> \n' +
-' <span class="name">wasStartedBy(a,ag)</span> holds, <span class="conditional">then</span> the following ordering constraints hold: \n' +
+' Given an activity denoted by <span class="name">a</span> and an entity \n' +
+' denoted by <span class="name">e</span>, <span class="conditional">if</span> \n' +
+' <span class="name">wasStartedBy(a,e)</span> holds, <span class="conditional">then</span> the following ordering constraints hold: \n' +
' the <a title="activity start event">start</a> event of the activity \n' +
-' denoted by <span class="name">a</span> <a>follows</a> the <a title="entity generation event">generation event</a> for agent denoted by \n' +
-' <span class="name">ag</span>, and <a>precedes</a> the destruction event of \n' +
-' the same agent. \n' +
+' denoted by <span class="name">a</span> <a>follows</a> the <a title="entity generation event">generation event</a> for entity <span class="name">e</span>, and <a>precedes</a> the invalidation event of the \n' +
+' same entity. \n' +
+' </div><div class="interpretation" id="wasEndedByAgent-ordering"> \n' +
+' Given an activity denoted by <span class="name">a</span> and an entity \n' +
+' denoted by <span class="name">e</span>, <span class="conditional">if</span> \n' +
+' <span class="name">wasEndedBy(a,e)</span> holds, <span class="conditional">then</span> \n' +
+' the following ordering constraints hold: the <a title="activity end event">end</a> \n' +
+' event of the activity denoted by <span class="name">a</span> <a>follows</a> \n' +
+' the <a title="entity generation event">generation event</a> for entity \n' +
+' <span class="name">e</span>, and <a>precedes</a> the invalidation event of \n' +
+' the same entity. \n' +
' </div><div class="interpretation" id="wasAssociatedWith-ordering"> \n' +
' Given an activity denoted by <span class="name">a</span> and an agent \n' +
' denoted by <span class="name">ag</span>, <span class="conditional">if</span> \n' +
' <span class="name">wasAssociatedWith(a,ag)</span> holds, <span class="conditional">then</span> the following ordering constraints hold: \n' +
' the <a title="activity start event">start</a> event of the activity \n' +
-' denoted by <span class="name">a</span> precedes the destruction event of \n' +
+' denoted by <span class="name">a</span> precedes the invalidation event of \n' +
' the agent denoted by <span class="name">ag</span>, and the <a title="entity generation event">generation event</a> for agent denoted by \n' +
' <span class="name">ag</span> <a>precedes</a> the activity <a title="activity end event">end</a> event. \n' +
-' </div><div class="issue"> \n' +
-' For completeness, we should define ordering constraint for \n' +
-' wasAssociatedWith and actedOnBehalfOf. For wasAssociatedWith(a,ag), it \n' +
-' feels that ag must have some overlap with a. For \n' +
-' actedOnBehalfOf(ag1,ag2,a), it seem that ag2 should have existed before \n' +
-' the overlap between ag1 and a. This is <a href="http://www.w3.org/2011/prov/track/issues/221">ISSUE-221</a>. \n' +
-' </div><div class="issue"> \n' +
-' It is suggested that a stronger name for wasAssociatedWith should be \n' +
-' adopted. This is <a href="http://www.w3.org/2011/prov/track/issues/182">ISSUE-182</a>. \n' +
+' </div><div class="interpretation" id="wasAttributedWith-ordering"> \n' +
+' Given an entity denoted by <span class="name">e</span> and an agent \n' +
+' denoted by <span class="name">ag</span>, <span class="conditional">if</span> \n' +
+' <span class="name">wasAttributedWith(e,ag)</span> holds, <span class="conditional">then</span> the following ordering constraints hold: \n' +
+' the <a title="entity generation event">generation</a> event of the entity \n' +
+' denoted by <span class="name">e</span> precedes the invalidation event of \n' +
+' the agent denoted by <span class="name">ag</span>, and the <a title="entity generation event">generation event</a> for agent denoted by \n' +
+' <span class="name">ag</span> <a>precedes</a> the entity <a title="entity invalidation event">invalidation</a> event. \n' +
+' </div><div class="interpretation" id="actedOnBehalfOf-ordering"> \n' +
+' Given two agents <span class="name">ag1</span> and <span class="name">ag2</span>, \n' +
+' <span class="conditional">if</span> <span class="name">actedOnBehalfOf(ag2,ag1)</span> \n' +
+' holds, <span class="conditional">then</span> the following ordering \n' +
+' constraints hold: the <a title="entity generation event">generation</a> \n' +
+' event of the agent denoted by <span class="name">ag2</span> precedes the \n' +
+' invalidation event of agent <span class="name">ag1</span>, and the <a title="entity generation event">generation event</a> for agent denoted by \n' +
+' <span class="name">ag1</span> <a>precedes</a> <a title="entity invalidation event">invalidation</a> event for <span class="name">ag2</span>. \n' +
' </div><div class="anexample"> \n' +
' <p> \n' +
-' In the following assertions, a workflow execution <span class="name">a0</span> \n' +
+' In the following descriptions, a workflow execution <span class="name">a0</span> \n' +
' consists of two sub-workflow executions <span class="name">a1</span> and \n' +
' <span class="name">a2</span>. Sub-workflow execution <span class="name">a2</span> \n' +
' generates entity <span class="name">e</span>, so does <span class="name">a0</span>. \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-'activity(a0,,,[prov:type="workflow execution"]) \n' +
-'activity(a1,,,[prov:type="workflow execution"]) \n' +
-'activity(a2,,,[prov:type="workflow execution"]) \n' +
+'activity(a0, [prov:type="workflow execution"]) \n' +
+'activity(a1, [prov:type="workflow execution"]) \n' +
+'activity(a2, [prov:type="workflow execution"]) \n' +
'wasInformedBy(a2,a1) \n' +
' \n' +
'wasGeneratedBy(e,a0) \n' +
@@ -1359,7 +2196,7 @@
' </p> \n' +
' </div><div class="anexample"> \n' +
' <p> \n' +
-' The same example is now revisited, with the following assertions that \n' +
+' The same example is now revisited, with the following descriptions that \n' +
' are structurally well-formed. Two accounts are introduced, and there is \n' +
' a single generation for entity <span class="name">e</span> per account. \n' +
' </p> \n' +
@@ -1367,181 +2204,146 @@
' In a first account, entitled "summary", we find: \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-' activity(a0,t1,t2,[prov:type="workflow execution"]) \n' +
-' wasGeneratedBy(e,a0) \n' +
+'activity(a0,t1,t2,[prov:type="workflow execution"]) \n' +
+'wasGeneratedBy(e,a0,-) \n' +
'</pre> \n' +
' <p> \n' +
' In a second account, entitled "detail", we find: \n' +
' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-' activity(a1,t1,t3,[prov:type="workflow execution"]) \n' +
-' activity(a2,t3,t2,[prov:type="workflow execution"]) \n' +
-' wasInformedBy(a2,a1) \n' +
-' wasGeneratedBy(e,a2) \n' +
+'activity(a1,t1,t3,[prov:type="workflow execution"]) \n' +
+'activity(a2,t3,t2,[prov:type="workflow execution"]) \n' +
+'wasInformedBy(a2,a1) \n' +
+'wasGeneratedBy(e,a2,-) \n' +
'</pre> \n' +
' </div><div class="constraint" id="generation-uniqueness"> \n' +
' Given an entity denoted by <span class="name">e</span>, two activities \n' +
' denoted by <span class="name">a1</span> and <span class="name">a2</span>, \n' +
+' two time instants <span class="name">t1</span> and <span class="name">t2</span>, \n' +
' and two sets of attribute-value pairs <span class="name">attrs1</span> and \n' +
' <span class="name">attrs2</span>, <span class="conditional">if</span> \n' +
-' <span class="name">wasGeneratedBy(id1,e,a1,attrs1)</span> and <span class="name">wasGeneratedBy(id2,e,a2,attrs2)</span> exist in the scope of \n' +
-' a given account, <span class="conditional">then</span> <span class="name">id1</span>=<span class="name">id2</span>, <span class="name">a1</span>=<span class="name">a2</span> \n' +
+' <span class="name">wasGeneratedBy(id1, e, a1, t1, attrs1)</span> and <span class="name">wasGeneratedBy(id2, e, a2, t2, attrs2)</span> exist in the \n' +
+' scope of a given account, <span class="conditional">then</span> <span class="name">id1</span>=<span class="name">id2</span>, <span class="name">a1</span>=<span class="name">a2</span>, <span class="name">t1</span>=<span class="name">t2</span> \n' +
' and <span class="name">attrs1</span>=<span class="name">attrs2</span>. \n' +
' </div><div class="inference" id="derivation-use"> \n' +
' <p> \n' +
-' Given an activity with identifier <span class="name">a</span>, entities \n' +
-' denoted by <span class="name">e1</span> and <span class="name">e2</span>, \n' +
-' and a set of attribute-value pairs <span class="name">attrs2</span>, \n' +
-' <span class="conditional">if</span> <span class="name">wasDerivedFrom(e2,e1, \n' +
-' [prov:steps="single"])</span> and <span class="name">wasGeneratedBy(e2,a,attrs2)</span> \n' +
-' hold, <span class="conditional">then</span> <span class="name">used(a,e1,attrs1)</span> \n' +
-' also holds for some set of attribute-value pairs <span class="name">attrs1</span>. \n' +
-' </p> \n' +
-' </div><div class="note"> \n' +
-' Can the semantics characterize better what can be achieved with \n' +
-' structurally well-formed accounts? \n' +
-' </div><div class="note" id="note-related-to-issue-105"> \n' +
-' Satya discussed the example of a sculpture, whose hand and leg are \n' +
-' sculpted independently by two different sculptors. He suggested that the \n' +
-' sculpture is generated by two distinct activities. This section explains \n' +
-' that it is not the case. The example can be formulated as follows. \n' +
-' <p> \n' +
-' <a href="examples/sculpture.prov-asn">Sculpture example in ASN</a> \n' +
+' Given an activity <span class="name">a</span>, entities denoted by <span class="name">e1</span> and <span class="name">e2</span>, and sets of \n' +
+' attribute-value pairs <span class="name">dAttrs</span>, <span class="name">gAttrs</span>, <span class="conditional">if</span> <span class="name">wasDerivedFrom(e2,e1, a, dAttrs)</span> and <span class="name">wasGeneratedBy(e2,a,-,gAttrs)</span> hold, <span class="conditional">then</span> <span class="name">used(a,e1,-,uAttrs)</span> \n' +
+' also holds for some set of attribute-value pairs <span class="name">uAttrs</span>. \n' +
' </p> \n' +
-' <p> \n' +
-' <a href="examples/sculpture.png">Sculpture example image</a> \n' +
-' </p> \n' +
-' <p> \n' +
-' We see that ex:s_3 (the sculpture in its final state) was derived from \n' +
-' ex:l_2 (containment) which was generated by ex:a2. However, ex:s_3 is \n' +
-' not directly generated by ex:a2. We may want to consider an abbreviation \n' +
-' for this: wasGeneratedBy*(ex:s_3,ex:a2). \n' +
-' </p> \n' +
-' </div><div class="note"> \n' +
-' Raw material taken from prov-dm3. Some further text required. \n' +
-' </div><div class="constraint" id="collection-parallel-insertions"> \n' +
-' <p> \n' +
-' One can have multiple assertions regarding the state of a collection \n' +
-' following a <em>set</em> of insertions, for example: \n' +
-' </p> \n' +
+' </div><div class="constraint" id="membership-as-insertion"> \n' +
+' <span class="name">memberOf(c, {(k1, v1), ...})</span> holds <span class="conditional">if and only if</span> there exists a collection <span class="name">c0</span>, such that <span class="name">derivedByInsertionFrom(c, \n' +
+' c0, {(k1, v1), ...})</span>. \n' +
+' </div><div class="constraint" id="collection-unique-derivation"> \n' +
+' A collection MUST NOT be derived through multiple insertions, removal, or \n' +
+' membership relations. \n' +
+' </div><div class="anexample"> \n' +
+' Consider the following descriptions about three collections. \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-'CollectionAfterInsertion(c2, c1, k1, v1) \n' +
-'CollectionAfterInsertion(c2, c1, k2, v2) \n' +
-'... \n' +
+'entity(c1, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+'entity(c2, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+'entity(c3, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+' \n' +
+' \n' +
+'derivedByInsertionFrom(c3, c1, {("k1", e1), ("k2", e2)}) \n' +
+'derivedByInsertionFrom(c3, c2, {("k3", e3)}) \n' +
'</pre> \n' +
' <p> \n' +
-' This is interpreted as <em>" <span class="name">c2</span> is the state \n' +
-' that results from inserting <span class="name">(k1, v1)</span>, <span class="name">(k2, v2)</span> etc. into <span class="name">c1</span>"</em> \n' +
+' There is no interpretation for such descriptions since <span class="name">c3</span> \n' +
+' is derived multiple times by insertion. \n' +
' </p> \n' +
-' </div><div class="note"> \n' +
-' Shouldn\'t we have the same for deletion, and combination of insertion and \n' +
-' deletion? \n' +
-' </div><div class="constraint" id="collection-branching-derivations"> \n' +
-' It is possible to have multiple derivations from a single root collection, \n' +
-' as shown in the following example. \n' +
-' <div class="anexample"> \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-' entity(c, [prov:type="EmptyCollection"]) // e is an empty collection \n' +
-' entity(v1) \n' +
-' entity(v2) \n' +
-' entity(v3) \n' +
-' entity(c1, [prov:type="Collection"]) \n' +
-' entity(c2, [prov:type="Collection"]) \n' +
-' entity(c3, [prov:type="Collection"]) \n' +
-' \n' +
-' CollectionAfterInsertion(c1, c, k1, v1) // c1 = { (k1,v1) } \n' +
-' CollectionAfterInsertion(c2, c, k2, v2) // c2 = { (k2 v2) } \n' +
-' CollectionAfterInsertion(c3, c1, k3,v3) // c3 = { (k1,v1), (k3,v3) } \n' +
-'</pre> \n' +
-' </div> \n' +
' </div><div class="anexample"> \n' +
+' <p> \n' +
+' As a particular case, collection <span class="name">c</span> is derived \n' +
+' multiple times from the same <span class="name">c1</span>. \n' +
+' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-' entity(c, [prov:type="EmptyCollection"]) // e is an empty collection \n' +
-' entity(v1) \n' +
-' entity(v2) \n' +
-' entity(v3) \n' +
-' entity(c1, [prov:type="Collection"]) \n' +
-' entity(c2, [prov:type="Collection"]) \n' +
-' entity(c3, [prov:type="Collection"]) \n' +
-' \n' +
-' CollectionAfterInsertion(c1, c, k1, v1) // c1 = { (k1,v1) } \n' +
-' CollectionAfterInsertion(c2, c, k2, v2) // c2 = { (k2 v2) } \n' +
-' CollectionAfterInsertion(c3, c1, k3,v3) // c3 = { (k1,v1), (k3,v3) } \n' +
-'</pre> \n' +
-' </div><div class="constraint" id="collection-unique-ancestor"> \n' +
-' Given the pair of assertions: \n' +
-'<pre class="codeexample" xml:space="preserve"> \n' +
-'CollectionAfterInsertion(c, c1, k1, v1) \n' +
-'CollectionAfterInsertion(c, c2, k2, v2) \n' +
+'derivedByInsertionFrom(id1, c, c1, {("k1", e1), ("k2", e2)}) \n' +
+'derivedByInsertionFrom(id2, c, c1, {("k3", e3), ("k4", e4)}) \n' +
'</pre> \n' +
-' it follows that <span class="name">c1==c2</span>. \n' +
-' </div><div class="note"> \n' +
-' Original text stated it follows that <span class="name">c1==c2, k1==k2, \n' +
-' v1==v2</span>, because one cannot have two different derivations for the \n' +
-' same final collection state. This is incompatible with parallel insertion \n' +
-' constraint. \n' +
-' </div><div class="note"> \n' +
-' Shouldn\'t we have the same for deletion, and combination of insertion and \n' +
-' deletion? \n' +
-' </div><div class="constraint" id="collection-unique-value-for-key"> \n' +
-' Given the following set of insertions: \n' +
+' <p> \n' +
+' The interpretation of such descriptions is also unspecified. \n' +
+' </p> \n' +
+' <p> \n' +
+' To describe the insertion of the 4 key-entity pairs, one would instead \n' +
+' write: \n' +
+' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-'CollectionAfterInsertion(c1, c, k, v1) \n' +
-'CollectionAfterInsertion(c1, c, k, v2) \n' +
+'derivedByInsertionFrom(id1, c, c1, {("k1", e1), ("k2", e2), ("k3", e3), ("k4", e4)}) \n' +
'</pre> \n' +
-' it follows that <span class="name">v1==v2</span>. \n' +
' </div><div class="anexample"> \n' +
+' <p> \n' +
+' The following descriptions \n' +
+' </p> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-' entity(c, [prov:type="collection"]) // e is a collection, possibly not empty \n' +
-' entity(v1) \n' +
-' entity(v2, [prov:type="collection"]) // v2 is a collection \n' +
-' \n' +
-' CollectionAfterInsertion(c1, c, k1, v1) // c1 <em>includes</em> { (k1,v1) } but may contain additional unknown pairs \n' +
-' CollectionAfterInsertion(c2, c1, k2, v2) // c2 includes { (k1,v1), (k2 v2) } where v2 is a collection with unknown state \n' +
+'derivedByInsertionFrom(c, c1, {("k1", e1)}) \n' +
+'derivedByRemovalFrom(c, c2, {"k2"}) \n' +
+'</pre> \n' +
+' have no interpretation. Nor have the following: \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'derivedByInsertionFrom(c, c1, {("k1", e1)}) \n' +
+'memberOf(c, {"k2"}). \n' +
'</pre> \n' +
' </div><div class="anexample"> \n' +
'<pre class="codeexample" xml:space="preserve"> \n' +
-' entity(c, [prov:type="emptyCollection"]) // e is an empty collection \n' +
-' entity(v1) \n' +
-' entity(v2) \n' +
+'entity(c0, [prov:type="prov:EmptyCollection" %% xsd:QName]) // c0 is an empty collection \n' +
+'entity(c1, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+'entity(c2, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+'entity(c3, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+'entity(e1) \n' +
+'entity(e2) \n' +
+'entity(e3) \n' +
' \n' +
-' CollectionAfterInsertion(c1, c, k1, v1) // c1 = { (k1,v1) } \n' +
-' wasDerivedFrom(c2, c1) // the asserted knows that c2 is somehow derived from c1, but cannot assert the precise sequence of updates \n' +
-' CollectionAfterInsertion(c3, c2, k2, v2) \n' +
+'derivedByInsertionFrom(c1, c0, {("k1", e1)}) \n' +
+'derivedByInsertionFrom(c2, c0, {("k2", e2)}) \n' +
+'derivedByInsertionFrom(c3, c1, {("k3", e3)}) \n' +
'</pre> \n' +
-' <p> \n' +
-' Here <span class="name">c3</span> includes <span class="name">{ (k2 v2) \n' +
-' }</span> but the earlier "gap" leaves uncertainty regarding <span class="name">(k1,v1)</span> (it may have been removed) or any other pair \n' +
-' that may have been added as part of the derivation activities. \n' +
-' </p> \n' +
-' </div><div class="note"> \n' +
-' Purely tentative \n' +
-' </div><div class="note"> \n' +
-' What is the meaning here? Is it any different? Are stating anything \n' +
-' about newer version of tr:prov-dm that occur after \n' +
-' 2011-12-15T12:00:00? \n' +
-' </div><div class="note"> \n' +
-' What is the meaning here? that only the version that was created by \n' +
-' this event is attributed to ex:Simon, but not previous ones. This \n' +
-' means that it is not specfied whether he was an author in anterior \n' +
-' versions. \n' +
-' </div><div class="note"> \n' +
-' Speculative, since we have not defined the destruction event (yet?. \n' +
-' What is the meaning here? that only the versions that existed during \n' +
-' this characterization interval were attributed to ex:Simon. \n' +
-' </div><span class="glossary" id="glossary-account"> An <dfn>account</dfn> is a \n' +
-' named bundle of provenance descriptions. </span><span class="glossary" id="glossary-entity"> <dfn id="concept-accountEntity">AccountEntity</dfn> is the category of entities \n' +
-' that are accounts, i.e. named bundles of provenance descriptions. </span><span class="conditional">If</span><span class="name">entity(e,attrs)</span><span class="name">wasAssociatedWith(a,e)</span><span class="name">a</span><span class="name">e</span><span class="name">attrs</span><span class="name">agent(e,attrs)</span><span class="name">e1</span><span class="name">e2</span><span class="conditional">if</span><span class="name">wasDerivedFrom(e2, e1, a, g2, u1, attrs)</span><span class="name">g2</span><span class="name">u1</span><span class="name">wasDerivedFrom(e2,e1,[prov:steps="single"] \n' +
-' cup; attrs)</span><span class="name">e1</span><span class="name">e2</span><span class="conditional">if</span><span class="name">wasDerivedFrom(e2, \n' +
-' e1, [prov:steps="single"] cup; attrs)</span><span class="name">wasDerivedFrom(e2,e1,attrs)</span><span class="conditional">If</span><span class="name">wasDerivedFrom(e2,e1)</span><span class="conditional">then</span><span class="name">a</span><span class="name">u</span><span class="name">g</span><span class="name">gAttrs</span><span class="name">uAttrs</span><span class="name">aAttrs</span><span class="name">wasGeneratedBy(g, \n' +
-' e2, a, attrs2)</span><span class="name">used(u, a, e1, \n' +
-' attrs1)</span><span class="name">e1</span><span class="name">e2</span><span class="name">attrs1</span><span class="name">attrs2</span><span class="name">a</span><span class="name">wasDerivedFrom(e2, \n' +
-' e1, a, g, u)</span><span class="name">wasDerivedFrom(e2,e1)</span><span class="name">e2</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="conditional">If</span><span class="name">wasDerivedFrom(e2,e1,t,attrs)</span><span class="conditional">then</span><span class="name">wasDerivedFrom(e2,e1,attrs)</span><span class="name">wasGeneratedBy(e2,t)</span><span class="name">specializationOf(e2,e1)</span><span class="name">specializationOf(e3,e2)</span><span class="name">specializationOf(e2,e1)</span><span class="name">specializationOf(e3,e1)</span><span class="name">specializationOf(e2,e1)</span><span class="name">specializationOf(e2,e1)</span><span class="name">specializationOf(e1,e2)</span><span class="name">alternateOf(e2,e1)</span><span class="name">alternateOf(e2,e1)</span><span class="name">alternateOf(e1,e2)</span><span class="name">e2</span><span class="name">e1</span><span class="conditional">If</span><span class="name">wasDerivedFrom(e2,e1,a,g2,u1)</span><span class="name">a</span><span class="name">g2</span><span class="name">u1</span><span class="conditional">then</span><span class="name">tracedTo(e2,e1)</span><span class="conditional">If</span><span class="name">wasDerivedFrom(e2,e1)</span><span class="conditional">then</span><span class="name">tracedTo(e2,e1)</span><span class="conditional">If</span><span class="name">wasGeneratedBy(e2,a,gAttr) \n' +
-' and wasAssociatedWith(a,e1)</span><span class="name">a</span><span class="name">gAttr</span><span class="conditional">then</span><span class="name">tracedTo(e2,e1)</span><span class="conditional">If</span><span class="name">wasGeneratedBy(e2,a,gAttr)</span><span class="name">wasAssociatedWith(a,e)</span><span class="name">actedOnBehalfOf(e,e1)</span><span class="name">a</span><span class="name">e</span><span class="name">gAttr</span><span class="conditional">then</span><span class="name">tracedTo(e2,e1)</span><span class="conditional">If</span><span class="name">wasGeneratedBy(e2,a,gAttr) \n' +
-' and wasStartedBy(a,e1,sAttr)</span><span class="name">a</span><span class="name">e</span><span class="name">gAttr</span><span class="name">sAttr</span><span class="conditional">then</span><span class="name">tracedTo(e2,e1)</span><span class="conditional">If</span><span class="name">tracedTo(e2,e)</span><span class="name">tracedTo(e,e1)</span><span class="name">e</span><span class="conditional">then</span><span class="name">tracedTo(e2,e1)</span><span class="conditional">If</span><span class="name">tracedTo(r2,r1,attrs)</span><span class="name">r2</span><span class="name">r1</span><span class="name">attrs</span><span class="conditional">then</span><span class="name">e<sup>0</sup></span><span class="name">e<sup>1</sup></span><span class="name">e<sup>n</sup></span><span class="name">nge;1</span><span class="name">e<sup>0</sup></span><span class="name">r2</span><span class="name">e<sup>n</sup></span><span class="name">r1</span><span class="name">0le;ile;n-1</span><span class="name">wasDerivedFrom(e<sup>i</sup>,e<sup>i+1</sup>,a,g2,u1)</span><span class="name">a</span><span class="name">g2</span><span class="name">u1</span><span class="name">wasDerivedFrom(e<sup>i</sup>,e<sup>i+1</sup>)</span><span class="name">wasBasedOn(e<sup>i</sup>,e<sup>i+1</sup>)</span><span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr) and \n' +
-' wasAssociatedWith(a,e<sup>i+1</sup>)</span><span class="name">a</span><span class="name">gAttr</span><span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr)</span><span class="name">wasAssociatedWith(a,e)</span><span class="name">actedOnBehalfOf(e,e<sup>i+1</sup>)</span><span class="name">a</span><span class="name">e</span><span class="name">gAttr</span><span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr) and \n' +
-' wasStartedBy(a,e<sup>i+1</sup>,sAttr)</span><span class="name">a</span><span class="name">e</span><span class="name">gAttr</span><span class="name">sAttr</span><span class="name">a1</span><span class="name">a2</span><span class="name">wasInformedBy(a2,a1)</span><span class="conditional">if and only if</span><span class="name">e</span><span class="name">attrs1</span><span class="name">attrs2</span><span class="name">wasGeneratedBy(e,a1,attrs1)</span><span class="name">used(a2,e,attrs2)</span><span class="name">wasInformedBy</span><span class="name">wasInformedBy(a3,a1)</span><span class="name">wasInformedBy(a2,a1)</span><span class="name">e1</span><span class="name">e1</span><span class="name">a1</span><span class="name">a2</span><span class="name">wasInformedBy(a3,a2)</span><span class="name">e2</span><span class="name">e2</span><span class="name">a2</span><span class="name">a3</span><span class="name">e1</span><span class="name">e2</span><span class="name">a3</span><span class="name">a1</span><span class="name">a3</span><span class="name">a1</span><span class="name">a2</span><span class="name">a1</span><span class="name">a1</span><span class="name">a2</span><span class="name">wasStartedBy(a2,a1)</span><span class="conditional">if and only if</span><span class="name">e</span><span class="name">gAttr</span><span class="name">sAttr</span><span class="name">wasGeneratedBy(e,a1,gAttr)</span><span class="name">wasStartedBy(a2,e,sAttr)</span><span class="name">wasStartedBy</span><span class="name">wasStartedBy</span><span class="name">wasStartedBy</span><span class="name">old</span><span class="name">new</span><span class="name">ag</span><span class="conditional">if</span><span class="name">wasRevisionOf(new,old,ag)</span><span class="conditional">then</span><span class="name">e</span><span class="name">eAttrs</span><span class="name">dAttrs</span><span class="name">wasDerivedFrom(new,old,dAttrs)</span><span class="name">entity(e,eAttrs)</span><span class="name">specializationOf(new,e)</span><span class="name">specializationOf(old,e)</span><span class="name">wasRevisionOf</span><span class="name">wasDerivedFrom</span><span class="name">e2</span><span class="name">e1</span><span class="name">wasDerivedFrom(e2,e1)</span><span class="conditional">If</span><span class="name">wasAttributedTo(e,ag)</span><span class="name">e</span><span class="name">ag</span><span class="conditional">then</span><span class="name">a</span><span class="name">attr1</span><span class="name">attr2</span><span class="name">t1</span><span class="name">t2</span><span class="conditional">If</span><span class="name">wasQuotedFrom(e2,e1,ag2,ag1,attrs)</span><span class="name">e2</span><span class="name">e1</span><span class="name">ag2</span><span class="name">ag1</span><span class="conditional">then</span><span class="name">w3:Consortium</span><span class="name">tr:WD-prov-dm-20111215</span><span class="name">e</span><span class="name">entity(e,av)</span><span class="name">av</span><span class="name">alternateOf</span><span class="name">a</span><span class="name">e</span><span class="name">attrs</span><span class="name">t</span><span class="conditional">if</span><span class="name">used(a,e,attrs)</span><span class="name">used(a,e,attrs,t)</span><span class="conditional">then</span><span class="name">e</span><span class="name">a</span><span class="name">a</span><span class="name">e</span><span class="name">attrs</span><span class="name">t</span><span class="conditional">if</span><span class="name">wasGeneratedBy(e,a,attrs)</span><span class="name">wasGeneratedBy(e,a,attrs,t)</span><span class="conditional">then</span><span class="name">e</span><span class="name">a</span><span class="name">a</span><span class="name">e2</span><span class="name">e1</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="name">e2</span><span class="name">a</span><span class="name">e1</span><span class="name">e2</span><span class="name">g2</span><span class="name">u1</span><span class="conditional">if</span><span class="name">wasDerivedFrom(e2,e1,a,g2,u1,attrs)</span><span class="name">wasDerivedFrom(e2,e1,[prov:steps="single"] cup; attrs)</span><span class="conditional">then</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="name">e1</span><span class="name">e2</span><span class="conditional">if</span><span class="name">wasDerivedFrom(e2,e1,[prov:steps="any"] cup; attrs)</span><span class="conditional">then</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="name">a1</span><span class="name">a2</span><span class="name">a1</span><span class="name">a2</span><span class="name">a1</span><span class="name">a2</span><span class="conditional">if</span><span class="name">wasInformedBy(a2,a1)</span><span class="conditional">then</span><span class="name">a1</span><span class="name">a2</span><span class="name">a1</span><span class="name">a2</span><span class="name">a1</span><span class="name">a2</span><span class="name">a1</span><span class="name">a2</span><span class="conditional">if</span><span class="name">wasStartedBy(a2,a1)</span><span class="conditional">then</span><span class="name">a1</span><span class="name">a2</span><span class="name">a</span><span class="name">ag</span><span class="conditional">if</span><span class="name">wasStartedBy(a,ag)</span><span class="conditional">then</span><span class="name">a</span><span class="name">ag</span><span class="name">a</span><span class="name">ag</span><span class="conditional">if</span><span class="name">wasAssociatedWith(a,ag)</span><span class="conditional">then</span><span class="name">a</span><span class="name">ag</span><span class="name">ag</span><span class="name">g1</span><span class="name">g2</span><span class="name">a0</span><span class="name">a1</span><span class="name">a2</span><span class="name">a2</span><span class="name">e</span><span class="name">a0</span><span class="name">e</span><span class="name">a0</span><span class="name">a2</span><span class="name">e</span><span class="name">e</span><span class="name">a1</span><span class="name">a2</span><span class="name">attrs1</span><span class="name">attrs2</span><span class="conditional">if</span><span class="name">wasGeneratedBy(id1,e,a1,attrs1)</span><span class="name">wasGeneratedBy(id2,e,a2,attrs2)</span><span class="conditional">then</span><span class="name">id1</span><span class="name">id2</span><span class="name">a1</span><span class="name">a2</span><span class="name">attrs1</span><span class="name">attrs2</span><span class="name">a</span><span class="name">e1</span><span class="name">e2</span><span class="name">attrs2</span><span class="conditional">if</span><span class="name">wasDerivedFrom(e2,e1, \n' +
-' [prov:steps="single"])</span><span class="name">wasGeneratedBy(e2,a,attrs2)</span><span class="conditional">then</span><span class="name">used(a,e1,attrs1)</span><span class="name">attrs1</span><span class="name">e2</span><span class="name">e1</span><span class="name">wasDerivedFrom(e2,e1)</span><span class="name">used(a,e1)</span><span class="name">wasGeneratedBy(e2,a,attrs2)</span><span class="name">e1</span><span class="name">e2</span><span class="name">c2</span><span class="name">(k1, v1)</span><span class="name">(k2, v2)</span><span class="name">c1</span><span class="name">c1==c2</span><span class="name">c1==c2, k1==k2, \n' +
-' v1==v2</span><span class="name">v1==v2</span><span class="name">c2</span><span class="name">c3</span><span class="name">{ (k2 v2) \n' +
-' }</span><span class="name">(k1,v1)</span><span class="name">tr:prov-dm</span><span class="name">tr:prov-dm</span><span class="name">tr:WD-prov-dm-20111215</span><span class="name">tr:WD-prov-dm-20111018</span><span class="name">w3:Consortium</span><span class="name">tr:prov-dm</span><span class="name">w3:Consortium</span><span class="name">ex:acc1</span><span class="name">ex:acc1</span><span class="name">tr:prov-dm</span><span class="name">tr:prov-dm</span></html> \n' +
+' From this set of descriptions, we conclude: \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+' c1 = { ("k1", e1) } \n' +
+' c2 = { ("k2", e2) } \n' +
+' c3 = { ("k1", e1), ("k3", e3)} \n' +
+'</pre> \n' +
+' </div><div class="anexample"> \n' +
+' In the example, the state of <span class="name">c2</span> is only \n' +
+' partially known because the collection is constructed from partially known \n' +
+' other collections. \n' +
+'<pre class="codeexample" xml:space="preserve"> \n' +
+'entity(c0, [prov:type="prov:EmptyCollection" %% xsd:QName]) // c0 is an empty collection \n' +
+'entity(c1, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+'entity(c2, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+'entity(c3, [prov:type="prov:Collection" %% xsd:QName]) \n' +
+'entity(e1) \n' +
+'entity(e2) \n' +
+' \n' +
+'derivedByInsertionFrom(c1, c0, {("k1", e1)}) \n' +
+'wasDerivedFrom(c2, c1) \n' +
+'derivedByInsertionFrom(c3, c2, {("k2", e2)}) \n' +
+' </pre> \n' +
+' From this set of descriptions, we conclude: \n' +
+' <ul> \n' +
+' <li> \n' +
+' <span class="name">c1 = { ("k1", e1) }</span> \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c2</span> is somehow derived from <span class="name">c1</span>, \n' +
+' but the precise sequence of updates is unknown \n' +
+' </li> \n' +
+' <li> \n' +
+' <span class="name">c3</span> includes <span class="name">("k2", e2)</span> \n' +
+' but the earlier "gap" leaves uncertainty regarding <span class="name">("k1", \n' +
+' e1)</span> (it may have been removed) or any other pair that may have \n' +
+' been added as part of the derivation activities. \n' +
+' </li> \n' +
+' </ul> \n' +
+' </div><span class="glossary" id="glossary-account"> An <dfn>account</dfn> is a \n' +
+' entity that contains a bundle of provenance descriptions. </span><span class="name">Account</span><span class="name">e</span><span class="name">t1</span><span class="name">t2</span><span class="conditional">if</span><span class="name">wasGeneratedBy(e, \n' +
+' -, t1)</span><span class="name">wasGeneratedBy(e, -, t2)</span><span class="name">t1</span><span class="name">t2</span><span class="name">activity(a,t1,t2,attrs1)</span><span class="name">wasStartedBy(id,a,e,t,attrs2)</span><span class="name">t</span><span class="name">t1</span><span class="name">activity(a,t1,t2,attrs1)</span><span class="name">wasEndedBy(id,a,e,t,attrs2)</span><span class="name">t</span><span class="name">t2</span><span class="name">a1</span><span class="name">a2</span><span class="name">wasInformedBy(a2,a1)</span><span class="conditional">if and only if</span><span class="name">e</span><span class="name">attrs1</span><span class="name">attrs2</span><span class="name">wasGeneratedBy(e,a1,-,attrs1)</span><span class="name">used(a2,e,-,attrs2)</span><span class="name">wasInformedBy</span><span class="name">wasInformedBy(a3,a1)</span><span class="name">wasInformedBy(a2,a1)</span><span class="name">e1</span><span class="name">e1</span><span class="name">a1</span><span class="name">a2</span><span class="name">wasInformedBy(a3,a2)</span><span class="name">e2</span><span class="name">e2</span><span class="name">a2</span><span class="name">a3</span><span class="name">e1</span><span class="name">e2</span><span class="name">a3</span><span class="name">a1</span><span class="name">a3</span><span class="name">a1</span><span class="name">a2</span><span class="name">a1</span><span class="name">a1</span><span class="name">a2</span><span class="name">wasStartedBy(a2,a1)</span><span class="conditional">if and only if</span><span class="name">e</span><span class="name">gAttr</span><span class="name">sAttr</span><span class="name">wasGeneratedBy(e,a1,-,gAttr)</span><span class="name">wasStartedBy(a2,e,-,sAttr)</span><span class="conditional">If</span><span class="name">wasAttributedTo(e,ag)</span><span class="name">e</span><span class="name">ag</span><span class="conditional">then</span><span class="name">a</span><span class="name">attr1</span><span class="name">attr2</span><span class="name">t1</span><span class="name">t2</span><span class="name">wasAssociatedWith(a, \n' +
+' ag, -, attr)</span><span class="name">wasAssociatedWith(a, -, \n' +
+' pl, attr)</span><span class="name">wasGeneratedBy(g, \n' +
+' e2, a, -, attrs2)</span><span class="name">used(u, a, e1, \n' +
+' -, attrs1)</span><span class="name">e1</span><span class="name">e2</span><span class="name">attrs1</span><span class="name">attrs2</span><span class="name">a</span><span class="name">wasDerivedFrom(e2, e1, a, g, u)</span><span class="name">wasDerivedFrom(e2,e1)</span><span class="name">e2</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="name">e1</span><span class="name">e2</span><span class="name">ag</span><span class="conditional">if</span><span class="name">wasRevisionOf(e2,e1,ag)</span><span class="conditional">then</span><span class="name">e</span><span class="name">eAttrs</span><span class="name">dAttrs</span><span class="name">wasRevisionOf(e2,e1,-,attr)</span><span class="name">wasRevisionOf</span><span class="name">wasDerivedFrom</span><span class="name">e2</span><span class="name">e1</span><span class="name">wasDerivedFrom(e2,e1)</span><span class="conditional">If</span><span class="name">wasQuotedFrom(e2,e1,ag2,ag1,attrs)</span><span class="name">e2</span><span class="name">e1</span><span class="name">ag2</span><span class="name">ag1</span><span class="conditional">then</span><span class="name">wasQuotedFrom(e2,e1,-,-,attrs)</span><span class="name">e2</span><span class="name">e1</span><span class="conditional">If</span><span class="name">wasDerivedFrom(e2,e1,a,g2,u1)</span><span class="name">a</span><span class="name">g2</span><span class="name">u1</span><span class="conditional">then</span><span class="name">tracedTo(e2,e1)</span><span class="conditional">If</span><span class="name">wasDerivedFrom(e2,e1)</span><span class="conditional">then</span><span class="name">tracedTo(e2,e1)</span><span class="conditional">If</span><span class="name">wasAttributedTo(e2,ag1,aAttr)</span><span class="conditional">then</span><span class="name">tracedTo(e2,ag1)</span><span class="conditional">If</span><span class="name">wasAttributedTo(e2,ag2,aAttr)</span><span class="name">wasGeneratedBy(e2,a,gAttr)</span><span class="name">actedOnBehalfOf(ag2,ag1,a,rAttr)</span><span class="name">a</span><span class="name">ag2</span><span class="name">ag1</span><span class="name">aAttr</span><span class="name">gAttr</span><span class="name">rAttr</span><span class="conditional">then</span><span class="name">tracedTo(e2,ag1)</span><span class="conditional">If</span><span class="name">wasGeneratedBy(e2,a,gAttr)</span><span class="name">wasStartedBy(a,e1,sAttr)</span><span class="name">a</span><span class="name">gAttr</span><span class="name">sAttr</span><span class="conditional">If</span><span class="name">tracedTo(e2,e)</span><span class="name">tracedTo(e,e1)</span><span class="name">e</span><span class="conditional">then</span><span class="name">tracedTo(e2,e1)</span><span class="conditional">If</span><span class="name">tracedTo(r2,r1,attrs)</span><span class="name">r2</span><span class="name">r1</span><span class="name">attrs</span><span class="conditional">then</span><span class="name">e<sup>0</sup></span><span class="name">e<sup>1</sup></span><span class="name">e<sup>n</sup></span><span class="name">nge;1</span><span class="name">e<sup>0</sup></span><span class="name">r2</span><span class="name">e<sup>n</sup></span><span class="name">r1</span><span class="name">0le;ile;n-1</span><span class="name">wasDerivedFrom(e<sup>i</sup>,e<sup>i+1</sup>,a,g2,u1)</span><span class="name">a</span><span class="name">g2</span><span class="name">u1</span><span class="name">wasDerivedFrom(e<sup>i</sup>,e<sup>i+1</sup>)</span><span class="name">wasAttributedTo(e<sup>i</sup>,e<sup>i+1</sup>)</span><span class="name">wasAttributedTo(e<sup>i</sup>,e)</span><span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr)</span><span class="name">actedOnBehalfOf(e,e<sup>i+1</sup>,a,rAttr)</span><span class="name">a</span><span class="name">e</span><span class="name">gAttr</span><span class="name">rAttr</span><span class="name">wasGeneratedBy(e<sup>i</sup>,a,gAttr) and \n' +
+' wasStartedBy(a,e<sup>i+1</sup>,sAttr)</span><span class="name">a</span><span class="name">e</span><span class="name">gAttr</span><span class="name">sAttr</span><span class="name">specializationOf(e1,e2)</span><span class="name">T1-2</span><span class="name">specializationOf(e2,e3)</span><span class="name">T2-3</span><span class="name">T1-2</span><span class="name">T2-3</span><span class="name">e2</span><span class="name">alternate(e,e)</span><span class="name">e</span><span class="name">e</span><span class="name">alternate(e1,e2)</span><span class="name">e</span><span class="name">e1</span><span class="name">e2</span><span class="name">e</span><span class="name">alternate(e2,e1)</span><span class="name">alternate(e1,e2)</span><span class="name">e1-2</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1-2</span><span class="name">alternate(e2,e3)</span><span class="name">e2-3</span><span class="name">e2</span><span class="name">e3</span><span class="name">e2-3</span><span class="name">e1-3</span><span class="name">e1</span><span class="name">e3</span><span class="name">womanInRedDress</span><span class="name">customerInChairAt7pm</span><span class="name">customerInChairAt6pm</span><span class="name">customerInChairAt7pm</span><span class="name">womanInRedDress</span><span class="name">customerInChairAt6pm</span><span class="name">w3:Consortium</span><span class="name">tr:WD-prov-dm-20111215</span><span class="name">e</span><span class="name">entity(e,attrs)</span><span class="name">attrs</span><span class="name">alternateOf</span><span class="name">a</span><span class="name">e</span><span class="name">attrs</span><span class="name">t</span><span class="conditional">if</span><span class="name">used(a,e,attrs)</span><span class="name">used(a,e,attrs,t)</span><span class="conditional">then</span><span class="name">e</span><span class="name">a</span><span class="name">a</span><span class="name">e</span><span class="name">attrs</span><span class="name">t</span><span class="conditional">if</span><span class="name">wasGeneratedBy(e,a,attrs)</span><span class="name">wasGeneratedBy(e,a,attrs,t)</span><span class="conditional">then</span><span class="name">e</span><span class="name">a</span><span class="name">a</span><span class="name">e2</span><span class="name">e1</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="name">e2</span><span class="name">a</span><span class="name">e1</span><span class="name">e2</span><span class="name">g2</span><span class="name">u1</span><span class="conditional">if</span><span class="name">wasDerivedFrom(e2,e1,a,g2,u1,attrs)</span><span class="conditional">then</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="name">e2</span><span class="conditional">if</span><span class="name">wasDerivedFrom(e2,e1, attrs)</span><span class="conditional">then</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="name">e2</span><span class="name">e1</span><span class="name">e2</span><span class="name">a1</span><span class="name">a2</span><span class="name">a1</span><span class="name">a2</span><span class="name">a1</span><span class="name">a2</span><span class="conditional">if</span><span class="name">wasInformedBy(a2,a1)</span><span class="conditional">then</span><span class="name">a1</span><span class="name">a2</span><span class="name">a2</span><span class="name">a1</span><span class="name">a1</span><span class="name">a2</span><span class="name">a1</span><span class="name">a2</span><span class="conditional">if</span><span class="name">wasStartedBy(a2,a1)</span><span class="conditional">then</span><span class="name">a1</span><span class="name">a2</span><span class="name">a</span><span class="name">e</span><span class="conditional">if</span><span class="name">wasStartedBy(a,e)</span><span class="conditional">then</span><span class="name">a</span><span class="name">e</span><span class="name">a</span><span class="name">e</span><span class="conditional">if</span><span class="name">wasEndedBy(a,e)</span><span class="conditional">then</span><span class="name">a</span><span class="name">e</span><span class="name">a</span><span class="name">ag</span><span class="conditional">if</span><span class="name">wasAssociatedWith(a,ag)</span><span class="conditional">then</span><span class="name">a</span><span class="name">ag</span><span class="name">ag</span><span class="name">e</span><span class="name">ag</span><span class="conditional">if</span><span class="name">wasAttributedWith(e,ag)</span><span class="conditional">then</span><span class="name">e</span><span class="name">ag</span><span class="name">ag</span><span class="name">ag1</span><span class="name">ag2</span><span class="conditional">if</span><span class="name">actedOnBehalfOf(ag2,ag1)</span><span class="conditional">then</span><span class="name">ag2</span><span class="name">ag1</span><span class="name">ag1</span><span class="name">ag2</span><span class="name">g1</span><span class="name">g2</span><span class="name">a0</span><span class="name">a1</span><span class="name">a2</span><span class="name">a2</span><span class="name">e</span><span class="name">a0</span><span class="name">e</span><span class="name">a0</span><span class="name">a2</span><span class="name">e</span><span class="name">e</span><span class="name">a1</span><span class="name">a2</span><span class="name">t1</span><span class="name">t2</span><span class="name">attrs1</span><span class="name">attrs2</span><span class="conditional">if</span><span class="name">wasGeneratedBy(id1, e, a1, t1, attrs1)</span><span class="name">wasGeneratedBy(id2, e, a2, t2, attrs2)</span><span class="conditional">then</span><span class="name">id1</span><span class="name">id2</span><span class="name">a1</span><span class="name">a2</span><span class="name">t1</span><span class="name">t2</span><span class="name">attrs1</span><span class="name">attrs2</span><span class="name">a</span><span class="name">e1</span><span class="name">e2</span><span class="name">dAttrs</span><span class="name">gAttrs</span><span class="conditional">if</span><span class="name">wasDerivedFrom(e2,e1, a, dAttrs)</span><span class="name">wasGeneratedBy(e2,a,-,gAttrs)</span><span class="conditional">then</span><span class="name">used(a,e1,-,uAttrs)</span><span class="name">uAttrs</span><span class="name">e2</span><span class="name">e1</span><span class="name">wasDerivedFrom(e2,e1)</span><span class="name">used(a,e1,-)</span><span class="name">wasGeneratedBy(e2,a,-)</span><span class="name">e1</span><span class="name">e2</span><span class="name">memberOf(c, {(k1, v1), ...})</span><span class="conditional">if and only if</span><span class="name">c0</span><span class="name">derivedByInsertionFrom(c, \n' +
+' c0, {(k1, v1), ...})</span><span class="name">c3</span><span class="name">c</span><span class="name">c1</span><span class="name">c2</span><span class="name">c1 = { ("k1", e1) }</span><span class="name">c2</span><span class="name">c1</span><span class="name">c3</span><span class="name">("k2", e2)</span><span class="name">("k1", \n' +
+' e1)</span></html> \n' +
' ' ;