“URL vs. URI” = “Caving vs. Spelunking”

aka “URL vs. URI vs. URN”
aka “What does URL stand for?”
aka “What is a URI?”
aka “What is a URN?”

A little bit ago I decided to get to the bottom of the why WordPress (and I think VBulletin) refer to URIs rather than URLs.

And it turns out that the answer is Sociology and Peer Pressure.

See, we all have the need to feel cool and knowledgeable. I suffer from this same affliction. I, too, am a self-proclaimed sciolist (look it up).

It’s a character trait/flaw I have and it is probably one of the reason I have this blog. We all want to better ourselves and get patted on the back for it. It’s human nature.

One place that this can be prominently seen is the caving world. (And YES this does related back to URL vs. URI. just be patient…) When someone first takes you caving, and you like it, you tell all of your friends about visiting a cave. If you do it a few more times, you’ll quickly label yourself a “caver”.

At that point, the caver often starts to do some reading and learns that (“ooooo!”) the scientific term is called spelunking. So, you start calling yourself a Spelunker and talking about how you so enjoy spelunking that you spelunk every chance you get and you’re a guru spelunker because you know the $10 word.

Well, as it turns out, caving by any other name does not smell so sweet. (That phrase works so much better for roses…).

Anyone with a lot of caving experience, who isn’t writing journals that have to sound pretentious in order to get funding, does not call the activity spelunking. Those that do it all the time, the dedicated hobbyists and professionals alike, don’t go spelunking. They are once again going caving. Why? Because spelunking is the word used by relatively new cave geeks.

I’ve got the impression that this whole URL vs. URI thing is following the same pattern. Only this time, URI is the term used by relatively new PHP geeks.

Here’s the low down in one sentence – URI (Uniform Resource Identifiers) are divided into two categories: URLs (Uniform Resource Locations) that describe the location of a something, and URNs (Uniform Resource Names) that identify something but don’t specify the location or method to get to it.

So, what has happened is that in the growing world of PHP whiz kids and Web 2.0 excitement where EVERYONE knows what an URL, someone learned that a URL is really just a type of URI. SO the blogged about a something using the term URI in big fancy sentences. People saw that and then said “oooo, I’m cool too! I’m gonna call these things URIs.” “URL? That’s so Web 1.0 of you!”

Back in the real world, one can almost guarantee that EVERY field you fill in, that asks for a “URI”, is asking for an address not an identifier. It’s asking for a location: a URL.

What we have in the self propogating blogosphere is all of the blogs, CMS sites, open source and public domain projects that are supported by weekend warrior coders referring to URIs because it was deemed by someone to be more correct. Meanwhile, all professionally developed products will ask for URLs. That’s because professionals know that they REALLY want to have a URL and not a URN.

They know asking for a URI is wrong if you cannot accept a URN.

They additionally know one more thing through experience. The professional DOES NOT want to make the user think. If the user has to stop their process (filling in a form or whatever) and ask themselves what the software expects them to do, the developer has failed.


Now, you might be asking yourself: OK, great – at the start of this I just wanted to know what a URI is, now what the heck is a URN????

I’ll answer that, but if you want it in geek speak, look here:

faqs.org
W3

If you want it in plainer English read on, for it is really easier to see it in examples. I can find no other place on the entire net that explains it in the detail I plan to here, so I hope this is helpful.

What is a URI? A Uniform Resource Identifier (URI) is a standardized way to explain the name and/or location name of a resource.

What is a Resource? A resource is a collection of information in any form. It could be a website. It could be a blog. It could be your mother’s 1953 Betty Crocker Cook Book. It could even be this post you are reading now. A resource does NOT have to be related to computers.

There are two types of Uniform Resource Identifier (URI): URLs and URNs.
The first type I’ll cover is the easy one: the URL. We all know that URLs are used to point to a location on the internet. What you may not also realize is that as they are telling you where on the interenet something is, they also tell your computer the method that must be used to reach that location. That’s the “http://” or “ftp://” part of an URL. It’s the part of the URL called a “scheme”.

Here are some examples of URLS with schemes:

ftp://ftp.idsoftware.com/idstuff/quake3/source/Q3A_TA_GameSource_132.exe
gopher://marvel.loc.gov/11/locis
http://www.TheCodeCave.com
mailto:Brian@thecodecave.com
news:alt.caving
telnet://melvyl.ucop.edu/

