In my last article "The State of RDF Support in Ruby (2007)," I did a quick overview of the available implementations of RDF for Ruby, and talked about the history, strengths and weaknesses of each.
I'd like to talk about where we should go from here. I'm not the King of RDF(tm) for Ruby, so obviously this is just my opinion, and the community as a whole needs to take on this challenge, but I'd like to help spur the community to action...
The Ruby community would benefit greatly from an RDF implementation that is fully compliant with the specification and embraces the ideals of RDF. Here are some ideas about how such an implementation would look, and how it would help the community.
Pure Ruby. For portability purposes, a pure Ruby implementation would go a long way. It may not be the fastest, but it would be a portable way for someone to do experimental work with RDF on a small scale, and to do so anywhere that Ruby can go.
Modular. RDF is a graph-based model, and so it seems obvious that in addition to a pure Ruby graph implementation there could also be graph implementations that talk to high-performance triple stores. It also makes sense that this RDF library would try to provide a consistent interface across all of its graph implementations, so having something like a pure Ruby reasoner that could be mixed into graph implementations for triple stores that do not support reasoning would be very helpful.
Distributed. One of the main ideals of RDF is distribution. In some cases it may be necessary to pull the triples from a remote graph into a local graph (such as when querying an RDF/XML document), but in all other cases pulling in every remote triple is not scalable. Additionally, it should be simple to consolidate graphs into a single interface that can be queried, and that query should be federated out to each of the remote triples stores, with the reasoner reasoning across all of those triple stores.
There have been calls in the past to unite those interested in Ruby and RDF. Dan Brickley setup a Public RDF Ruby mailing list to be used for coordination between people interested in furthering the cause. Dmitry Borodaenko (author of Samizdat) posted a message there four years ago proposing a unification of Ruby RDF interfaces.
So my challenge is, if you're interested in RDF support in Ruby, join the Public RDF Ruby mailing list, and let's start a conversation about where we should go. There's a lot going on now. In my estimation RDF in general is gaining a good bit of steam, the redland bindings needs someone to officially support them, and Ruby has great potential in this space.some code I've been working on. I don't want to fragment things further, but I would imagine it becoming a general 'rdf' gem and that there would be 'rdf-sesame,' 'rdf-mulgara', 'rdf-redland,' etc. gems as plug-in graph implementations for different triple stores.
This implementation includes a fully compliant RDF implementation of a pure Ruby graph with a mix-in query executer, NTriples read/write support, and pretty good test coverage. It does not have a reasoner, but I do have an implementation of a reasoner from a previous iteration in an SVN branch that I could re-appropriate for this iteration.
I'd create a new RubyForge project, but I have two concerns: 1) I don't want to take control of the name 'rdf' as a gem without having some kind of consensus support in the community, and 2) there are several other RubyForge projects related to RDF and maybe my code would be better served to integrate into one of them.
Originally published on November 7, 2007 at 11:57