Open Source Rule Engines Written In Java
|
|
I don't recall if someone has put together a review of open source Rule Engines that are written in Java. Here's the list I've accumulated so far:
- JBoss Rules The JBoss Rules engine uses a modified form of the Rete algorithm called the Rete-OO algorithm. Internally it operates using the same concepts and methods as Forgy's original but adds some node types required for seemless integration with an object-oriented language.
- OFBiz Rule Engine Backward chaining is supported. Original code base from "Building Parsers in Java" by Steven John Metsker.
- Mandarax Based on backward reasoning. 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.
- Algernon Efficient and concise KB traversal and retrieval. Straightforward access to ontology classes and instances. Supports both forward and backward chaining.
- TyRuBa TyRuBa supports higher order logic programming: variables and compound terms are allowed everywhere in queries and rules, also in the position of a functor- or predicate-name. TyRuBa speeds up execution by making specialized copies of the rule-base for each query in the program. It does so incrementally while executing a logic program and builds an index for fast access to rules and facts in the rule base, tuned to the program that is running. The indexing techniques works also for higher-order logic. TyRuBa does 'tabling' of query results.
- JTP Java Theorem Prover is based on a very simple and general reasoning architecture. The modular character of the architecture makes it easy to extend the system by adding new reasoning modules (reasoners), or by customizing or rearranging existing ones.
- JEOPS JEOPS adds forward chaining, first-order production rules to Java through a set of classes designed to provide this language with some kind of declarative programming.
- InfoSapient Semantics of business rules expressed using fuzzy logic.
- RDFExpert RDF-driven expert system shell. The RDFExpert software uses Brian McBride's JENA API and parser. A simple expert system shell that uses RDF for all of its input: knowledge base, inference rules and elements of the resolution strategy employed. It supports forward and backward chaining.
- Jena 2 - Jena is a Java framework for writing Semantic Web applications. Jena2 has a reasoner subsystem which includes a generic rule based inference engine together with configured rule sets for RDFS and for the OWL/Lite subset of OWL Full. These reasoners can be used to construct inference models which show the RDF statements entailed by the data being reasoned over. The subsystem is designed to be extensible so that it should be possible to plug a range of external reasoners into Jena, though worked examples of doing so are left to a future release.
- JLisa - JLisa is a powerful framework for building business rules accessible to Java and it is compatible with JSR-94. JLisa is more powerful than Clips because it has the expanded benefit of having all the features from common lisp available. These features are essential for multi-paradigm software development
- Euler - Euler is a backward-chaining reasoner enhanced with Euler path detection and will tell you whether a given set of facts and rules supports a given conclusion. Things are described in N3.
- JLog - JLog is an implementation of a Prolog interpreter, written in Java. JLog is a BSF-compatible language. It includes built-in source editor, query panels, online help, animation primitives, and a GUI debugger.
- Pellet OWL Reasoner - Pellet is an open-source Java based OWL DL reasoner. It can be used in conjunction with either Jena or OWL API libraries. Pellet API provides functionalities to see the species validation, check consistency of ontologies, classify the taxonomy, check entailments and answer a subset of RDQL queries (known as ABox queries in DL terminology). Pellet is an OWL DL reasoner based on the tableaux algorithms developed for expressive Description Logics.
- Prova - 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 project GeneStream. In the project, the language is used as a rules-based backbone for distributed web applications in biomedical data integration.
- OpenRules - OpenRules is a powerful Business Rule Engine that has been designed to create, deploy, execute, and maintain decision services for complex real-world applications. OpenRules comes with a sophisticated user-friendly Rules Administrator that utilizes the power of MS Excel and Eclipse.
- SweetRules - SweetRules is an integrated toolkit for semantic web rules, revolving around the RuleML. SweetRules supports the powerful Situated Courteous Logic Programs extension of RuleML, including prioritized conflict handling and procedural attachments for actions and tests. SweetRules' capabilities include semantics-preserving translation and interoperability between a variety of rule and ontology languages (including XSB Prolog, Jess, HP Jena-2, and IBM CommonRules), highly scaleable backward and forward inferencing, and merging of rulebases/ontologies. The SweetRules project is a multi-institutional effort, originated and coordinated by the SweetRules group at MIT Sloan.
- JShop2 - Simple Hierarchical Ordered Planner (SHOP) written in Java. JSHOP2 is a domain-independent automated-planning systems. They are based on ordered task decomposition, which is a type of Hierarchical Task Network (HTN) planning. JSHOP2 uses a new "planner compilation" technique to achieve faster execution speed.
- OpenLexicon - Lexicon is a business rules and business process management tool that rapidly develops applications for transaction and process-based applications.There are two main components of Lexicon: the metadata repository and the business rules engine. The Lexicon business rules engine is not Rete based. It has a predicate evaluator that includes a unique power: it can evaluate small, in-line Java expressions.
- Hammurapi Rules - Hammurapi rules has the following distinguishing features: (1) Rules and facts are written in Java; (2) leverages Java language semantics to express relationships between facts and (3) builds derivation trees for validation, debugging and to detect logic loops.
- MINS Reasoner - MINS stands for Mins Is Not Silri. MINS is a reasoner for Datalog programs with negation and function symbols. MINS supports the Well-Founded Semantics.
- Zilonis - An extremelly efficient, multithreaded Rules engine based on a variation of the forward chainning Rete algorithm. It has a unique scoping framework where you can define a scope for a user or group of users with inheritance of rules between them. The rules language is similar to CLIPS.
- JCHR - JCHR is an embedding of Constraint Handling Rules (CHR) in Java. The multi-paradigmatic integration of declarative, forward chaining CHR rules and constraint (logic) programming within the imperative, OO host language Java offers clear synergetic advantages to the software developer. High performance is achieved through an optimized compilation to Java code. The rule engine is suited for the high-level development of expert systems, incremental constraint solvers and constraint-based algorithms.
- Esper - Esper enables rapid development of applications that process large volumes of incoming messages or events. Esper filters and analyzes events in various ways, and responds to conditions of interest in real-time. Supports Event Stream Processing : Time-based, interval-based, length-based and sorted windows; Grouping, aggregation, sorting, filtering and merging of event streams; Tailored SQL-like query language using insert into, select, from, where, group-by, having and order-by clauses; Inner-joins and outer joins (left, right, full) of an unlimited number of windows; Output rate limiting and stabilizing.
- mProlog - mProlog is a sub-product of the 3APL-M project. It delivers a reduced Prolog engine, optimized for J2ME applications. The mProlog engine was developed based on the W-Prolog project from Michael Winikoff. The 3APL-M project a platform for building applications using Artificial Autonomous Agents Programming Language (3APL) as the enabling logic for the deliberation cycles and internal knowledge representation.
- OpenL Tablets - Create Decision Tables in Excel and use them in Java application in a convenient type-safe manner. Use Data Tables in Excel for data setup and testing. Eclipse plugin controls validity of Excel tables.
- Jamocha - Jamocha is a rule engine and expert system shell environment. Jamocha comes with a FIPA-compliant agent. The agent is based on the Multiagent System JADE that supports speech-acts and the FIPA agent interaction protocol.
- JSL: Java Search Library - JSL is a library written in Java that provides a framework for general searching on graphs. Standard search algorithms depth-first, breadth-first and A* are provided by JSL, in addition you can plug in any other search algorithms.
- Termware - TermWare is Term Processing System. It's use is applicable to computational algebra systems and various formal models analysis.
- Take - Take consists of a scripting language for defining rules, and a compiler that creates executable Java code. Take is based on Mandarax, it has a similar API but implements its own inference engine.
Please let me know if I've missed something.
1064490099
What about JESS?
Experiences?
Can anyone post their experiences with any of the listed packages?
Java Rule Engines
You seem to have missed the top four engines, all 100% Java, all commercial, some with low-cost or free for non-commercial use. These start around $8,000 per developer seat but they're well worth it for an commercial, enterprise-sized application.
OPSJ: http://www.pst.com (Faster than greased lightning) Jess: http://herzberg.ca.sandia.gov/jess/ (2nd fastest) JRules: http://www.ilog.com/products/jrules/ (3rd fastest, lots of bells and whistles) Blaze Advisor: http://www.fairisaac.com/Fairisaac/Solutions/Enterprise+Decision+Tools/Blaze+Advisor+Rules+Management+Technology.htm (quite slow but lots of bells and whistles)
Replies to this comment
TRIPLE
http://triple.semanticweb.org/ is a another rule engine accessible in Java, based on XSB
Replies to this comment
Looking for Rule engine with nice GUI
Hi,
I understand that most of the intellectual work goes into the algorithms of the named rules engine. However, I miss with all of the open-source projects a nice ideally web-based GUI to define and modify rules for the non-technical user. ILog or Blaze, as very expensive commercial products have such an interface and that's from my perspective the reason they are so successful.
So, any hints to open-source projects with a lovely GUI are appreciated. Thanks.
Replies to this comment
What to use if a real Rules Engine is overkill?
Hi,
what products are available if a real RulesEngine with its Knowledge Base and RETE algorithm is overkill, because one just needs rules for processing incoming data and directing it into this or that following workflow? The rules should of course be configurable...
Best regards, Mattin
Replies to this comment
BPEL addin
Hello I was wondering if it is common practice or makes sense for BPEL (Business Process Execution Language) products to embed a rules engine in the product. Thanks.
rule engines
The Internet Business Logic system at www.reengineeringllc.com may be of interest.
It combines rules in open vocabulary English with an inference method that automatically switches between forward- and back-chaining.
Not open source, but free for non-commercial and experimental use.
JSR94
It would be great to have a JSR94-compliant list of rules engines :-) I know Drools supports it and so does JRules, but don't know about the rest.
Cheers.
Replies to this comment
tuProlog is a nice Prolog implementation
tuProlog (http://tuprolog.sourceforge.net) is a nice open-source Prolog implementation (in Java) that we've successfully used. I'm not sure if it's being actively developed anymore, though.
A good reference article on Java rules
You can find a good reference article Getting Started With the Java Rule Engine API (JSR 94): Toward Rule-Based Applications
Good discussion on Rete
Some additional resources
jordan
<a href="http://www.aj2u.com/air_jordan_7.html" target="_blank">Air Jordan 7</a> <a href="http://www.aj2u.com/air_jordan_8.html" target="_blank">Air Jordan 8</a> <a href="http://www.aj2u.com/air_jordan_9.html" target="_blank">Air Jordan 9</a> <a href="http://www.aj2u.com/air_jordan_10.html" target="_blank">Air Jordan 10</a> <a href="http://www.aj2u.com/air_jordan_11.html" target="_blank">Air Jordan 11</a> <a href="http://www.aj2u.com/air_jordan_12.html" target="_blank">Air Jordan 12</a><p>
<p><a href="http://www.aj2u.com/air_jordan_7.html" target="_blank"> Jordan 7</a> <a href="http://www.aj2u.com/air_jordan_8.html" target="_blank"> Jordan 8</a> <a href="http://www.aj2u.com/air_jordan_9.html" target="_blank"> Jordan 9</a> <a href="http://www.aj2u.com/air_jordan_10.html" target="_blank"> Jordan 10</a> <a href="http://www.aj2u.com/air_jordan_11.html" target="_blank"> Jordan 11</a> <a href="http://www.aj2u.com/air_jordan_12.html" target="_blank"> Jordan 12</a><p>
good
[url=http://www.aj2u.com/air_jordan_7.html] Air Jordan 7[/url]
[url=http://www.aj2u.com/air_jordan_8.html] Air Jordan 8[/url]
[url=http://www.aj2u.com/air_jordan_9.html] Air Jordan 9[/url]
[url=http://www.aj2u.com/air_jordan_10.html] Air Jordan 10 [/url]
[url=http://www.aj2u.com/air_jordan_11.html] Air Jordan 11[/url]
[url=http://www.aj2u.com/air_jordan_12.html] Air Jordan 12[/url]
jordan shoes
http://www.aj2u.com/air_jordan_8.html
http://www.aj2u.com/air_jordan_9.html
http://www.aj2u.com/air_jordan_10.html
http://www.aj2u.com/air_jordan_11.html
http://www.aj2u.com/air_jordan_12.html


Hi,
I am the one who posted above two comments. What do you think of all these products? Have you used them personally? Any insight will be very useful.
Thanks, Prashant Rane
Replies to this comment