What is your RDF browser’s Accept header?
I was debugging some content negotiation related issue the other day and made a little tool that allows me to find out what Accept header different RDF-aware HTTP clients send. If you ever need to know the Accept header of a particular RDF-aware HTTP client, just make it show the RDF loaded from this URI:
http://richard.cyganiak.de/2008/03/rdfbugs/accept.php
The RDF contains a dc:description with the browser’s Accept header. If you have the Tabulator Firefox extension installed, you can simply click the link and see the output.
I tried this with a couple of tools and here are the results:
Tabulator Firefox Extension 0.8.2:
application/rdf+xml, application/xhtml+xml;q=0.3, text/xml;q=0.2, application/xml;q=0.2, text/html;q=0.3, text/plain;q=0.1, text/n3, text/rdf+n3;q=0.5, application/x-turtle;q=0.2, text/turtle;q=1
Jena’s Model.read(…) method:
application/rdf+xml, application/xml; q=0.8, text/xml; q=0.7, application/rss+xml; q=0.3, */*; q=0.2
Disco Hyperdata Browser:
application/rdf+xml;q=1,text/xml;q=0.6,text/rdf+n3;q=0.9, application/octet-stream;q=0.5,application/xml q=0.5, application/rss+xml;q=0.5,text/plain; q=0.5,application/x-turtle;q=0.5, application/x-trig;q=0.5,text/html;q=0.5
OpenLink RDF Browser:
application/rdf+xml, text/rdf+n3, application/rdf+turtle, application/x-turtle, application/turtle, application/xml, */*
SindiceBot:
application/rdf+xml, application/xml;q=0.6, text/xml;q=0.6
Some of these are pretty funny actually, but that’s a post for another day.
March 18th, 2008 at 4:49 pm
In the Disco Hyperdata browser:
application/xml q=0.5
Is that a typo or does it actually send that?
March 18th, 2008 at 5:53 pm
Laurens, Disco really sends that header.
March 21st, 2008 at 12:26 am
You can also use EARL to generate the report ;-)
April 11th, 2008 at 10:57 pm
:-)
May 30th, 2008 at 10:01 am
So, does that mean that if you use say the Disco style accept parameters, you will never get a 303 redirect? I’ve tried quite a few different URIs for non-information resources, and always get a status code of 200. In other words, if you use the Disco style, do you still need to worry about content negotiation, or is it done automaticaly?
May 30th, 2008 at 10:07 am
Ian: The client just has to worry about sending an Accept header that matches its preferences and capabilities. The actual content negotiation, as well as the choice wether a redirect is sent, is always made by the server, so clients don’t really have to worry about it.
If you see only 200 response codes, then your client probably just doesn’t tell you about any redirects that were performed before it arrived at the final 200. See my little cURL tutorial for more information.
July 14th, 2008 at 12:02 pm
Nice topic on Content Negotiation, it would really help a lot