What's right with RDF

by Simon St. Laurent

I'm don't tend to use RDF in my own work, but I'm getting very concerned that recent blasting on RDF risks obscuring a lot of things that RDF does very well.



The work I do with XML and markup really depends on the creation of markup vocabularies that at are least human-approachable if not automatically intuitive. I don't expect customers of my projects to understand the code that drives them, but I do expect them to have a decent chance of understanding the data formats that I use underneath those projects. Given that set of priorities, XML generally makes more sense to me than RDF, as explicitly embedded markup produces labeled structures that are directly visible in the document. Cool stuff, I think.



I actively resist and frequently blast technical changes to XML which threaten XML's basic approachability. Sometimes those proposed changes have RDF roots - Namespaces in XML has been an endless source of URI-induced misery, and I can't say I'm fond of Liam Quin's RDF-based "thought experiment" for XML/R. RDF is far from the only problem, however, as W3C XML Schema and XQuery both demonstrate that complexity is alive and well in sectors where RDF is barely a concern.



RDF is excellent at addressing a particular set of problems. The Resource Description Framework's primary approach is description. XML often presents something (a document, a table) directly; RDF more typically presents a description of something, not the thing itself. For some appications - like metadata and ontology development - this approach fits beautifully with the problem set.



RDF also seems to do its best work when it can be presented in some form other than XML markup. RDF's graph approach and XML's hierarchical approach are very different. While I'm not fond of being handed a dozen marked-up triples and forced to sort them out, RDF descriptions often make beautiful sense when presented as diagrams or exposed through APIs.



If RDF fits your problem set, run with it. If it doesn't fit, fight it - for that problem set. We're not all going to be happy all of the time, but RDF's strengths should not be forgotten in the arguing.



Is RDF working for your projects? Why? Why not?