SlideShare a Scribd company logo
1 of 49
Download to read offline
Language and
System Ergonomics
http://www.slideshare.net/MarkProctor/property-reactive-ruleml-2013
Saturday, 13 July 13
Extending an Object-Oriented RETE
Network with fine-grained
Reactivity to Property Modifications
Mark Proctor, Mario Fusco and David Sottara
Saturday, 13 July 13
Agenda
The Problem
Property Reactive
The technique
Related Work
The Implementation
Benchmarking
Conclusion
Saturday, 13 July 13
The Problem
Loop Control
Saturday, 13 July 13
The problem
Reactive rule based systems are hard to
write
Saturday, 13 July 13
Too Much!!!!
Reactive rule based systems are hard to
write
Saturday, 13 July 13
Reactive Rule
rule <rule_name>
<attribute><value>
when
<conditions>
then
<actions>
end
Saturday, 13 July 13
Patterns
Person(age >= 18)
field name restriction
constraintobject type
pattern
Saturday, 13 July 13
CashFlow Ruleselect * from
AccountPeriod ap,
Account acc,
Cashflow cf
where cf.type == CREDIT and
acc.accountNo == cf.accountNo
cf.date >= ap.start and cf.date <= ap.end
rule “increase balance for AccountPeriod Credits”
when
ap : AccountPeriod()
acc : Account()
cf : CashFlow( type == CREDIT,
accountNo == acc.accountNo,
date >= ap.start && <= ap.end )
then
acc.balance += cf.amount;
end
acc.balance += cf.amount
Saturday, 13 July 13
Loop Problem
rule “Salary award for min 2 years service” when
e : Employee( lengthOfService > 2 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
Loop Problem
rule “Salary award for min 2 years service” no-loop
when
e : Employee( lengthOfService > 2 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
Loop Problem
rule “Salary award for min 2 years service” no-loop when
e : Employee( lengthOfService > 2 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
rule “Salary award for min 8 years service” no-loop when
e : Employee( lengthOfService > 8 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
Loop Problem
rule “Salary award for min 2 years service” when
e : Employee( lengthOfService > 2 )
not SalaryMin2Years( employee == e )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
insert ( new SalaryMin2Years(e) );
end
rule “Salary award for min 8 years service” when
e : Employee( lengthOfService > 8 )
not SalaryMin8Years( employee == e )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
insert ( new SalaryMin8Years(e) );
end
Saturday, 13 July 13
Loop Problem
rule “Year End” when
d : ChangeDate( )
e : Employee( )
then
modify( e ) { lengthOfService(
d.getYear() - e.getStartYear() ) };
end
rule “Salary award for min 8 years service” when
e : Employee( lengthOfService > 8 )
not SalaryMin8Years( employee == e )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
insert ( new SalaryMin8Years(e) );
end
Saturday, 13 July 13
Refraction
This term comes from the neurobiological
observation of a refractory period for a neuron,
which means that the neuron is not able to fire
immediately without first going through a
relaxation process.
In a similar way, OPS5 will not allow the same
instantiation in the conflict set from firing twice
in a row. This prevents the inference engine from
entering into an infinite loop.
Saturday, 13 July 13
W3C RIF Refraction
Refraction
When a rule instance is fired, it is removed
from the conflict set (and thus will not be
created again even its condition part
remains true), unless one of the objects in its
condition part is modified again. In the later
case, the repeatability concept determines
how the rule instance is treated
Saturday, 13 July 13
W3C RIF Refraction
Repeatability
After the execution of a rule instance, the
rule instance is removed from the conflict
set by the refraction. Later on, if one of the
objects in the condition part is modified and
if the rule evaluates to true, the
repeatability controls whether if the rule
instance can be created again.
Saturday, 13 July 13
Loop Problem (Refraction)
rule “Salary award for min 2 years service”
repeatable false when
e : Employee( lengthOfService > 2 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
rule “Salary award for min 8 years service”
repeatable false when
e : Employee( lengthOfService > 8 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
AAAAAAhhhhhhhhhh
Saturday, 13 July 13
Saturday, 13 July 13
Property Reactive
The Technique
Saturday, 13 July 13
Saturday, 13 July 13
Annotate Class
@PropertyReactive
public class Employee {
int salary;
int lengthOfService
// getters and setters below
}
Saturday, 13 July 13
Loop Problem Fixed
rule “Salary award for min 2 years service” when
e : Employee( lengthOfService > 2 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
rule “Salary award for min 8 years service” when
e : Employee( lengthOfService > 8 )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
@Watch
rule “Salary award for min 2 years service” when
e : Employee( salary < 1000, lengthOfService > 2 )
@Watch( !salary )
then
modify( e ) { setSalary( e.getSalary() * 1.05 ) };
end
Saturday, 13 July 13
@Watch
rule “Record Salary Changes” when
e : Employee( ) @Watch( salary )
then
insert( new SalaryChange( e, e.getSalary() );
end
Saturday, 13 July 13
@Watch
@Watch( salary, lengthOfService, age )
@Watch( * )
@Watch( !* )
@Watch( *, !salary )
@Watch( !*, salary )
Saturday, 13 July 13
Good Form
Good Function
Saturday, 13 July 13
Property Reactive
Related Work
Saturday, 13 July 13
Related Work
CLIPS COOL
Uses Triples for properties
Property Reactivity is just a useful side effect,
not an intention.
No @Watch like capability
Jess
Slot Specific
no literature on implementation
No @Watch like capability
Saturday, 13 July 13
Related Work
YES/OPS
“New Trigger Conditions”
Simple @Watches with “!” symbol
No literature on implementation
Saturday, 13 July 13
Property Reactive
The Implementation
Saturday, 13 July 13
Class
@PropertyReactive
public class Bar {
int a; // 1
int b; // 2
int c; // 4
int d; // 8
int e; // 16
int f; // 32
// getters and setters below
}
Saturday, 13 July 13
Propagation Masks
@PropertyReactive
public class Bar {
int a; // 1
int b; // 2
int c; // 4
int d; // 8
int e; // 16
int f; // 32
}
modify ( bar ) { a = 1 }
// 000001
modify ( bar ) { a = 1, c = 1 }
// 000101
modify ( bar ) { a = 1, c = 1, f = 1 }
// 100101
Saturday, 13 July 13
Network Masks
rule R1 when
Foo( $v : v )
bar : Bar( c >= 1, a >= 1, e >= $v ) then ... end
Bar
a => 1
c => 1
e => V
b1
a1
a2
Foo
declared : 000100
inferred : 010101
declared : 000001
inferred : 010101
declared : 010000
inferred : 010101
modify ( bar ) { a = 1, c = 1 }
// 000101
modify ( bar ) { b = 1, d = 1 }
// 010010
Saturday, 13 July 13
Network Masks
rule R1 when
Foo( $v : v )
Bar( c >= 1, a >= 1, e >= $v )
rule R2 when
Foo( $v : v )
Bar( c >= 1, d >= 1, b >= $v )
Bar
a => 1
c => 1
d => 1
e => V b => V
a1
a2 a3
Network
Share
Here
declared : 001000
inferred : 011111
declared : 000001
inferred : 010101
declared : 010000
inferred : 010101
declared : 001000
inferred : 001110
declared : 000010
inferred : 001110
b1 b2
Saturday, 13 July 13
Network Masks
rule R1 when
Foo( $v : v )
Bar( c >= 1, a >= 1, e >= $v )
rule R2 when
Foo( $v : v )
Bar( c >= 1, d >= 1, b >= $v )
rule R3 when Dummy( )
Bar( c >= 1 ) @Watch( f, d, !c )
Bar
a => 1
c => 1
d => 1
e => V b => V
@watch(f, d, !c)
b1 b2 b3
a1
a2 a3
Saturday, 13 July 13
Network Masks
Bar
a => 1
c => 1
d => 1
e => V b => V
a1
a2 a3
Network
Share
Here
declared : 001000
inferred : 111111
declared : 000001
inferred : 010101
declared : 010000
inferred : 010101
declared : 001000
inferred : 001110
declared : 000010
inferred : 001110
b1 b2
@watch(f, d, !c)
b3
declared : 101000
inferred : 101000
Saturday, 13 July 13
Network Masks
Bar
a => 1
c => 1
d => 1
e => V b => V
a1
a2 a3
Network
Share
Here
declared : 001000
inferred : 111111
declared : 000001
inferred : 010101
declared : 010000
inferred : 010101
declared : 001000
inferred : 001110
declared : 000010
inferred : 001110
b1 b2
@watch(f, d, !c)
b3
declared : 101000
inferred : 101000
Saturday, 13 July 13
Property Reactive
Benchmark
Saturday, 13 July 13
Hardware
i7-2820QM@2.30GHz Quad core CPU
with HyperThreading
8Gb of RAM,
OpenJDK 1.7
Ubuntu Quetzal 64bit operating system
Saturday, 13 July 13
Classes
A
int a1, int b1
B
int b2, int b2
Saturday, 13 July 13
Benchmark #1
rule R0 when
$a: A( $a1 : a1 < 10 )
then
modify( $a ) { setA2( $a1 + 1 ) };
end
rule R0 no-loop when
$a: A( $a1 : a1 < 10 )
then
modify( $a ) { setA2( $a1 + 1 ) };
end
insert 1mill A
Initial a1, a2 set to 1
No-loop
2.275±0.080s
Property Reactive
2.265 ± 0.047s
Gain
0.44%
Saturday, 13 July 13
Benchmark #4
rule R3 when
a: A( a1 < 10 )
b: B( b1 < a.a1 )
...
x: X( x1 < w.w1, x2 > a.a2 )
then
modify( a ) { setA2( c.getC2() + 1 ) };
end
Saturday, 13 July 13
Benchmark #4 Results
rule R3 when
a: A( a1 < 10 )
b: B( b1 < a.a1 )
...
x: X( x1 < w.w1, x2 > a.a2 )
then
modify( a ) { setA2( c.getC2() + 1 ) };
end
Saturday, 13 July 13
Conclusion
Saturday, 13 July 13
Conclusion - Achieved
Enabled and Disabled at a Class level for flexibility
Complimentary and additional to RIF Refraction and
Repeatable, adding finer grained control.
@Watch provides even further declarative control.
Keeps rules clean.
Not Polluted with control logic.
Not any slower, and can give increased gains, by avoiding wasted
join evaluations.
Cost pushed to compile time, works with dynamic rules addition
and removal.
Good Form, Good Function
Saturday, 13 July 13
Conclusion - Future Work
@Watch
Can we push all or part of the @Watch higher up the alpha
network
Discriminates earlier, better performance
Further flexibility to control propagations based on rising and
falling edges
onMatch, onReMatch, onUnmatch
Saturday, 13 July 13
Zen-like Calmness
Saturday, 13 July 13

More Related Content

Similar to Property Reactive RuleML 2013

Part APurposeThis laboratory provides some experience work.docx
Part APurposeThis laboratory provides some experience work.docxPart APurposeThis laboratory provides some experience work.docx
Part APurposeThis laboratory provides some experience work.docx
dewhirstichabod
 
What they don't tell you about JavaScript
What they don't tell you about JavaScriptWhat they don't tell you about JavaScript
What they don't tell you about JavaScript
Raphael Cruzeiro
 
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
DrupalCamp MSK
 

Similar to Property Reactive RuleML 2013 (20)

Powering code reuse with context and render props
Powering code reuse with context and render propsPowering code reuse with context and render props
Powering code reuse with context and render props
 
2. data types, variables and operators
2. data types, variables and operators2. data types, variables and operators
2. data types, variables and operators
 
Chris Mc Glothen Sql Portfolio
Chris Mc Glothen Sql PortfolioChris Mc Glothen Sql Portfolio
Chris Mc Glothen Sql Portfolio
 
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
Indeed My Jobs: A case study in ReactJS and Redux (Meetup talk March 2016)
 
Part APurposeThis laboratory provides some experience work.docx
Part APurposeThis laboratory provides some experience work.docxPart APurposeThis laboratory provides some experience work.docx
Part APurposeThis laboratory provides some experience work.docx
 
Les09
Les09Les09
Les09
 
Saving lives with rx java
Saving lives with rx javaSaving lives with rx java
Saving lives with rx java
 
Rxjs vienna
Rxjs viennaRxjs vienna
Rxjs vienna
 
Advanced patterns in asynchronous programming
Advanced patterns in asynchronous programmingAdvanced patterns in asynchronous programming
Advanced patterns in asynchronous programming
 
Some Functional Programming in JavaScript and Ramda.js
Some Functional Programming in JavaScript and Ramda.jsSome Functional Programming in JavaScript and Ramda.js
Some Functional Programming in JavaScript and Ramda.js
 
React, Redux, ES2015 by Max Petruck
React, Redux, ES2015   by Max PetruckReact, Redux, ES2015   by Max Petruck
React, Redux, ES2015 by Max Petruck
 
React, Redux, ES2015 by Max Petruck
React, Redux, ES2015 by Max PetruckReact, Redux, ES2015 by Max Petruck
React, Redux, ES2015 by Max Petruck
 
Cyclejs introduction
Cyclejs introductionCyclejs introduction
Cyclejs introduction
 
What they don't tell you about JavaScript
What they don't tell you about JavaScriptWhat they don't tell you about JavaScript
What they don't tell you about JavaScript
 
React state managmenet with Redux
React state managmenet with ReduxReact state managmenet with Redux
React state managmenet with Redux
 
React lecture
React lectureReact lecture
React lecture
 
Data binding in AngularJS, from model to view
Data binding in AngularJS, from model to viewData binding in AngularJS, from model to view
Data binding in AngularJS, from model to view
 
Super TypeScript II Turbo - FP Remix (NG Conf 2017)
Super TypeScript II Turbo - FP Remix (NG Conf 2017)Super TypeScript II Turbo - FP Remix (NG Conf 2017)
Super TypeScript II Turbo - FP Remix (NG Conf 2017)
 
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
Drupal in aerospace - selling geodetic satellite data with Commerce - Martin ...
 
Understanding redux
Understanding reduxUnderstanding redux
Understanding redux
 

More from Mark Proctor

Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)
Mark Proctor
 

More from Mark Proctor (20)

Rule Modularity and Execution Control
Rule Modularity and Execution ControlRule Modularity and Execution Control
Rule Modularity and Execution Control
 
Drools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentationDrools, jBPM OptaPlanner presentation
Drools, jBPM OptaPlanner presentation
 
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
Reducing the Cost of the Linear Growth Effect using Adaptive Rules with Unlin...
 
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
Drools, jBPM and OptaPlanner (NYC and DC Sept 2017 - Keynote Talk Video)
 
Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016Learning Rule Based Programming using Games @DecisionCamp 2016
Learning Rule Based Programming using Games @DecisionCamp 2016
 
Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016Drools Happenings 7.0 - Devnation 2016
Drools Happenings 7.0 - Devnation 2016
 
RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning RuleML2015 : Hybrid Relational and Graph Reasoning
RuleML2015 : Hybrid Relational and Graph Reasoning
 
Red Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire RoadmapsRed Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
Red Hat Summit 2015 : Drools, jBPM and UberFire Roadmaps
 
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client TechnologyRed Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
Red Hat JBoss BRMS and BPMS Workbench and Rich Client Technology
 
Classic Games Development with Drools
Classic Games Development with DroolsClassic Games Development with Drools
Classic Games Development with Drools
 
Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)Drools 6.0 (Red Hat Summit)
Drools 6.0 (Red Hat Summit)
 
Drools and jBPM 6 Overview
Drools and jBPM 6 OverviewDrools and jBPM 6 Overview
Drools and jBPM 6 Overview
 
Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)Drools and BRMS 6.0 (Dublin Aug 2013)
Drools and BRMS 6.0 (Dublin Aug 2013)
 
UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)UberFire Quick Intro and Overview (early beta Aug 2013)
UberFire Quick Intro and Overview (early beta Aug 2013)
 
What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013What's new in Drools 6 - London JBUG 2013
What's new in Drools 6 - London JBUG 2013
 
Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)Reactive Transitive Closures with Drools (Backward Chaining)
Reactive Transitive Closures with Drools (Backward Chaining)
 
Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)Drools 6.0 (JudCon 2013)
Drools 6.0 (JudCon 2013)
 
Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)Drools 6.0 (CamelOne 2013)
Drools 6.0 (CamelOne 2013)
 
UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)UberFire Quick Intro and Overview (early beta Jul 2013)
UberFire Quick Intro and Overview (early beta Jul 2013)
 
