httpRange-14 Change Proposal

Hi,

Please find below a Change Proposal for the consideration of the TAG in response to [1] on behalf of (alphabetically):

Ian Davis
Leigh Dodds
Nick Gibbins (University of Southampton)
Hugh Glaser
Steve Harris
Masahide Kanzaki
Gregg Kellogg
Niklas Lindström
Jerry Persons
Dave Reynolds
Bill Roberts
Andy Seaborne
John Sheridan
Ben O'Steen
Damian Steer
Thomas Steiner
Ed Summers
Jeni Tennison
Davy Van Deursen

and with thanks to other members of the LOD mailing list who helped identify areas that required clarification. The original version is at [2].

[1] http://www.w3.org/2001/tag/doc/uddp/change-proposal-call.html
[2] https://docs.google.com/document/d/1ognNNOIcghga9ltQdoi-CvbNS8q-dOzJjhMutJ7_vZo/edit

---

# Summary #

This proposal contains two substantive changes.

First, a 200 response to a probe URI no longer by itself implies that the probe URI identifies an information resource or that the response is a representation of the resource identified by the probe URI; instead, this can only be inferred if the probe URI is the object of a ‘describedby’ relationship or the target of a 303 redirection.

Second, it enables publishers to link to URI documentation for a given probe URI by providing a 200 response to that probe URI that contains a statement including a ‘describedby’ relationship from the probe URI to the URI documentation.


# Rationale

While there are instances of linked data websites using 303 redirections, there are also many examples of people making statements about hash-less URIs (particularly using HTML link relations, RDFa, microdata, and microformats) where those statements indicate that the URI is supposed to identify a non-information resource such as a Person or Book. The Appendix provides examples of these.

Rather than simply telling these people that they are Doing It Wrong, “Understanding URI Hosting Practice as Support for URI Documentation Discovery” should ensure that:

 * applications that interpret such data do not draw wrong conclusions about these URIs simply because they return a 200 response

 * publishers of this data can easily upgrade to making the distinction between the non-information resource that the page holds information about and the information resource that is the page itself, should they discover that they need to


# Details

In section 4.1, in place of the second paragraph and following list, substitute:

  There are three ways to locate a URI documentation link in an HTTP response:

   * using the Location: response header of a 303 See Other response [httpbis-2], 
     e.g.

     303 See Other
     Location: http://example.com/uri-documentation>

   * using a Link: response header with link relation 'describedby' ([rfc5988], 
     [powder]), e.g.

     200 OK
     Link: <http://example.com/uri-documentation>; rel="describedby"

   * using a ‘describedby’ ([powder]) relationship within the RDF graph created by 
     interpreting the content of a 200 response, eg:

     200 OK
     Content-Type: text/turtle

     PREFIX :<http://www.iana.org/assignments/relation/>
     <http://example.com> 
       :describedby <http://example.com/uri-documentation> ;
       .

Before the last paragraph of section 4.2 insert the following two paragraphs:

  In the third case, where the ‘describedby’ relationship is used,   
  <http://www.iana.org/assignments/relation/describedby> and 
  <http://www.w3.org/2007/05/powder-s#describedby> must be treated as equivalent, as 
  defined in Section 4.1.4 Semantic Linkage Using the describedby Property of the 
  POWDER Recommendation.

In the last paragraph of section 4.1, for “(But see below for the case when retrieval is successful.)” substitute “The next section describes how to interpret a 200 response, and therefore applies in the last two cases described above.”

In section 4.2, in place of the first paragraph (after the Editorial Note), substitute:

  If there is a nominal representation Z from the probe URI (a 2XX response), and 
  the application is aware of a ‘describedby’ relationship of which the probe URI is 
  the object, which may be the case because

   * the probe URI is itself a URI linked to through one of the mechanisms listed in 
     Section 4.1 
   or
   * Z itself contains a statement in which the probe URI is the object of a 
     ‘describedby’ relationship

  then this is equivalent to there being a nominal URI documentation carrier for the 
  probe URI that says that Z is a current representation of the resource identified 
  by the probe URI, and, moreover, that the identified resource is an "information 
  resource" (see below). In other cases, no such inference can be made (the   
  application cannot tell whether the probe URI identifies an information resource 
  or not).

We also recommend that a clear guide on best practices when publishing and consuming data should be written, possibly an update to [cooluris].


# Impact

## Positive Effects

 * common usage of URIs in sites supporting RDFa, microdata and microformats are no longer deemed to be Doing It Wrong, which means this data can be interpreted in the way that it was intended by those publishers by conformant applications

 * publishers that cannot change server configuration (to use 303s or Link headers) can still use separate URIs to identify a non-information resource and the information resource that describes it

 * publishers who (through ignorance or preference) originally publish data about non-information resources without using 303s or Link headers can retain those URIs and add the ‘describedby’ statement to add separate identifiers

 * it is possible to have multiple description documents for a given URI, where a 303 response only allows one

 * it means the same method can be used to provide descriptions of non-information resources as is used for providing descriptions of information resources, which aids adoption

 * it means there is a standard method for providing links from documentation to the thing that it documented

 * it provides a standard means of explicitly adding in data information that would otherwise only be available if a resource is accessed by HTTP, which means that reasoning dumps of crawls of the web (eg from webdatacommons.org) becomes more consistent with what could be inferred from the crawl itself

 * browser location bars don’t change when navigating to URIs that provide a 200 response, which means less copy/paste errors and user confusion when trying to encourage people to use URIs for non-information resources and not those for their documentation

