Re: Is 303 really necessary?

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.

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?

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.

Best,

Nathan

Received on Thursday, 4 November 2010 20:24:18 UTC