Thanks for all the positive feedback to my last post about using URLs to identify resources. Tom Heath (one of the founding fathers of the Linked Data meme/pattern) suggested that discussions about this topic are harmful, so of course I have to continue the conversation … even if I don’t have much new to say. Hell, I just wanted an excuse to re-publish another one of Paul Downey’s lovely REST Tarot Cards that he is doing for NaNoDrawMo 2010, and get some more hits on my backwater blog :-)

Anyhow, so Tom said:

Joe Developer … has to take a bit of responsibility for writing sensible RDF statements. Unfortunately, people like Ed seeming to conflate himself and his homepage (and his router and its admin console) don’t help with the general level of understanding. I’ve tried many times to explain to someone that I am not my homepage, and as far as I know I’ve never failed. In all this frantic debate about the 303 mechanism, let’s not abandon certain basic principles that just make sense.

I’m glad Tom is able to explain this stuff about Information Resources better than me. I think I was probably one of the people he explained it to at some point. I understand the principles that Tom and other Linked Data advocates are promulgating well enough to throw together some Linked Data implementations at the Library of Congress, such as the Library of Congress Subject Headings and Chronicling America which put millions of resources online using the principles that got documented in Cool URIs for the Semantic Web.

How do you know if someone understood something you said? Normally by what they do in response to what you say, right? The rapid growth of the Linked Data cloud is a testament to the Linked Data folks ability to effectively communicate with software developers. No question. But lets face it, the principles of web architecture have seen way more adoption right? The successes that Linked Data have enjoyed so far have been a result of grounding the Semantic Web vision in the mechanics of the web we have now. And my essential point is that they didn’t go far enough in making it easier.

So, yeah…I’m not my homepage. As someone would’ve said to me in grade school: “No shit Sherlock” :-) Although, our blogs sure seem to be having a friendly argument with each other at the moment (thanks Keith). What is a homepage anyhow? The Oxford English Dictionary defines a homepage as:

A document created in a hypertext system (esp. on the World Wide Web) which serves either as an introductory page for a visitor to a web site, or as a focus of information on a particular topic, and which usually contains hypertext links to related documents and other web sites.

So my homepage is a hypertext document with a particular focus, in this case the person Ed Summers. If you are at your desk, and fire up your browser, and type in the URL for my homepage you would get an HTML document. If you were on the train, and typed in the same URL into the browser on your mobile device you might get a very different HTML document optimized for rendering on a smaller screen. This is how the web was designed to work, albeit a bit ex post facto (which is why it is awesome). A URL identifies a Resource, a Resource can be anything, when you request that Resource using HTTP you get back a Representation of the current state of the Resource. The Representation that you get back is determined by the way it was requested: in this case the User-Agent of the browser determined what HTML I got back.

It’s very easy to look down over your bi-focals and say things like “surely Ed realizes he is not his homepage”. But if we’re going to go there, it kind of begs the question, what is a homepage … and who am I? Identity is hard. Tom should be pretty familiar with how hard identity as his instructions on using owl:sameAs to link resources together proves to be a bit harder in practice than in theory.

But let’s not go there. Who really wants to think about stuff like that when you are building a webapp that makes reusable machine readable data available?

My contention is that this whole line of discussion is largely academic, and gets in the way of actually putting resource descriptions out on the web. The reality is that people can and do use as an identifier for me, Ed Summers. It is natural, and effortless, and doesn’t require someone with a PhD in Knowledge Representation to understand it. If I want to publish some RDF that says:

<> a foaf:Person .

I can do that. It’s my website, and I decide what the resources on it are. If someone puts that URL into their browser and gets some HTML that’s cool. If someone’s computer program likes RDF and gets back some “application/rdf+xml”, all the better. If a script wants to nibble on some JSON, sure here’s some “application/json” for ya. If someone wants to publish RDF about me, and use as the identifier to hang their descriptions off of, I say, go right ahead. It’s an Open Web still right (oh please say it still is).

And best of all, if someone wants different URLs for themselves and their homepage, that’s fine too. The Linked Data we have deployed by following the rules to the best of our ability is still legit. It’s all good. I don’t mind following rules, but ultimately they have to make sense…to me. And this website is all about me, right? :-)