Mitch Pronschinske is the Lead Research Analyst at DZone. Researching and compiling content for DZone's research guides is his primary job. He likes to make his own ringtones, watches cartoons/anime, enjoys card and board games, and plays the accordion. Mitch is a DZone Zone Leader and has posted 2576 posts at DZone. You can read more from them at their website. View Full User Profile

Jenabean: Bridging the Gap Between Java Objects and the Semantic Web

01.25.2010
| 10899 views |
  • submit to reddit
Skeptics have said that the semantic web would be too difficult for people to understand or exploit, but in the last few years, the number of enabling technologies for the semantic web has grown significantly.  The W3C has drafted standards like RDF (Resource Description Framework), to make development for the semantic web more practical.  There are also more tools that make it easier for developers with different skill sets to build applications for the semantic web.  For Java developers, Jenabean is one tool in particular that helps you get started reading and writing RDF using the familiar JavaBean model.  DZone interviewed Taylor Cowan, who is the creator of Jenabean and a software architect at Travelocity.

The idea for Jenabean started when Cowan was an employee at Sabre Labs working on a web 2.0 project that had things like tags, users, comments, answers, and questions.  The interrelated content was new to him so he tried to organize it with related data.  Cowan found relational data to be rigid and intractable, so he started looking for new ways of storing data that were flexible and more adept to changes in the schema.  He also wanted to find ways of storing data that were willing to accept no schema at all.  Through some research, Cowan found what he was looking for in 'triple stores'.

Triple stores can receive data that is reduced down to a very simple structure called a "triple", which consists of a subject, a predicate (verb), and an object. Even complex data can be represented by starting with that simple structure.  On top of the triple store is an RDF, which is a semantic web formal specification.  Cowan thought he had found the answer to his problems with this data storage mechanism, but there were still some issues with coding.  

"I began to write the app," he said, "and I found that I hand to write a lot of boiler-plate code between the Java web application and the triple store in order to retrieve data, show it to the user, and persist data back into the store.  I realized that the impedance mismatch between my application, my objects, and the data store was very similar to the impedance mismatch that the object-relational mapping software intends to address."  Cowan soon discovered that no one had written a binding between JavaBeans and the Jena RDF framework.

"I took it upon myself to write an open source project that would help people persist JavaBeans and query for those beans," said Cowan.  "My intent was that it should work elegantly with MVC containers such as Struts, Stripes, and  even things that are model-based like Grails."  Cowan named his project "Jenabean" and gave it a liberal Apache License 2.0.  Most of the applications that Cowan writes for the semantic web use Jenabean.

                                                                                    RDF Graph


Cowan says many of the people who come to his talks are researchers, but he would like to see more application-minded developers become interested in new ways of storing data.  He says that Jenabean doesn't require deep, somewhat academic knowledge of the semantic web to convert Java objects to RDF or convert RDF to objects.  It's annotations based and there's no XML binding required.  Jenabean is also based on plain old Java reflection, so it doesn't require a byte code interweaving library.  Cowan said, "It just takes clean Java classes that have been annotated, and follows those annotations as directions for how your objects can be persisted into a graph store."

There's a lot of information on the internet being provided as linked data, said Cowan, and that information is provided as RDF or one of its manifestations.  "The developer is going to have to parse these data structures and then merge that into their app, which is most likely a domain model in Java objects," said Cowan.  "Jenabean allows you to consume these data sources directly into objects without having to write a lot of boiler-plate code between the data on the extranet and your application.  It should save time for developers who want to consume semantic web information."

An overview of the Jenabean programming model is available for Java developers who want to get started with writing for the semantic web.  You can download the Jenabean library here.
AttachmentSize
Rdf-graph2.png12.49 KB