Sujit R Nair November 30,2009

hedgebornabaloneSoftware and s/w Development

Dec 2, 2013 (4 years and 1 month ago)

66 views

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 :

a.
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
.

b.
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"/>


Rule Interchange (
contd
)


</
owl:DatatypeProperty
> <
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

1.
Adrian
Paschke

, Harold
Boley



Rule Markup Languages
and SWRL.

2.
W3C Rule Interchange Format,
http://www.w3.org/2005/rules/wiki/RIF_Working_Grou
p

3.
RIF Basic Logic Dialect, http://www.w3.org/TR/rif
-
bld/

4.
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.