In his recent post, Mark Pilgrim writes that he is amazed, bordering on appalled because of reaction to his posting about the CITE tag. I was a bit surprised myself because the posting wasn’t necessarily about revolutionary uses of technology. However, what Mark did do, in just a few words, was hit the hot spot in several debates: XML versus HTML, machine readability versus human readability, the semantic web, RDF, and any combination of these topics. And for the cherry to complete this semantic sundae, he threw in some code. If his post was fishing instead of writing, it would be equivalent to using five different fishing poles, each with a different lure. And did he come home with a catch.
Semantics. People start talking semantics, and each person doesn’t understand what the other people mean by semantics, and therein lies the wonderful irony that seems to weave in and out of the web. Semantics is all about meaning, but eactly what does it ‘mean’? We have no problems with small ‘s’ semantics in the everyday world, but put semantics on the web, and it becomes big ‘S’ Semantics.
Mark uses CITE as an example of semantic markup in HTML. He has a point: CITE does carry with it meaning — that which is marked up with this tag is a ‘citation’. By defining the context of the element, we can, for example, discriminate between hypertext links that are just ‘links’ and links that are associated with citations.
I went back to one of my postings and added CITE to specific URLs that I wanted to designate as citations. With an itty bitty Perl CGI app, I can find all the citations in the page — as shown here. Embed the CITE within a hypertext link and I can also easily associate those citations with the author’s post, as shown here.
By using CITE in conjuction with a hypertext link, I attach special significance to the link, something I can’t really do with just a straight hypertext link tag, as shown here. CITE provides context for the link. Context provides meaning, and meaning is semantics. Works nicely.
However, and you knew there was a however, I am a greedy person. I want to know more, and at some point HTML just doesn’t have the items that can convey the ‘meaning’ that I’m after.
Sure, I can create little bots that go out and scrape HTML and return with all sorts of data. I can then create a huge database and push this data into it. And once I have mined all that data, I can then create these huge, twistie, complex algorithms and set myself up as a competitor for Google. I mean, all that’s missing is someone to do the graphics for me for holidays, and such.
But, you see, that’s not what I’m after. I’d like to be able associate new and even more complex forms of ‘meaning’ to web resources without having to store huge amounts of data, or to create ever increasingly complex algorithms, including finding devious ways of filtering out what amounts to “weblog spam”.
Ultimately, I want to record and find meaning without having to get VC funding, first.
That’s when something like RDF/XML enters the picture. Of course, you knew I was going to bring in RDF/XML — look to your left. The cover on the book doesn’t say “Practical meaning in a loosely connected environment filled with lots of data”. It says “Practical RDF”.
Let’s say I want to be able to find out Creative Commons license information for a specific posting. I could put this information into meta tags, or try and scrape it from the HTML. However, by embedding the information into RDF/XML, which is then embedded in the HTML, I can easily use one of my RDF APIs, such as my RDF PHP-based Query-o-Matic Lite, to pull the information out about the license — such as the required license information. Since I also store the RSS channel information within the page, I can also query this information.
Of course, I could get this RSS channel information directly from my RDF/RSS file, but I’d rather get specific information for a specific resource than my current running list of aggregated items.
The point of all of this, besides having a little fun with Perl and PHP and various forms of markup, is that all of this stuff is data and all of this stuff can record ‘meaning’, at least some forms of meaning. RDF/XML doesn’t replace the ‘meaning’ that HTML provides — it just adds a way to record new meanings that HTML can’t, or doesn’t provide.
I agree with Jon Udell — there’s no need for either/or propositions in the world of Semantic markup. It’s really nothing more than angle brackets, data, and a few rules depending on the specific markup used. Add a smidgeon of code and there you have it — rich, meaningful data. Sure beats the heck out of web consisting purely of Adobe PDF and Macromedia Flash files; all we’d have then is a bunch of loosely connected black holes.
(g’zipped and tarred file with itty bitty Perl CGI apps used as examples — requires HTML::BuildTree. g’zipped and tarred file of RDF Query-o-Matic files. Requires PHP XML classes from Source Forge.)
Archived at Wayback Machine