--- a/model/prov-n.html Mon Mar 26 21:11:35 2012 +0100
+++ b/model/prov-n.html Mon Mar 26 22:21:37 2012 +0100
@@ -184,36 +184,44 @@
<section id="abstract">
<p>
-PROV-DM is a data model for provenance that describes
-the entities, people and activities involved in
-producing a piece of data or thing in the world. PROV-DM is
-domain-agnostic, but is equipped with extensibility points allowing
-further domain-specific and application-specific extensions to be
-defined. PROV-DM is accompanied by PROV-N, a technology-independent
-notation, which allows serializations of PROV-DM
-instances to be created for human consumption, which facilitates the
-mapping of PROV-DM to concrete syntax, and which is used as the basis for a
+PROV-DM, the PROV data model, is a data model for provenance that describes the entities, people and activities involved in producing a piece of data or thing. PROV-DM is structured in six components, dealing with: (1) entities and activities, and the time at which they were created, used, or ended; (2) agents bearing responsibility for entities that were generated and actities that happened; (3) derivations between entities; (4) properties that link entities that refer to a same thing; (5) collections of entities, whose provenance can itself be tracked; (6) a simple annotation mechanism.
+<p>
+To provide examples of the PROV data model, the PROV notation (PROV-N) is introduced: aimed at human consumption, PROV-N allows serializations of PROV-DM
+instances to be created in a compact manner. PROV-N facilitates the
+mapping of the PROV data model to concrete syntax, and is used as the basis for a
formal semantics of PROV-DM. The purpose of this document is to define the PROV-N notation.
</p>
</section>
<section id="sotd">
-<div class="note">TODO</div>
-<section id="prov-family">
-<!-- <h3>Prov Family of Specifications</h3>-->
+<h4>PROV Family of Specifications</h4>
This document is part of the PROV family of specifications, a set of specifications aiming to define the various aspects that are necessary to achieve the vision of inter-operable
-interchange of provenance information in heterogeneous environments such as the Web. This document defines the PROV-DM data model for provenance, accompanied with a notation to express
-instances of that data model for human consumption. Other documents are:
+interchange of provenance information in heterogeneous environments such as the Web. The specifications are as follows.
<ul>
-<li> PROV-DM-CONSTRAINTS, a set of constraints applying to the PROV-DM data model,</li>
-<li> PROV-N, a notation for provenance aimed at human consumption,</li>
-<li> PROV-O, the provenance ontology: by means of a mapping of PROV-DM to the OWL2 Web Ontology Language, this specification provides a normative serialization of PROV-DM in RDF</li>
-<li> PROV-AQ, provenance access and query: the mechanisms for accessing and querying provenance; </li>
-<li> PROV-PRIMER: a primer for the PROV-DM provenance data model,</li>
-<li> PROV-SEM: a formal semantics for the PROV-DM provenance data model.</li>
+<li> PROV-DM, the PROV data model for provenance,</li>
+<li> PROV-DM-CONSTRAINTS, a set of constraints applying to the PROV data model,</li>
+<li> PROV-N, a notation for provenance aimed at human consumption (this document),</li>
+<li> PROV-O, the PROV ontology, an OWL-RL ontology allowing the mapping of PROV to RDF;</li>
+<li> PROV-AQ, the mechanisms for accessing and querying provenance; </li>
+<li> PROV-PRIMER: a primer for the PROV provenance data model,</li>
+<li> PROV-SEM: a formal semantics for the PROV data model.</li>
+<li> PROV-XML: an XML schema for PROV data model.</li>
</ul>
+<h4>How to read the PROV Family of Specifications</h4>
+<ul>
+<li>The primer is the entry point to PROV offering a pedagogical presentation of the provenance model.</li>
+<li>The Linked Data and Semantic Web community should focus on PROV-O defining PROV classes and properties specified in an OWL-RL ontology. For further details, PROV-DM and PROV-DM-CONSTRAINTS specify the constraints applicable to the data model, and its interpretation. PROV-SEM provides a mathematical semantics.</li>
+<li>The XML community will focus on PROV-XML defining an XML schema for PROV-DM. For further details can also be found in PROV-DM, PROV-DM-CONSTRAINTS, and PROV-SEM.</li>
+<li>Developers seeking to retrieve or publish provenance should focus of PROV-AQ.</li>
+<li>Readers seeking to implement other PROV serializations
+should focus on PROV-DM and PROV-DM-CONSTRAINTS. PROV-O, PROV-N, PROV-XML offer examples of mapping to RDF, text, and XML, respectively.</li>
+</ul>
+
+
+<h4>Fourth Public Working Draft</h4>
+<p>This is the fourth public release of the PROV-DM document. Following feedback, the Working Group has decided to reorganize this document substantially, separating the data model, from its contraints, and the notation used to illustrate it. The PROV-DM release is synchronized with the release of the PROV-O, PROV-PRIMER, PROV-N, PROV-DM-CONSTRAINTS documents. We are now making clear what the entry path to the PROV family of specifications is.</p>
</section>
-</section>
+
@@ -238,11 +246,11 @@
</p>
-<p>In this context, PROV-N was introduced as a notation to write instances of the data model, as close to its abstract syntax as possible. PROV-N is primarily aimed at human consumption. PROV-N allows
+<p>In this context, PROV-N is introduced as a notation to write instances of the PROV data model, as close to its abstract syntax as possible. PROV-N is primarily aimed at human consumption. PROV-N allows
serializations of PROV-DM instances to be written in a technology independent manner.
So far, PROV-N has been used in the following ways:</p>
<ul>
-<li> PROV-N is used to provide technology independent illustrations in [[PROV-DM]] and in the definition of PROV-DM constraints [[PROV-DM-CONSTRAINTS]];</li>
+<li> PROV-N is used to provide technology independent illustrations of provenance in [[PROV-DM]] and in the definition of PROV-DM constraints [[PROV-DM-CONSTRAINTS]];</li>
<li> PROV-N is instrumental in defining the mapping mapping of PROV-DM to concrete syntaxes. Mappings translate each PROV-N expression to RDF [[PROV-RDF]] and to XML [[PROV-XML]];</li>
<li> PROV-N is the basis for a
formal semantics, in which each PROV-N expression is provided with an interpretation [[PROV-SEM]].
@@ -254,27 +262,20 @@
For each construct of PROV-DM, a corresponding PROV-N expression is introduced, by way of a production in the PROV-N grammar presented in this document. </p>
-<p>This specification is one of several specifications, referred to as the PROV family of specifications, defining the various aspects
-that are necessary to achieve the vision of inter-operable exchange of provenance:</p>
-<ul>
-<li>A data model for provenance, which is presented in three documents:
-<ul>
-<li> PROV-DM (part I): the provenance data model itself, expressed in natural language [[PROV-DM]];
-<li> PROV-DM-CONSTRAINTS (part II): constraints underpinning the data model [[PROV-DM-CONSTRAINTS]];
-<li> PROV-N (part III): a notation to express instances of that data model for human consumption (this document);
-</ul>
-</li>
-
-<li>PROV-O: a normative serialization of PROV-DM in RDF [[!PROV-O]], specified by means of a mapping to the OWL2 Web Ontology Language [[!OWL2-SYNTAX]];</li>
-<li>PROV-AQ: the mechanisms for accessing and querying provenance [[PROV-AQ]];</li>
-<li>PROV-PRIMER: a primer for the PROV approach [[PROV-PRIMER]];</li>
-<li>PROV-SEM: semantics of the PROV-DM data model [[PROV-SEM]];</li>
-</ul>
-
<section id="structure-of-this-document">
<h3>Structure of this Document</h3>
-<div class='note'>TODO</div>
+<p><a href="#prov-n-rationale">Section 2</a> provides the design rationale for the PROV Notation.</p>
+
+<p><a href="#grammar-notation">Section 3</a> defines the notation for the Extended Backus-Naur Form (EBNF) grammar used in this specification.</p>
+
+<p><a href="#prov-n-expressions">Section 4</a> presents the grammar of all expressions of the language, presented one by one, and grouped according to PROV-DM components.</p>
+
+<p><a href="#ExpressionContainer">Section 5</a> defines the grammar of containers, a house-keeping construct of PROV-N capable of packaging up PROV-N expressions and namespace declarations.</p>
+
+<p><a href="#account">Section 6</a> defines the grammar of accounts.</p>
+
+<p><a href="#media-type">Section 7</a> defines media type for the PROV-N notation.</p>
</section>
@@ -287,14 +288,9 @@
<p>The PROV-DM namespace is <span class="name">http://www.w3.org/ns/prov/</span>.</p>
<p> All the elements, relations, reserved names and attributes introduced in this specification belong to the PROV-DM namespace.</p>
-
-<div class="issue">
-There is a desire to use a single namespace that all specifications of the 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>.
-</div>
-
</section>
- <section id="conventions">
+<section id="conventions">
<h3>Conventions</h3>
@@ -385,11 +381,21 @@
</pre>
</div>
<li id="positional-vs-named-attributes"> PROV-N exposes attributes that PROV-DM provides an interpretation for [[PROV-DM-CONSTRAINTS]] directly as positional arguments of expressions, whereas those for which PROV-DM provides no interpretation need to be expressed among the optional attribute-value pairs.
+
+<li id="subject-object-order">
+While not all PROV-DM relations are binary, they all involve two primary elements. The subject of the relation precedes its object.
+<div class="anexample">
+The following expression states that <span class="name">e2</span> was generated by <span class="name">e1</span>; <span class="name">e2</span> is the subject, whereas <span class="name">e1</span> is the object.
+<pre class="codeexample" >
+wasDerivedFrom(e2, e1)
+</pre>
+</div>
+</li>
+</ul>
+
+
</li>
-<div class="note">
-Subject appears first, object second, pointing to the past.
-</ul>
@@ -435,50 +441,49 @@
</section>
-<section id="components">
+<section id="prov-n-expressions">
<h2>PROV-N Productions per Component</h2>
<p>A PROV-N document allows writing down instances of the PROV-DM data model in a compact textual form. It consists of a sequence of expressions.</p>
-<p>Instances of the PROV-DM data model are expressed in PROV-N by a text conformant with the toplevel <a>production</a> <span class="nonterminal">expression</span> of the grammar. </p>
+<p>Instances of the PROV-DM data model are expressed as PROV-N <dfn title="expression">expressions</dfn>, which have a text conformant with the toplevel <a>production</a> <span class="nonterminal">expression</span> of the grammar. </p>
<div class='grammar'>
<table border="0" style="background: white;">
-<tr><td><span class="nonterminal">expression</span>
- ::=<br/><br/><br/><br/><br/><br/></td><td>
+<tr><td><span class="nonterminal">expression</span> <br/><br/><br/><br/><br/><br/><br/>
+</td><td> ::=<br/><br/><br/><br/><br/><br/><br/></td><td>
<!-- Component 1-->
- <span class="nonterminal">entityExpression</span>
+<span class="nonterminal">entityExpression</span>
| <span class="nonterminal">activityExpression</span>
| <span class="nonterminal">generationExpression</span>
| <span class="nonterminal">usageExpression</span>
<br/>
-| <span class="nonterminal">startExpression</span>
+  | <span class="nonterminal">startExpression</span>
| <span class="nonterminal">endExpression</span>
| <span class="nonterminal">communicationExpression</span>
| <span class="nonterminal">startByActivityExpression</span>
<br/>
<!-- Component 2-->
-| <span class="nonterminal">agentExpression</span>
+  | <span class="nonterminal">agentExpression</span>
| <span class="nonterminal">attributionExpression</span>
| <span class="nonterminal">associationExpression</span>
| <span class="nonterminal">responsibilityExpression</span>
<br/>
<!-- Component 3-->
-| <span class="nonterminal">derivationExpression</span>
+  | <span class="nonterminal">derivationExpression</span>
| <span class="nonterminal">revisionExpression</span>
-| <span class="nonterminal">quotationExpression</span>
-| <span class="nonterminal">hadOriginalSourceExpression</span>
+| <span class="nonterminal">quotationExpression</span> <br/>
+  | <span class="nonterminal">hadOriginalSourceExpression</span>
| <span class="nonterminal">traceabilityExpression</span>
<br/>
<!-- Component 4-->
-| <span class="nonterminal">alternateExpression</span>
+  | <span class="nonterminal">alternateExpression</span>
| <span class="nonterminal">specializationExpression</span>
<br/>
<!-- Component 5-->
<!-- Component 6-->
-
-| <span class="nonterminal">noteExpression</span>
+  | <span class="nonterminal">noteExpression</span>
| <span class="nonterminal">annotationExpression</span>
<br/>
</td></tr>
@@ -1224,8 +1229,8 @@
</section>
-<section id="collection-convenience-relations">
-<h3>Convenience relations</h3>
+<section id="expression-bulk-insertion">
+<h3>Bulk Insertion</h3>
A Derivation-by-Bulk-Insertion relation's text matches the <span class="nonterminal">derivationByBulkInsertionFromExpression</span> production.</p>
@@ -1253,6 +1258,12 @@
derivedByBulkInsertionFrom(c1, c, {("k1", v1), ("k2", v2)}), []
</pre>
</div>
+</section>
+
+<section id="expression-bulk-Removal">
+<h3>Bulk Removal</h3>
+
+
<p> A Derivation-by-Bulk-Removal relation's text matches the <span class="nonterminal">derivationByBulkRemovalFromExpression</span> production.</p>
@@ -1280,9 +1291,12 @@
<pre class="codeexample">
derivedByBulkRemovalFrom(c3, c1, {"k1", "k3"})
derivedByBulkRemovalFrom(c3, c1, {"k1", "k3"}, [])
-
</pre>
</div>
+</section>
+
+<section id="expression-bulk-containment">
+<h3>Bulk Containment</h3>
<p> A Bulk-Containment relation's text matches the <span class="nonterminal">containedBulkExpression</span> production.</p>
@@ -1445,24 +1459,26 @@
<span class="name">default</span> <span class="nonterminal">IRI</span> <br/>
</div>
-<p>In PROV-N, the prefix <span class="name">prov</span> is reserved and denotes the PROV namespace;
-the prefix <span class="name">xsd</span> is also reserved and denotes the XML Schema namespace
- <span class="name">http://www.w3.org/2001/XMLSchema</span>.
-</p>
-
+<p>In PROV-N, the following prefix are reserved:
+<ul>
+<li> <span class="name">prov</span> denotes the PROV namespace <span class="name">http://www.w3.org/ns/prov/</span></li>
+<li> <span class="name">xsd</span> denotes the XML Schema namespace <span class="name">http://www.w3.org/2001/XMLSchema</span>.
+</li>
+</ul>
+<p>A PROV-N document MUST not redeclare prefixes <span class="name">prov</span> and <span class="name">xsd</span>.</p>
<div class="anexample" id="anexample-namespace">
The following example declares two namespaces.
<pre class="codeexample">
container
- prefix ex1 <http://example.org/1/>
- prefix ex2 <http://example.org/2/>
+ prefix ex1 <http://example.org/1/>
+ prefix ex2 <http://example.org/2/>
...
end
</pre>
</div>
-<p>A PROV-N document MUST not redeclare namespaces <span class="name">prov</span> and <span class="name">xsd</span>.</p>
+
</section>
@@ -1470,6 +1486,13 @@
<section id="expression-identifier">
<h4>Identifier</h4>
+<p>
+A PROV <dfn id="dfn-qualifiedName">qualified name</dfn> is a name subject to <a>namespace</a> interpretation. It consists of a <a>namespace</a>, denoted by an optional prefix, and a local name.
+PROV-DM stipulates that a qualified name can be mapped into an IRI
+ by concatenating the IRI associated with the prefix and the local part.
+<p>A qualified name's prefix is OPTIONAL. If a prefix occurs in a
+ qualified name, it refers to a <a>namespace</a> declared in a namespace declaration. In the absence of prefix, the qualified name
+ refers to the <a title="default namespace declaration">default namespace</a>.</p>
<div class='grammar'>
<span class="nonterminal">identifier</span> ::= <span class="nonterminal">qualifiedName</span><br/>
@@ -1479,7 +1502,6 @@
<span class="nonterminal">gIdentifier</span>::= <span class="nonterminal">identifier</span> <em>(intended to denote a generation)</em><br/>
<span class="nonterminal">uIdentifier</span>::= <span class="nonterminal">identifier</span> <em>(intended to denote a usage)</em><br/>
<span class="nonterminal">nIdentifier</span>::= <span class="nonterminal">identifier</span> <em>(intended to denote a note)</em><br/>
-<span class="nonterminal">accIdentifier</span>::= <span class="nonterminal">identifier</span> <em>(intended to denote an account)</em>
<br/>
<br/>
<span class="nonterminal">qualifiedName</span> ::=
@@ -1492,22 +1514,15 @@
</div>
-<p>
-A PROV <dfn id="dfn-qualifiedName">qualified name</dfn> is a name subject to <a>namespace</a> interpretation. It consists of a <a>namespace</a>, denoted by an optional prefix, and a local name.
-PROV-DM stipulates that a qualified name can be mapped into an IRI
- by concatenating the IRI associated with the prefix and the local part.
-<p>A qualified name's prefix is OPTIONAL. If a prefix occurs in a
- qualified name, it refers to a <a>namespace</a> declared in a namespace declaration. In the absence of prefix, the qualified name
- refers to the <a title="default namespace declaration">default namespace</a>.</p>
-<p>PROV qualified names have a more permissive syntax then XML QNames [[!XML-NAMES]] since they allow any syntax for its local part such that the concatenation with the namespace results in a valid IRI [[!IRI]]. </p>
+<p>A PROV qualified name has a more permissive syntax then XML's <a href="http://www.w3.org/TR/2009/REC-xml-names-20091208/#NT-QName">QName</a> [[!XML-NAMES]] since it allows any syntax for its local part provided that the concatenation with the namespace results in a valid IRI [[!IRI]]. </p>
<div class="anexample" id="anexample-qualified-name">
Examples of articles on the BBC web site seen as entities.
<pre class="codeexample">
container
- prefix bbc <http://www.bbc.co.uk/>
- prefix bbcNews <http://www.bbc.co.uk/news/>
+ prefix bbc <http://www.bbc.co.uk/>
+ prefix bbcNews <http://www.bbc.co.uk/news/>
entity(bbc:) // bbc site itself
entity(bbc:news/) // bbc news
@@ -1523,8 +1538,8 @@
Examples of entities with declared and default namespace.
<pre class="codeexample">
container
- prefix ex <http://example.org/1/>
- default <http://example.org/2/>
+ prefix ex <http://example.org/1/>
+ default <http://example.org/2/>
entity(ex:a) // corresponds to IRI http://example.org/1/a
entity(ex:a/) // corresponds to IRI http://example.org/1/a/
@@ -1570,7 +1585,7 @@
<div class='grammar'>
<span class="nonterminal">Literal</span> ::= <span class="nonterminal">typedLiteral</span> | <span class="nonterminal">convenienceNotation</span> <br/>
<span class="nonterminal">typedLiteral</span> ::= <span class="nonterminal">quotedString</span> <span class="name">%%</span> <span class="nonterminal">datatype</span><br/>
-<span class="nonterminal">datatype</span> ::= <span class="nonterminal">qualifiedName</span> <em> listed in Table <a href="#permitted-datatypes">permitted-datatypes</a><br/>
+<span class="nonterminal">datatype</span> ::= <span class="nonterminal">qualifiedName</span> <em> listed in Table <a href="#permitted-datatypes">permitted-datatypes</a></em><br/>
<span class="nonterminal">convenienceNotation</span> ::= <span class="nonterminal">stringLiteral</span> | <span class="nonterminal">intLiteral</span><br/>
<span class="nonterminal">stringLiteral</span> ::= <span class="nonterminal">quotedString</span><br/>
<span class="nonterminal">quotedString</span> ::= <em>a finite sequence of characters in which " (#x22) and \ (#x5C) occur only in pairs of the form \" (#x5C, #x22) and \\ (#x5C,
@@ -1586,7 +1601,7 @@
<p> In particular, a PROV-DM Literal may be an IRI-typed string (with datatype <span class="name">xsd:anyURI</span>); such IRI has no specific interpretation in the context of PROV-DM.</p>
<table border="1" style="margin-left: auto; margin-right: auto;">
-<caption id="permitted-datatypes">Permitted datatypes</caption>
+<caption id="permitted-datatypes">Permitted datatypes in literals</caption>
<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#decimal">xsd:decimal</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#double">xsd:double</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#dateTime">xsd:dateTime</a></td> </tr>
<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#integer">xsd:integer</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#float">xsd:float</a></td> </tr>
<tr><td><a href="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger">xsd:nonNegativeInteger</a></td> <td><a href="http://www.w3.org/TR/xmlschema-2/#string">xsd:string</a></td> <td><a href="http://www.w3.org/TR/2004/REC-rdf-concepts-20040210/#section-XMLLiteral">rdf:XMLLiteral</a></td> </tr>
@@ -1620,6 +1635,16 @@
<li> <span class="name">prov:EmptyCollection</span>
</ol>
+<div class="anexample" id="anexample-types">
+<p>The entity <span class="name">ag</span> is a person (type: <span class="name">prov:Person</span>), whereas the entity
+<span class="name">pl</span> is a plan (type: <span class="name">prov:Plan</span>).</p>
+<pre class="codeexample">
+agent(ag,[prov:type="prov:Person" %% xsd:QName])
+entity(pl,[prov:type="prov:Plan" %% xsd:QName])
+</pre>
+</div>
+
+
</section>
<section id="expression-Time">
@@ -1628,7 +1653,8 @@
<p><dfn id="dfn-time">Time instants</dfn> are defined according to xsd:dateTime [[!XMLSCHEMA-2]].</p>
<div class="anexample" id="anexample-time">
-The third argument is this usage expression is a time instance, namely 4pm on 2011-11-16.
+
+<p>The third argument in the following usage expression is a time instance, namely 4pm on 2011-11-16.</p>
<pre class="codeexample">
used(ex:act2, ar3:0111, 2011-11-16T16:00:00)
</pre>
@@ -1697,7 +1723,7 @@
<pre class="codeexample">
container
- prefix ex: http://example.org/,
+ prefix ex <http://example.org/>
entity(e2, [ prov:type="File", ex:path="/shared/crime.txt", ex:creator="Alice",
ex:content="There was a lot of crime in London last month."])
@@ -1714,11 +1740,8 @@
-<div class='issue'>
-Clarify what records are. This is <a href="http://www.w3.org/2011/prov/track/issues/208">ISSUE-208</a>. </div>
</section>
-
<section id="account">
<h3>Account</h3>
@@ -1768,7 +1791,7 @@
The following container </p>
<pre class="codeexample">
container
- prefix ex: http://example.org/,
+ prefix ex <http://example.org/>
account(ex:acc1,...)
account(ex:acc2,...)
@@ -1785,7 +1808,7 @@
The following container </p>
<pre class="codeexample">
container
- prefix ex: http://example.org/,
+ prefix ex <http://example.org/>
...
account(ex:acc1,
@@ -1804,6 +1827,7 @@
</p>
</div>
+
</section>
<section id="media-type">
@@ -1818,7 +1842,7 @@
See <a href="http://www.w3.org/2002/06/registering-mediatype">http://www.w3.org/2002/06/registering-mediatype</a> for Register an Internet Media Type for a W3C Spec.</p>
</div>
-
+</section>
<div id="glossary_div" class="remove">