Tag URI (original) (raw)
Purpose
The tag algorithm lets people mint — create — identifiers that no one else using the same algorithm could ever mint. It is simple enough to do in your head, and the resulting identifiers can be easy to read, write, and remember. The identifiers conform to the URI (URL) Syntax.
Status
2005-10-26: The 'tag' URI scheme has been published as RFC 4151.
To do:
- Compatibility with RFC 2822 email addresses: there was discussionon uri@w3.org about how to upgrade the tag scheme's syntax for better compatibility with RFC 2822 email addresses. This change didn't make it into the RFC.
- Internationalisation: tags should exists in an IRI form, so that humans can easily mint them in their native languages. A previous attempt at an IRI form ran into the mud.
History
In early 2001, similar schemes were proposed independently by (Sandro Hawke, The TANN URI Scheme) and Tim Kindberg (list email and this draft). We then collaborated to develop the current scheme, with feedback from various sources.
Here is a short and incomplete history of drafts prior to RFC publication.
Tutorial
I (Sandro) have a dog named Taiko, which is a fairly obscure name, but I can't be sure he's the only dog on the planet with that name. I want to be able to talk about him using just his name (without reference to myself, the town I live in, etc) and I want to be sure people will not accidentally think I'm talking about some other dog also named Taiko. So I'm going to give him a tag URI.
Step 1. Identify myself. I have two choices: I can use one of my e-mail addresses (sandro@hawke.org, sandro@w3.org, sandro@world.std.com) or I can use a domain name assigned to me (such as hawke.org). I could also use a shared domain name (w3.org) if I had explicit permission from the domain holder.
Step 2. Pick a date. It's possible that in 100 years my great grandson Sandro Hawke IV will be using "sandro@hawke.org" for e-mail. He may even have a dog named Taiko, and I still want my tag to name my Taiko, not his. So I pick some date during which the address "sandro@hawke.org" was definitely mine. I'll pick yesterday, Tuesday, June 5, 2001.
Step 3. Encode the date as characters, using ISO 8601: "2001-06-05". If I had picked the first day of a month, back in step 2, I would not include the day. If I had picked the first day of a year, I would not include the month or day.
Step 4. Pick a unique name for the object. But it has to be unique only for the already-chosen identity and date. "Taiko" seems like a fine choice here. I don't want to use a name like "1", because then I'm much more likely to get confused and accidentally call my_other_ dog "1". I also want to avoid accidentally reusing a name, but by always using the previous day's date I essentially eliminate that risk: I only need to remember names for the rest of the day.
Step 5. Combine them like this:tag:sandro@hawke.org,2001-06-05:Taiko.
FAQ
Who is using tags?
Tags are used to identify blog items in the Atom personal publishing standard, as in this example.
Tags are also used in YAMLto identify type information.
Please letTim Kindbergknow of other uses.
What does a given tag denote?
That's undefined in the tag specification; you'd need to look at the particular protocol in which they are used. Tags constitute only a scheme for minting identifiers: there is no authoritative resolution mechanism.
Why not use an http URL instead?
Indeed, Sandro might instead have named his dog http://hawke.org/2001/06/05/Taiko.
There are different points of view about this. The main argument against tags is "Why invent a new URI scheme when an old one — http — could be used?" Some arguments in favour are:
- "But that initial 'http' might be taken to imply the existence of a web resource that the minting entity doesn't necessarily want to provide — at least, not over HTTP."
- "I don't have a domain but I have an email address and I want to identify some stuff."
- "Tags are unique for all time by construction. But a domain name (in an http URL) has no long-term guarantees about unique use — it could be re-assigned to an independent party. I could rely on purl.org to guarantee uniqueness for me (or rather, for whatever names I can grab after purl.org/net); but why rely on anyone when I don't need to?"
When can I use a tag someone else minted? What if someone else uses a tag I minted?
This specification only tells people how to mint unique identifiers. Policies concerning the use of these identifiers should be set for each situation or protocol in which they are used.
Why restrict tags to utilise only domain names and email addresses?
We considered other identifiers assignable on a quantum of a day, such as telephone numbers and IP numbers. But it seemed better to keep things simple.
Are tags good XML Namespace Names?
There are two schools of thought about XML namespace names: (1) the name serves purely to distinguish otherwise-identical XML element names, and (2) the names leads to documentation, schema, and other information about the elements. For people firmly in the first camp, tags make good namespace names; for everyone else, working http URIs are recommended.
Are tags good RDF identifiers?
As with XML Namespaces, there are two schools of thought. Do you want the web's default mechanism at your disposal for fetching information about the identified thing? If so, then HTTP URIs are probably better used.
Do tags have anything to do with the W3C's TAG (Technical Architecture Group)?
No!
This Site
This web site is maintained by Tim Kindberg and Sandro Hawke as a place for authoritative information about the "tag" URI scheme. It is expected to stay small and simple.
Last updated 2008-07-09.