Hi all,
I have just committed a large number of changes, updating Aperture to
Sesame 2 beta 1 and the latest org.openrdf RDF2Go driver (no official
release available yet), which is compatible with beta 1 and the upcoming
beta 2. Below is a list of changes that some of you might like to know
about.
I have tried to remove all dependencies on org.openrdf code, i.e. no
dependencies on Repository and *also* no dependencies on
RepositoryModel. Instead, Models and ModelSets are used all over the
place. They are created using a ModelFactory obtained dynamically
through RDF2Go.getModelFactory, which is a Very Good Thing.
There are two exceptions to this strategy:
- the GUI-based File Inspector depends on some Sesame classes in order
to transform the data that it shows for presentation purposes. It
doesn't seem to be trivial to replicate this on top of RDF2Go.
- RepositoryAccessData, an AccessData implementation on top of the
Repository that by definition depends on Sesame. I have move this class
to src/examples as nobody seemed to use it (we use a tweaked version
ourselves) and it's just an example of one way of realizing an
AccessData instance on top of a Repository. Note that the core code
still contains ModelAccessData, which does something similar but on top
of RDF2Go.
RDF2GoRDFContainer and associated classes have been renamed to
RDFContainerImpl etc. as it's basically the default implementation that
everyone will probably use, the name mistakenly suggests that it would
be possible to create a non-RDF2Go implementation and it's actually
pronounceable :) I have fixed the Javadoc (which was copied from
SesameRDFContainer and not modified accordingly) and removed all notes
regarding OSGi - this is not the place to document OSGi setup.
I have removed SesameRDFContainer, its factory and unit tests as
RDF2GoRDFContainer/RDFContainerImpl has made these classes redundant.
Because of these changes, the core code and unit tests are now "100%
RDF2Go" and can be run on top of e.g. Jena by just replacing some jar
files. Also, the example code now feels a lot cleaner and less like
rocket science.
The switch from the old Sesame alpha release to beta 1 has solved almost
all "dangling connection" problems that you got when running the unit
tests and example code. Only one dangling connection remains in the unit
tests that I wasn't able to hunt down. Sesame 2 beta 2 (planned for
tomorrow) will support a system property that makes this debugging
trivial, so I will fix it then. This system property comparable (equal?)
to the lock tracking Sesame fork that Gunnar made.
I would still like to change the example crawler code to create
temporary Models during crawling that are added one by one to a
ModelSet, instead of creating Models backed by that ModelSet. See my
mail to rdf2go-devel for the reasons why. At the moment this can already
be done but only at the cost of having no context identifiers in the
generated metadata.
Also, the documentation needs an update: it still discusses the old
RDFContainer API and SesameRDFContainer and I believe there is also no
documentation regarding RDF2Go.
Next on my to do list: logging.
Regards,
Chris
--