Wednesday, November 21, 2007

Once more on information resources and RDFa

Benjamin Nowack has a great explanation of how RDFa deals with the very tricky issue of information resources, and indeed, offers a unique solution to the problem. (His post is in response to Ian Davis's post, Is the Semantic Web Destined to be a Shadow?.) I agree with all of Benjamin's post, and in particular it's very impressive that he draws attention to some very subtle issues, such as why it was important not to include @id processing in RDFa.

However, there is one point where I think I would be more positive than Benjamin--or perhaps a better word would be 'optimistic'. Either way, he says towards the end of his post:
One practical issue remains, though: Current browsers don't (natively) support navigating to RDF identifiers encoded in RDFa-, microformats-, or GRDDL-enabled HTML pages.
That is true, but given the points that Benjamin has made earlier in the post about how we should be careful when using URIs with fragment identifiers, this navigation question might be a non-issue. After all, if we want to navigate to some point in another document, then by definition we are dealing with an information resource anyway, and so it's legitimate to use an @id.

RDFa cleanly copes with the difference between resources that you might want to navigate to, and those that you might only want to refer to, by supporting the use of two different attributes--@href and @resource. In terms of the triples generated there is no distinction between the two, but there is a big difference in terms of their behaviour--only @href yields a clickable link, in the normal HTML manner.

Illustration

To illustrate, let's say that in my profile I indicate an identifier for me, as well as my name:
<div about="#mark" instanceof="foaf:Person">
<span property="foaf:name">Mark Birbeck</span>
</div>
This means that anyone can now refer to my 'identifier', perhaps to indicate that they know me. But it would be wrong to create a clickable link to that identifier, since as Benjamin is correctly implying--and this lies at the heart of the debate about information resources and ordinary resources--I am a person and not a web-page. (If you are interested in this topic, I wrote a longer post about some of these issues back in May last year, called The Information Resource Debate, and RDFa.)

However, whilst it would not be a good idea to create a clickable link that points at my identifier (or 'me', to all intents and purposes), there would be nothing wrong with creating a clickable link that refers to my home-page.

So, to illustrate all of this, let's say that Benjamin used the following mark-up in his web-page, to both indicate that he knows me, and to link to my home-page:
<div about="#benjamin" instanceof="foaf:Person">
<span property="foaf:name">Benjamin Nowack</span>
knows
<div rel="foaf:knows" resource="http://some.profiles.com/mb#mark">
<span property="foaf:name">Mark Birbeck</span>
(<a rel="foaf:homepage" href="http://internet-apps.blogspot.com">home page</a>)
</div>
</div>
As you can see, the distinction has been made between a link to a resource that is another web-page (known as an information resource) and a link to a resource that is a person--one uses @href and the other uses @resource.

Intelligent links

In the future I see this being optimised in a very interesting way, as follows.

I already have a client-side RDFa parser that whilst parsing will load many of the external documents it comes across, in the hope of finding even more triples. Once parsing is complete, the document being viewed in the browser is 'augmented' with some of the additional information that was found in the triples.

With this behaviour, it means that in mark-up someone only needs to indicate that they 'know' me, and the RDFa parser does the rest, providing other information gathered from my profile. For example, continuing with the above example, Benjamin could change his mark-up to this:
<div about="#benjamin" instanceof="foaf:Person">
<span property="foaf:name">Benjamin Nowack</span>
knows
<div rel="foaf:knows" resource="http://some.profiles.com/mb#mark">
<span property="foaf:name">Mark Birbeck</span>
</div>
</div>
The parser would see the reference to my profile and load it, looking for more triples, and one of the triples that would be gained would be the URL for my home-page:
<div about="#mark" instanceof="foaf:Person">
<span property="foaf:name">Mark Birbeck</span>
<a rel="foaf:homepage" href="http://internet-apps.blogspot.com">home page</a>
</div>
The final step is for the parser to add a navigable link to the div or span associated with me in the document being parsed, using of course the URL of my home-page. And what's really neat is that if I were to change my home-page and re-publish my profile, anyone using the reference to my profile wouldn't need to do a thing to get the updated link to my home-page.

Conclusion

In my view this kind of functionality shows the benefit of keeping the world of resources and information resources apart; in the latter examples you can see that what the author is marking up is in many ways more 'correct', since they are expressing a relationship between people (i.e., that they know each other) rather than the merely technical notion of 'here is someone's web-page'.

Labels: , , , , , , , , , , , , , ,

0 Comments:

Post a Comment

Links to this post:

Create a Link

<< Home