- From: Richard Cyganiak <richard@cyganiak.de>
- Date: Fri, 8 Aug 2008 12:35:50 +0100
- To: wangxiao@musc.edu
- Cc: Sebastien Lambla <seb@serialseb.com>, "T.V Raman" <raman@google.com>, john.kemp@nokia.com, www-tag@w3.org, kidehen@openlinksw.com, tthibodeau@openlinksw.com
Xiaoshu,
On 8 Aug 2008, at 10:11, Xiaoshu Wang wrote:
> The problem is there is no objective criteria that tells a
> *resource* from *representation*.
A resource is anything named by a URI.
A representation is a <bitstream, MIME type> tuple.
That's a simple and objective distinction. The interesting and
subjective question is how to best model an application using those
two modelling primitives.
There are two schools of thought on this. One school maintains a
distinction between “documents” and “things described in the
documents” in their modelling; the other school says that this
distinction is unnecessary.
The former modelling has been elevated to an axiom of Web architecture
by the httpRange-14 decision. It has many advantages over the latter
(cleaner handling of metadata, enables grouping of many descriptions
in a single document, ...), and it has some disadvantages (more
complex, ...). These have been discussed endlessly and I have no
interest in resurrecting that debate.
> There are only two choices. (1) As T.V Raman said, don't make any
> distinction between them.
The distinction is made in the specs; and it's made by a large and
significant part of the Web community (see REST). Raman might not
consider it important, and that worries me a bit, but it doesn't
diminish the importance of the distinction.
> (2) As I have always proposed, to make an absolute distinction.
> That is: to think every URI denotes a *resource*
No one disagrees with this.
> and what is dereferenced from the URI is the *representation* of
> that resource.
Not quite. A representation is what you get back when you do a GET on
the resource, or what you send when you do a POST/PUT. Dereferencing
is the process of “reaching through the network” in order to perform
one of the supported operations on a resource.
> To think whether something is *in* a document or not is just a form
> of self-contradiction because the goal is to make the web *self-
> descriptive*. Hence, a document (or resource) is both in and not in
> itself.
What do you mean when you say “something is in a document”? I can
understand the phrase “something is described in a document”.
Obviously a document can describe itself. I don't see the contradiction.
[snip]
>> some_resource
>> |
>> +--303--> description_of_some_resource
>> |
>> +--Content-Location-->
>> description_of_some_resource.{html|rdf}
>>
>> That's the clean and proper way of combining the 303 approach with
>> content negotiation!
> It is *clean* only when the distinction of *resource* vs.
> *representation/description* is unambiguous, which hardly is.
Those who use the approach described here simply make a modelling
distinction between documents and the things described in the
documents. That distinction *is* unambiguous. (But it is subjective.)
The described approach is “clean” in the sense of HTTP interactions.
And it is “clean” in that it enables the modelling style described
above.
> In either case, i.e., the (1) and (2) solution mentioned above, 303
> is unnecessary. Sure, it does no harm. But it does slow down the
> web and our goal should be to make the web more efficient but less.
That's why I keep insisting that you should use hash URIs, which do
not exhibit this downside, instead of the 303 approach. The solutions
mentioned above are for those who have decided to use 303s anyway,
despite the well-known downsides.
Best,
Richard
>
>
> Xiaoshu
>
Received on Friday, 8 August 2008 11:36:32 UTC