Re: I-D: How Roy would Implement URNs and URCs Today

Roy Fielding (fielding@beach.w3.org)
Mon, 17 Jul 1995 17:07:34 -0400


Message-Id: <199507172107.RAA22999@beach.w3.org>
To: liberte@ncsa.uiuc.edu (Daniel LaLiberte)
Cc: uri@bunyip.com
Subject: Re: I-D: How Roy would Implement URNs and URCs Today 
In-Reply-To: Your message of "Mon, 10 Jul 1995 00:23:27 CDT."
             <9507100523.AA24718@void.ncsa.uiuc.edu> 
Date: Mon, 17 Jul 1995 17:07:34 -0400
From: Roy Fielding <fielding@beach.w3.org>

I said:

>> No, then you are combining the notions of both identifiers and actions,
>> which is verboten as far as I'm concerned.  

and Dan responded:

>Hmm, well I've been leaning against the idea myself, but two things:
>what is an expression, and what is not an expression?
>The agent people seem to want to think of not just expressions but
>also associated code as URIs. (Am I getting the gist of it Leslie?) 
>There is a continuum connecting all of this, but I am hesitant to
>venture too fast in this direction.  On the other hand, a plain
>old http URL is an expression that identifies hostname, port, path,
>etc that is interpreted by the client and server to result in some
>resource.  

Yikes [*sound of train derailing in background*]... a URL is not
an expression, because it does not "result in some resource".  
An expression is obtained only when the URL is combined with an
Action (aka Method) like GET.  If you change the action (e.g., PUT),
the expression changes, but not the URL.

Identity and behavior are two orthogonal issues, and they must be
kept separate.  If an identifier implies behavior, then the resource
cannot be referenced independent of the desired action.

As a crude example, let's consider a baseball bat.  You can identify
it via a name [Louisville slugger #26287635], you can identify it via
a location [the third from the left, in the stack marked illegal], and
you can identify it via characteristics [yeah, the corked one].
Some methods are less useful than others, but they all allow you
to identify the intended resource.

In contrast, you can't identify a bat by describing the rules of
baseball.  You also can't identify a bat by pantomiming the swinging 
motion of a batter.  You can identify the concept (or class) of a
bat in this way, but not the actual resource.  Similarly, it is unsafe
to use an action specification as a means of identification -- imagine,
if you will, a murder trial where the only way to identify the
murder weapon is to make use of it in the same way as the murderer.

    Excuse me, is that a nuclear weapon?
    Hmmm, I don't know, let's just push this button and find out ...

 ....Roy T. Fielding  Department of ICS, University of California, Irvine USA
                      Visiting Scholar, MIT/LCS + World-Wide Web Consortium
                      (fielding@w3.org)                (fielding@ics.uci.edu)