## Negative Effects

 * existing applications that assume that a 200 response is only given for an information resource may make false inferences about what a probe URI identifies (but this happens already, as people already publish data in this way)

 * there are more cases where applications will have to draw on reasoning from other properties (eg declared types of resources) to work out what a URI identifies

 * when documentation is served with a 200 response from a probe URI and does not contain a 'describedby' statement, some agents (including the publisher) might use it to identify the documentation and others a non-information resource. Publishers still need to provide support for two distinct URIs if they want to enable more consistent use of the probe URI; a set of best practices for linked data publishers would need to spell out what publishers should do and how consumers should interpret the information provided within the response and that found at the end of any ‘describedby’ links


# Conformance Classes Changes

There is no mention of conformance classes in the document.


# Risks

There are no risks.


# References

[cooluris]
Leo Sauermann and Richard Cyganiak. Cool URIs for the Semantic Web. W3C Interest Group Note, 03 December 2008. (See http://www.w3.org/TR/2008/NOTE-cooluris-20081203/.)

# Appendix: Examples of 200 Responses for NIRs

## http://www.logosportswear.com/product/1531

response with a 301 redirection to 
http://www.logosportswear.com/product/1531/harbor-cruise-boat-tote which contains the RDFa statement

 <http://www.logosportswear.com/product/1531>
   a <http://rdf.data-vocabulary.org/#Product> ;
   .

The URI is intended to identify a product, not a web page.


## http://developer.yahoo.com/yui/docs/YAHOO.util.Dom.html

contains RDFa statements that state that this web page contains events, methods and properties:

 <http://developer.yahoo.com/yui/docs/YAHOO.util.Dom.html> 
   yui:attributes <#configattributes>;
   yui:description """
                       Provides helper methods for DOM elements.
                   """;
   yui:events <#events>;
   yui:methods <#methods>;
   yui:name "YAHOO.util.Dom";
   yui:properties <#properties> .

From the statements, the intention is for the URI to identify the (programming language) Object, not a web page (despite the .html on the end!).


## http://gondwanaland.com/mlog/2005/03/13/semweb-not-by-committee/

contains the RDFa statements

 <http://gondwanaland.com/mlog/2005/03/13/semweb-not-by-committee/>
    dcterms:publisher <http://gondwanaland.com/mlog/> ;
    sioc:has_owner <https://creativecommons.net/ml/> ;
    .

The range of dcterms:publisher is a dcterms:Agent, but http://gondwanaland.com/mlog/ returns a 200.

The range of sioc:has_owner is a sioc:UserAccount, but https://creativecommons.net/ml/ returns a 200.


## http://www.feedbooks.com/book/2679

contains microdata statements. How you should interpret these as RDF is obviously debatable but the obvious thing to do is for a href attribute to indicate the resource that it targets, so the page includes the statements

  [ a schema:Book ;
    schema:author <http://www.feedbooks.com/author/496> ; ]

The range for schema:author is intended (I think) to be a person rather than a web page about a person, but resolving http://www.feedbooks.com/author/496 gives you a 200.

(Based on the webdatacommons.org dumps, this site used to serve up RDFa that stated that <http://www.feedbooks.com/book/2679> identified a Book; books are not web pages.)


## http://www.mybanktracker.com/Citibank/Profile

contains the RDFa statements

   <http://www.mybanktracker.com/Citibank/Profile> 
     v:dtreviewed "2012-01-05 16:42:49"@en-US;
     v:itemreviewed <http://www.mybanktracker.com/Citibank/Profile>;
     v:rating "4"@en-US;
     v:reviewer <http://www.mybanktracker.com/member/lisaehrlich>;
     .

The review is clearly about Citibank and not the web page.

The object of the v:reviewer property should, I imagine, be a person but is instead a web page.


## http://www.flickr.com/photos/andreaweckerle/2559011937/

used to contain the triples (according to the webdatacommons.org data)

  <http://www.flickr.com/photos/andreaweckerle/2559011937/>  
    dcterms:creator <http://www.flickr.com/photos/andreaweckerle/> 
    .

  <http://www.flickr.com/photos/andreaweckerle/> 
    foaf:name "andreaweckerle"
    .

where http://www.flickr.com/photos/andreaweckerle/ resolves to a 200 but is plainly intended here to be a Person. Those statements don't seem to be there any more.


## http://www.businesswire.com

redirects with a 302 to http://www.businesswire.com/portal/site/home/ which gives a 200 response and contains microdata that maps to the triples

<http://www.businesswire.com> a schema:Organization;
   schema:name "BUSINESS WIRE";
   schema:url <http://www.businesswire.com> .

which says that http://www.businesswire.com is an organisation, not a web page.

-- 
Jeni Tennison
http://www.jenitennison.com

Received on Sunday, 25 March 2012 09:47:37 UTC