The Uniform Resource Name (URN) is the second, less common type of URI. Basically a URN is a unique code that identifies a resource. That code will ALWAYS identify the resource even after that resource no longer is available. It does not tell you where you can find that resource. It doesn’t mean that there is only one of that resource available. But if a URI is identified in a document, the reader will know EXACTLY what the author was discussing. Specification documents often have a URN. If I refer to RFC 2648, that has specific meaning. It refers to a specific “Request For Comment” held by “The Internet Society” (I’m sure I have their card in my Illuminati card deck…). If I want to put that reference in the form of an URN, that would be: urn:ietf:rfc:2648

There is a very short list of official URNs. They are:
URNs: Official (according to the RFCs):

‘ietf’, defined by [RFC 2648], URN Namespace for IETF Documents
‘pin’, defined by [RFC 3043], The Network Solutions Personal Internet Name (PIN): A URN Namespace for People and Organizations
‘issn’ defined by [RFC 3043], Using The ISSN as URN within an ISSN-URN Namespace
‘oid’ defined by [RFC 3061], A URN Namespace of Object Identifiers
‘newsml’ defined by [RFC 3085], URN Namespace for NewsML Resources
‘oasis’ defined by [RFC 3121], A URN Namespace for OASIS
‘xmlorg’ defined by [RFC 3120], A URN Namespace for XML.org
‘publicid’ defined by [RFC 3151], A URN Namespace for Public Identifiers

You may not have heard of any of those. However, there are a large number of unofficial or pending URNs that you will have heard of.

ISBN - The International Standard Book Number (http://en.wikipedia.org/wiki/ISBN) allows you to identify a book with an URN. I’ll show the URN first and then a url to get information about that resource.

Here are some example ISBN:

URN:ISBN: 1-5562-2637-3 identifies this book (not the website) Advanced Graphics and Game Programming in Delphi
URN:ISBN:1-5920-0733-3 identifies this book (not the site): Advanced 3d Game programming All in One

Digital Object Identifier (DOI) Read about this one here: http://www.doi.org/ and here: http://en.wikipedia.org/wiki/Digital_object_identifier

ALEXA’s ASIN: Amazon has its own code that will probably never become an officially adopted URN, however it is common on the internet as it is now used to rate websites through Alexa. ASIN stands for Amazon Standard Identification Number. Almost every product on our site has its own ASIN–a unique code we use to identify it. For books, the ASIN is the same as the ISBN number, but for all other products a new ASIN is created when the item is uploaded to our catalogue. Read more: http://en.wikipedia.org/wiki/ASIN &
What is an ASIN?

Here are some example ASIN:

URN:ASIN:B000F2CVYG
URI that is an the URL containing the URN: in this link
URN:ASIN:B000F1J35C
URI that is an the URL containing the URN: in this link

Did you know that songs also have unofficial URNs:

ISRC International Standard Recording Code
ISRC:USPR37300012 – The song “Love’s Theme”, from US’s “The Love Unlimited Orchestra”.
ISRC:BRBMG0300729 – The song “Enquanto Houver Sol”, from the Brazilian group “Titãs”

I think that should make it all clear, but feel free to ask any question you might in the comments. And if you use this info anywhere, please refer back to The Code Cave.


So, back to WordPress and it’s prompt for a URI. It should be clear at this point that when it is asking for the “WordPress address (URI):”. It will not and DOES not accept any old URI. In fact, it will ONLY accept an URL. And THAT’S what it should ask for. But then we wouldn’t have thousands of people blogging about the differences between a URL and a URI would we?

4 thoughts on ““URL vs. URI” = “Caving vs. Spelunking””

  1. What do you believe are the advantages of an URN or an URL from both the standpoint of a resource user and a resource provider?

  2. Boz: URLs allow one to access files on the internet. URNs specify a standard way of naming items that may or may not be on the internet. URNs would allow, for example, one to setup a card catalog database and more easily ensure the database is compatible similar databases, making it simpler to cross reference them, etc.

  3. In defense of the word “spelunking”, I must say that, unlike “URI”, it has a whimsical ring to it, so unlike people who use the term “URI”, a spelunker might be thought of as not taking themselves too seriously. (Not that all cavers or URIers or URLers or whoever are sciolists, of course).

    Further, I guess I have to say that turning one’s nose down at self-proclaimed spelunkers as overly self-important is, well, a half dozen of the other, as they say. If I caved, I would spelunk, as well, no matter how experienced I got, because “spelunk” is a word I could say all day. (:

    (No offense is meant to the writer or anyone — I’m probably more speaking to the elitism of the current version of the Wikipedia article on caving)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>