Boca version 1.8
Today we released Boca version 1.8. I’m happy to learn that users are starting to use Boca and encourage people to let me know any feedback they have not only about the current version, but also about the future goals I’ve described here.
Changes for 1.8:
Added preliminary support for more databases. These include MySql(Version 5), Postgres(Version 8.2), and HSQL(Version 1.8). While these database run and pass all junit tests, no performance or tuning has been done as has been done on DB2, so your milage may vary with those databases. We provide example configuration files for these database, but you will need to download the appropriate java libraries from the database vendor.
Various fixes for bugs with node storage and database access when creating administrative objects like users and roles. We changed some of the tables to provide better performance for node storage.
We have changed the authentication mechanism slightly. In previous versions, a user would use their full URI as the id used when authenticating with the system. This meant in an application that prompted for a userid and password, a user would have to type in their full URI. A User now has a userId property, which is used as the login id. If a userId is not specified when a user is created, their URI is used as the userId. Our examples and property files have been updated to reflect this change, so for example “http://boca.adtech.internet.ibm.com/users/default” has been updated to have a userId of “default”. There is further use of this userId if when using a custom IAuthenticationProvider, but that will be covered in a follow-up post.
Since a majority of changes in this release addressed database issues, it will be necessary to create a new database as some of the tables have been changed in a significant enough way that doesn’t facilitate a simple upgrade path. We hope this is the last major change to the database schema.
Future work:
The current 1.x releases of Boca is considered our stable branch and we plan on maintaining this branch into the future. While the current design has served us well for many years, we have decided that we would like to move to an underlying RDF API that better reflects our system, and for this reason I have been porting Boca to use the RDF interfaces in Sesame 2. In the current 1.X branch of Boca, we have been basing our interfaces around the Jena Graph API, but as we moved toward Named Graphs and away from ideas like reification, I realized we are maintaining a codebase that we are shoehorning into this current API. Due to this fact, we are probably missing key pieces that would make it 100% Jena compatible and missing out on the ability to make an API more appropriate for our system. While it is still our intention to provide a way to access Boca using the Jena API, I decided that the underlying implementation of the system should move forward using APIs that are more compatible with our design goals.
What does this mean to Boca and the users of Boca? Our current plan is to release an early version of a Boca 2.0 branch based on these new interfaces. In this new branch, the core Boca server and core client libraries are built using the org.openrdf.model interfaces for things like URIs, Literals and Statements. The overall client experience will remain very similar to the current API, with the big difference being we will no longer implement the Jena Graph APIs We will have a Jena wrapper around our DatasetService which will provide a means to get Jena compatible graphs from the DatasetService. We also plan to provide a Sesame 2 SailConnection wrapper as well, so that users of Sesame will also be able to use Boca in a manner more closely resembling the Sesame API.
One advantage of this move is that we have been able to build Boca using Maven2 using standard Maven repositories, so for those users wanting to build Boca locally, it should provide an easier path than in the 1.X branch.
All our application/infrastructure related components will be migrated to Boca 2.0 and together with any new work we embark on, will likely go forward only on the new API. We would therefore recommend that existing users of Boca might also want to consider moving to Boca 2.0, since Boca 1.8 will be maintenance only.
Matt Roy