W3C home > Mailing lists > Public > public-lod@w3.org > November 2010

Re: Is 303 really necessary?

From: Mischa Tuffield <mmt04r@ecs.soton.ac.uk>
Date: Thu, 4 Nov 2010 21:09:33 +0000
Cc: David Wood <david@3roundstones.com>, Harry Halpin <hhalpin@ibiblio.org>, Ian Davis <me@iandavis.com>, "public-lod@w3.org" <public-lod@w3.org>
Message-ID: <EMEW3|bb26c57e23d0d1e51ff01e3c415e1dc9mA3LA206mmt04r|ecs.soton.ac.uk|F4BE0C0E-9C7C-4624-B8D4-42C465949D59@ecs.soton.ac.uk>
To: nathan@webr3.org
Hash: SHA1


On 4 Nov 2010, at 20:23, Nathan wrote:

> David Wood wrote:
>> On Nov 4, 2010, at 15:04, Harry Halpin wrote:
>>> On Thu, Nov 4, 2010 at 7:18 PM, Ian Davis <me@iandavis.com> wrote:
>>>> On Thursday, November 4, 2010, Nathan <nathan@webr3.org> wrote:
>>>>> Please, don't.
>>>>> 303 is a PITA, and it has detrimental affects across the board from network load through to server admin. Likewise #frag URIs have there own set of PITA features (although they are nicer on the network and servers).
>>>>> However, and very critically (if you can get more critical than critical!), both of these patterns / constraints are here to ensure that  different things have different names, and without that distinction our data is junk.
>>>> I agree with this and I address it in my blog post where I say we
>>>> should link the thing to its description using a triple rather than a
>>>> network response code.
>>> This is key. The issue with 303 is that it uses a "network response
>>> code" to make a semantic distinction that can (and likely should) be
>>> done in the data-format itself, i.e. distinguishing a name for the
>>> data for the name identified by the thing itself. To be precise, you
>>> can state (ex:thing isDescribedBy ex:document, ex:thing rdf:type
>>> irw:nonInformationResource) in ex:document that is full of statements
>>> about ex:thing, and a half-way intelligent RDF parser should be able
>>> to sort that out.
>> Yes, I agree this is the key point.  You might note that an HTTP request to a resource that returns an RDF document (of whatever RDF serialization syntax) will already give you a 200 in many cases and that is "correct" in that an RDF document is an information resource.  However, what it describes may not be.  In the case where you are describing a non-information resource, using a 303 provides a benefit in that the clue to the type of resource is accessible before parsing the document.
>> It seems that Ian has made an efficiency argument.  Which is cheaper?  Getting a clue from a network response code or parsing a representation?
> There is another argument, of which efficiency is a part. Given:
> </thing> -> 303 -> </doc>
> (1) Many automated clients that make assertions about URIs treat HTTP as a blackbox, thus are still saying </thing> a :Document . (original problem not solved)
> (2) Many Humans are clicking on </thing> getting the </doc> URI in their address bar then using that instead, saying that </doc> a :Thing . (new problem)
> (3) Network effect of 303 (2 requests) vs 200 (single request), as well as deployment considerations.
> Completely leaving frag ids out of the equation, it appears (to me at least) that new insight is that 303 isn't addressing the problem (1) and rather introducing more (2) and (3).
> I fear that by adding all this in to the mix, the main message, "use different names for different things" has been lost.

I too feel that the "use different names for different things" is one of the core messages. 

> URI syntax doesn't matter to RDF - scheme, slash or hash, all that's important is the one name one thing relation, the link between name and thing named. If we can ensure this happens the majority of the time using 200 OK, then why not?

+1 to helping along the majority with this. 

> Disclaimer: I'd never use a slash URI myself for anything other than a doc, but realise some/many do, and that a lot of deployed data already does use it. Fact is if you use any /slash URI over HTTP then somebody/something somewhere will be saying it's a Document, even if that's just your apache log files RDF'ized.

I never use a / URI to denote anything but a document too, and use # URIs for things I wish to describe in a said document. I understand that one may not want to have a document with a large number of fragments, but if anything it helps organise documents into smaller ones (which is a good thing right?). In defence of 303's, they give you the option, if you are that way inclined, to use / URIs to identify all the things you wish to talk about, but be warned this requires apache .htaccess mangling, and and an extra http request (which doesn't sound that bad to me). 


I do like the idea that documents make statements about things, and must defend the distinction. Documents have provenance,  naively :

<> foo:digitallySignedAt "`nowInDateTime()`^^xsd:dateTime . 
<#me> a foaf:Person . 
<#me> foaf:name "Fozzle" . 

makes a lot more sense than:

<> foo:digitallySignedAt "`nowInDateTime()`^^xsd:dateTime . 
<> a foaf:Person . 
<> foaf:name "Fozzle" . 

Drawing an analogy, this email is signed, I am not signed, the email has a uri identifying the person which sent, and they are quite different.  


Mischa *2 [cents|pence] worth

> Best,
> Nathan

Version: GnuPG/MacGPG2 v2.0.12 (Darwin)

Received on Thursday, 4 November 2010 21:10:42 UTC

This archive was generated by hypermail 2.4.0 : Thursday, 24 March 2022 20:29:51 UTC