--- a/paq/working/prov-aq.html Wed Apr 04 13:31:46 2012 +0100
+++ b/paq/working/prov-aq.html Thu Apr 05 15:19:31 2012 +0200
@@ -181,8 +181,37 @@
<section id="sotd">
This document is part of a set of specifications produced by the W3C provenance working group aiming to define interoperable interchange of provenance information in heterogeneous environments such as the Web. It describes the use of existing web mechanisms for discovery and retrieval of provenance information.
+
+ <h4>PROV Family of Specifications</h4>
+The PROV family of specifications aims 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.
+The specifications are as follows.
+<ul>
+<li> PROV-DM, the PROV data model for provenance (this document),</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,</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 data model,</li>
+<li> PROV-SEM, a formal semantics for the PROV data model.</li>
+<li> PROV-XML, an XML schema for the 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 should focus on PROV-XML defining an XML schema for PROV-DM. 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>Second Public Working Draft</h4>
+This is the second public working draft. The changes focus on revising the provenance-service specification to provide better guidance to developers as well as introducing better naming conventions for the use of link headers in locating provenance.
+<p>
+
</section>
+
<!-- == Sect 1 =================================================================================== -->
<section>
@@ -213,10 +242,10 @@
<dd>a URI denoting some <a class="internalDFN">provenance information</a>.</dd>
<dt><dfn>Constrained resource</dfn></dt>
<dd>an aspect, version or instance of a <a class="internalDFN">resource</a>, about which one may wish to present some <a class="internalDFN">provenance information</a>. For example, a weather report for a given date may be an aspect of a resource that is maintained as the current weather report. An constrained resource is itself a <a class="internalDFN">resource</a>, and may have it's own URI different from that of the original. See also [[PROV-DM]], and [[WEBARCH]] <a href="http://www.w3.org/TR/webarch/#representation-reuse">section 2.3.2</a>.</dd>
- <dt><dfn>Resource-URI</dfn></dt>
+ <dt><dfn>Target-URI</dfn></dt>
<dd>a URI denoting a <a class="internalDFN">resource</a> (including any <a class="internalDFN">constrained resource</a>), which identifies that resource for the purpose of finding and expressing <a class="internalDFN">provenance information</a> (see <a href="#provenance-entities-resources" class="sectionRef"></a> for discussion)</dd>
<dt><dfn>Provenance service</dfn></dt>
- <dd>a service that provides <class="internalDFN">provenance information</a> given a <a class="internalDFN">resource-URI</a>.</dd>
+ <dd>a service that provides <class="internalDFN">provenance information</a> given a <a class="internalDFN">target-uri</a>.</dd>
<dt><dfn>Service-URI</dfn></dt>
<dd>the URI of a <a class="internalDFN">provenance service</a>.</dd>
<dt><dfn>Resource</dfn></dt>
@@ -232,10 +261,10 @@
Fundamentally, <a class="internalDFN">provenance information</a> is <em>about</em> <a class="internalDFN">resource</a>s. In general, resources may vary over time and context. E.g., a resource describing the weather in London changes from day-to-day, or one listing restaurants near you will vary depending on your location. Provenance information, to be useful, must be persistent and not itself dependent on context. Yet we may still want to make provenance assertions about dynamic or context-dependent web resources (e.g. the weather forecast for London on a particular day may have been derived from a particular set of Meteorological Office data).
</p>
<p>
- Provenance descriptions of dynamic and context-dependent resources are possible through a notion of constrained resources. A <a class="internalDFN">constrained resource</a> is simply a resource (in the sense defined by [[WEBARCH]], <a href="http://www.w3.org/TR/webarch/#id-resources">section 2.2</a>) that is a contextualized view or instance of some other resource. For example, a W3C specification typically undergoes several public revisions before it is finalized. A URI that refers to the "current" revision might be thought of as denoting the specification through its lifetime. Separate URIs for each individual revision would also be <a class="internalDFN">resource-URI</a>s, each denoting the specification at a particular stage in its development. Using these, we can make provenance assertions that a particular revision was published on a particular date, and was last modified by a particular editor. Resource-URIs may use any URI scheme, and are not required to be dereferencable.
+ Provenance descriptions of dynamic and context-dependent resources are possible through a notion of constrained resources. A <a class="internalDFN">constrained resource</a> is simply a resource (in the sense defined by [[WEBARCH]], <a href="http://www.w3.org/TR/webarch/#id-resources">section 2.2</a>) that is a contextualized view or instance of some other resource. For example, a W3C specification typically undergoes several public revisions before it is finalized. A URI that refers to the "current" revision might be thought of as denoting the specification through its lifetime. Separate URIs for each individual revision would also have <a class="internalDFN">target-uri</a>s, each denoting the specification at a particular stage in its development. Using these, we can make provenance assertions that a particular revision was published on a particular date, and was last modified by a particular editor. Target-URIs may use any URI scheme, and are not required to be dereferencable.
</p>
<p>
- Requests for provenance about a resource may return provenance information that uses one or more resource-URIs to refer to versions of that resource. Some given provenance information may use multiple resource-URIs if there are assertions referring to the same underlying resource in different contexts. For example, provenance information describing a W3C document might include information about all revisions of the document using statements that use the different resource-URIs of the various revisions.
+ Requests for provenance about a resource may return provenance information that uses one or more target-URIs to refer to versions of that resource. Some given provenance information may use multiple target-URIs if there are assertions referring to the same underlying resource in different contexts. For example, provenance information describing a W3C document might include information about all revisions of the document using statements that use the different target-URIs of the various revisions.
</p>
<p>
In summary, <a class="internalDFN">provenance information</a> may be not universally applicable to a <a class="internalDFN">resource</a>, but may be expressed with respect to that resource in a restricted context (e.g. at a particular time). This restriction is itself just another resource (e.g. the weather forecast for a give date as opposed to the current weather forecast), with its own URI for referring to it within provenance information.
@@ -245,7 +274,7 @@
<section>
<h2>Interpreting provenance information</h2>
<p>
- <a class="internalDFN">Provenance information</a> describes relationships between <a class="internalDFN">resource</a>s, including activities and agents. Any given provenance information may contain information about several resources, referring to them using their <a class="internalDFN">resource-URI</a>s.
+ <a class="internalDFN">Provenance information</a> describes relationships between <a class="internalDFN">resource</a>s, including activities and agents. Any given provenance information may contain information about several resources, referring to them using their <a class="internalDFN">target-uri</a>s.
</p>
<p>
Thus, when interpreting provenance information, it is important to be aware that statements about several resources may be present, and to be accordingly selective when using the information provided. (In some exceptional cases, it may be that the provenance information returned does not contain any information relating to a specific associated resource.)
@@ -285,10 +314,10 @@
<p>Provenance information about a resource may be provided by several parties other than the provider of that resource, each using different locations, and each with different concerns. (It is possible that these different parties may provide contradictory provenance information.)
</p>
<p>
- Once provenance information about a resource is retrieved, one may also need to know how to locate information about that resource within the provenance information. This may be a <a class="internalDFN">constrained resource</a> identified by a separate <a class="internalDFN">resource-URI</a>.
+ Once provenance information about a resource is retrieved, one may also need to know how to locate information about that resource within the provenance information. This may be a <a class="internalDFN">constrained resource</a> identified by a separate <a class="internalDFN">target-uri</a>.
</p>
<p>
- We start by considering mechanisms for the resource provider to indicate a <a class="internalDFN">provenance-URI</a> or <a class="internalDFN">Service-URI</a> along with a <a class="internalDFN">resource-URI</a>.
+ We start by considering mechanisms for the resource provider to indicate a <a class="internalDFN">provenance-URI</a> or <a class="internalDFN">Service-URI</a> along with a <a class="internalDFN">target-uri</a>.
Three mechanisms are described here:
<ul>
<li>The requester knows the resource URI <em>and</em> the resource is accessible using HTTP</li>
@@ -308,11 +337,11 @@
</p>
<p>
A <code>provenance</code> link relation type for referencing provenance information is registered according to the template in <a href="#iana-considerations" class="sectionRef"></a>, and may be used as shown:
- <pre class="pattern">Link: <cite>provenance-URI</cite>; rel="provenance"; anchor="<cite>resource-URI</cite>"</pre>
- When used in conjunction with an HTTP success response code (<code>2xx</code>), this HTTP header field indicates that <code><cite>provenance-URI</cite></code> is the URI of some provenance information associated with the requested resource and that the associated resource is identified within the referenced provenance information as <code><cite>resource-URI</cite></code>. (See also <a href="#interpreting-provenance-information" class="sectionRef"></a>.)
+ <pre class="pattern">Link: <cite>provenance-URI</cite>; rel="provenance"; anchor="<cite>target-uri</cite>"</pre>
+ When used in conjunction with an HTTP success response code (<code>2xx</code>), this HTTP header field indicates that <code><cite>provenance-URI</cite></code> is the URI of some provenance information associated with the requested resource and that the associated resource is identified within the referenced provenance information as <code><cite>target-uri</cite></code>. (See also <a href="#interpreting-provenance-information" class="sectionRef"></a>.)
</p>
<p>
- If no <code>anchor</code> link is provided then the <code><cite>resource-URI</cite></code> is assumed to be the URI of the resource, used in the corresponding HTTP request.
+ If no <code>anchor</code> link is provided then the <code><cite>target-uri</cite></code> is assumed to be the URI of the resource, used in the corresponding HTTP request.
</p>
<p>
At this time, the meaning of these links returned with other HTTP response codes is not defined: future revisions of this specification may define interpretations for these.
@@ -333,7 +362,7 @@
The resource provider may indicate that provenance information about the document is provided by a <a class="internalDFN">provenance service</a>. This is done through the use of a <code>provenance-service</code> link relation type following the same pattern as above:
</p>
<pre class="pattern">
-Link: <cite>provenance-service-URI</cite>; anchor="<cite>resource-URI</cite>"; rel="provenance-service"</pre>
+Link: <cite>provenance-service-URI</cite>; anchor="<cite>target-uri</cite>"; rel="provenance-service"</pre>
<p>
The <code>provenance-service</code> link identifies the <a class="internalDFN">service-URI</a>. Dereferencing this URI yields a service description that provides further information to enable a client to determine a <a class="internalDFN">provenance-URI</a> or retrieve <a class="internalDFN">provenance information</a> for a <a class="internalDFN">resource</a>; see <a href="#provenance-services" class="sectionRef"></a> for more details.
</p>
@@ -353,7 +382,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="provenance" href="<cite>provenance-URI</cite>">
- <link rel="anchor" href="<cite>resource-URI</cite>">
+ <link rel="anchor" href="<cite>target-uri</cite>">
<title>Welcome to example.com</title>
</head>
<body>
@@ -365,7 +394,7 @@
The <code><cite>provenance-URI</cite></code> given by the <code>provenance</code> link element identifies the provenance-URI for the document.
</p>
<p>
- The <code><cite>resource-URI</cite></code> given by the <code>anchor</code> link element specifies an specifies an identifier for the document that may be used within the provenance information when referring to the document.
+ The <code><cite>target-uri</cite></code> given by the <code>anchor</code> link element specifies an specifies an identifier for the document that may be used within the provenance information when referring to the document.
</p>
<p>
An HTML document header MAY include multiple <code>provenance</code> link elements, indicating a number of different provenance sources that are known to the creator of the document, each of which may provide provenance information about the document.
@@ -376,7 +405,7 @@
</p>
-->
<p>
- If no "anchor" link element is provided then the <code><cite>resource-URI</cite></code> is assumed to be the URI of the document. It is RECOMMENDED that this convention be used only when the document is static and has an easily-determined URI.
+ If no "anchor" link element is provided then the <code><cite>target-uri</cite></code> is assumed to be the URI of the document. It is RECOMMENDED that this convention be used only when the document is static and has an easily-determined URI.
</p>
<section>
@@ -388,7 +417,7 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="provenance-service" href="<cite>service-URI</cite>">
- <link rel="anchor" href="<cite>resource-URI</cite>">
+ <link rel="anchor" href="<cite>target-uri</cite>">
<title>Welcome to example.com</title>
</head>
<body>
@@ -414,7 +443,7 @@
The RDF property <code>prov:hasProvenance</code> is defined as a relation between two resources, where the object of the property is a resource that provides provenance information about the subject resource. Multiple <code>prov:hasProvenance</code> assertions may be made about a subject resource. This property corresponds to a <a href="#registration-template-for-link-relation---provenance">provenance link relation</a> used with an HTTP <code>Link</code> header field, or HTML <code><link></code> element.
</p>
<p>
- Property <code>prov:hasAnchor</code> specifies an <a class="internalDFN">resource-URI</a> used in the provenance information to refer to the containing RDF document.
+ Property <code>prov:hasAnchor</code> specifies a <a class="internalDFN">target-uri</a> used in the provenance information to refer to the containing RDF document.
This corresponds to use of the <code>anchor</code> parameter in an HTTP provenance <code>Link</code> header field, or an <a href="#registration-template-for-link-relation---anchor">anchor link relation</a> in an HTML <code><link></code> element, which similarly indicate a URI used by the provenance information to refer to the described document.
</p>
<p>
@@ -439,7 +468,7 @@
If a resource is represented using a data format other than HTML or RDF, and no URI for the resource is known, provenance discovery becomes trickier to achieve. This specification does not define a specific mechanism for such arbitrary resources, but this section discusses some of the options that might be considered.
</p>
<p>
- For formats which have provision for including metadata within the file (e.g. JPEG images, PDF documents, etc.), use the format-specific metadata to include a <a class="internalDFN">resource-URI</a>, <a class="internalDFN">provenance-URI</a> and/or <a class="internalDFN">service-URI</a>. Format-specific metadata provision might also be used to include <a class="internalDFN">provenance information</a> directly in the resource.
+ For formats which have provision for including metadata within the file (e.g. JPEG images, PDF documents, etc.), use the format-specific metadata to include a <a class="internalDFN">target-uri</a>, <a class="internalDFN">provenance-URI</a> and/or <a class="internalDFN">service-URI</a>. Format-specific metadata provision might also be used to include <a class="internalDFN">provenance information</a> directly in the resource.
</p>
<p>
Use a generic packaging format that can combine an arbitrary data file with a separate metadata file in a known format, such as RDF. At this time, it is not clear what format that should be, but some possible candidates are:
@@ -470,9 +499,9 @@
</p>
<p>The introduction of this protocol is motivated by the following possible considerations:
<ul>
- <li>the naming authority associated with the <a class="internalDFN">resource-URI</a> is not the same as the service offering provenance information</li>
+ <li>the naming authority associated with the <a class="internalDFN">target-uri</a> is not the same as the service offering provenance information</li>
<li>multiple services have <a class="internalDFN">provenance information</a> about the same resource</li>
- <li>the service associated with the resource-URI is not accessible for adding additional information when handling retrieval requests</li>
+ <li>the service associated with the target-uri is not accessible for adding additional information when handling retrieval requests</li>
<li>there is no dereferencable <a class="internalDFN">provenance-uri</a> containing provenance information for a particular resource</li>
<li>provenance services may provide additional extensibility points for control over returned provenance information.</li>
</ul>
@@ -480,12 +509,12 @@
<section>
<h2>HTTP GET</h2>
- <p>This protocol combines the <a class="internalDFN">resource-URI</a> with the <a class="internalDFN">service-URI</a> to formulate an HTTP GET request, according to the following convention:
+ <p>This protocol combines the <a class="internalDFN">target-uri</a> with the <a class="internalDFN">service-URI</a> to formulate an HTTP GET request, according to the following convention:
<pre class="pattern">
- GET /provenance/service?<b>provenance-resource</b>=http://www.example.com/entity HTTP/1.1
+ GET /provenance/service?<b>target</b>=http://www.example.com/entity HTTP/1.1
Host: example.com</pre>
</p>
- <p>The embedded resource-URI (<code>http://www.example.com/entity</code>) identifies the resource for which provenance information is to be returned. Any server that implements this protocol and receives a request URI in this form SHOULD return provenance information for the resource-URI embedded in the query component where that URI is the result of percent-decoding the value associated with the provenance-resource key. The embedded URI MUST be an absolute URI and the server MUST respond with a 400 Bad Request if it is not. If the supplied resource-URI includes a fragment identifier, the '#' MUST be %-encoded as <code>%23</code> when constructing the provenance-URI value; similarly, any '&' character in the resource-URI must be %-encoded as <code>%26</code>.
+ <p>The embedded target-URI (<code>http://www.example.com/entity</code>) identifies the resource for which provenance information is to be returned. Any server that implements this protocol and receives a request URI in this form SHOULD return provenance information for the resource-URI embedded in the query component where that URI is the result of percent-decoding the value associated with the provenance-resource key. The embedded URI MUST be an absolute URI and the server MUST respond with a 400 Bad Request if it is not. If the supplied resource-URI includes a fragment identifier, the '#' MUST be %-encoded as <code>%23</code> when constructing the provenance-URI value; similarly, any '&' character in the resource-URI must be %-encoded as <code>%26</code>.
</p>
<p>If the provenance information identified in the request does not exist in the server, a 404 Not Found response code SHOULD be returned.
</p>
@@ -510,14 +539,14 @@
<h2>Provenance service description</h2>
<!--<p>The provenance service interface as described above violates REST constraints by requiring the client to know about the structure of URIs offered by the service (see [[REST-APIs]], 4th bullet point). The provenance service description mitigates this coupling by providing a mechanism for discovering the URI format to be used, starting with just the service URI.
%</p> -->
- <p>Dereferencing a provenance service URI should yield a provenance service description. The provenance service description should be available as RDF (in any of its common serializations, and determined through HTTP content negotiation), and it should contain RDF statements of the form:
+ <p>Dereferencing a provenance service URI should yield a provenance service description. This is to be compatible with the constraints of [[REST-APIs]]. The provenance service description should be available as RDF (in any of its common serializations, and determined through HTTP content negotiation), and it should contain RDF statements of the form:
</p>
<pre class="pattern">
<<cite>service-URI</cite>> a prov:ProvenanceService ;
- prov:provenanceUriTemplate "<cite>service-URI</cite>?provenance-resource={+uri}" .</pre>
+ prov:provenanceUriTemplate "<cite>service-URI</cite>?target={+uri}" .</pre>
<p>where <cite><code>service-URI</code></cite> is the URI of the provenance service. Note that the object of the <code>prov:provenanceUriTemplate</code> statement is a literal text value, not a URI.
</p>
- <p>A client may retrieve this service description and extract the associated value for <code>prov:provenance-uri-template</code>. This value is a string containing a URI template [[URI-template]] (level 2). A URI for the desired provenance information is obtained by expanding the URI template with the variable <code>uri</code> set to the resource-URI for which provenance is required. If the resource-URI contains '#' or '&' these must be %-escaped as <code>%23</code> or <code>%26</code> respectively before template expansion.
+ <p>A client may retrieve this service description and extract the associated value for <code>prov:provenance-uri-template</code>. This value is a string containing a URI template [[URI-template]] (level 2). A URI for the desired provenance information is obtained by expanding the URI template with the variable <code>uri</code> set to the resource-URI for which provenance is required. If the target-URI contains '#' or '&' these must be %-escaped as <code>%23</code> or <code>%26</code> respectively before template expansion.
</p>
</section>
@@ -550,9 +579,9 @@
</p>
<section>
- <h2>Find a provenance-URI given a resource-URI</h2>
+ <h2>Find a provenance-URI given a target-uri</h2>
<p>
- If the requester has an <a class="internalDFN">resource-URI</a>, a simple SPARQL query may be used to return the corresponding <a class="internalDFN">provenance-URI</a>. E.g., if the original resource has a resource-URI <code>http://example.org/resource</code>:
+ If the requester has an <a class="internalDFN">target-uri</a>, a simple SPARQL query may be used to return the corresponding <a class="internalDFN">provenance-URI</a>. E.g., if the original resource has a target-uri <code>http://example.org/resource</code>:
<pre class="example code">
@prefix prov: <<provns/>>
SELECT ?provenance_uri WHERE
@@ -579,7 +608,7 @@
</section>
<section>
- <h2>Obtain provenance information directly given a resource-URI</h2>
+ <h2>Obtain provenance information directly given a target-uri</h2>
<p>
This scenario retrieves provenance information directly given the URI of a resource, and may be useful where the provenance information has not been assigned a specific URI, or when the calling application is interested only in specific elements of provenance information.
</p>
@@ -618,15 +647,15 @@
<h2>Via Web Retrieval</h2>
<p>Publishers are not required to publish all the provenance information associated with a given resource at a particular <a class="internalDFN">provenance-URI</a>. The amount of provenance information exposed is application dependent. However, it is possible to incrementally retrieve (i.e. walk the provenance graph) by progressively looking up provenance information using HTTP. The pattern is as follows:
<ol>
- <li>For a given resource (<code>resource-uri-1</code>) retrieve it's associated <code>provenance-uri-1</code> and its associated <code>resource-uri-1</code> using a returned HTTP <code>Link:</code> header field (<a href="#resource-accessed-by-http" class="sectionRef"></a>)</li>
+ <li>For a given resource (<code>target-uri-1</code>) retrieve it's associated <code>provenance-uri-1</code> and its associated <code>target-uri-1</code> using a returned HTTP <code>Link:</code> header field (<a href="#resource-accessed-by-http" class="sectionRef"></a>)</li>
<li>Dereference <code>provenance-uri-1</code></li>
<li>Navigate the provenance information</li>
- <li>When reaching a dead-end during navigation, that is on encountering a reference to a resource (<code>resource-uri-2</code>) with no provided provenance information, find its provenance-URI and continue from Step 2. (Note: an HTTP HEAD request for <code>resource-uri-2</code> may be used to obtain the <code>Link:</code> headers without retrieving the resource representation.)</li>
+ <li>When reaching a dead-end during navigation, that is on encountering a reference to a resource (<code>target-uri-2</code>) with no provided provenance information, find its provenance-URI and continue from Step 2. (Note: an HTTP HEAD request for <code>target-uri-2</code> may be used to obtain the <code>Link:</code> headers without retrieving the resource representation.)</li>
</ol>
</p>
<p>To reduce the overhead of multiple HTTP requests, a provenance information publishers are encouraged to link entities to their associated provenance information using the <code>prov:hasProvenance</code> predicate. Thus, the same pattern above applies, except instead of having to retrieve a new <code>Link</code> header field, one can immediately access the resource's associated provenance.
</p>
- <p>The same approach can be adopted when using the <a class="internalDFN">provenance service</a> API (<a href="#provenance-services" class="sectionRef"></a>). However, instead of performing an HTTP HEAD or GET against a resource one queries the provenance service using the given <a class="internalDFN">resource-URI</a>.
+ <p>The same approach can be adopted when using the <a class="internalDFN">provenance service</a> API (<a href="#provenance-services" class="sectionRef"></a>). However, instead of performing an HTTP HEAD or GET against a resource one queries the provenance service using the given <a class="internalDFN">target-uri</a>.
</p>
</section>