David Wood wrote:
On Nov 4, 2010, at 15:04, Harry Halpin wrote:

On Thu, Nov 4, 2010 at 7:18 PM, Ian Davis <[email protected]> wrote:
On Thursday, November 4, 2010, Nathan <[email protected]> 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

Reply via email to