On Thu, 4 Nov 2010 13:22:09 +0000
Ian Davis <[email protected]> wrote:

> http://iand.posterous.com/is-303-really-necessary

Ian brings up numerous difficulties with 303 responses.

The two biggest issues in my opinion are:

        1. 303s can be tricky to configure unless you know your
           way around the server environment you're using, and
           have sufficient permissions on the server; and

        2. They require an additional HTTP request to get to the
           data the client actually wants.

I think that without using RDF-specific publishing platforms (think
WordPress for Linked Data) #1 is always going to be a difficulty.
Even if we accept 200 OK as a response code for non-IR resources, this
only solves part of the server configuration problem. There are still
other issues to be solved - Apache doesn't come preconfigured with
media type information for N3/Turtle/N-Triples. And getting
neat-looking URIs (no ".rdf" suffix at the end) requires something like
mod_rewrite, Apache multiviews or ForceType to be configured. You could
try publishing an N-Triples file with no suffix, and cross your fingers
that Apache's default media type of "text/plain" will bubble up.

#2 on the other hand can be addressed quite easily. 303 responses are
allowed -- indeed encouraged -- to include an entity body. Servers
could be configured to duplicate the description of the non-IR resource
in this entity body. Or perhaps provide a more summarised description
there. Clients just need to look at it before deciding whether to follow
the redirect.

e.g.

        >>>>
        GET /toucan HTTP/1.1
        Host: example.com

        <<<<
        HTTP/1.1 303 See Other
        Location: http://example.com/doc
        Content-Type: text/turtle

        @prefix foaf: <http://xmlns.com/foaf/0.1/> .
        <toucan>
                foaf:name "Harry the Toucan" ;
                foaf:isPrimaryTopicOf <doc> .

        !!!! Here the client decides whether that's enough information.
        !!!! If it needs more, it continues by dereferencing <doc>. 

        >>>>
        GET /doc HTTP/1.1
        Host: example.com

        <<<<
        HTTP/1.1 200 OK
        Content-Location: http://example.com/doc.ttl
        Content-Type: text/turtle

        @prefix foaf: <http://xmlns.com/foaf/0.1/> .
        <toucan>
                foaf:name "Harry the Toucan" ;
                foaf:isPrimaryTopicOf <doc> ;
                foaf:birthday "10-24" .
        <doc>
                foaf:maker <alice> .

-- 
Toby A Inkster
<mailto:[email protected]>
<http://tobyinkster.co.uk>


Reply via email to