Section 2: What does a URI identify? (and range of HTTP deref)

[Apologies in advance for verbosity.]

I've been thinking about whether or not a URI can identify a car, and
what resources are, and the REST notions of resource and representation,
and a few things float to the top:

When I am discussing actual Web software with actual programmers and we 
talk about pointing to things and designing address spaces, I always, 
without exception, refer to Web addresses as URLs.

When talking about the theory of these things in the TAG and other W3C contexts, I find myself always, without exception, using the term URI.
This is at least evidence of tension between theory and reality.  

Let's take Roy Fielding's definition of a resource as "anything
that can be identified and which may have one or more representations" 
where a representation is some metadata (headers) and some bits.

It seems that there is a hierarchy of resource classes lurking in 
here, whether or not we have the language to talk about them.  If we 
did, it might be useful in writing down some things about the Web 

The notion of "Mexico" can be identified, and I can write
a URI and assert that it identifies Mexico:

and then write RDF rules about it and make inferences, and this
would be useful, but it would be unsurprising if the resource had 
no representations; and Mexico the nation will obviously transcend 
any individual representation.

Let's call this a "class A" (for Abstract) resource.  Dan's
car is another example of such a resource.

An example of another class of resource is that identified by

This resource has a representation.  In fact, I think this
resource *is* its representation.  (And I think that this 
URI is a URL, for what that's worth).  

Let's call this a "class C" (for Concrete) resource.
I think that the difference between class A and class C resources 
may turn out to be useful in writing about Web architecture.

Alternatively, should we, in thinking about Web architecture,
ignore this obvious difference and focus only on architectural
principles that work equally well with both classes of resource?

Finally, is there anything in the space between class A and class
C resources?  Maybe.  Consider the resource identified by

It currently has one representation, a very brief HTML doc.  
However, it could very reasonably have a variety of other
representations: a RDDL directory, an RDF schema... and
equally, it could have no representation at all and still
be useful.  However, the existence of more than one 
disjoint representation is not surprising.

Is this a "class B" resource?  I'm not sure. -Tim

Received on Monday, 25 March 2002 20:24:33 UTC