SWAT /

Reasoning Engines

Reading

Outdoors

Games

Hobbies

LEGO

Food

Code

Events

Nook

sidebar

Reasoning Engines

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

JESS

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))
  )

SWI Prolog

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.

XSB

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

Pellet

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.

Jena

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

JTP

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.

OTTER

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.

Recent Changes (All) | Edit SideBar Page last modified on April 06, 2007, at 06:59 AM Edit Page | Page History