Practical RDF
I pitched a Town Hall for XML 2003 in the hopes that I could get a handful of folks up in front of an audience to talk about practical things that you can do today with RDF. I think I succeeded.
I pitched a Practical RDFThis is also the name of Shelly Powers excellent RDF book. Apologies for any confusion I’ve caused. Town Hall for XML 2003 in Philadelphia in the hopes that I could get a handful of folks up in front of an audience to talk about practical things that you can do today with RDF.
I succeeded better than I could have hoped. I talked Dan Brickley , Dan Connolly , Edd Dumbill , and Eric Miller into the exercise. Unfortunately, Eric was unable to come to the conference.

My motivation for this town hall was to encourage people to think about RDF as a tool for solving problems outside the “semantic web” vision. I don’t know if I believe in the semantic web vision or not, but I don’t have to believe to use the tools.
There are two features of RDF that I find particularly practical:
-
Aggregation. Metadata comes from essays, photographs, my Palm, and other files. Expressing the metadata in RDF lets me pull it all together and address it uniformly.
-
Inference. I hate duplication of information. For example, the fact that Dan was born and has not yet died, implies that he has a birthday. Last tuesday, most recently, in fact. Recording Dan’s birthday in one place and the repeating appointment to remind me of his birthday in another place is wrong. Instead, I use rules:
# Handle birthdays and births and deaths { :p a palm:Contact . :p p:birthday :o } log:implies { :o a palm:Appointment ; palm:category xdb:_10 ; palm:description "Birthday"; palm:datebk4 [ rdf:type palm:DateBk4 ; palm:category "10" ; palm:icon "10" ]; palm:repeat [ rdf:type palm:Repeat ; palm:frequency "1"; palm:type "Yearly" ] } . { :p a palm:Contact . :p p:birthday :r . :p p:born :o } log:implies { :r palm:begin-date :o } . { :p a palm:Contact . :p p:birthday :r . :r palm:repeat :t . :p p:died :o } log:implies { :t palm:end :o } .
(Yes, I admit, this is a trivial, anal-retentive example. But the principal applies none-the-less.)
My list of practical tools includes the following:
- cwm
-
I use cwm (“closed world machine” ) to aggregate and apply inference rules to my data.
- jpegrdf
-
I use jpegrdf to store metadata about photographs inside the photographs.
- Jena
-
Jena is a Java library for accessing RDF graphis.
- XSLT/RDFTwig
-
I use RDFTwig, a set of extension XSLT extension functions, to make it easier to style RDF data for presentation.
- My own Palm stuff
-
As I’ve said before, my Palm Pilot is my “personal information appliance”. I store as much data in there as I can. I have some tools for syncing that data with my computer and building RDF from it. I’ll get around to republishing the conduits eventually.