--- a/model/ProvenanceModel.html Wed Sep 07 20:02:29 2011 +0100
+++ b/model/ProvenanceModel.html Wed Sep 07 21:58:30 2011 +0100
@@ -112,6 +112,8 @@
formal semantics.
</p>
+<div class='issue'>The name of the data model still has to be decided by the WG. Current placeholder name is PIDM. This is <a href="http://www.w3.org/2011/prov/track/issues/31">ISSUE-31</a></div>
+
<p>
This is a document for internal discussion, which will ultimately
evolve in the first Public Working Draft of the Conceptual Model.</p>
@@ -192,6 +194,10 @@
[[PROV-SEMANTICS]] and its encoding in the OWL2 Web Ontology Language at [[PROV-OWL2]].
</p>
+<div class='resolved'>Data model vs Language. Misc comments raised at <a href="http://www.w3.org/2011/prov/track/issues/62">ISSUE-62</a></div>
+
+<div class='issue'>Formalism used is not explained, not applied to concepts <a href="http://www.w3.org/2011/prov/track/issues/87">ISSUE-87</a>.</div>
+
</section>
@@ -302,7 +308,7 @@
<section>
<h3>Encoding using the Provenance Abstract Syntax Notation</h3>
-In this section, the example is encoded according to the provenance data model (specified in section <a href="#data-model-concepts">concepts</a>) and expressed in the Provenance Abstract Syntax Notation. Details about the Provenance Abstract Syntax Notation can be found in <a href="#PASN-convention">appendix</a>.
+In this section, the example is encoded according to the provenance data model (specified in section <a href="#data-model-concepts">concepts</a>) and expressed in the Provenance Abstract Syntax Notation.
<p>
Entities (construct described in <a href="#expression-Entity">Section Entity</a>). The file in its various forms and its copies are modelled as entities.
<pre>
@@ -443,19 +449,10 @@
<section >
<h2>About the Provenance Data Model</h2>
-<div class='issue'>The name of the data model still has to be decided by the WG. Current placeholder name is PIDM. This is <a href="http://www.w3.org/2011/prov/track/issues/31">ISSUE-31</a></div>
-
-<div class='resolved'>Data model vs Language. Misc comments raised at <a href="http://www.w3.org/2011/prov/track/issues/62">ISSUE-62</a></div>
-
-
-<p>In the world (whether real or not), there are things, which can be
-physical, digital, conceptual, or otherwise, and activities involving
-things. Words such thing or activity should be understood with
-their informal meaning.</p>
-
-<p>Furthermore, this specification is concerned with <em>characterized
-things</em>, that is, things and their situation in
-the world, as characterized by their asserters.</p>
+
+<div class='note'>This section is now obsolete and should be deleted. We need to check that the following text has been captured elsewhere.</div>
+
+
<p>
In the rest of the document, we are concerned with the representation of such things; their situation in the world will be represented using sets of attributes.
@@ -468,33 +465,7 @@
</p>
-<p>This specification defines a data model for provenance (placeholder acronym PIDM) and relies on a language, the <a href="#PASN-convention">Provenance Abstract Syntax Notation</a>, to express
-<em>instances</em> of that data model.</p>
-
-<div class='issue'>Formalism used is not explained, not applied to concepts <a href="http://www.w3.org/2011/prov/track/issues/87">ISSUE-87</a>.</div>
-
-
-<p>PIDM is a provenance data model designed to express representations
-of the world. These representations are relative to an asserter, and
-in that sense constitute assertions characterizing the
-world. Different asserters will normally contribute different
-representations, and no attempt is made to define a notion of
-consistency of such different sets of assertions. The data model
-provides the means to associate attribution to assertions.
-</p>
-
-
-
-<p>The data model is designed to capture events that happened in the past, as opposed to event
-that may or will happen.
-However, this distinction is not formally enforced.
-Therefore, all PIDM assertions SHOULD be interpreted as a record of what has happened, as opposed to what may or will happen.</p>
-
-<div class='note'>Can this be enforced formally?</div>
-
-<p>
-This specification does not prescribe the means by which an asserter arrives at assertions; for example, assertions can be composed on the basis of observations, inferences, or any other means.
-</p>
+
<p>The data model includes a notion of "provenance container" that is
@@ -511,9 +482,6 @@
-<p>
-Sometimes, inferences about the world can be made from assertions of the provenance data model. When this is the case, this specification defines such inferences.
-</p>
<p> In this specification, the qualifier 'identifiable' is implicit whenever a reference is made to an activity or characterized thing.</p>
@@ -563,7 +531,7 @@
<section id="expression-node">
<h3>Node</h3>
-<div class='note'>What name to choose for this category of expressions, it's too graph-oriented.</div>
+<div class='note'>What name to choose for this category of expressions, 'node' is too graph-oriented.</div>
<section id="expression-Entity">
@@ -1473,8 +1441,7 @@
<p>A <dfn id="dfn-Participation">participation expression</dfn> is a representation of the involvment of a characterized thing in an activity. A participation expression can be asserted or inferred.</p>
-<p>In the Provenance Abstract Syntax Notation, a participation expression's text matches the <span class="nonterminal">participation</span> production of the grammar defined in this specification document.
-</p>
+<p>In the Provenance Abstract Syntax Notation, a participation expression's text matches the <span class="nonterminal">participation</span> production of the grammar defined in this specification document.</p>
<div class='grammar'>
@@ -1547,7 +1514,12 @@
<section id="expression-ProvenanceContainer">
<h4>Provenance Container</h4>
-<p>A <dfn id="dfn-ProvenanceContainer">Provenance Container</dfn> is an identifiable wrapper for a set of PIDM constructs, which allows for additional meta-information pertaining to these constructs to be expressed. A provenance container MAY contain other provenance containers.</p>
+<p>A <dfn id="dfn-ProvenanceContainer">provenance container expression</dfn> is an identifiable wrapper for a set of PIDM expressions, which allows for additional meta-information pertaining to these expressions to be expressed and associated with them. A provenance container expression MAY contain other provenance containers.</p>
+
+<p>Such meta-information may be asserter, date of creation, justification for assertions, and cryptographic signature. </p>
+
+<p>In the Provenance Abstract Syntax Notation, a provenance container expression's text matches the <span class="nonterminal">provenanceContainer</span> production of the grammar defined in this specification document.</p>
+
<div class='grammar'>
<span class="nonterminal">provenanceContainer</span> :=
@@ -1555,33 +1527,73 @@
<span class="name">(</span>
<span class="nonterminal">identifier</span>
<span class="name">,</span>
-{<span class="nonterminal">expression</span> }
+<span class="name">[</span>
+{ <span class="nonterminal">expression</span> }
+<span class="name">]</span>
<span class="name">)</span>
</div>
-
-<p>Such meta-information may be asserter, date of creation, justification for assertions, and cryptographic signature. </p>
-
-
-<p>A provenance container construct, noted <span class="name">provenanceContainer(id, constructs)</span>:
+<p>An instance of a provenance container expression, noted <span class="name">provenanceContainer(id, constructs)</span> in the Provenance Abstract Syntax Notation:
<ul>
-<li> contains an identifier <span class="name">id</span>;</li>
-<li> contains a set of provenance constructs <span class="name">constructs</span>.</li>
+<li> contains an identifier <span class="name">id</span> intended to name this provenance container;</li>
+<li> contains zero or more provenance constructs <span class="name">constructs</span>.</li>
</ul>
<p>How general meta-information is expressed is beyond the scope of this specification, except for a few key metatypes specified in the <a href="#expression-Account">Account</a> construct.</p>
+<p>
+The following container expression
+<pre class="example">
+containerExpression(v, [
+ entity(e1, [ type: "File", location: "/shared/crime.txt", creator: "Alice", content: "" ])
+ wasGeneratedBy(e1,pe0,outContent)
+ processExecution(pe0,create-file,t)
+ ...
+ ] )
+</pre>
+contains a set of provenance expressions and identified by <span class="name">v</span>.
+</p>
+
<div class='pending'>Asserter needs to be defined. This is <a href="http://www.w3.org/2011/prov/track/issues/51">ISSUE-51</a>.</div>
-</p>
+<div class='note'>The scope of identifiers needs to be discussed. We should recycle the following text which appeared in a previous version.
+
+<p>The data model includes a notion of "provenance container" that is
+ a logical grouping for a set of assertions. It serves multiple
+ purposes. First, it provides a way to attach various metadata to the
+ set of assertions. Second, it provides a scope in which some constraints may apply.
+ Third, it provides a default scope for
+ identifiers used in assertions. This means that identifiers are
+ expected to be resolvable only within the scope of a container,
+ rather than globally. Optionally, identifiers can be exported so that
+ they can be used outside their default scope. Finally, the data
+ model does not prescribe the mechanisms by which identifiers are
+ generated.</p>
+
+
+</div>
+
+<div class='issue'>Scope and Identifiers. This is <a href="http://www.w3.org/2011/prov/track/issues/81">ISSUE-81</a>.</div>
+
</section>
<section id="expression-Account">
<h3>Account</h3>
-<p>An <dfn id="dfn-Account">Account</dfn> is a special kind of provenance container forming a perspective on the world. </p>
+<p>An <dfn id="dfn-Account">account expression</dfn> is a special kind of provenance container expression forming a perspective on the world, enriched as follows:
+<ul>
+<li> An account has a mandatory asserter.
+<li> An account provides a scope for some constraints associated with the constructs it wraps, such as:
+<ul>
+<li> the uniqueness of generation for a given entity (see <a href="#generation-unicity">generation-unicity</a>).
+<li> inference of use (see <a href="#derivation-use">derivation-use</a>).
+</ul>
+</ul>
+ </p>
+
+<p>In the Provenance Abstract Syntax Notation, an account expression's text matches the <span class="nonterminal">account</span> production of the grammar defined in this specification document.</p>
<div class='grammar'>
<span class="nonterminal">account</span> :=
@@ -1591,28 +1603,57 @@
<span class="name">,</span>
<span class="nonterminal">identifier</span>
<span class="name">,</span>
-{<span class="nonterminal">expression</span> }
+<span class="name">[</span>
+{ <span class="nonterminal">expression</span> }
+<span class="name">]</span>
<span class="name">)</span>
</div>
-<p>An account has a mandatory asserter.</p>
-
-<p>An account provides a scope for some constraints associated with the constructs it wraps, such as the uniqueness of generation for a given entity.</p>
-
-
-
-<p>An account construct, noted <span class="name">account(id, asserter, constructs)</span>:
+<p>An instance of an account expression, noted <span class="name">account(id, a, constructs)</span> in the Provenance Abstract Syntax Notation:
<ul>
-<li> contains an identifier <span class="name">id</span>;</li>
-<li> refers to an agent <span class="name">asserter</span>;</li>
+<li> contains an identifier <span class="name">id</span> intended to name this account;</li>
+<li> refers to an agent denoted by identifier <span class="name">a</span>;</li>
<li> contains a set of provenance constructs <span class="name">constructs</span>.</li>
</ul>
</p>
+<p>
+The following account expression
+<pre class="example">
+entity(a1, [])
+agent(a1)
+account(v1,a1, [
+ entity(e1, [ type: "File", location: "/shared/crime.txt", creator: "Alice", content: "" ])
+ wasGeneratedBy(e1,pe0,outContent)
+ processExecution(pe0,create-file,t)
+ ...
+ ] )
+</pre>
+contains a set of provenance expressions, is asserted by agent <span class="name">a1</span>, is referred to by identifier <span class="name">v1</span>.
+</p>
+
<p> The union of two accounts can be defined by forming a container
-containing the unions of their respective constructs. Accounts are not
-closed under union because the constraints may no longer be satisfied
-in the resulting union. </p>
+containing the unions of their respective expression. Accounts are not
+closed under union because the
+constraint <a href="#generation-unicity">generation-unicity</a> may no
+longer be satisfied in the resulting union. </p>
+
+
+<p>
+Indeed, let us consider another account expression
+<pre class="example">
+entity(a2, [])
+agent(a2)
+account(v2,a2, [
+ entity(e1, [ type: "File", location: "/shared/crime.txt", creator: "Alice", content: "" ])
+ wasGeneratedBy(e1,pe1,outContent)
+ processExecution(pe1,create-file,t1)
+ ...
+ ] )
+</pre>
+with identifier <span class="name">v3</span>, and containing assertions by agent denoted by <span class="name">a2</span> stating that entity denoted by <span class="name">e1</span> was generated by process execution <span class="name">pe1</span> instead of <span class="name">pe0</span> in agent <span class="name">a1</span>'s account <span class="name">v1</span>. If both account are merged together, the resulting set of expressions violates <a href="#generation-unicity">generation-unicity</a>.
+</p>
+
</section>
</section>
@@ -1867,128 +1908,15 @@
<section id='PASN-convention'>
<h3>Provenance Abstract Syntax Notation Conventions</h3>
+
+
+<div class='note'>This appendix is now obsolete. It should be deleted, making sure all information has been transcribed where appropriate, and all cross-references delete.</div>
+
<ul>
<li>Constructs are expressed as <span class="name">name(arg0, arg1, ...)</span>, where the name of the construct occurs first, and is followed by its arguments.</li>
<li>For use, generation, and derivation event, the first argument is the 'effect' (i.e. most recent item) and the second argument is the 'cause' (i.e. least recent item). This order is compatible with the temporal layout of the graphical notation.
</li>
-<li> Preliminary BNF grammar for the Provenance Abstract Syntax Notation
-<pre data-include='grammar.html'></pre>
-
-<div class='grammar'>
-<span class="nonterminal">expression</span> :=
-<span class="nonterminal">node</span> <!-- better name than node?? -->
-| <span class="nonterminal">relation</span>
-| <span class="nonterminal">bundle</span>
-<br/>
-<!-- -->
-<span class="nonterminal">node</span> :=
-<span class="nonterminal">entity</span>
-|<span class="nonterminal">processExecution</span>
-|<span class="nonterminal">agent</span> <br/>
-<!-- -->
-<span class="nonterminal">relation</span> :=
-<span class="nonterminal">generation</span>
-|<span class="nonterminal">use</span>
-|<span class="nonterminal">derivation</span>
-|<span class="nonterminal">control</span>
-|<span class="nonterminal">complement</span>
-|<span class="nonterminal">peOrdering</span>
-|<span class="nonterminal">revision</span>
-|<span class="nonterminal">participation</span> <br/>
-<!-- -->
-<span class="nonterminal">bundle</span> :=
-|<span class="nonterminal">container</span>
-|<span class="nonterminal">account</span> <br/>
-<!-- -->
-<br/>
-<span class="nonterminal">entity</span> :=
-<span class="name">entity</span>
-<span class="name">(</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="name">[</span>
-<span class="nonterminal">attribute-values</span>
-<span class="name">]</span>
-<span class="name">)</span><br/>
-<!-- -->
-<span class="nonterminal">attribute-values</span> :=
-<span class="nonterminal">attribute-value</span>
-|<span class="nonterminal">attribute-value</span> <span class="name">,</span> <span class="nonterminal">attribute-values</span>
-<br/>
-<span class="nonterminal">attribute-value</span> :=
-<span class="nonterminal">attribute</span>
-<span class="name">:</span>
-<span class="nonterminal">Literal</span>
-<br/>
-<br/>
-
-<!-- -->
-<span class="nonterminal">generation</span> :=
-<span class="name">wasGeneratedBy</span>
-<span class="name">(</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="nonterminal">role</span>
-<span class="name">)</span><br/>
-<br/>
-
-<!-- -->
-<span class="nonterminal">use</span> :=
-<span class="name">used</span>
-<span class="name">(</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="nonterminal">role</span>
-<span class="name">)</span><br/>
-<br/>
-
-<!-- -->
-<span class="nonterminal">derivation</span> := <br/>
-<span class="name">wasDerivedFrom</span>
-<span class="name">(</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="nonterminal">processExecution</span>
-<span class="name">,</span>
-<span class="nonterminal">role</span>
-<span class="name">,</span>
-<span class="nonterminal">role</span>
-<span class="name">)</span><br/>
-| <span class="name">wasDerivedFrom</span>
-<span class="name">(</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="nonterminal">identifier</span>
-<span class="name">)</span><br/>
-| <span class="name">wasEventuallyDerivedFrom</span>
-<span class="name">(</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="nonterminal">identifier</span>
-<span class="name">)</span><br/>
-| <span class="name">dependedOn</span>
-<span class="name">(</span>
-<span class="nonterminal">identifier</span>
-<span class="name">,</span>
-<span class="nonterminal">identifier</span>
-<span class="name">)</span><br/>
-<!-- -->
-<br/>
-<span class="nonterminal">identifier</span> := <span class="nonterminal">token</span><br/>
-<span class="nonterminal">role</span> := <span class="nonterminal">token</span><br/>
-<span class="nonterminal">attribute</span> := <span class="nonterminal">token</span><br/>
-<span class="nonterminal">Literal</span> := <span class="nonterminal">string</span> <!-- to be revisited -->
-|<span class="nonterminal">number</span>
-|<span class="nonterminal">time</span><br/>
-<br/>
-</div>
-</li>
+
</ul>
</section>