- From: Paul W. Abrahams <abrahams@valinet.com>
- Date: Wed, 24 May 2000 14:15:07 -0400
- To: John Cowan <cowan@locke.ccil.org>
- CC: abrahams@acm.org, xml-uri@w3.org
John Cowan wrote:
> Paul W. Abrahams scripsit:
> >
> > It would be useful if someone could explain the distinction
> > between a URI and a URI reference. Or is it a distinction
> > without a difference?
>
> Not at all. URIs have to be absolute, and can't include a
> fragment-id (begins with "#"). URI references can be
> relative or absolute and can include a fragment-id.
I don't think that RFC2396 actually says that a URI has to be
absolute. A URI has to identify a resource, but RFC2396 nowhere
says explicitly that the identification has to be
context-independent. But to say that a URI has to be absolute
also runs up against the existence in RFC2396 of the nonterminal
relativeURI (defined in Sec. 5) and the fact that Section 3 speaks
of absolute URIs. I suppose one could argue that a relativeURI
isn't a URI at all, but that's certainly counterintuitive. And why
would Section 3 have to refer to absolute URIs if there aren't any
other kinds of URIs?
There's also the fact that in programming languages, ref x is not
the same as x, not even syntactically (modulo implicit
dereferencing, of course). One would expect a URI reference to be
a pointer to a URI, i.e., a doubly indirect specification of a
resource, and not some generalization or specialization of a URI.
(Not that I can see much use for such a construct.)
Here's what I really think is going on. RFC 2396 made some
ill-thought-out terminological choices. It would have been far
simpler not to speak of URI references at all, and to replace the
first syntax rule in Section 4 by:
URI = [absoluteURI | relativeURI] ["#" fragment]
which is all right since RFC2396 doesn't have a syntax rule for
URI.
But RFC2396 isn't going to be changed, so W3C spec writers have to
live with its mistakes. The namespace spec needs to define a
namespace name as a URI reference because that's the term used in
RFC2396. But it could reword the definition slightly (albeit at
the cost of offending folks in IETF) to say:
[Definition] The attribute's value is the namespace name
identifying the namespace. That name is a URI, i.e., a URI
reference in the sense of RFC2396.
Of course, that says nothing about the absolute versus relative
issue.
Paul Abrahams
Received on Wednesday, 24 May 2000 14:16:32 UTC