Back in December, I was releasing ProvToolbox 0.5.0. On August 1st 2014, I released version 0.6.0. This post outlines the key changes of this version. These were driven by requirements from ProvTranslator, ProvValidator, Picaso, and a new provenance template management system (I will blog about Picaso and the template management system in the near future.
1. Novel features
1.1 Random Generator
ProvToolbox now includes Jamal Hussein’s PROV graph generator. For instance, the
provconvert -generator 30:3:entity:1234 -outfile foo.jp
generates the following provenance graph, where 30 is the number of nodes generated, 3 is the maximum connectivity, entity is the type of the first node, 1234 is an optional seed.
1.2 Templating System
prov-template is a templating system developed by Danius Michaelides, Trung Dong Huynh, and myself. Its specification is available at https://provenance.ecs.soton.ac.uk/prov-template/. ProvToolbox now contains a reference implementation of this specification. See the section Implementation for a description of how to invoke the templating system from the command line.
A tutorial for ProvToolbox is long overdue. ProvToolbox 0.6.0 now includes a small tutorial, explaining how to set up a maven environment, write some Java code to create a provenance document and serialize it to your favourite format. More similar short tutorials are also in the pipeline. Watch this space!
2.1 Better inter-operability
The key motto of ProvToolbox is to construct a Java representation of the Provenance Data Model, manipulate it, and save it. Two key “generic” methods, readDocument and witeDocument, were introduced to perform read and write operations.
The method readDocument(InputStream, ProvFromat) reads a Document from an inputstream, using the parser specified by the format argument. Likewise, writeDocument(OutputStream, ProvFormat, Document) writes a document to an output stream according to the specified format.
prov-sql is now being used in a template management system we are developing. It works in the sense that it has been tested in the context of that system, but it is in no way optimized. Indeed, there is plenty of room for improvement! It is now time for others to have a look at the mapping, experiment with it, and improve it. prov-sql uses a JPA ORM to map Java Beans to a SQL database. The automatically-generated documentation of the mapping between Java classes and SQL tables is available from prov-sql orm mapping page.
2.3 Bug fixes and documentation
A series of bugs have been fixed (see GitHub Issues). Thanks to those who submitted bug reports.
Dependencies of ProvToolbox have been revised: there is a general upgrading to more recent artifacts, and superflous dependencies were removed.
2.4 GitHub IO page
And last, but not, least, ProvToolbox now has its own GitHub IO page at http://lucmoreau.github.io/ProvToolbox/
Overall, it is a release that consolidates ProvToolbox, supporting better inter-operability across PROV representations, and supporting functionality in our various services.