The beauty of Latex: my AllegroGraph book becomes two books, one for JVM languages and one for Lisp

I have been working on and off for 16 months on a book about Semantic Web (or Linked Data) application programming using the AllegroGraph product. I have decided to substantially increase the scope of this applications/tutorial style book to also include support for Sesame. The figure on the left shows the software architecture road map for the book using JVM languages.

I am splitting the book into two volumes, and using Latex makes this really easy to share small amounts of common material so both books stand on their own. Latex also makes it easy to combine both books into one all-inclusive book, eliminating the duplicated parts. The two volumes are:
  • Volume I: will cover the use of both AllegroGraph and Sesame using JVM languages: Java, Scala, JRuby, and Clojure. I am working on a common wrapper written in Java that supplies my own (rather simple) API to both AllegroGraph and Sesame. My wrapper implements Sesame support for geolocation and free text indexing and search so the wrapper is adequate to run all of the book examples using either AllegroGraph or Sesame "back ends."
  • Volume II: will cover only AllegroGraph using both the embedded and client Lisp APIs.
Both AllegroGraph and Sesame are great development tools, but fill different needs. On projects that can support a several thousand dollar a year per server license fee, I would choose Common Lisp + AllegroGraph for development. AllegroGraph is very scalable and the Lisp APIs are really nice to work with. For Java (or other JVM languages) applications, I would still choose AllegroGraph for the scalability and support if a project can support the license costs. The good thing is that for most small to medium size projects, the free version of AllegroGraph or the open source Sesame project both are good choices, so as a developer you have some real flexibility. There are also other good RDF data store platforms like Jena, Joseki, Kowari, Redland, 4store, Swi-Prolog Semantic Web library, Talis, Virtuoso, etc. but I have relatively little (or in some cases no) experience with these. I use AllegroGraph and Sesame so that is what I write about.

Comments

  1. Hi Mark, when the book will be available for us?

    ReplyDelete
  2. Hello Alessio,

    I may have "work in progress" PDFs available in 3 or 4 weeks. I hope to have Volume I complete in 6 to 8 weeks and Volume II done a few months after that.

    ReplyDelete
  3. Waiting several months for the lisp volume is one more reason to learn clojure but somehow I am resistant to use anything JVM related on my projects.

    ReplyDelete
  4. Look forward to reading your book. Also, I very much like your insight comparing Sacala and Clojure.

    Lately I have been experimenting with Clojure and the more I learn it the more I like it and inevitably I need to compare it to Scala if nothing else than in providing input and direction to our team.

    There are too many products/languages and few available milliseconds to absorb it all; your experience and insight on this will be valuable; thanks for the blog and related information.

    ReplyDelete
  5. J.F.: thanks for the comments! I also rely on other people for advice on which technologies are worth exploring, but I only write about my own experiences. Clojure really is nice to work with but when/if I need to do a large JVM project with most code written from scratch I am leaning towards using Scala.

    ReplyDelete
  6. Hello Mark,

    On Java you can also use Ontotext's OWLIM. Give it a try. It supports Sesame, has built-in OWL reasoner and has some interesting features such as RDF Rank (the idea is similar to Page Rank).

    -Anton

    p.s. You may also like this tool: http://sourceforge.net/projects/sesamewinclient/ (I am co-developer)

    ReplyDelete

Post a Comment

Popular posts from this blog

Ruby Sinatra web apps with background work threads

Time and Attention Fragmentation in Our Digital Lives

My Dad's work with Robert Oppenheimer and Edward Teller