Reasoning Engines
This page will collect some personal notes on various reasoning engines that are out there and designed to be used in other projects. These are presented in no particular order.
Production Systems
A pretty cool forward chaining production system and scripting language which I've used extensively in the past. Actively developed and supported. The rule language is very expressive, supporting limited forms of negation and universal quantification as well as arbitrary code evaluation. It's written in Java, and integration with Java applications is easy and powerful. Jess rules look like:
(defrule arule
"A simple rule asserting that all food belonging to a Monkey must be a banana."
(Monkey ?x)
(hasFood ?x ?y)
=>
(assert (banana ?y))
)
A backward chaining production system (Prolog). Includes a Java interface. I've played around with it a fair bit. It seems pretty solid and has a number of cool features and modules (i.e. sockets). Under active development.
A production system in C or C++, but includes Java interfaces. Reasonably active development. I've seen it used in a number of projects but have only played with it myself just the tinyest bit.
Description Logic
A description logic reasoner. It's fairly expressive, supporting the complete OWL-DL semantics. It is under active development, maintenance, and used in a variety of projects.
An OWL reasoner. It was not quite a full description logic reasoner the last time I checked, but certainly handles most of the common OWL inferences. It also includes a fairly generic triples-based production system engine. The package is actively developed and well put together. I've used their RDF and OWL parsing facilities in the past, though not the reasoning component (which was in its infancy at the time).
First Order Logic
I believe JTP includes a module supporting full first order inference, though I have not used it myself and it's not clear from skimming the online documentation. It has however been used in a number of papers I've read.
A first order theorem prover that I've played with a fair bit. Difficult to integrate with other systems, but fun and fairly powerful. No longer maintained, but a successor exists.