270 likes | 376 Views
Rule Languages and Rule Interchange. Sujit R Nair November 30,2009. Introduction. Need / Requirement. Characteristics of current rule markup Languages. A sample Scenario of Rule Interchange Future Work. Conclusion. Need / Requirement. Expressiveness. Machine-interpretation.
E N D
Rule Languages and Rule Interchange Sujit R Nair November 30,2009
Introduction • Need / Requirement. • Characteristics of current rule markup Languages. • A sample Scenario of Rule Interchange • Future Work. • Conclusion.
Need / Requirement • Expressiveness. • Machine-interpretation. • Automated Processing. • Translation and Interchange. • Publication and Serialization.
Current Rule Languages • RuleML. • SWRL. • R2ML. • W3C RIF. • Triple. • N3. • Jena Rules. • Prova.
RuleML • Based on XML. • Rules consists of derivation, integrity constraints, production, reaction, tools and transformation. • Datalog RuleML and Hornlog RuleML.
SWRL • Combining Sublanguages of OWL and RuleML. • Union of DLP and Horn Logic. • Adds rules at the cost of undecidability and lack of complete implementation. • Protégé. • Rules = Antecedent + Consequent.
R2ML • Based on concept of RuleML and SWRL. • Rules consists of derivation, integrity constraints, production, reaction. • MOF/UML support.
W3C RIF • Facilitate rule exchange. • Dialects. • Basic Logic Dialect(RIF-BLD) ↔ Horn Rule Language. • Datatypes and Built-Ins(RIF-DTB). • Core. • Production Rule Dialect.
Jena Rules • Java Rule object. • Jena2 is much simpler, allows rules to be specified in compact form in text source files.
Prova • Web rule language + Highly expressive distributed Web rule engine. • Supports complex reaction rule-based workflow, rule-based event processing, distributed inference services, rule interchange, rule-based decision logic, dynamic access to external data , Web Services and JAVA APIs.
Rule Interchange Sample • Using RIF to interchange F-Logic Rules and Drools. • Scenario : To supply a vendor-neutral representation of rules, so that rule-system developers can do their work without concern about a vendor-specific format and in particular without concern about the compatibility with the technology of its business partners. • Jane's e-commerce system uses Drools therefore the rules vocabulary is represented using Java beans • John uses an OWL vocabulary and its rules are represented in F-Logic.
Rule Interchange (contd) • The Two rules that are to be implemented : • Rule R1: If an item is perishable and it is delivered more than 10 days after the scheduled delivery date then the item will be rejected. • Rule R2: If an item is perishable and it is delivered more than 7 days after the scheduled delivery date but less than 14 days after the scheduled delivery date then a discount of 18.7% will be applied to this delivery.
Rule Interchange (contd) • Points to be kept in mind: • RIF needs to deal with different vocabularies. • RIF needs an uniform mechanism to address vocabulary elements. The usage of URI's may be such a mechanism. • Vocabulary and rules are separate layers
Rule Interchange (contd) • John's OWL vocabulary: <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns="http://www.example.org/JohnSystem/vocabulary"> <owl:Class rdf:ID="Item"/> <owl:DatatypeProperty rdf:ID="perishable"> <rdfs:domain rdf:resource="#Item"/> <rdfs:range rdf:resource="xs:boolean"/> </owl:DatatypeProperty>
Rule Interchange (contd) <owl:DatatypeProperty rdf:ID="actualDeliveryDate"> <rdfs:domain rdf:resource="#Item"/> <rdfs:range rdf:resource="xs:date"/> </owl:DatatypeProperty> <owl:DatatypeProperty rdf:ID="scheduledDeliveryDate"> <rdfs:domain rdf:resource="#Item"/> <rdfs:range rdf:resource="xs:date"/> </owl:DatatypeProperty> <owl:DatatypeProperty rdf:ID="status"> <rdfs:domain rdf:resource="#Item"/> <rdfs:range rdf:resource="Status"/> </owl:DatatypeProperty>
Rule Interchange (contd) <owl:DatatypeProperty rdf:ID="discount"> <rdfs:domain rdf:resource="#Item"/> <rdfs:range rdf:resource="xs:double"/> </owl:DatatypeProperty> <owl:Class rdf:ID="Delivery"/> <owl:Class rdf:ID="Status"> <owl:oneOf rdf:parseType="Collection"> <rdf:List> <rdf:first rdf:datatype="xs:string">rejected</rdf:first> <rdf:rest> <rdf:first rdf:datatype="xs:string">accepted</rdf:first> </rdf:rest> </rdf:List> </owl:oneOf> </owl:Class> </rdf:RDF>
Rule Interchange (contd) • John Rules (F-Logic) //If an item is perishable and it is delivered more than 10 days after the scheduled delivery date then the item will be rejected RULE R1 I:item[status -> "rejected"] <- I:item[isPerishable -> true] AND I[actualDeliveryDate -> A] AND I[scheduledDeliveryDate -> S] AND R is (A - S) AND R > 10.
Rule Interchange (contd) //If an item is perishable and it is delivered more than 7 days after the scheduled delivery date but less than 14 days after the scheduled delivery date then a discount of 18.7% will be applied to this delivery. RULE R2 I:item[discount -> 18.7] <- D:delivery[hasItems->>Items] AND I:item[isPerishable -> true] AND I[actualDeliveryDate -> A] AND I[scheduledDeliveryDate-> S] AND member(I, Items) AND R is (A - S) AND R > 7.
Rule Interchange (contd) • Jane's Rules (Drools) package com.sample import com.sample.Item; rule "R1" when i : Item( isPerishable==true, actualDeliveryDate : actualDeliveryDate, scheduledDeliveryDate : scheduledDeliveryDate ) eval( actualDeliveryDate.getDay() – scheduledDeliveryDate.getDay() > 10 ) then i.isRejected(true); modify(i); end
Rule Interchange (contd) rule "R2" when d:Delivery(hasItems: hasItems) i : Item(actualDeliveryDate : actualDeliveryDate, scheduledDeliveryDate : scheduledDeliveryDate ) eval( (actualDeliveryDate.getDay() – scheduledDeliveryDate.getDay() > 7) && hasItems.contains(i)) then i.setDiscount(18.7); modify(i); end
Rule Interchange (contd) • Importing Jane's Rules in the John's rule system • Translating from Drools into RIF • Presentation Syntax proposed by RIF-BLD is used to perform the vocabulary interchange.
Rule Interchange (contd) • Translation of Jane's Drools Rules rules into RIF rule "R1" when i : Item(isPerishable==true, actualDeliveryDate : actualDeliveryDate, scheduledDeliveryDate : scheduledDeliveryDate ) eval( actualDeliveryDate.getDay() – scheduledDeliveryDate.getDay() > 10) then i.isRejected(true); modify(i); end
Rule Interchange (contd) // Translation to RIF Rule ("http://jane.com/R1" ?i#Item[(isRejected->"true"^^xs:boolean) :- And(?i#Item[(isPerishable->"true"^^xs:boolean) (actualDeliveryDate->?actualDeliveryDate ) (scheduledDeliveryDate ->?scheduledDeliveryDate)] op:numeric-greater-than( op:numeric-subtract( user-defined:getDay(?actualDeliveryDate), user-defined:getDay(?scheduledDeliveryDate) ), "10"^^xs:int ) ) )
Future Work • On going research to develop a general rule mark up language. • Most of the research is concentrating on RuleML and RIF. • To cover the shortcomings such as – procedural call to external objects, operating systems , terminological descriptions for dealing with real world distributed Web Applications.
Conclusion • Why is rule markup needed ? • Currents rule markup languages. • RuleML and RIF. • W3C RIF BLD provides a robust core for the interchange of business rules among commercial and academic rule systems. • Embodies both production rules and derivation rules.
References • Adrian Paschke , Harold Boley – Rule Markup Languages and SWRL. • W3C Rule Interchange Format, http://www.w3.org/2005/rules/wiki/RIF_Working_Group • RIF Basic Logic Dialect, http://www.w3.org/TR/rif-bld/ • W3C RIF Use Cases and Requirements, http://www.w3.org/TR/rif-ucr/ • Gary Hallmark , Christian de Sainte Marie, Marcos Didonet Del Fabro, Patrick Albert , and Adrian Paschke - Please Pass the Rules: A Rule Interchange Demonstration
Contact Information Sujit Raveendran Nair. Email: srn071000@utdallas.edu. Phone: 972-983-4886.