RDF is one of the core enabling technologies for Semantic Web. Currently, Jena and Sesame are the two most popular implementations for RDF store. Because there is no RDF API specification accepted by the Java community, Programmers use either Jena API or Sesame API to publish, inquire, and reason over RDF triples. Thus the resulted RDF application source code is tightly coupled with either Jena or Sesame API. The interoperability between Jena and Sesame arises as a problem when a Jena API based application needs to access a Sesame backend, or a Sesame API based application needs to access a Jena backend. This problem is partly solved by Sesame-Jena Adapter, which provides access to a Jena model through the Sesame SAIL API.

Jena Sesame Model(JSM) tackles the interoperability problem between Jena and Sesame from the other way. JSM provides access to a Sesame repository through the Jena API. JSM has the following features:

  • JSM conforms to Jena Model API;
  • JSM conforms to Jena Graph SPI;
  • Internally, JSM operates on a Sesame repository (currently, only local repository is supported);
  • JSM supports the RDQL query language with the exception of regular expression.

I implemented JSM because we met exactly the same interoperability problem between Jena and Sesame. We have a UDDIv2 Web Service registry, called Grimoires, which uses Jena as the triple store. We are investigating various ways to improve Grimoires performance. One possible way is to make Grimoires be able to use Sesame. So that we can always choose the triple store with the better performance. The discussion of our performance comparison between Jena and Sesame appeared in the jena-dev and jena-devel mail list, which also triggered Jena development team to improve the performance of Jena.

To the best of my knowledge, JSM is by far the only solution for providing access to a Sesame repository through the Jena API. JSM can be downloadedhere.

JSM has been contributed back to the Jena community and to the Sesame community.