Ever since Adam named the beasts (Gen 1:19-20), labels have mattered to humanity: it’s pretty hard to hold a conversation if you have to start with “you know that really big gray beast with the cute little ears that sits in the river all day with just its eyes showing?”, instead of just “hippopotamus”.
Information on the web works the same way. Most (but not all!) web pages have the equivalent of a name, their Uniform Resource Locator (URL), which tells your browser how to bring up the page. But too many conversations about web pages are still like the hippopotamus conversation: “just go to www.frooble.com, then type ‘shebang’ in the search box, and look about half-way down the page on the left side …”. In other words, that little tidbit of information isn’t addressable: i can’t give you a name for it, i can only tell you to travel over the river, through the woods, and then turn left at the 3rd oak tree.
Though there’s usually no good technical reason, this is still so often true for our web-enabled world. For example, i admit to my chagrin that i only just now figured out the URL for my Facebook profile, even though i had looked for it (half-heartedly) several times previously. (I happened to stumble over somebody else’s, saw the pattern, and then plugged my own name and ID in the URL instead). Having a URL that’s both explicit and understandable enables this kind of URL hacking, which is a really powerful technique.
Here’s a small example (combined with a shameless plug). The HTML designers for the upcoming Bible Tech conference have added page targets for speakers to the Speakers page. So even though there’s one long list, you can get to just the right spot on the list by following the link to my talk. And if i show you the URL
http://www.bibletechconference.com/speakers.htm#SeanBoisen-2009
and explain the schema ([baseURL]#[Firstname][Lastname]-year), you can get to my talks from last year too. That’s a nice bit of design, and part of a much larger and important architectural practice called Representational State Transfer or REST. As another example, you can probably figure out how to change this URL
http://bible.logos.com/passage/NIV/Ge 2.19-20
to get you to Mark 4.1-12 in the ESV instead (though you might stumble if you use a colon instead of a period to separate chapter and verse).
A lot of important things only become possible once you start to provide names for your resources. That’s a big part of the justification for the complex tangle of ideas called the Semantic Web, or if that’s too high-falutin’ for you, just call it smarter web design for information integration.
PS: i realized later it wasn’t just that i couldn’t figure out how to construct a Facebook URL: you have to make a badge first to get an addressable URL, which seems pretty non-obvious!


Your link to your talks for last year is 2009, not 2008.
Good catch, thanks! I’ve fixed the link.
Sean, what’s your opinion of the URI Opacity Axiom? I’m not a fan, thinking that human-readable URIs are ideal for both usability (content-discovery) and SEO… but we shouldn’t depend on URI’s internal structure. I’d say that any semantics that can be inferred from the URI structure should be made explicit by the semantics in the entity referenced by the URI. From a machine standpoint, the URI should not be the sole URI (cf. URL as UI). Would you agree?
Weston:
but now i have one. I’m not sure what Sir Tim’s current thinking is (this is a fairly old document), but i think we may be addressing different points. TimBL’s talking about software clients, and here i agree that smuggling in semantics is a Bad Thing. But from the standpoint of human usability, I’m with Nielsen that “hackable” URLs that give insight into the organization of data are really useful. We just shouldn’t confuse them with the explicit semantics of the resource (because they are, after all, only identifiers).
Well, first i had to go read it to form an opinion
The links in your comment were helpful and relevant: thanks for including them.
Thanks, Sean. Oops, I meant in the last statement to say, “the URI should not be the sole UI”.