Section 3, editorial changes and reorganization of text suggested by Stian's comments (15,16,17,18,19,20,21,22,23,24,25,26,27). Moved some more material from sect 3 to sect 1.3, and trimmed. Removed duplicate material about authority guarantees from section 2. Added URI/IRI discussion to concepts. Added HTTP examples. Included '#' in shorthand references to link relations.
authorGraham Klyne
Thu, 21 Feb 2013 19:16:06 +0000
changeset 5673 2a38eacd1735
parent 5672 ba92fdab458b
child 5674 48a7cc9e5183
Section 3, editorial changes and reorganization of text suggested by Stian's comments (15,16,17,18,19,20,21,22,23,24,25,26,27). Moved some more material from sect 3 to sect 1.3, and trimmed. Removed duplicate material about authority guarantees from section 2. Added URI/IRI discussion to concepts. Added HTTP examples. Included '#' in shorthand references to link relations.
paq/prov-aq.html
--- a/paq/prov-aq.html	Thu Feb 21 17:27:42 2013 +0000
+++ b/paq/prov-aq.html	Thu Feb 21 19:16:06 2013 +0000
@@ -333,6 +333,9 @@
           <p class="TODO">
             Check pingback defn after considering Stian's proposal
           </p>
+          <p>
+            This document uses the term URI for web resource identifiers, as this is the term used in many of the currently ratified specifications that this document builds upon.  In many situations, a URI may also be an IRI [[RFC3987]], which is a generalisation of a URI allowing a wider range of Unicode characters.  Every absolute URI is an IRI, but not every IRI is an URI. When IRIs are used in situations that require a URI, they must first be converted according to the mapping defined in section 3.1 of [[RFC3987]]. A notable example is retrieval over the HTTP protocol. The mapping involves UTF-8 encoding of non-ASCII characters, %-encoding of octets not allowed in URIs, and Punycode-encoding of domain names.
+          </p>
 
       </section>
 
@@ -435,9 +438,6 @@
         When publishing provenance, corresponding <a class="internalDFN">provenance-URI</a>s or <a class="internalDFN">service-URI</a>s should be discoverable using one or more of the mechanisms described in <a href="#locating-provenance-records" class="sectionRef"></a>.
       </p>
       <p>
-        Retrieved provenance is not guaranteed to be authoritative.  Trust in provenance records must be determined separately from trust in the original resource that they may describe.  Just as in the web at large, it is a user's responsibility to determine an appropriate level of trust in any resource; e.g. based on the domain that serves it, or an associated digital signature. (See also <a href="#security-considerations" class="sectionRef"></a>.)
-      </p>
-      <p>
         Provenance may be presented as a <a href="/TR/prov-dm/#component4" class="externalRef">bundle</a>, which is "<cite>a named set of provenance descriptions, and is itself an entity, so allowing provenance of provenance to be expressed</cite>" [[PROV-DM]].  There is no requirement that a bundle identifier can be dereferenced to access the corresponding provenance, but where practical it is RECOMMENDED that things are arranged to allow this.
       </p>
       <p class="note">
@@ -477,7 +477,10 @@
         <p>
           A <code>hasProvenance</code> link relation type for referencing a provenance record may be used thus:
         </p>
-        <pre class="pattern">Link: &lt;<cite>provenance-URI</cite>&gt;; rel="http://www.w3.org/ns/prov#hasProvenance"; anchor="<cite>entity-URI</cite>"</pre>
+        <pre class="pattern">
+Link: &lt;<cite>provenance-URI</cite>&gt;;
+  rel="http://www.w3.org/ns/prov#hasProvenance";
+  anchor="<cite>entity-URI</cite>"</pre>
         <p>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 a provenance record about the originally requested resource, and that the requested resource is identified within the provenance record as <code><cite>entity-URI</cite></code>. (See also <a href="#interpreting-provenance-records" class="sectionRef"></a>.)</p>
         <p>
           If no <code>anchor</code> parameter is provided then the <code><cite>entity-URI</cite></code> is assumed to be the URI of the requested resource used in the corresponding HTTP request.
