W3C home > Mailing lists > Public > www-tag@w3.org > January 2009

RE: Representation consistency and content negotiation

From: Larry Masinter <masinter@adobe.com>
Date: Mon, 12 Jan 2009 17:10:31 -0800
To: Drummond Reed <drummond.reed@cordance.net>, "'Williams, Stuart (HP Labs, Bristol)'" <skw@hp.com>, "'www-tag'" <www-tag@w3.org>
Message-ID: <8B62A039C620904E92F1233570534C9B0118C83C91ED@nambx04.corp.adobe.com>

The discussion seems to be couched in terms of URI and web architecture, but perhaps looking at it in the HTTP context would be more helpful. Content negotiation was a HTTP feature, not a URI feature.

I have the action item to rewrite the "content negotiation" section of the HTTP document as part of the IETF HTTP working group; I've finally started on this. My goal is to scope the utility of content negotiation in HTTP and to make it clearer when it is and isn't appropriate.

http://trac.tools.ietf.org/wg/httpbis/trac/ticket/81

       and 

http://tools.ietf.org/html/draft-ietf-httpbis-p3-payload-05#section-5 

In searching for the history of when and how content negotiation and variant resources got added to HTTP, I found a writeup which I took the liberty of publishing:
           http://lists.w3.org/Archives/Member/w3c-archive/2009Jan/0059.html



Larry

-----Original Message-----
From: www-tag-request@w3.org [mailto:www-tag-request@w3.org] On Behalf Of Drummond Reed
Sent: Monday, January 12, 2009 10:06 AM
To: 'Williams, Stuart (HP Labs, Bristol)'; 'www-tag'
Subject: RE: Representation consistency and content negotiation


Stuart, thanks very much - your answers are illuminating. See inline.

> -----Original Message-----
> From: Williams, Stuart (HP Labs, Bristol) [mailto:skw@hp.com]
> Sent: Monday, January 12, 2009 3:24 AM
> To: Drummond Reed; 'www-tag'
> Subject: RE: Representation consistency and content negotiation
> 
> Hello Drummond,
> 
> FWIW, here's my take on your questions...
> 
> > -----Original Message-----
> > From: www-tag-request@w3.org [mailto:www-tag-request@w3.org]
> > On Behalf Of Drummond Reed
> > Sent: 12 January 2009 08:13
> > To: 'www-tag'
> > Subject: Representation consistency and content negotiation
> >
> >
> > At the risk of opening up a Pandora's box, some related questions have come
> > up recently about which it would be good to get the TAG's view.
> >
> > They are about the consistency of resource representations and the limits of
> > content negotiation as discussed in AWWW [1].
> >
> > A rule that OpenID folks, XRI TC folks, and others working on metadata
> > discovery have been following since it was clarified for us last summer is
> > that an http: or https: resource that responds to a GET request with a 2xx
> > can return a representation of the resource in any content type it supports,
> > BUT that representation SHOULD (or MUST?) be a consistent across content
> > types.
> 
> Though not directly relevant to the question in hand, it may be worth
> noting that in general there is *no* prescribed relationship between the
> resources that are referenced by URI that differ only in scheme name.
> Specifically, http://example.com/ and https://example.com do not
> necessarily reference the same resource.

Yes, I'm clear on that. Interestingly, this is one identification issue that
XRI 3.0 will tackle with its XRI-as-relative-URI architecture
(http://wiki.oasis-open.org/xri/XriAsRelativeUri). The semantics of
XRIs-within-URIs will allow the same resource to be identified across
multiple URI schemes.

> > For example, from the same URI it's okay to return versions of the same
> > document in HTML, PDF, and plain text depending on the content type
> > requested. But it's not okay to return a descriptor of the document
> (such as
> > a POWDER or XRDS file) instead of the document itself.
> 
> Ok... one thing to sharpen the question is that whatever a URI reference
> with fragID refers to should be consistent across representations. It's ok
> that not all fragIDs resolve in all representations, but those that
> resolve in multiple representations should have a consistent
> interpretation of what is being referenced.
> 
> See http://www.w3.org/TR/webarch/#frag-coneg

Thanks for that reference. I was aware of it but didn't realize how much of
a bearing it has on my question. To take a graph view of it (with XDI I have
graphs on the brain ;-), what you're saying is that the graph of information
associated with a resource must be consistent -- that's why fragIDs should
resolve consistently across representations.

> > How does that rule apply in the following situations:
> >
> > #1: Requestor-dependent representations. Many sites return different
> > versions of a web page based on who is requesting it, such as
> > a personalized homepage. How does that fit with the rule? Is the cookie
> used
> > to identify the requestor considered implicitly part of the URI of the
> resource?
> 
> The way that I would (like to) tell the story is that the users
> credentials condition the view of the resource (state) that the user is
> allowed access to.
> 
> Cookies shouldn't used as a means to identify say distinct shopping carts
> between users (though I'm sure it's done) - different resources should be
> blessed with different URI names.  So no, "...the cookie used to identify
> the requestor" should *not* be "...considered implicitly part of the URI
> of the resource." If you have distinct things that you want to be
> referencable by URI, then arrange for them to have distinct URI.

I understand. Ironically I'd guess that 90+% of the shopping carts out there
have the same URI and just use cookies to differentiate customers. I guess
they are taking the approach that each customer represents a different state
of the cart.

> > #2: A related use case is requestor-dependent access control. For
> example is
> > it okay for a request to the same URI to return a full web page for one
> > fully-authorized requester and a redacted version to another
> > less-fully-authorized requestor?
> 
> I say that that's ok if you can regard each of them as views of the same
> thing and that the convey a consistent if incomplete 'picture'.

Yes, that makes sense.

> > #3: Content type-dependent representations. Can the view of a resource
> > returned from a URI as expressed by one content-type differ from the
> view
> > expressed by a different content-type? For example, from the URI for a
> > person's web calender, could a request for text/calendar (the ical
> content
> > type) produce one response, while a request from the same URI for
> > text/free-busy (a fictional free-busy content type) produce another?
> 
> I think that from a WebArch/naming POV what is important (as mentioned
> above) is that given a URI reference it is consistently used to refer to
> the same thing. Across content-types the resulting representations should
> be of the same resource (whatever is deemed to be the resource in
> question). Where the referring URI has fragIds that in some sense refer
> into the resource, then those fragID targets need to at least have a
> consistent referent across all the representation-types in which they
> resolve. It's ok for fragID not to resolve in some particular available
> representation.
> 
> I think the direct answer to your iCal example is that it depends on what
> you frame the resource as being. If you consider busy/free time as just a
> different (summary) view of your schedule and that the URI is a reference
> to your schedule then that's ok (I think - provided fragID 'semantics' are
> respected across representations). If you regard your busy/free time as a
> related, but distinct, resource from your schedule then connneg for the
> purposes of distinguishing the views is probably best avoided. Maybe think
> of it like this, if what you might want to say *about* the resource is
> dependent on which 'view' of it one is considering then you are probably
> thinking of multiple resources that have been accidentally conflated into
> one.

So to summarize what you are staying: two content types could return
different subsets of information about the same resource as long as those
subsets are subsets of a consistent graph of information about the resource,
but if the content type requested changes the graphs of information returned
to a different, not-consistent graphs, that's where you should clearly use
different URIs.

That seems like a clear rule. (Talking in graphs always seems to help clear
these things up for me.)

Best,

=Drummond 
Received on Tuesday, 13 January 2009 01:11:23 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Thursday, 26 April 2012 12:48:11 GMT