Monday, September 3, 2007

Baselines

The first moment I looked at the RDF specification I had a problem with it: everything is URI based. If you want to annotate a thing, you have to refer to its URI.

What I'm working on completely seperates content from a specific location. A link to a text document, a thumbnail image linking to a text document, a summary of a text document, and the text document are all facets of the same thing, and I can place those things in many places.

For instance take a technical document with many sections. Now I can display those sections all on one web page for easy printing, or I can seperate them out into many pages for easier reading. Also, I can place the documument on many servers or offer a PDF version of the document. Which version is "the" document? Which URL do I point to? What if I make a new version of the document and I don't want to remove the old one?

In P2P frameworks content doesn't exist in any one place. It floats. I can grab it from many places. That makes the content extremely plastic. I want my content to have the same flexible characteristics.

The brings out what I consider to be the key weakness of what the W3C does. They create standards that define how the web works. The problem is that they do everything purely from the context of the web. Systems that store, display and annotate data don't just exist in a web context. I create a document on my computer that I want to place on the web. It has a local networked path and a system path. How do I annotate it with RDF if I haven't given it a home yet? What if after I place it in one place we decide to move it? Binding myself to URIs makes my data brittle when I want it flexible.

This also dovetails into another problem that is inherant in any framework: how do you identify people? I have many email addresses, that change every now and then. I move from place to place and use different variations of my name depending upon context. What defines me digitally? Right now nothing.

A Friend of a Friend (FOAF) could be said to be such a think, but it has information that changes over time. Also, my FOAF from work would be totally different from one that I exchange with my old drinking buddies.

I think conceptually I've got the solution: baselines.

A baseline is a collection of fields that define unchanging aspects of a thing.

This makes defining who I am digitally rather simple.

<baseline type="person">
<name>Robert Bob</name>
<mother>Momma Bob</mother>
<father>Billy Bo Bob</father>
<birthday>1-1</birthday>
<birthplace>The Moon</birthplace>
</baseline>

This creates a SHA-1 hash of f54634c2c982500c67d254d2afa44c618104bfee

Now I've got an identifier that defines me without containing any information that I'd consider private. I can do the same thing for any content by creating fields that define it. Description, creation date, created by etc...

With a baseline I have a key to an object that isn't bound by its specific content, context, or location.

No comments: