I've owned the domain name RDF.net for years, but never done anything with it. This was kicked into the front of my consciousness today by an entertaining bolt from the blue. Herewith some general notes on RDF, its history and prospects, and a Grand Challenge to the RDF community: I'll give RDF.net to whoever builds the first application that deserves it.
Here's the bolt from the blue:
Fred Baube Wrote · To say that I should do something with RDF.net. I wrote back saying “Heh, ideas?”. He replied:
- Provide cut-n-paste Dublin Core RDF for people to put in their web pages
- To hell with ontologies, point'em to WordNet to pick words to describe what the page is about
- Provide a web form where they can type in their DC-RDF'd URL's
- Apply for a multi bazillion dollar DARPA grant to make sense of the flood of resulting semantic weirdness
It's that simple !
Except for, it isn't simple at all. And, I have a better idea.
The History of RDF · Sometime in the mid-nineties, a guy named Ramanathan V. Guha (everyone calls him Guha because they're scared of “Ramanathan,” go figure) went to work for Apple Computer. He cooked up this metadata format named Meta Content Framework (MCF), and then they built a cool app called Hotsauce, driven by MCF, that represented web sites as little 3-D planetary systems and you could fly around theml. Cool, as I said, but it didn't change the world.
In 1997, Guha went to work for Netscape, at about the same time as I signed up as a consultant there. Netscape was already on its way downhill, suffering from self-inflicted wounds as well as Microsoft's Netscape delenda est attitude, but neither of us knew that.
They asked me to work with the newly-arrived Guha on making something happen with MCF by combining it with XML. There were a couple of reasons. First, they (under the leadership of the late lamented Phil Karlton) really wanted to do some things with metadata. Second, Microsoft had recently roiled the waters with the first-ever proposed standard based on XML, namely Channel Definition Format (CDF), which was going to revolutionize “push” technology which at that point was going to be the future. And Netscape wanted to look like they were in the game.
The trouble with Guha is that he's really smart, I mean extremely remarkably smart, and he thinks faster than you do, and so it's hard to figure out what he's talking about. Fortunately, he doesn't mind explaining it five or six times till you get it
After he'd explained MCF five or six times, I kind of got it, and we cooked up something called “MCF in XML”, which Netscape then submitted to the W3C, along with a tutorial. I just now glanced over those and parts of them feel remarkably prescient, others frankly ridiculous.
Since MCF was very general-purpose, it could obviously have been used to do the things CDF could be used to do, and lots more besides. Blood was running from eyeball-sockets in Redmond at this point, and a gnashing of teeth filled the hallways there, and the angst was forcibly expressed not just there but inside the W3C.
In a fairly inspired move, the W3C announced that they were going to do a general-purpose metadata thingie, and that they'd already decided that it was going to be named RDF, which had the major advantage of being neither MCF nor CDF. Working Groups were formed (I was in the RDF WG for a little while), and eventually we got RDF.
Why RDF is a Good Idea · All those years later, I'm still pretty convinced that RDF was, and is, at the core a good idea. As to why, I don't think I can really improve on this introduction written in 1998 for XML.com. Go ahead, give it a glance, it's nice and snappy.
The Problems with RDF · RDF is well into middle age as standards go, and it hasn't exactly turned the world inside out. This despite fierce backing from Tim Berners-Lee, who sees RDF as a key foundation component for the Semantic Web. In fact, as far as I know I've never used an RDF application, nor do I know of any that make me want to use them. So what's wrong with this picture?
I have spent time as a fairly militant soldier in the RDF ranks, as witness the XML.com article above, and my quixotic effort single-handedly to browbeat IBM and Microsoft into turning XML Schemas into an application of RDF. But I'm too tired now, and I find that I like RDF-the-idea a whole lot better than RDF the actual technology. In particular, I have little sympathy with the effort to RDFify RSS. The RDF version is harder to read, harder to write, and doesn't offer enough payback to make this worthwhile.
How to Fix It · RDF has ignored what I consider to be the central lesson of the World Wide Web, the “View Source” lesson. The way the Web grew was, somebody pointed their browser at a URI, were impressed by what they saw, wondered “How'd they do that?”, hit View Source, and figured it out by trial and error.
This hasn't happened and can't happen with RDF, for two reasons. First of all, the killer app that would make you want to View Source hasn't arrived. Second, if it had, nobody could possibly figure out what the source was trying to tell them. I don't know how to fix the no-killer-apps problem, but I'm pretty sure it's not worth trying until we fix the uglified-syntax problem.
It's the Syntax, Stupid! · Conceptually, nothing could be simpler than RDF. You have Resources, which by definition are identified by URIs. The resources have Properties, which by convention are identified by URIs. The properties have Values, which can be strings or numbers or Resources.
Everything's a triple:
(Resource, Property, Value).
Not only is this easy to understand, but it's easy to mash into an RDBMS,
and easy to optimize that RDBMS schema after a little analysis of the
Given all this excellent simplicity, you have to kind of boggle when you look at one of the first examples taken from a recent RDF Working Draft.
<rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar"> <ex:editor> <rdf:Description> <ex:homePage> <rdf:Description rdf:about="http://purl.org/net/dajobe/"> </rdf:Description> </ex:homePage> </rdf:Description> </ex:editor> </rdf:Description>
Where, pray tell, are the resources, properties, and values? What benefit could I expect to derive from viewing this particular source?
Speaking only for myself, I have never actually managed to write down a chunk of RDF/XML correctly, even when I had the triples laid out quite clearly in my head. Furthermore—once again speaking for myself—I find most existing RDF/XML entirely unreadable. And I think I understand the theory reasonably well.
At this point, the RDF evangelists pipe up and say “Well, Ordinary People (tm) don't have to look at the source, there will be tools to sort all that out.” Sorry, I just don't believe that. If, in 1994, you'd needed DreamWeaver or equivalent to write for the Web, there wouldn't be a Web today.
I don't think anyone needs to feel particularly bad about this failed
experiement; nobody had ever worked out the right way to write down
(R,P,V) triples efficiently in XML before, and there's no reason
to expect anyone to get it right first time.
And furthermore, I helped invent the RDF syntax, so I'm as much to blame as
However, I do think that it makes sense to express RDF in XML. If for no other reason, I expect a lot of those Values to be strings and a lot of those strings not to be in English, so there's a big value-add in having your internationalization ducks in a row, which XML helps force you to do.
RPV, a Thought Experiment ·
Eventually sometime in 2002 I ran out of patience and tried to figure out
the simplest imaginable way to express
(R,P,V) triples in XML,
and came up with the unimaginatively-named
The first example from that RDF draft, translated into
English, says that the page at
http://www.w3.org/TR/rdf-syntax-grammar is edited by a person
http://www.example.com/terms/fullName is “Dave
http://purl.org/net/dajobe/; further, that that page's
http://purl.org/dc/elements/1.1/title is “RDF/XML Syntax
Here's how you say that in RPV:
<RPV xmlns="http://www.rdf.net/rpv/"> <R id="Dave" pbase="http://www.example.com/terms/"> <PV p="fullName">Dave Beckett</PV> <PV p="homePage" v="http://purl.org/net/dajobe" /> </R> <R r="http://www.w3.org/TR/rdf-syntax-grammar"> <PV p="http://www.example.com/terms/editor" v="#Dave" /> <PV p="http://purl.org/dc/elements/1.1/title"> RDF/XML Syntax Specification (Revised) </PV> </R> </RPV>
And here's how you say it in RDF/XML:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:ex="http://www.example.com/terms/"> <rdf:Description rdf:about="http://www.w3.org/TR/rdf-syntax-grammar" dc:title="RDF/XML Syntax Specification (Revised)"> <ex:editor> <rdf:Description ex:fullName="Dave Beckett"> <ex:homePage rdf:resource="http://purl.org/net/dajobe/" /> </rdf:Description> </ex:editor> </rdf:Description> </rdf:RDF>
What do you think?
Killer App · You can call me an idealist, but I think the Web is terribly metadata-thin, and I think that when we start to bring on board metadata-rich knowledge monuments such as WorldCat and some of the Thomson holdings, we're damn well going to need a good clean efficient way to pump the metadata back and forth.
I think the RDF model is the right way to think about this kind of stuff, and I firmly believe that the killer app is lurking in the weeds out there, if we can get out fron under the ten-thousand-pound deadweight of the current syntax.
I honestly don't know if RPV is the way forward. But I think the Semantic Web people have taken on a job that's already tough, and are adding difficulty, and increasing the probability of failure, by sticking to the currently broken RDF/XML syntax.
The RDF.net Challenge · OK, I'm prepared to put my domain name where my mouth is. Herewith the RDF.net challenge:
To the first person or organization that presents me with an RDF-based app that I actually want to use on a regular basis (at least once per day), and which has the potential to spread virally, I hereby promise to sign over the domain name RDF.net. The rules are: