A communiqué from Margaret Thorpe (ILOG, S.A.) announces the development SRML (Simple Rule Markup Language) which the designers believe may be of wider interest. SRML describes a "generic rule language consisting of the subset of language constructs common to the popular forward-chaining rule engines. Because it does not use constructs specific to a proprietary vendor language, rules specified using this XML DTD can easily be translated and executed on any conforming rule engine, making it useful as an interlingua for rule exchange between Java rule engines. The Java Rule Engine API specified in JSR-000094 defines generic API support for parsing rulesets that are represented using XML, but does not define a rule language standard. Thus, while JSR-094 will prescribe that some kind of 'content language' is made available to the engine via XML, and will provide some kind of 'content handler' to process these XML rule documents, a rule language is still required in order to provide a Java rule engine with rules via this API." A preliminary XML DTD describing the structure of SRML has been made available by the authors. As defined in this DTD, a ruleset "is the root element of the SRML XML document, and it consists of a list of rules. Rules have a condition part [conditionPart] and an action part [actionPart], and the condition part must have at least one condition. Conditions are composed of test expressions, and can be simple conditions or not conditions..." Etc.
Background: "There are several commercial Java rule engines on the market right now (ILOG JRules, JESS, OPS/J, Blaze Advisor) with different feature sets. They each have their own set of Java APIs, and they each have their own proprietary rule language. As a result, rules cannot be shared across applications that use different rule engines, and applications developed using these rule engines remain tied to a specific vendor implementation... JSR-094 defines a Java runtime API for rule engines targeting both the J2EE and J2SE platforms. The API prescribes an object model and a set of fundamental rule engine operations based upon the assumption that most clients will need to be able to execute a basic multi-step rule engine cycle. The fundamental rule engine operations to be supported are: parsing rules, adding objects to an engine, firing rules and getting resultant objects from the engine. The API will probably also support variations of this basic cycle that would occur in J2EE server deployments (multiple instances of rule engines, the sharing of rulesets between different instances of a rule engine, the ability to reset and reuse an instance of a rule engine, etc.) A primary input to a rule engine is a collection of rules called a ruleset. The rules in a ruleset are expressed in a rule language. JSR-094 defines generic API support for parsing rulesets that are represented using XML, but does not define a rule language standard...." [From the article "Simple Rule Markup Language (SRML): A General XML Rule Representation for Forward-chaining Rules," by Margaret Thorpe and Changhai Ke.]
Principal references:
- XML DTD for SRML (Simple Rule Markup Language): HTML format and plain text format.
- ILOG Simple Rules DTD with annotation in comment declarations: HTML format and plain text format
- Simple Rules DTD - Hypertext view
- Contact: Margaret Thorpe (ILOG, S.A.)
- "Simple Rule Markup Language (SRML)" - Main reference page.
- See also: JSR-000094 Java Rule Engine API
- See also: "Rule Markup Language (RuleML)"
- See also: Business Rules Markup Language (BRML)
- See also: DARPA Agent Markup Language (DAML)
- See also: Predictive Model Markup Language (PMML)