Re: URL semantics

Daniel LaLiberte (liberte@ncsa.uiuc.edu)
Fri, 10 Jan 1997 12:44:08 -0600 (CST)


From: Daniel LaLiberte <liberte@ncsa.uiuc.edu>
Date: Fri, 10 Jan 1997 12:44:08 -0600 (CST)
Message-Id: <199701101844.MAA01539@void.ncsa.uiuc.edu>
To: Tim Berners-Lee <timbl@w3.org>
Cc: uri@bunyip.com
Subject: Re: URL semantics
In-Reply-To: <3.0.32.19970110124730.008002c0@hq.lcs.mit.edu>

 > At 11:27 am 09-01-97 -0600, Daniel LaLiberte wrote:
[I wrote this, in case anyone missed it]
 > >But for all URLs (and URNs, if they may be distinguished), the URL
 > >identifies the interaction.  In the case of *some* URLs, the
 > >interaction results in a data object, so it only *seems* that the URL
 > >identifies the data object, but that is an indirect effect.

Tim Berners-Lee writes:
 > I  completely disagree.  The URL identifies the object.  That is
 > fundamental to the concept of the web. The web is a web of
 > quasi static resources, not a set of operations, as base.  This
 > is essential architecturally and from the UI point of view.

OK, I think it works both ways.  But if you say a mailto URL
identifies an object, and that object is a conceptual entity upon
which you can do many operations (such as send a message to the
address, or lookup previous sent or received messages associated with
the address), and there is no particular one place that the conceptual
object resides, or one service that you interact with, then we
essentially have a collection of possible operations (and associated
data) packaged up as an "object".  In fact, one way of defining an
object is as a set of allowed operations on the object.  To the client
of an object, the object is *nothing but* the allowed operations on it.

So I should have been a bit more specific and said the URL identifies
(by way of an abstract object) a set of *possible* interactions.  And
the possibilities are, as you say, controlled by the user (and any
server that must cooperate).

 > If you wanted to make something which contains an interaction, some
 > operation, then you would need a language in which resource identifiers
 > were a part.  But there are many languages for that, and there can be many
 > more.  (A frameset is one, a form is another, Java is another.)

A complex language is not needed in order to express operations.  An
http URL essentially expresses that the client should lookup the
domain name, send an HTTP request to the server, etc.  Alternatively,
a client could interpret the same URL differently and lookup the URL
in a set of caches, or lookup the URL in a content rating service.
The language of http URLs is very declarative.

In general, any identifier is an expression in that the user of the
identifier interprets it.  If the identifier is completely opaque,
then there is nothing to interpret.  But all the URI schemes define
visible structure down to a certain level of granularity.  The visible
part lets the client partially interpret it to pull out the
components.  The remaining opaque parts and components are interpreted
by other services (e.g. dns and http servers).

 > PS: Above I use "object" to be consistent with the thread, I should
 > use "resource".

I'm fine with "object", but analogously, "GET" could mean "do the
intended interaction".  But people have a habit of jumping to
conclusions.

dan