RE: Do resources have representations?

> Somehow I've assumed that all that a URI "does" is:
>
> - it denotes a resource
> - it is associated with some authoritative information

I wouldn't be too sure about the "authoritative" part.

> Further, I assumed that representations are properties of a resource,
> that is:
>
>      <http://example.org> hasRepresentation "<http><head>..." .
>
> When I type <http://example.org> in my browser I would see one of the
> representations associated with it.
>
> But in fact, the actual model is different: It's not the resource that
> is associated with a (set of) representation(s), it's the URI, because
> two URIs can denote the same resource yet have different sets of
> representations.
>
> In fact, two people can create two URIs, denoting the same resource, but
> having different representations, and yet think exactly the same things
> about a resource: If the W3C and I both create a URI denoting the W3C,
> we can have exactly the same idea of what the W3C is, yet our URIs can
> have different representations (web pages).

There's a further indirection. The same URI result in different
representations being transmitted depending on a variety of criteria, the
most obvious of which being security criteria and ACCEPT HTTP headers. So
two URIs for the same resource could, when dereferenced, result in one each
of two sets of resources being transmitted, where those sets may or may not
overlap.

There's also the question of HTTP operations which fail: do we treat a 410
as a representation of something which is no longer in existence, or as an
indicator that a representation of the resource is no longer in existence -
there is a clear semantic difference between a 404 and a 410 but at what
level do those semantics act. I'd say we should consider that 410 to be
information about the representation, but I can see were others would
disagree.

Rather than add to the roles a URI plays like you do, I prefer to pare it
back, and say that *the only* thing a URI does is identify a resource. The
fact that it can be dereferenced to retrieve a representation is no
different to any other identifier (ISBN, Social Security Number, personal
name etc.) given an application context which understands the identifier and
can provide a representation. While this use of URIs does mean that they
must be appropriate for doing so in the context of HTTP (they are globally
unique, easily encoded into a small number of bytes, can be expressed using
only the ASCII character set, have a degree of human-readability which makes
them easy for human developers and/or users to work with when necessary, and
maybe some other things I've left out but which the URI RFCs' authors
thankfully didn't) I don't think we need to focus on HTTP when considering
URI semantics.

In particular "authoritative" goes out the window, although it can be
brought back in if needs be at another level (claims of "authority" should
rest with the authority and be verified using appropriate security measures
as necessary). Authority need exist only is so far as authorising the use of
the identifier to identify a resource, not to make any further statements
than that.

This also means that questions of semantically meaning within URIs (e.g.
questions about the relationship between <http://www.example.org/> and
<http://www.EXAMPLE.org/> or between <http://www.example.org/ex/> and
<http://www.example.org/ex/le/>) can be shifted away from the URIs
themselves, but we can retain the semantics at the URI-processing level or
elsewhere if desired.

Of course this is largely a matter of what I am thinking of as being
responsible for delivering a representation, where you give the credit (or
blame) to the URI, I give it to the webserver or the web (treating the web
as a single application) acting on the URI.


> This has practical relevance for me because I'm toying with creating a
> web server that uses descriptions similar to this to define what a
> resource is and which representations it has. For example, you could say
>
>      <http://example.org/img/logo> hasRepresentation
>          <http://example.org/img/logo.svg> .
>      <http://example.org/img/logo.svg>  mimeType  "image/svg+xml" .
>      <http://example.org/img/logo.svg>  preference  "1" .
>
>      <http://example.org/img/logo> hasRepresentation
>          <http://example.org/img/logo.png> .
>      <http://example.org/img/logo.png>  mimeType  "image/png" .
>      <http://example.org/img/logo.png>  preference "0.5" .
>

I played with a vocabulary for describing these relationships a while back.
<http://www.spin.ie/jon/rep/rep.xml> documents them if you're interested.

Received on Monday, 28 July 2003 09:58:28 UTC