@@ -489,8 +492,26 @@
           An HTTP response MAY include multiple <code>hasProvenance</code> link header fields, indicating a number of different provenance resources that are known to the responding server, each referencing a provenance record about the accessed resource.
         </p>
         <p>
-          The presence of a <code>hasProvenance</code> link in an HTTP response does not preclude the possibility that other publishers may offer provenance records about the same resource.  In such cases, discovery of the additional provenance records must use other means (e.g. see <a href="#provenance-query-services" class="sectionRef"></a>).
+          The presence of a <code>hasProvenance</code> link in an HTTP response does not preclude the possibility that other providers may offer provenance records about the same resource.  In such cases, discovery of the additional provenance records must use other means (e.g. see <a href="#provenance-query-services" class="sectionRef"></a>).
         </p>
+        <p>
+          An example request including provenance headers in its response might look like this (where <code>C:</code> and <code>S:</code> prefixes indicate client and server emitted data respectively):
+        </p>
+        <pre class="example code">
+  C: GET /resource/ HTTP/1.1
+  C: Host: http://example.com/
+  C: Accept: text/html
+
+  S: HTTP/1.1 200 OK
+  S: Content-type: text/html
+  S: Link: &lt;http://example.com/resource/provenance/&gt;; 
+           rel="http://www.w3.org/ns/prov#hasProvenance"; 
+           anchor="http://example.com/resource/"
+  S:
+  S: &lt;html ...&gt;
+  S:  :
+  S: &lt;/html&gt;
+        </pre>
         <p class="TODO">
           Tim comment (14): Should a reference to the forward provenance section be included, too?
           <br/>
@@ -503,13 +524,30 @@
             The resource provider may indicate that provenance records about the resource are provided by a <a class="internalDFN">provenance query service</a>. This is done through the use of a <code>hasQueryService</code> link relation type following the same pattern as above:
           </p>
           <pre class="pattern">
-Link: &lt;<cite>provenance-service-URI</cite>&gt;; rel="http://www.w3.org/ns/prov#hasQueryService"; anchor="<cite>entity-URI</cite>"</pre>
+Link: &lt;<cite>provenance-service-URI</cite>&gt;;
+  rel="http://www.w3.org/ns/prov#hasQueryService";
+  anchor="<cite>entity-URI</cite>"</pre>
           <p>
             The <code>hasQueryService</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 submit a query to retrieve a <a class="internalDFN">provenance record</a> for a <a class="internalDFN">resource</a>; see <a href="#provenance-query-services" class="sectionRef"></a> for more details.
           </p>
           <p>
-          There may be multiple <code>hasQueryService</code> link header fields, and these may appear in an HTTP response together with <code>hasProvenance</code> link header fields (though, in simple cases, we anticipate that <code>hasProvenance</code> and <code>hasQueryService</code> link relations will not be used together).
-        </p>
+          There may be multiple <code>hasQueryService</code> link header fields, and these MAY appear in an HTTP response together with <code>hasProvenance</code> link header fields (though, in simple cases, we anticipate that <code>hasProvenance</code> and <code>hasQueryService</code> link relations will not be used together).
+          </p>
+          <pre class="example code">
+  C: GET /resource/ HTTP/1.1
+  C: Host: http://example.com/
+  C: Accept: text/html
+
+  S: HTTP/1.1 200 OK
+  S: Content-type: text/html
+  S: Link: &lt;http://example.com/resource/provenance/&gt;; 
+           rel="http://www.w3.org/ns/prov#hasQueryService"; 
+           anchor="http://example.com/resource/"
+  S:
+  S: &lt;html ...&gt;
+  S:  :
+  S: &lt;/html&gt;
+          </pre>
         </section>
 
         <section>
@@ -523,32 +561,32 @@
           <p>
             An example transaction using content negotiation and redirection might look like this (where <code>C:</code> and <code>S:</code> prefixes indicate client and server emitted data respectively):
           </p>
-          <pre class="pattern">
-  C: GET /resource/
+          <pre class="example code">
+  C: GET /resource/ HTTP/1.1
   C: Host: http://example.com/
   C: Accept: text/html
 
