Forgot your password?
The Internet Books Media Book Reviews

Practical RDF 120

Posted by timothy
from the tools-applied dept.
briandonovan writes "World Wide Web Consortium (W3C) Director Tim Berners-Lee and his compatriots would like to transform the current Web into a 'Semantic Web' where 'software agents roaming from page to page can readily carry out sophisticated tasks for users' using 'structured collections of information and sets of inference rules.' The Resource Description Framework (RDF), designed as a language for expressing information about resources on the Web, and allied technologies are the result to date of ongoing efforts at the W3C to furnish Semantic Web proponents with the requisite tools. While it's far too early to predict whether TimBL's grand vision will be realized, RDF/XML (the XML serialization of RDF) is already in widespread use, having been incorporated into a surprising array of applications." Read on below for briandonovan's link-stuffed review of O'Reilly's Practical RDF.
Practical RDF: Solving Problems with the Resource Description Framework
author Shelley Powers
pages 331
publisher O'Reilly & Associates
rating 9/10
reviewer Brian Donovan
ISBN 0596002637
summary Great introduction to RDF, an assortment of tools and utilities for working with RDF, and some real-world applications.

RDF first hit my radar screen a couple of years ago while I was working on a barebones tool to manage my personal website. I was writing the code to generate RSS feeds ("What is RSS?") for my site and had to choose whether to support RSS 0.9x (non-RDF) or RSS 1.0 (RDF-based) or both. Long story short: I went with RSS 1.0 and was able to implement the feeds, but never got any further into RDF afterwards. I couldn't make headway through the RDF-related working drafts rapidly enough to justify the time that I was spending, there weren't any worthwhile-looking books available at the time, and the few online tutorials that I found were sorely lacking -- possibly because the specs themselves were still evolving as the RDF Core Working Group hashed out some remaining issues.

Fast forward a few years: the dust in RDF-land seems to be settling a bit (although new working drafts of all of the current RDF specs were released on September 5th, most of the changes from previous versions appear to be relatively minor) and, with the publication of Shelley Powers' Practical RDF: Solving Problems with the Resource Description Framework, there's finally a good book available on the subject.


After an introductory chapter that touches on the history of RDF and some applications of RDF/XML (the preferred, W3C-blessed serialization of RDF), the book is divided into three broad sections. In the first, the reader is guided through the raft of documentation produced by the RDF Core WG, including : Resource Description Framework (RDF): Concepts and Abstract Data Model, RDF/XML Syntax Specification, RDF Model Theory (formerly Semantics), and RDF Vocabulary Description Language 1.0: RDF Schema. Before moving on to Part II, where she surveys programming language support and tools available for working with RDF (with code snippets where appropriate), Powers spends a chapter developing an RDF vocabulary, "PostCon," that's used throughout the remainder of the book for demo purposes.

