A Java Deductive Reasoning Engine for the Web



Applet demo


Affiliated Projects

·          The FAQ

·          The background knowledge of reasoning

·          The tutorial of jDREW 

·         Instruction

·         The rule file.

·         Demo

·         jDREW Package  

·         Documentation 

·       OO jDREW



jDREW is an easily configured, powerful deductive reasoning engine for clausal first order logic (facts and rules) written in Java and well integrated with the Web.  Knowledge-based systems to process the declarative information and rules can use jDREW as an embedded reasoning engine through its various application programmer's interfaces (APIs).  jDREW can be easily deployed as part of a larger Java system, on a server or, with its small memory footprint, on a client.

jDREW was designed to be flexible also in its capabilities. It currently provides modules to process rules in Prolog and RuleML format. jDREW has become the basis for OO jDREW.

Purpose of the jDREW project


Programmers with no detailed understanding of the unification algorithm or handling substitutions are able to write code to build goal trees, similar to Prolog's goal trees. System using jDREW may be configured to automatically propagate variable bindings that arise when the tree is extended by an input clause.  Likewise if the system is later told to backtrack and undo this extension, it will undo the bindings and propagate this undoing, so that all effects of the extension are removed.  The choices of where to extend and with what input clause are guided by the user’s search procedure.  The choice of which extension to retract (undo) will be as flexible as possible.  For efficiency, the initial system requires that a retraction is the most recent unretracted extension, so that the extension steps are LIFO. 


The API makes use of powerful deduction techniques such as McCune's discrimination trees, subsumption, and efficient data structures for representing goals, based on flat terms.  Discrimination trees, for example, identify the choices of what clauses can extend a given goal, and do so efficiently in that the runtime is independent of the number of non-matching clauses. With such an API, the programmer is freed from implementing the resolution rule of inference, but can build powerful knowledge-based applications in Java incorporating first-order logic as a subsystem.  Some examples are planning, diagnosis, abduction, and natural language.  Because the API is in Java, these subsystems can be delivered as mobile code (applets), can be run as separate threads, and can use the rest of Java's powerful API's. 

Current Status

In its current state, jDREW exists as a component suite that consists of various software modules (components). Each component carries out an individual function of the inference procedure and can be easily assembled into a reasoning system.


Site Contact: Bruce Spencer.  Last updated: 2004-1-05

jDREW is an open source project under the GNU General Oublic License (GPL). For more information, please visit http://sourceforge.net/projects/jdrew/.