-  S: 302 Found
+  S: HTTP/1.1 302 Found
   S: Location: /resource/content.html
   S: Vary: Accept
   S:
   S: HTML content for http://example.com/resource/ 
   S: is available at http://example.com/resource/content.html
 
-  C: GET /resource/content.html
+  C: GET /resource/content.html HTTP/1.1
   C: Host: http://example.com/
   C: Accept: text/html
 
-  S: 200 OK
+  S: HTTP/1.1 200 OK
   S: Content-type: text/html
-  S: Vary: Accept
   S: Link: &lt;http://example.com/resource/provenance/&gt;; 
            rel="http://www.w3.org/ns/prov#hasProvenance"; 
            anchor="http://example.com/resource/"
   S:
   S: &lt;html ...&gt;
   S:  :
-  S: &lt;/html&gt;</pre>
+  S: &lt;/html&gt;
+          </pre>
         </section>
 
       </section>
@@ -561,8 +599,8 @@
           <pre class="pattern">
   &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
      &lt;head&gt;
-        &lt;link rel="http://www.w3.org/ns/prov#hasProvenance" href="<cite>provenance-URI</cite>"&gt;
-        &lt;link rel="http://www.w3.org/ns/prov#hasAnchor" href="<cite>entity-URI</cite>"&gt;
+        <b>&lt;link rel="http://www.w3.org/ns/prov#hasProvenance" href="<cite>provenance-URI</cite>"&gt;</b>
+        <b>&lt;link rel="http://www.w3.org/ns/prov#hasAnchor" href="<cite>entity-URI</cite>"&gt;</b>
         &lt;title&gt;Welcome to example.com&lt;/title&gt;
      &lt;/head&gt;
      &lt;body&gt;
@@ -571,16 +609,16 @@
   &lt;/html&gt;</pre>
    </div>
         <p>
