atom feed151 messages in org.w3.public-lodRe: Is 303 really necessary?
FromSent OnAttachments
33 earlier messages
Patrick DurusauNov 4, 2010 11:09 am 
Ian DavisNov 4, 2010 11:18 am 
Ian DavisNov 4, 2010 11:24 am 
Robert FullerNov 4, 2010 11:38 am 
NathanNov 4, 2010 11:39 am 
Kingsley IdehenNov 4, 2010 11:42 am 
Jörn HeesNov 4, 2010 11:46 am 
NathanNov 4, 2010 11:46 am 
Robert FullerNov 4, 2010 11:48 am 
Ian DavisNov 4, 2010 11:59 am 
Kingsley IdehenNov 4, 2010 12:00 pm 
Harry HalpinNov 4, 2010 12:04 pm 
Kingsley IdehenNov 4, 2010 12:07 pm 
Jörn HeesNov 4, 2010 12:10 pm 
Kingsley IdehenNov 4, 2010 12:12 pm 
Kingsley IdehenNov 4, 2010 12:12 pm 
Kingsley IdehenNov 4, 2010 12:14 pm 
NathanNov 4, 2010 12:26 pm 
Kingsley IdehenNov 4, 2010 12:37 pm 
David WoodNov 4, 2010 12:57 pm 
Hugh GlaserNov 4, 2010 1:00 pm 
David WoodNov 4, 2010 1:14 pm 
NathanNov 4, 2010 1:23 pm 
Bradley AllenNov 4, 2010 1:40 pm 
Mischa TuffieldNov 4, 2010 2:09 pm 
David BoothNov 4, 2010 3:10 pm 
David BoothNov 4, 2010 3:11 pm 
Kingsley IdehenNov 4, 2010 3:24 pm 
mike amundsenNov 4, 2010 3:27 pm 
Melvin CarvalhoNov 4, 2010 3:48 pm 
Kingsley IdehenNov 4, 2010 4:32 pm 
Kingsley IdehenNov 4, 2010 4:43 pm 
David BoothNov 4, 2010 5:42 pm 
mike amundsenNov 4, 2010 7:29 pm 
Leigh DoddsNov 5, 2010 2:28 am 
Michael HausenblasNov 5, 2010 2:29 am 
Leigh DoddsNov 5, 2010 2:34 am 
Leigh DoddsNov 5, 2010 2:37 am 
Leigh DoddsNov 5, 2010 2:42 am 
William WaitesNov 5, 2010 2:54 am 
Ian DavisNov 5, 2010 2:57 am 
NathanNov 5, 2010 3:05 am 
NathanNov 5, 2010 3:12 am 
Ian DavisNov 5, 2010 3:17 am 
Ian DavisNov 5, 2010 3:24 am 
NathanNov 5, 2010 3:34 am 
Ian DavisNov 5, 2010 3:40 am 
NathanNov 5, 2010 3:57 am 
Ian DavisNov 5, 2010 3:59 am 
Ian DavisNov 5, 2010 4:02 am 
68 later messages
Subject:Re: Is 303 really necessary?
From:Mischa Tuffield (
Date:Nov 4, 2010 2:09:33 pm



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 <> wrote:

On Thursday, November 4, 2010, Nathan <> 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

(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


-----BEGIN PGP SIGNATURE----- Version: GnuPG/MacGPG2 v2.0.12 (Darwin)

iQIcBAEBAgAGBQJM0yETAAoJEJ7QsE5R8vfvsQoQALCxpsT7wfjSHLIiYsHCuf/8 KSXHqMMUBiHNJyc8asFyfA9+CGMOM3r3b/kmF5KNPmg49RB9bon5Jlb5fiCvBr5J TXYk+5s7iFpLENzhWhDJhCpIX8ZC/HBXDJ/Vpkjijesa3W+5dL/G+4RHYXCpUTi1 Rwc6FA57pZTb1NnKgmEdK6jCO4sZBhdkyCKaWwlvK1zig07XdP1/CVmblGWpaSuc oXJZ9cUf0gKnwI4NDO7B/PjgvfMH7/8pWVPx56f68rk/fnXaOB0aWbxCwuIuDeL/ obzLU1i7oxjnKD4TMdH+bULJAnZvndyLWPRJBorhfJQqfnvV9xAJGTWAWxf4G5Xh r5iHA5FsLIw1GFBuMhWHVsFXtuDhCXrXzWxOTlSPGx43/bIZtXeQbTXcbUvI5zGU RAU6etCOFuCEo46H+i0T5yJfUz0OhwjYNBSIqIZq/FDpt9rkCKNavXIhRmazKCoI l7Lh5zouk9UH+wuKfE4Z0yAbXDTgobmbqcZzKzBXgzx9B8haYuCEKXcbmBbWIt2h +p2OkAEBfngZZMtz2Wi5WQWE/dgv0cPjX19y9sHcXpaop6i9kFArQeCuYb/p+6fr G1FnjZYTOKWex9eQd88oxzlisFafyU8cgTX2VxEdiH6Ko7yD1wdhyAw8KYegEnL+ 4O+cZmx+6w0HQNwM2T5D =Q5HZ -----END PGP SIGNATURE-----