Chapter 7, the first in the tools-focused portion of Practical RDF is dedicated to (mostly Java-based) editors, parsers, validators, browsers, etc. for desktop use. Next, she dives into Jena, the Java RDF toolkit that began life as the labor of love of HP Labs researcher Brian McBride before being elevated to the status of a formal HP Labs project under their Semantic Web Research umbrella. Another HP Labs Semantic Web project, Damian Steer's BrownSauce, a slick little Java-based RDF browser, was introduced back in Chapter7. Means for manipulating RDF/XML in Perl (RDF::Core, part of Ginger Alliance's PerlRDF project), PHP (RAP, the RDF API for PHP), and Python (RDFLib) are addressed in Chapter 9. RDF query engines/languages are taken up next -- rdfDB QL, the query language of R.V. Guha's rdfDB (written in C); SquishQL, implemented in the Java-based Inkling query engine (built atop PostgreSQL); RDQL, used within Jena; and Sesame, a JSP/Servlet querying engine that supports both RDQL and its own query language, RQL, and can be deployed atop MySQL or PostgreSQL. Powers rounds out this part of her book with a chapter that deals briefly with the leftovers. Drive, an RDF API for C#, is briefly discussed along with RDF APIs for less fashionable programming languages : Nokia's Wilbur for CLOS, XOTcl for Tcl, and RubyRDF for Ruby. Redland, an RDF toolkit written in C with Java, Perl, PHP, Python, Ruby, and Tcl wrappers, is covered at some length (about half a dozen pages) and a couple more are given over to Redfoot, a Python RDF framework consisting of RDFLib (mentioned earlier in the Perl/PHP/Python chapter), a small-footprint HTTP server (according to the changelog at, they're using Medusa), and a native scripting language called Hypercode that lives within CDATA blocks in RDF/XML (example).

The last third of Practical RDF is devoted to uses of RDF and begins with a chapter on the OWL Web Ontology Language, an extension to RDF that's designed to supply more constraints for RDF vocabularies than can be provided by RDF Schema alone. This chapter would have been better situated after Chapter 5, which addresses RDF Schema, and feels a bit out of place here. RSS 1.0, the RDF-based syndication format, gets a chapter all of its own, beginning with a short synopsis of the evolution of RSS and the rift between the RSS 0.9x/2.0 and RSS 1.0 camps, progressing through descriptions of the RSS elements, some discussion of the use of modules, RSS autodiscovery, and aggregators (Amphetadesk, Meerkat, and NetNewsWire are mentioned), and finishing with an example RSS file (a syndicated list of book recommendations), producing RSS 1.0 using the Informa RSS Library (a set of Java classes), and merging two RSS 1.0 files using the XML::RSS Perl module. Two "Applications Based on RDF" (commercial and noncommercial) chapters top off the book. Noncommercial applications of RDF are visited first : Mozilla, where history and bookmarks, among other classes of information, are stored in RDF; the Creative Commons licensing scheme, whose proponents encourage content creators to embed RDF snippets into their documents and applications to provide information about the work itself and the restrictions placed on its reuse under the particular CC license that they've chosen; a Java and PostgreSQL based digital library system jointly developed by MIT and HP that uses RDF; and FOAF (Friend-of-a-Friend), an RDF vocabulary designed to express personal information and interpersonal relationships. Among the list of commercial applications utilizing RDF that comprises the final chapter in the book is Chandler, the same as yet very-alpha personal information manager that's managed to garner multiple mentions on this site.

The Verdict

The real meat of Practical RDF, for me, was in Chapters 1 through 6 (plus the OWL chapter, Chapter 12). This is not to say that the material in the last 2/3 of the book isn't useful or interesting. The section on RDF software tools is a great annotated survey of what's out there right now ... and I would imagine that installing and testdriving each of the software applications featured in those chapters must have been an extremely time-consuming process. The chapters describing real-world applications of RDF could be useful to someone trying to convince a manager that RDF is a viable, widely-used technology. Given a choice, though, I would rather have seen those pages spent on additional coverage of RDF, RDFS, and OWL with more example RDF vocabularies developed (like PostCon, which the author formulated, then refined through RDFS and OWL). The displaced material could have been made available online at the author's site for the book. A lot of that information will become less accurate over time as the software evolves and people come up with more applications for RDF anyway.

All nitpicking aside, though, if you're looking for a book on RDF, then you can't go wrong with Shelley Powers' Practical RDF.

You can purchase Practical RDF from Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

This discussion has been archived. No new comments can be posted.

Practical RDF

Comments Filter:
  • by Googol (63685) on Tuesday September 23, 2003 @12:16PM (#7034664)

    RDF is a great idea. But it needs to loose the java and the XML. People who are attracted to those have no use for RDF--they want messages they can read without documentation. I know XML is more than that, but in the corporate world its attraction is "configuration files I can read after the author was outsourced".

    There are two XML movements--one creating a kludgy layer of application bureaucracy and the other visionary. RDF presently combines the worst of both. Neither "side" really wants it. AI is happy with ontologies and the corporate world is happy with messages 100 times larger than the underlying network protocol. (Could be worse: ASN.1 anyone?)

    *BUT* the underlying idea to RDF (ontologies for your metadata). RDF schema is really more important than RDF syntax. The idea is a simple model for describing metamodels. This fits in the same space as UML metamodels, and the Common Warehouse metamodels, only it is much more light weight and you can implement it with existing tools (you do have to use XML--eeeewww).

    XML serves one good perpose--it makes s-expressions socially respectable in corporate world and for that I am greatful. They almost got Scheme in too (DSSSL), but the angle-bracket police got them. Too bad.

    RDF can sneak in metaprogramming if you let it.

  • by Erisian Pope (636878) on Tuesday September 23, 2003 @12:28PM (#7034751) Homepage

    I just finished skimming the whole book and reading about half. My biggest complaint is there isn't much guidance as to where you should go and define your own vocabulary and where you should use an existing one. The only vocabulary discussed besides the RDF core is Dublin Core. To make things worse, most of the examples shows using a custom vocabulary that unnecessarily defines 'Author' and 'Title' instead of using Dublin Core's 'creator' and 'title'.

    I like RDF alot, its really a great tool, but without some serious guidance and discipline when defining vocabularies its going to descend into babble and become pretty useless.

    Does anyone know of a good resource for finding emerging standards for RDF vocabularies so we don't all go out and reinvent the wheel?

  • Re:Scary page (Score:2, Interesting)

    by danbri (33353) on Tuesday September 23, 2003 @12:33PM (#7034786) Homepage
    Yeah, it was staring into their cold dead eyes that had me generate this one for the FOAFCorp, lets.corp.p ng

    (foafcorp: -- reworking of data in rdf and svg)

  • by *weasel (174362) on Tuesday September 23, 2003 @01:32PM (#7035285)
    /(...)/ == sarcasm

    On our staggeringly democratic web, anyone can be a publisher, and as Meta tags have shown - not everyone has the truth in mind.

    I find it odd to note that it is never discussed how RDF will be kept from rapidly degenerating into Meta-tag style abuse.

    Will there be an authority that will verify content descriptors, or at least handle complaints of abuse?

    I would honestly like someone to prove me wrong, to show me where the technology prevents, handles and/or reduces abuse. Because I'm genuinely excited about what is possible with a trustworthy intelligent network. However, I'm just not seeing it here.

    Even normally trustworthy hosts tend to have some disingenuous information in their RSS feeds when they think it will benefit their business.

    (Eg. altering post dates or posting phantom or questionable updates to get more hits from feed subscribers, broadly labelling their content to avoid being properly categorized to expand their exposure, etc)

    So is it accounted for?

The more cordial the buyer's secretary, the greater the odds that the competition already has the order.