SweetJess: Inferencing in Situated Courteous RuleML via Translation to and from Jess Rules

We describe the innovative design of our prototyped SweetJess tool for RuleML inferencing. Our first contribution is to give a new, implemented translation from a broad but restricted case of SCLP RuleML into Jess rules, and an inverse translation from a broad but further restricted case of Jess rules into SCLP RuleML. SCLP stands for the Situated Courteous Logic Programs knowledge representation; this is expressively powerful and features prioritized conflict handling and procedural attachments. The translation is intended to preserve semantic equivalence -- i.e., for a given rulebase, to entail the same conclusions. The translation often preserves semantic equivalence; in current work, we are developing formal guarantees for the equivalence, including necessary expressive restrictions in each direction. Our second contribution, building upon the translation, is a new, implemented architecture to perform (a broad case of) SCLP RuleML inferencing using the Jess rule engine. Our approach translates from SCLP RuleML rules into Jess rules, runs the Jess rule engine to generate conclusions (and actions), and then translates the concluded Jess facts back into SCLP RuleML. Our third new contribution is to enable bi-directional implemented inter-operability, via RuleML, between several other heterogeneous rule systems (e.g., XSB Prolog and IBM CommonRules) and Jess. For example, to our knowledge, this is the first tool to enable inter-operability between a Prolog and any production/reactive rule system descended from OPS5 heritage. The prototype implementation of SweetJess is publicly available for Web download.
Date: June 20, 2006
Type: TechReport
Downloads: 987

Has 1 soft copy


size 224432 bytes

Bibtex


@TechReport{SweetJess_Inferencing_in_Situated_Courte,
  author = "Benjamin Grosof and Mahesh Gandhe and Tim Finin",
  title = "{SweetJess: Inferencing in Situated Courteous RuleML via Translation to and from Jess Rules}",
  month = "June",
  year = "2006",
}