UberFire (JudCon 2013)
UberFire (JudCon 2013)UberFire (JudCon 2013)
UberFire (JudCon 2013)
 

Recently uploaded

Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
lizamodels9
 
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
dlhescort
 
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
amitlee9823
 
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
amitlee9823
 
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Sheetaleventcompany
 
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Anamikakaur10
 

Recently uploaded (20)

Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
Call Girls In DLf Gurgaon ➥99902@11544 ( Best price)100% Genuine Escort In 24...
 
How to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League CityHow to Get Started in Social Media for Art League City
How to Get Started in Social Media for Art League City
 
Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023Mondelez State of Snacking and Future Trends 2023
Mondelez State of Snacking and Future Trends 2023
 
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRLBAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
BAGALUR CALL GIRL IN 98274*61493 ❤CALL GIRLS IN ESCORT SERVICE❤CALL GIRL
 
Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1Katrina Personal Brand Project and portfolio 1
Katrina Personal Brand Project and portfolio 1
 
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service NoidaCall Girls In Noida 959961⊹3876 Independent Escort Service Noida
Call Girls In Noida 959961⊹3876 Independent Escort Service Noida
 
Falcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investorsFalcon Invoice Discounting: The best investment platform in india for investors
Falcon Invoice Discounting: The best investment platform in india for investors
 
