Thursday, January 21, 2010
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.
Labels: Clojure, Java, JRuby, Latex, Lisp, RDF, Scala, semantic web
Thursday, July 24, 2008
Dynamic language 'goodness': comparing JRuby and Java Semantic Web example programs
Although there are several Semantic Web libraries or frameworks that I like to use, I had to choose just one for a DevX article that I am finishing up. I chose to use Sesame. After covering what I think are some "big wins" of using RDF/RDFs/OWL (for some applications) I present some example programs that I hope that readers have lots of fun with. The "wrapper" library that I wrote for Sesame works fine for both Java (which Sesame is written in) and JRuby. I must say that for experimenting with Sesame, JRuby is a lot nicer because the example programs are much shorter and with Ruby duck typing it is easier to write callback handlers, etc. for my wrapper library. Being able to work interactively in a JRuby jirb shell is also a big win for experimenting with code, different SPARQL queries, etc.
Labels: Java, RDF, Ruby, semantic web
Saturday, May 05, 2007
Interesting technology: AllegroGraph
I am using Franz's AllegroGraph for two proof of concept projects for a customer: one using the Java APIs (free version) and one using the Lisp version that is unlimited in the size of stored data. RDF storage and querying is not easy technology to use (at least for me) but looks very promising.
The thing that I find interesting about using AllegroGraph is that you are dealing with disk-based persistent data, but not dealing with objects - not dealing with object relational mapping, etc. Instead, you work with graph data structures that are stored on disk, with parts cached in memory. Interesting stuff.
Still, dealing with RDF is not optimal, compared to dealing with graphs in memory. As an example: I used to work a lot with Rete networks using Lisp (hacking Charles Forgy's Lisp code) and dealing with graph data structures built up with Lisp lists, cons, etc. is just easier to do. In memory graphs, semantic networks, etc. are just easier for me to wrap my thoughts around. However, approaches like AllegroGraph have the advantage of scalability.
The thing that I find interesting about using AllegroGraph is that you are dealing with disk-based persistent data, but not dealing with objects - not dealing with object relational mapping, etc. Instead, you work with graph data structures that are stored on disk, with parts cached in memory. Interesting stuff.
Still, dealing with RDF is not optimal, compared to dealing with graphs in memory. As an example: I used to work a lot with Rete networks using Lisp (hacking Charles Forgy's Lisp code) and dealing with graph data structures built up with Lisp lists, cons, etc. is just easier to do. In memory graphs, semantic networks, etc. are just easier for me to wrap my thoughts around. However, approaches like AllegroGraph have the advantage of scalability.
Labels: RDF, semantic web
Monday, April 09, 2007
Google Data APIs
I have been experimenting with online data applications (for example, my DabbleDB FactBook RSS feed and experiments with Metaweb's freebase.com system).
I am adding Google's Data APIs to this cornucopia of structured data stores. If you are a Java developer, Google's GData APIs download is a good quick start.
GData and DabbleDB are great for organizing your own data online and then using that structured data in your own applications. Freebase.com offers a wealth of "other people's data", as does DBpedia: Wikipedia information culled as RDF data.
I am adding Google's Data APIs to this cornucopia of structured data stores. If you are a Java developer, Google's GData APIs download is a good quick start.
GData and DabbleDB are great for organizing your own data online and then using that structured data in your own applications. Freebase.com offers a wealth of "other people's data", as does DBpedia: Wikipedia information culled as RDF data.
Labels: data mining, RDF
Subscribe to Posts [Atom]