-          The <code><cite>provenance-URI</cite></code> given by the <code>hasProvenance</code> link element identifies the provenance-URI for the document.
+          The <code><cite>provenance-URI</cite></code> given by the first link element (<code>#hasProvenance</code> ) identifies the provenance-URI for the document.
         </p>
         <p>
-          The <code><cite>entity-URI</cite></code> given by the <code>hasAnchor</code> link element specifies an identifier for the document that may be used within the provenance record when referring to the document.
+          The <code><cite>entity-URI</cite></code> given by the second link element (<code>#hasAnchor</code>) specifies an identifier for the document that may be used within the provenance record when referring to the document.
         </p>
         <p>
-          If no <code>hasAnchor</code> link element is provided then the <code><cite>entity-URI</cite></code> is assumed to be the URI of the document. It is RECOMMENDED that this convention be used only when the document has a  URI that is reasonably expected to be known or easily discoverable by a consumer of the document (e.g. when delivered from a web server, or as part of a MIME structure containing content identifiers [[RFC2392]]).
+          If no <code><cite>entity-URI</cite></code> is provided (via a <code>#hasAnchor</code> link element) then is it is assumed to be the URI of the document. It is RECOMMENDED that this convention be used only when the document has a  URI that is reasonably expected to be known or easily discoverable by a consumer of the document (e.g. when delivered from a web server, or as part of a MIME structure containing content identifiers [[RFC2392]]).
         </p>
         <p>
-          An HTML document header MAY include multiple <code>hasProvenance</code> link elements, indicating a number of different provenance records that are known to the creator of the document, each of which may provide provenance about the document (see also the note in <a href="#locating-provenance-records" class="sectionRef"></a>).
+          An HTML document header MAY present multiple <code><cite>provenance-URI</cite></code>s over several <code>#hasProvenance</code> link elements, indicating a number of different provenance records that are known to the publisher of the document, each of which may provide provenance about the document (see <a href="#interpreting-provenance-records" class="sectionRef"></a>).
         </p>
 
         <section>
@@ -591,8 +629,8 @@
             <pre class="pattern">
   &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
      &lt;head&gt;
-        &lt;link rel="http://www.w3.org/ns/prov#hasQueryService" href="<cite>service-URI</cite>"&gt;
-        &lt;link rel="http://www.w3.org/ns/prov#hasAnchor" href="<cite>entity-URI</cite>"&gt;
+        <b>&lt;link rel="http://www.w3.org/ns/prov#hasQueryService" href="<cite>service-URI</cite>"&gt;</b>
+        <b>&lt;link rel="http://www.w3.org/ns/prov#hasAnchor" href="<cite>entity-URI</cite>"&gt;</b>
         &lt;title&gt;Welcome to example.com&lt;/title&gt;
      &lt;/head&gt;
      &lt;body&gt;
@@ -603,7 +641,7 @@
             The <code>hasQueryService</code> link element identifies the <a class="internalDFN">service-URI</a>.  Dereferencing this URI yields a service description that provides further information to enable a client to query for provenance about a resource; see <a href="#provenance-query-services" class="sectionRef"></a> for more details.
           </p>
           <p>
-            There MAY be multiple <code>hasQueryService</code> link elements, and these MAY appear in the same document as <code>provenance</code> link elements (though, in simple cases, we anticipate that <code>hasProvenance</code> and <code>hasQueryService</code> link relations would not be used together).
+            There MAY be multiple <code>#hasQueryService</code> link elements, and these MAY appear in the same document as <code>#hasProvenance</code> link elements (though we do not anticipate that <code>#hasProvenance</code> and <code>#hasQueryService</code> link relations will commonly be used together).
           </p>
         </section>
       </section>
@@ -612,14 +650,13 @@
         <h2>Resource represented as RDF</h2>
         <p>
           If a resource is represented as RDF (in any of its recognized syntaxes, including RDFa), it may contain references to its own provenance using additional RDF statements.  For this purpose the link relations introduced above (<a href="#locating-provenance-records" class="sectionRef"></a>) may be used as RDF properties: <code>prov:hasProvenance</code>, <code>prov:hasAnchor</code>, and <code>prov:hasQueryService</code>, where the <code>prov:</code> prefix here indicates the PROV namespace URI <code>http://www.w3.org/ns/prov#</code>.
-          (These terms may be used to indicate provenance of arbitrary other resources too, but discussion of such usage is beyond the scope of this section.)
         </p>
         <p>
-          The RDF property <code>prov:hasProvenance</code> is a relation between two resources, where the object of the property is a provenance record about the subject resource.  Multiple <code>prov:hasProvenance</code> assertions may be made about a subject resource.  This property corresponds to a <code>hasProvenance</code> link relation</a> used with an HTTP <code>Link</code> header field, or HTML <code>&lt;link&gt;</code> element (see above).
+          The RDF property <code>prov:hasProvenance</code> is a relation between two resources, where the object of the property is a <a class="internalDFN">provenance-URI</a> that denotes a provenance record about the subject resource.  Multiple <code>prov:hasProvenance</code> assertions may be made about a subject resource.  This property corresponds to a <code>#hasProvenance</code> link relation</a> used with an HTTP <code>Link</code> header field, or HTML <code>&lt;link&gt;</code> element (see above).
         </p>
         <p>
           Property <code>prov:hasAnchor</code> specifies an <a class="internalDFN">entity-URI</a> used in the indicated provenance 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 a <code>hasAnchor</code> link relation</a> in an HTML <code>&lt;link&gt;</code> element, which similarly indicate a URI used in the provenance record to refer to the described document.
+          This corresponds to use of the <code>anchor</code> parameter in an HTTP provenance <code>Link</code> header field, or a <code>#hasAnchor</code> link relation</a> in an HTML <code>&lt;link&gt;</code> element, which similarly indicate a URI used in the provenance record to refer to the described document.
         </p>
         <p>
           Property <code>prov:hasQueryService</code> specifies a <a class="internalDFN">service-URI</a> for provenance queries.  This property corresponds to a <code>hasQueryService</code> link relation used with an HTTP <code>Link</code> header field, or HTML <code>&lt;link&gt;</code> element.
@@ -635,6 +672,9 @@
        (RDF data)
         :
         </pre>
+        <p class="note">
+          These terms (<code>prov:hasProvenance</code>, <code>prov:hasAnchor</code>, and <code>prov:hasQueryService</code>) may be also used in RDF statements with other subjects to indicate provenance of other resources, but discussion of such use is beyond the scope of this document.
+        </p>
       </section>
 
     </section>