Organizational Transformation Lead with Culture
Organizational Transformation Lead with CultureOrganizational Transformation Lead with Culture
Organizational Transformation Lead with Culture
 
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
Nelamangala Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore...
 
Falcon Invoice Discounting platform in india
Falcon Invoice Discounting platform in indiaFalcon Invoice Discounting platform in india
Falcon Invoice Discounting platform in india
 
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptxB.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
B.COM Unit – 4 ( CORPORATE SOCIAL RESPONSIBILITY ( CSR ).pptx
 
👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...
👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...
👉Chandigarh Call Girls 👉9878799926👉Just Call👉Chandigarh Call Girl In Chandiga...
 
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRLMONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
MONA 98765-12871 CALL GIRLS IN LUDHIANA LUDHIANA CALL GIRL
 
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
Call Girls Kengeri Satellite Town Just Call 👗 7737669865 👗 Top Class Call Gir...
 
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best ServicesMysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
Mysore Call Girls 8617370543 WhatsApp Number 24x7 Best Services
 
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
Chandigarh Escorts Service 📞8868886958📞 Just📲 Call Nihal Chandigarh Call Girl...
 
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Greater Kailash ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort ServiceEluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
Eluru Call Girls Service ☎ ️93326-06886 ❤️‍🔥 Enjoy 24/7 Escort Service
 
Famous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st CenturyFamous Olympic Siblings from the 21st Century
Famous Olympic Siblings from the 21st Century
 
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
Call Now ☎️🔝 9332606886🔝 Call Girls ❤ Service In Bhilwara Female Escorts Serv...
 

Property Reactive RuleML 2013

  • 2. Extending an Object-Oriented RETE Network with fine-grained Reactivity to Property Modifications Mark Proctor, Mario Fusco and David Sottara Saturday, 13 July 13
  • 3. Agenda The Problem Property Reactive The technique Related Work The Implementation Benchmarking Conclusion Saturday, 13 July 13
  • 5. The problem Reactive rule based systems are hard to write Saturday, 13 July 13
  • 6. Too Much!!!! Reactive rule based systems are hard to write Saturday, 13 July 13
  • 8. Patterns Person(age >= 18) field name restriction constraintobject type pattern Saturday, 13 July 13
  • 9. CashFlow Ruleselect * from AccountPeriod ap, Account acc, Cashflow cf where cf.type == CREDIT and acc.accountNo == cf.accountNo cf.date >= ap.start and cf.date <= ap.end rule “increase balance for AccountPeriod Credits” when ap : AccountPeriod() acc : Account() cf : CashFlow( type == CREDIT, accountNo == acc.accountNo, date >= ap.start && <= ap.end ) then acc.balance += cf.amount; end acc.balance += cf.amount Saturday, 13 July 13
  • 10. Loop Problem rule “Salary award for min 2 years service” when e : Employee( lengthOfService > 2 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 11. Loop Problem rule “Salary award for min 2 years service” no-loop when e : Employee( lengthOfService > 2 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 12. Loop Problem rule “Salary award for min 2 years service” no-loop when e : Employee( lengthOfService > 2 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end rule “Salary award for min 8 years service” no-loop when e : Employee( lengthOfService > 8 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 13. Loop Problem rule “Salary award for min 2 years service” when e : Employee( lengthOfService > 2 ) not SalaryMin2Years( employee == e ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; insert ( new SalaryMin2Years(e) ); end rule “Salary award for min 8 years service” when e : Employee( lengthOfService > 8 ) not SalaryMin8Years( employee == e ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; insert ( new SalaryMin8Years(e) ); end Saturday, 13 July 13
  • 14. Loop Problem rule “Year End” when d : ChangeDate( ) e : Employee( ) then modify( e ) { lengthOfService( d.getYear() - e.getStartYear() ) }; end rule “Salary award for min 8 years service” when e : Employee( lengthOfService > 8 ) not SalaryMin8Years( employee == e ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; insert ( new SalaryMin8Years(e) ); end Saturday, 13 July 13
  • 15. Refraction This term comes from the neurobiological observation of a refractory period for a neuron, which means that the neuron is not able to fire immediately without first going through a relaxation process. In a similar way, OPS5 will not allow the same instantiation in the conflict set from firing twice in a row. This prevents the inference engine from entering into an infinite loop. Saturday, 13 July 13
  • 16. W3C RIF Refraction Refraction When a rule instance is fired, it is removed from the conflict set (and thus will not be created again even its condition part remains true), unless one of the objects in its condition part is modified again. In the later case, the repeatability concept determines how the rule instance is treated Saturday, 13 July 13
  • 17. W3C RIF Refraction Repeatability After the execution of a rule instance, the rule instance is removed from the conflict set by the refraction. Later on, if one of the objects in the condition part is modified and if the rule evaluates to true, the repeatability controls whether if the rule instance can be created again. Saturday, 13 July 13
  • 18. Loop Problem (Refraction) rule “Salary award for min 2 years service” repeatable false when e : Employee( lengthOfService > 2 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end rule “Salary award for min 8 years service” repeatable false when e : Employee( lengthOfService > 8 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 23. Annotate Class @PropertyReactive public class Employee { int salary; int lengthOfService // getters and setters below } Saturday, 13 July 13
  • 24. Loop Problem Fixed rule “Salary award for min 2 years service” when e : Employee( lengthOfService > 2 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end rule “Salary award for min 8 years service” when e : Employee( lengthOfService > 8 ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 25. @Watch rule “Salary award for min 2 years service” when e : Employee( salary < 1000, lengthOfService > 2 ) @Watch( !salary ) then modify( e ) { setSalary( e.getSalary() * 1.05 ) }; end Saturday, 13 July 13
  • 26. @Watch rule “Record Salary Changes” when e : Employee( ) @Watch( salary ) then insert( new SalaryChange( e, e.getSalary() ); end Saturday, 13 July 13
  • 27. @Watch @Watch( salary, lengthOfService, age ) @Watch( * ) @Watch( !* ) @Watch( *, !salary ) @Watch( !*, salary ) Saturday, 13 July 13
  • 30. Related Work CLIPS COOL Uses Triples for properties Property Reactivity is just a useful side effect, not an intention. No @Watch like capability Jess Slot Specific no literature on implementation No @Watch like capability Saturday, 13 July 13
  • 31. Related Work YES/OPS “New Trigger Conditions” Simple @Watches with “!” symbol No literature on implementation Saturday, 13 July 13
  • 33. Class @PropertyReactive public class Bar { int a; // 1 int b; // 2 int c; // 4 int d; // 8 int e; // 16 int f; // 32 // getters and setters below } Saturday, 13 July 13
  • 34. Propagation Masks @PropertyReactive public class Bar { int a; // 1 int b; // 2 int c; // 4 int d; // 8 int e; // 16 int f; // 32 } modify ( bar ) { a = 1 } // 000001 modify ( bar ) { a = 1, c = 1 } // 000101 modify ( bar ) { a = 1, c = 1, f = 1 } // 100101 Saturday, 13 July 13
  • 35. Network Masks rule R1 when Foo( $v : v ) bar : Bar( c >= 1, a >= 1, e >= $v ) then ... end Bar a => 1 c => 1 e => V b1 a1 a2 Foo declared : 000100 inferred : 010101 declared : 000001 inferred : 010101 declared : 010000 inferred : 010101 modify ( bar ) { a = 1, c = 1 } // 000101 modify ( bar ) { b = 1, d = 1 } // 010010 Saturday, 13 July 13
  • 36. Network Masks rule R1 when Foo( $v : v ) Bar( c >= 1, a >= 1, e >= $v ) rule R2 when Foo( $v : v ) Bar( c >= 1, d >= 1, b >= $v ) Bar a => 1 c => 1 d => 1 e => V b => V a1 a2 a3 Network Share Here declared : 001000 inferred : 011111 declared : 000001 inferred : 010101 declared : 010000 inferred : 010101 declared : 001000 inferred : 001110 declared : 000010 inferred : 001110 b1 b2 Saturday, 13 July 13
  • 37. Network Masks rule R1 when Foo( $v : v ) Bar( c >= 1, a >= 1, e >= $v ) rule R2 when Foo( $v : v ) Bar( c >= 1, d >= 1, b >= $v ) rule R3 when Dummy( ) Bar( c >= 1 ) @Watch( f, d, !c ) Bar a => 1 c => 1 d => 1 e => V b => V @watch(f, d, !c) b1 b2 b3 a1 a2 a3 Saturday, 13 July 13
  • 38. Network Masks Bar a => 1 c => 1 d => 1 e => V b => V a1 a2 a3 Network Share Here declared : 001000 inferred : 111111 declared : 000001 inferred : 010101 declared : 010000 inferred : 010101 declared : 001000 inferred : 001110 declared : 000010 inferred : 001110 b1 b2 @watch(f, d, !c) b3 declared : 101000 inferred : 101000 Saturday, 13 July 13
  • 39. Network Masks Bar a => 1 c => 1 d => 1 e => V b => V a1 a2 a3 Network Share Here declared : 001000 inferred : 111111 declared : 000001 inferred : 010101 declared : 010000 inferred : 010101 declared : 001000 inferred : 001110 declared : 000010 inferred : 001110 b1 b2 @watch(f, d, !c) b3 declared : 101000 inferred : 101000 Saturday, 13 July 13
  • 41. Hardware i7-2820QM@2.30GHz Quad core CPU with HyperThreading 8Gb of RAM, OpenJDK 1.7 Ubuntu Quetzal 64bit operating system Saturday, 13 July 13
  • 42. Classes A int a1, int b1 B int b2, int b2 Saturday, 13 July 13
  • 43. Benchmark #1 rule R0 when $a: A( $a1 : a1 < 10 ) then modify( $a ) { setA2( $a1 + 1 ) }; end rule R0 no-loop when $a: A( $a1 : a1 < 10 ) then modify( $a ) { setA2( $a1 + 1 ) }; end insert 1mill A Initial a1, a2 set to 1 No-loop 2.275±0.080s Property Reactive 2.265 ± 0.047s Gain 0.44% Saturday, 13 July 13
  • 44. Benchmark #4 rule R3 when a: A( a1 < 10 ) b: B( b1 < a.a1 ) ... x: X( x1 < w.w1, x2 > a.a2 ) then modify( a ) { setA2( c.getC2() + 1 ) }; end Saturday, 13 July 13
  • 45. Benchmark #4 Results rule R3 when a: A( a1 < 10 ) b: B( b1 < a.a1 ) ... x: X( x1 < w.w1, x2 > a.a2 ) then modify( a ) { setA2( c.getC2() + 1 ) }; end Saturday, 13 July 13
  • 47. Conclusion - Achieved Enabled and Disabled at a Class level for flexibility Complimentary and additional to RIF Refraction and Repeatable, adding finer grained control. @Watch provides even further declarative control. Keeps rules clean. Not Polluted with control logic. Not any slower, and can give increased gains, by avoiding wasted join evaluations. Cost pushed to compile time, works with dynamic rules addition and removal. Good Form, Good Function Saturday, 13 July 13
  • 48. Conclusion - Future Work @Watch Can we push all or part of the @Watch higher up the alpha network Discriminates earlier, better performance Further flexibility to control propagations based on rising and falling edges onMatch, onReMatch, onUnmatch Saturday, 13 July 13