When development of the open source backward chaining rule engine Mandarax halted some time in early 2005, I thought that it had become yet another tombstone in the cemetary of abandoned one-man open source projects. A real shame, since Jens Dietrich‘s Java-based tool supported RuleML, had a GUI environment (Oryx) and was probably the most polished backward chaining rule engine out there.
So I was very pleased when a friend notified me of another phenomenon that sometimes happens in the open source world: Mandarax had been adopted by a new community of developers. The new project is known as Prova. From their website:
Prova is derived from
Mandarax Java-based inference system developed by Jens
Dietrich. Prova extends Mandarax by providing a proper language
syntax, native syntax integration with Java, and agent messaging
and reaction rules. The development of this
language was supported by the grant provided within the EU projects
GeneStream and BioGRID. In the project, the language is used as
a rules-based backbone for distributed web applications in biomedical data
integration, in particular, the
GoPubMed system.
The software is under active development and even has an alpha Eclipse plugin (you need to check it out and build it yourself, though).
What does a simple Prova application look like? Well, Prova allows you to integrate it in a number of ways, including as a JMS listener. Let me give you a flavor of "Hello World!" with Prova embedded in a Java app:
Why do I get so excercised about backward chaining engines? Well, I do a bit of work in evidence based medicine. In that context it isn’t enough to simply know that a certain conclusion has been reached or that a certain sequence of rules has been fired. I need to know ALL of the ways in which a conclusion has been reached. This can be done in a forward chaining rule engine, but the builtin support just isn’t there.
Unfortunately, this support, while there in Mandarax, seems to have disappeared in Prova (calling getProof() on the resultset returns null). Once the 1.9 release is out, the developers have said they will reintroduce derivation support.

Vive la open source !
It will always live on, if people are using it.