The Mandarax Project
Mandarax is an open source java class library for deduction rules.
It provides an infrastructure for defining, managing and querying rule
bases.
Choose Mandarax for the following reasons:
- Mandarax is pure OO, not a translation of a prolog interpreter
from c to java. The design is flexible
and open, making use of well-known design patterns such as factory,
adapter, singleton , strategy and
others.
- Mandarax is based on backward reasoning. This fits perfectly in
a computing landscape based on a pull model (e.g. a transaction
initiated from a web site). Data (e.g., from relational databases) can
be integrated on the fly at query time, no replication is necessary
(see the manual for a more detailed discussion of "Mandarax vs. RETE").
- The easy integration of all kinds of data sources. E.g.,
database records can be easily integrated as sets of facts and
reflection is used in order to integrate functionality available in the
object model.
Other data sources (like EJB, data returned by web services etc) can be
integrated as well.
- Mandarax includes a comprehensive library of pre-defined
predicates and functions.
- Mandarax contains a reference implementation of an inference
engine. This engine is very flexible: unification algorithm, loop
checking algorithm and selection policy can be configured.
- Rule bases can be made persistent using the XKB module. This
module stored rules and other knowledge
in a format similar to RuleML. The Mandarax team itself is part of the
RuleML initiative working on a XML standard for rules. Export and
import of RuleML rule bases is supported.
- Mandarax is well documented and there are various QA measures in
place. Events are logged using the apache log4j framework, and there is
a re-usable set of test cases for mandarax core functionalities.
- Mandarax is free and open source. The software license used is
the GNU lesser general public license, making the software suitable for
both open-source and commercial projects.
- Mandarax knowledge bases can be queried as relational databases
using the mandarax jdbc driver.
- Extensions are available including graphical user interface
components (swing and servlet/jsp tag based) and other add-ons. See links for details.