[VM] notes on content negotiation and conditional redirects

Hi all,

Just a clarification note on the configurations given in the cookbook 
[1] ...

 From the web architecture volume 1 [2]:

"... representation providers must not use content negotiation to serve 
representation formats that have inconsistent fragment identifier semantics"

Note that recipes 3, 4, 5 (and 6, although this is still TODO), do not 
actually configure the server to provide multiple representations from 
the same URI. They employ conditional redirects, to redirect the client 
from the URI of an ontology, class or property to *another location* 
where the client can obtain a representation in the desired format. Each 
of the resources involved only ever makes available a single representation.

Therefore, it is impossible to arrive at a 'server management error' of 
the type described by the quote from [2] given above.

I.e. if you use any of the recipes given at [1] you are playing it safe. 
See also my message at [3].

Also note that, if you use recipe 3, 4, 5 or 6, you obtain distinct URIs 
for resources playing different roles wrt the vocabulary. I.e. you end 
up with distinct URIs for the vocabulary, the HTML documentation of the 
vocabulary, and the RDF description of the vocabulary. This is not 
inconsistent with RDDL [4], which aims to represent the relationships 
between a 'namespace' and other related resources.

The two alternatives to using conditional redirects are the 'MultiViews' 
option, and a 'type map' ('.var') file. Note that using MultiViews 
requires that all variant files must have the same name and reside in 
the same directory on the server. Note that using a type map requires 
that all variant files must reside on the same server. The use of 
conditional redirects is most easily adapted to the situation where RDF 
and HTML content are published in different locations (as is the case 
for both SKOS and DC). Note also that, when using either MultiViews or a 
type map, multiple representations will be served from the same URI, 
allowing for the possibility of a 'server management error' as described 
above.

The downside to using conditional redirects is that it is not possible 
to configure the server to account for the quality preferences specified 
by the client: conditional rewrite rules match in the order in which 
they are specified. Therefore, a hypothetical client that can accept 
both HTML and RDF content, but that specifies a quality preference for 
RDF content, will receive HTML content if the conditional rule matching 
HTML content comes before the rule matching RDF content in the server 
configuration. This may become a problem in the future, but at a 
previous vmtf telecon we agreed that it shouldn't prevent publication of 
the current recipes as is. There may be a way to combine type maps with 
rewrite rules to achieve all the desired features, but this is likely to 
significantly complicate the configurations.

Cheers,

Al.

[1] http://www.w3.org/2001/sw/BestPractices/VM/http-examples/2006-01-18/
[2] http://www.w3.org/TR/webarch/#media-type-fragid
[3] http://lists.w3.org/Archives/Public/public-swbp-wg/2005Dec/0016.html
[4] http://rddl.org/

-- 
Alistair Miles
Research Associate
CCLRC - Rutherford Appleton Laboratory
Building R1 Room 1.60
Fermi Avenue
Chilton
Didcot
Oxfordshire OX11 0QX
United Kingdom
Email: a.j.miles@rl.ac.uk
Tel: +44 (0)1235 445440

Received on Wednesday, 8 February 2006 16:15:37 UTC