W3C home > Mailing lists > Public > www-archive@w3.org > October 2003

Re: The <id> element

From: Sandro Hawke <sandro@w3.org>
Date: Sat, 18 Oct 2003 16:13:47 -0400
Message-Id: <200310182013.h9IKDmbG006552@roke.hawke.org>
To: danny666@virgilio.it
Cc: "Ziv Caspi" <zivca@netvision.net.il>, "'Sean B. Palmer'" <sean@mysterylights.com>, "'Asbjørn Ulsberg'" <asbjorn.ulsberg@nrk.no>, atom-syntax@imc.org, www-archive@w3.org

[ Hmm.  I've been meaning to pay attention to Atom for a while, but I
haven't found the time.  Now I'm jumping in on a mailing list I'm not
on, because I was CC'd.  Let's see how far in I sink. ]

Danny Ayers writes (paraphrasing Ziv Caspi, I think):
> If I have a blog entry with :
> id   = "http://example.org/entry1"
> link = "http://example.org/entry1"
> and move to another domain, it ought to be possible to say:
> id   = "http://example.org/entry1"
> link = "http://new-domain.org/entry1"

I think what you're calling the "id" is supposed to be the (globally
unique) name for some abstract entity being talking about -- a news
item, a journal entry, an article -- and what you're calling "link" is
a (globally unique) name for a networked source of information about
that thing.  It's easy to confuse these, but let's not.

For instance, "http://www.w3.org/News/2003#item164" names an anchor in
an HTML web page, where you can read about the RDF Last Call Working
Drafts being published.  As I write this,
"http://www.w3.org/#x20031010a" names a different anchor, on a
different HTML web page, where you can read _the_same_annoucenment_
about those drafts being published.  The second name is ephemeral; in
a few weeks it wont work in anymore.  But there may be lots of
long-term stable names for web pages, or anchors in web pages, which
communicate this same announcement.  Some might be mirrors, others
might be pages which include the announcement along with reader
comments.   Different pages presenting the same announcement.

The announcement itself, meanwhile, should have its own URI.  It is a
conceptual entity on its own.  It was written by a particular person,
intended for release at a particular time, etc.  All the mirrors and
different pages presenting this announcement can be tied together
using this one URI.  If some of them go away, you can search for
others; they may not present exactly the same information, but they
are talking about the same thing.

I wish w3.org did this right, so I could show you the URI for the
announcement itself, but it doesn't.  The home page RSS feed claims
the URI for the annoucement itself is
"http://www.w3.org/News/2003#item164".  That's the same name as that
first anchor, so we have some ambiguous naming going on here.  Bad URI
design.  Now we'll get all muddled when we try to mirror and
cooperatively filter and such.  I want to be able to say some
announcement is important separately from saying which web page I
recommend you use to learn more about the announcement.

Of course this is much much clearer with tag: URIs.  If we used a tag
to name the announcement itself, I'm pretty sure we'd never have
confused it with one of the several web page presenting the
announcement.  So I see the appeal of tags.

But we're still better off using an http: URI to name the announcement
itself.  It should just be a URI which does NOT name an anchor or a
web page.  It should either be a fragment URI for an RDF/XML page
(they don't have anchors) or it should be served with an HTTP redirect
(preferably "303 See Other") to the appropriate information source.
By being an http: URI, it can still be used by itself, and we don't
*need* to carry a "link" around.  

I said something this a bit differently on the ESW Wiki, near
http://esw.w3.org/topic/DualUseUri .  Feel free to chip in there if
you'd rather discuss this wiki-style.   (or maybe I should watch the
Atom wiki.  Hrm.)

> id   = "urn:hash-of-entry-or-whatever"
> link = "http://example.org/entry1"
> id   = "urn:hash-of-entry-or-whatever"
> link = "http://new-domain.org/entry1"
> So the <link> would be a kind of 'disposable' reference.

Right, but the id doesn't have to be a non-retreivable URI like tag or
an indirectly-retreivable urn: URI.  I'd suggest something more like:

id   = "http://example.com/item/2423423"    
link = "http://example.com/briefly?2423423"
link = "http://example.com/discuss?2423423"
link = "http://mirror.example.net/briefly?2423423"

where id redirects to the first link.  If you lose example.com, and
the newcomer lets your stuff rot, then folks will still be able to use
the last link.  If the newcomer is evil and misuses your old stuff,
people will be able to see a conflict between the links, and can
potentially figure out what happened.

There are still about a hundred issues here -- like how to
characterize the differences between links when they are being
provided -- but this seems like the right direction.

     -- sandro
Received on Saturday, 18 October 2003 16:12:26 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 14:42:32 UTC