SlideShare uma empresa Scribd logo
1 de 48
Baixar para ler offline
ONTORULE

Grounding business rules in OWL2
           ontologies
Production rules and the RETE
         algorithm


            Skip
What are Business Rules?
• “Business Rules” is an ambiguous term
   – Business Rules are a kind of requirement or a definition of business
     behavior
   – Business Rules are a declarative approach to system behavior
• Source (Business) Rules
   – Definitions of business behavior
   – Part of the CIM (computer independent model)
• Production (Business) Rules
   – Definitions of system behavior
   – Part of the PIM (platform independent model)
Production rules
• Condition-action rules
   – If <condition> then do <actions>
       • Behaviour
   – Operational semantics
       • Mostly RETE-based
       • Intrinsically non-monotonic
   – 90+ % of the BRMS market
• As opposed to logical rules
   – If <condition> then <condition>
       • Axiom, definition
   – Model theoretic semantics
       • Usually monotonic
   – Computational logics and logic programming
       • E.g. OWL2 and Prolog
Examples
A customer who has purchased for over $1000 in the past three months, reaches status: gold
     Forall ?c such that ?c # Customer
     If Exists ?v1 ?v2 ?v3 (And (QuarterMonthlyPurchase(?c ?v1 ?v2 ?v3)
                               func:numeric-greater-than(func:numeric-add(?v1 ?v2 ?v3) 1000)
     Then Modify(?c[status -> "Gold"  ])


If customer cart contains CD-player and no CD, then advertise CDs on sidebar, based on
     customer’s musical preferences
    Forall ?c such that ?c # Customer
     Forall ?s ?iList such that And(?s # ShoppingCart ?c[shoppingCart -> ?s] ?s[items -> ?iList])
     If And (Exists ?cd-p (And ?cd-p # CD-Player pred:list-contains(?cd-p ?iList))
         Not (Exists ?cd (And ?cd # CD pred:list-contains(?cd ?iList))))
     Then Do ((?pref ?c[preferences ->?pref])(?pref-music ?pref[musical -> ?pref-music))
           Execute(act:print(my:prepareAdvertisement(?pref-music))))

The brother of a parent is an uncle
     Uncle(?x, ?z) :- Brother(?x, ?z) and Parent(?z, ?y)

The spouse of one’s spouse is oneself
     ?x = ?z :- ?x [spouse -> ?y] and ?y [spouse -> ?z] then
Production rule engine cycle
1. Match and instantiate
  – Match rule conditions to facts/objects in the working
    memory
  – Instantiate rules whose conditions are satisfied
2. Select
  – Apply conflict resolution strategy to select one
    instantiated rule for execution
3. Execute
  – Execute actions instantiated from selected rule and
    update working memory
  – Check ending condition and loop back to step 1 is not
    satisfied
The RETE Algorithme
• Efficient many patterns-many objects matching
   – Charles Forgy 1982
• Rule conditions are compiled in a network (latin: «
  rete ») of atomic patterns and joins
   – Tokens corresponding to every objects/facts in the
     working memory are sent through the network and and
     kept there until the object/fact is retracted
   ⇒ Each object/fact is tested only once against each pattern
The RETE Algorithme
Root


Class or fact type tests                   ...   ...


Discrimination trees                       ...   ...
(intr-object/fact tests)

Alpha nodes                                ...   ...
(single objects/facts)

Join nodes
(inter-objects/facts tests)

Beta nodes
(tuples)


                                                       ...

Rule instances
(tuples that satisfy a rule’s condition)
Example
 If { A (a1==3; ?x:a2); B (b1==2; ?y:b2; b3==?x); C (c1==?y); } then {do something }




Working memory:

A( a1=3 a2=10 )
B( b1=2 b2=4 b3=10 )
B( b1=2 b2=7 b3=10 )
C( c1=4 )
IBM Websphere ILOG JRules


          Skip
ILOG Rule Languages
ILOG Rule Languages
The vocabulary is the set of terms and phrases
   attached to the elements of the Business
  Object Model (BOM). Vocabulary elements
 appear in the drop-down lists of business rule
                    editors.
ILOG BOM contains the classes and methods that
    A
      Rule Languages
     rule artifacts act on. As an object model, the BOM
      is very similar to a Java object model. It consists
     of classes grouped into packages. Each class has
       a set of attributes, methods, and possibly other
                        nested classes.
Business Object Model
Studio: Modularity and Re-use
• Business Object Model is decoupled from
  Implementation
        Business Vocabulary 1            Business Vocabulary 2




                         Business Object Model



                   BOM2XOM 1         BOM2XOM 2


       Execution Object Model 1         Execution Object Model 2
ILOG Rule languages
Business action language (BAL) rule
Decision table
Decision tree
Technical rule
ILOG rule language (IRL)
IRL abstract grammar
•   action  := binding | insert | update | retract
•   insert := value
•   update := value
•   retract := value
(Only minimal kernel presented here: working memory operations)
OWL2


Skip
Overview
Rich Logical Knowledge Descriptions                     Descriptions         Axioms
   Class Expressions
                                                            OWL2 Ontology
   Property Expressions
   Axioms                                                       Assertions
Simple Runtime Model
   Assertions about Constants
                                                                    Class
  Constant ::= Individual | Literal                                 Axiom
                                                    Class                         Class
                                                    Expr                          Expr
 Individuals may belong to many Classes
                                                                 Class or
 Properties are Relations by default                             Property
 Non Unique Name Assumption (UNA)                                 Axiom
 Open World Assumption (OWA)
                                                                    Object
                         Literal                   individual                   individual
                                       Data                     Property Expr
                     (DataRange)
                                   Property Expr
                                                                 Property
                                                                  Axiom                Individual
                                                                                         Axiom
                                                                   Object
                                    Property                    Property Expr
                                     Axiom                                      individual
Descriptions    Axioms
                                   OWL2 Ontology
                                     Assertions

ClassExpr ::=                                   DataRange ::=
    Class Name                                      Datatype Name
|   oneOf(Individual ...)                       |   oneOf(Literal ...)
|   unionOf(ClassExpr,ClassExpr)                |   unionOf(DataRange,DataRange)
|   intersectionOf(ClassExpr,ClassExpr)         |   intersectionOf(DataRange,DataRange)
|   complementOf(ClassExpr)                     |   complementOf(DataRange)
|   allValuesFrom(PropExpr, ClassExpr           |   restriction(DataRange,
                            | DataRange)                        ( ConstrainingFacet
|   someValuesFrom(PropExpr, ClassExpr                            Literal ) ...)
                             | DataRange)
|   cardRestriction((<= | >= | =) nonNegInt ,
                    PropExpr)                   ConstrainingFacet ::=
|   hasValue(PropExpr,Constant)                     Constraint Name
                                                    // XSD: minValue,maxValue...
PropExpr ::=
  Property Name
| propertyChain(PropExpr ...)
| inverseOf(PropExpr)
Descriptions   Axioms
                                   OWL2 Ontology
                                     Assertions




ClassAxiom ::=                             PropertyAxiom ::=
    equivalentClasses(ClassExpr,ClassExpr)   equivalentProperties(PropExpr,PropExpr)
|   subClassOf(ClassExpr,ClassExpr)        | subPropertyOf(PropExpr,PropExpr)
|   disjointClasses(ClassExpr ...)         | domain(PropExpr,ClassExpr)
|   disjointUnion(ClassExpr,ClassExpr ...) | range(PropExpr, ClassExpr
|   hasKey(ClassExpr,PropExpr ...)                          | DataRange)
                                           | reflexive(PropExpr)
                                           | irreflexive(PropExpr)
                                           | symmetric(PropExpr)
                                           | asymmetric(PropExpr)
                                           | transitive(PropExpr)
                                           | functional(PropExpr)
                                           | inverseFunctional(PropExpr)
Descriptions   Axioms
                        OWL2 Ontology
                           Assertions




Assertion ::=
  classAssertion(ClassExpr,Individual)
| positivePropertyAssertion(PropExpr,Individual,Constant)
| negativePropertyAssertion(PropExpr,Individual,Constant)


| sameIndividual(Individual ...)
| differentIndividuals(Individual,Individual ...)
A small ontology of the Simpsons
// Descriptions and Axioms:               // Assertions:
class Person;                             Girl(Maggie);
class Girl << Person;
                                          Girl(Lisa);
class Boy << Person;
class Girl <> Boy;                        Boy(Bart);
class Parent == some(child,>=1);          Boy(Homer);
class OneChildParent == some(child,=1);   Boy(MrBurns);
property child {                          Boy(Apu);
  domain Person;
                                          Parent(Apu);
  range Person;
};                                        child(Marge,Maggie);
property wife {                           child(Marge,Lisa);
  domain Boy;                             child(Marge,Bart);
  range Girl;
                                          wife(Homer,Marge);
};
property cash {                           cash(Homer,12);
  functional;                             cash(MrBurns,3500000000);
  domain Person;
  range integer ! (>= 0);
};
Axioms
Derived Knowledge is built by recursive application of Axioms on direct and derived
 Knowledge


Example
   The direct assertions do not initially say much about Marge




                                   wife(Homer,Marge)
             property wife {
               range Girl;         =>
             };                    Girl(Marge)
Open World Assumption
Existence of Individuals is inferred according to the constraints accumulated
 along the reasoning path


Example
   The direct assertions do not initially say much about Apu's children


                                    Parent(Apu)
class Parent == some(child,>=1);    <=>
                                    (some(child,>=1))(Apu)
                                    =>
                                    child(Apu,new1) // there exists at least
                                                   // one child even if
                                                   // not directly mentioned
Non-unique name assumption

Individuals with different identifiers are not different by default


Example
   Bart fills an administrative form and asserts that Marge has only one child



                                                  OneChildParent(Marge)
class OneChildParent == some(child,=1);           <=>
                                                  (some(child,=1))(Marge)
                      child(Marge,Maggie);
                      child(Marge,Lisa);          =>
                      child(Marge,Bart);          sameIndividual(Maggie,Lisa,Bart)
Inconsistency
It is easy to introduce inconsistencies
     OWL2 Reasoning is complex
     OWL2 Ontologies contain many redundancies
But it is impossible to reason on an inconsistent Ontology
Inconsistencies must be Statically Detected or Automatically Fixed
Example
   After a few drinks at Moe's, Homer and MrBurns get married

                                   wife(Homer,MrBurns)
              property wife {
                range Girl;        =>
              };                   Girl(MrBurns)
              Boy(MrBurns)         =>
                                   (Girl && Boy)(MrBurns)
              Boy <> Girl          =>
                                   Nothing(MrBurns)
Limitations
Only predicates, arity <= 2 are supported

                   BoyProfile(b,10,“Bart”,Sk8)


 (Boy && has(age,10) && has(name,“Bart”) && has(vehicle,Sk8))(b)



Restriction values can only be constants, not variables

                        some(child,<= ?x) ! Boy               Error

                     some(cash) ! integer!(>= ?y)             Error


That's why Rules with more powerful conditions have to be added to
 Ontologies
Coupling production rules and
      OWL2 ontologies
     Problems and approaches
Production rules VS OWL2
• Objects VS assertions about objects
   – Static typing VS dynamic classification
   – Unique Name Assumption VS not UNA
• Explicit facts VS axioms
   – Axioms may make it difficult to detect inconsistencies
• Closed VS Open World Assumption
• Variables VS constants only
• Update VS query only
   – Updating may introduce inconsistencies

⇒ Need Inconsistency Fixing Strategy
   – Detect and fix inconsistent Updates at compile time
   – Automatically fix inconsistent Updates at runtime
Coupling Strategies
  Weak Coupling              Tight Coupling

  OWL2 Ontology

  OWL2 Reasoner              OWL2 Ontology

Query /           Answer        Engine
Check

    Rule Engine                  Rules

          Rules


                                              36
Assumptions
• The OWL2 Ontology is initially consistent
• The Production Rules do not modify the
  Descriptions of the OWL2 Ontology (the T-
  Box)
• The Production Rules
  – match the direct and the derived assertions of the
    OWL2 Ontology
  – update the direct assertions of the OWL2
    Ontology (the A-Box is the Working Memory)
Coupling JRules and an OWL2
          reasoner
        Weak coupling
Compile time
                   OM-like Class             OM-like Property         Complex Axioms
                     Axioms                      Axioms
 OWL2
                      Named                      Named
Ontology                                                            Complex Descriptions
                      Classes                   Properties



Object              OM Classes                OM Attributes
Model


            isa                    get            add new                     get / set
  OO
 RETE      Class                Compiled              Production              Compiled
           Nodes                Conditions            Rule Nodes               Actions
Network


 Legacy            Conditions
                                                       Production
                                                                              Actions
OO Rules                                                 Rules
Run time
                         Read
OWL2                             OWL2 Reasoner               Axioms
              Direct
            Assertions              isa query              get query
                         Write
                                          add class                     add / remove
                                          assertion                   property assertion
         Start
         Here
Object                           OM Classes           OM Attributes
Model

                           isa              get                                            get / set
                                                       add new
 OO              Class               Compiled               Production                     Compiled
RETE             Nodes               Conditions             Rule Nodes                      Actions
Engine
                                                                                 Conflict
                                                                                Resolution
Authoring : OWL 2 BOM Mapping

   Classes                                     Property Caracteristics

                                               OWL                           BOM
OWL                     BOM                    P(A,B)                        Class A{ B P; }

                                               P' subPropertyOf P            Class A{ B P;
Class A                 Class A                                                      B P' ;
                                               P'' equivalentProperty P
                                                                                     B P''; }
B subClassOf A          Class B extends A      P transitiveProperty          Class A{
                                                                                A P;
C = intersectionOf (A,B) Class C extends A,B   P' symetricProperty
                                                                                A P';}

                        A extends C            P' inverseOf P                Class B{
C = unionOf (A,B)                                                                A P'; }
                        B extends C
                                               P functionalProperty
                                                                             Class A{ B P; }
                                               P inverseFunctionalProperty
•
       Assessment – OWL plug-in
    Ontology reasoning Capabilities
    – Depend on the plugged OWL2 Reasoner
• Rule Language
    –   + Compliant with legacy authoring and maintenance Tools
    –   - No complex OWL2 Class Expressions
    –   - No complex OWL2 Property Expressions
    –   - No update of Individual Classes
    –   - No update of Individual identity Assertions
• Static Update Verification
    – Not implemented
    – Consistency Checking can be delegated to OWL2 Reasoner
• Static Type Checking in Actions
    – Can be broken, updating Attributes can change the Classes of
      Individuals
• Inconsistency Fixing Strategy
    – Experiments using OWL2 Reasoner to identify inconsistent Assertions
      going on
Taking full advantage of RETE-based
    production rules and OWL2
            Tight coupling
Compile time
  OWL2              Property and Class                    Property and Class
                       Expressions                             Axioms
 Ontology


            Compiled                 Compiled                  Compiled
            Predicates               Predicate                  Axioms
                                    Expression                                   New
            head
                                                               Compiled
                                                                                Rules +
  Tight                                      add / remove                      Ontology
                                              Assertions        Actions
Combination                                                                    Language
                                                                   action
             Compiled                                         Compiled
              Logical        body    Compiled     condition   Production
               Rules                 Conditions                 Rules


  Rules       Logical                                         Production
               Rules                                            Rules
Run time                                        direct
                                                                                    derived
OWL2                  Direct
                                                                                    classic
                    Assertions
     Start                                                                          forward
     Here                  Export
                Import
 New Toplevel
  Assertions                                Compiled                    Compiled
                    Compiled
                    Predicates              Predicate                    Axioms
  Query the                                Expressions
  Extension
                head                                add / remove         Compiled
 Tight                                                                    Actions
                                                        Assertions
Engine                                                                action     Conflict
                                                                                Resolution
                                    body
                    Compiled               Compiled       condition
                                                                       Compiled
                     Logical               Conditions                  Production
                      Rules
                                                                         Rules
Assessment – Tight coupling
Rule Language
    + OWL2 Constructs are first class citizens of the Language
    + Compatible with OWL2 ad RIF-PRD Standards
    - No dedicated authoring Tool yet
Static Update Verification
    + Verified Assertion updates will never introduce an inconsistency that cannot be
       automatically fixed at runtime
Static Type Checking in Actions
    + Cannot be broken
        Only Thing (the Top Class) is allowed to type Action Variables

Runtime Inconsistency Fixing Strategy
    The most recent Assertion is the right one
    + Now both direct and derived Assertions are fixed
However
    Tight is an extension of the Production Rule Technology, not a Logic Engine
    - Only a subset of OWL2 is supported (+/- OWL2RL, CWA,UNA)
        Compile time Error Messages are available to warn about Limitations
Conclusion
Assessment – weak VS tight
              coupling
• OWL2 is not an Object Model
   – It is a Logic, Knowledge is available as Facts, not as complex Terms
     (Objects)
• The Weakly Coupled Approaches are limited
   – Not incremental Query interface of the OWL2 Reasoner
   – Performance of the OWL2 Reasoner
• The Tightly Coupled Approach is promising but getting
  Production Rules and OWL2 Ontology to work together
  requires tradeoffs
   – By extending a Production Rule Technology, we add Update but only
     with a subset of OWL2 Logic
   – Extending a (Constraint) Logic Programming Technology would give us
     the full power OWL2 Logic but Update is unlikely

Mais conteúdo relacionado

Mais procurados

Sdtl manual
Sdtl manualSdtl manual
Sdtl manualqaz8989
 
Chapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B KuteChapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B KuteTushar B Kute
 
Introduction To Javascript
Introduction To JavascriptIntroduction To Javascript
Introduction To JavascriptRajat Pandit
 
Java essentials for hadoop
Java essentials for hadoopJava essentials for hadoop
Java essentials for hadoopSeo Gyansha
 
Simplifying Database Development (OSCON 2009)
Simplifying Database Development (OSCON 2009)Simplifying Database Development (OSCON 2009)
Simplifying Database Development (OSCON 2009)PostgreSQL Experts, Inc.
 
First fare 2011 frc-java-introduction
First fare 2011 frc-java-introductionFirst fare 2011 frc-java-introduction
First fare 2011 frc-java-introductionOregon FIRST Robotics
 
Aspect oriented programming_with_spring
Aspect oriented programming_with_springAspect oriented programming_with_spring
Aspect oriented programming_with_springGuo Albert
 
Method overloading, recursion, passing and returning objects from method, new...
Method overloading, recursion, passing and returning objects from method, new...Method overloading, recursion, passing and returning objects from method, new...
Method overloading, recursion, passing and returning objects from method, new...JAINAM KAPADIYA
 
Scala categorytheory
Scala categorytheoryScala categorytheory
Scala categorytheoryKnoldus Inc.
 
Md02 - Getting Started part-2
Md02 - Getting Started part-2Md02 - Getting Started part-2
Md02 - Getting Started part-2Rakesh Madugula
 

Mais procurados (16)

Sdtl manual
Sdtl manualSdtl manual
Sdtl manual
 
Chapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B KuteChapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B Kute
 
Oop java
Oop javaOop java
Oop java
 
Introduction To Javascript
Introduction To JavascriptIntroduction To Javascript
Introduction To Javascript
 
Java basics
Java basicsJava basics
Java basics
 
Java essentials for hadoop
Java essentials for hadoopJava essentials for hadoop
Java essentials for hadoop
 
Oops Concept Java
Oops Concept JavaOops Concept Java
Oops Concept Java
 
Simplifying Database Development (OSCON 2009)
Simplifying Database Development (OSCON 2009)Simplifying Database Development (OSCON 2009)
Simplifying Database Development (OSCON 2009)
 
First fare 2011 frc-java-introduction
First fare 2011 frc-java-introductionFirst fare 2011 frc-java-introduction
First fare 2011 frc-java-introduction
 
Aspect oriented programming_with_spring
Aspect oriented programming_with_springAspect oriented programming_with_spring
Aspect oriented programming_with_spring
 
Method overloading, recursion, passing and returning objects from method, new...
Method overloading, recursion, passing and returning objects from method, new...Method overloading, recursion, passing and returning objects from method, new...
Method overloading, recursion, passing and returning objects from method, new...
 
camel-scala.pdf
camel-scala.pdfcamel-scala.pdf
camel-scala.pdf
 
Getting Started With Scala
Getting Started With ScalaGetting Started With Scala
Getting Started With Scala
 
Scala categorytheory
Scala categorytheoryScala categorytheory
Scala categorytheory
 
OOPs in Java
OOPs in JavaOOPs in Java
OOPs in Java
 
Md02 - Getting Started part-2
Md02 - Getting Started part-2Md02 - Getting Started part-2
Md02 - Getting Started part-2
 

Semelhante a Cascon2011_5_rules+owl

Scala: functional programming for the imperative mind
Scala: functional programming for the imperative mindScala: functional programming for the imperative mind
Scala: functional programming for the imperative mindSander Mak (@Sander_Mak)
 
Tools09 – Reusing & Composing Tests with Traits
Tools09 – Reusing & Composing Tests with TraitsTools09 – Reusing & Composing Tests with Traits
Tools09 – Reusing & Composing Tests with TraitsDamien Pollet
 
บทที่ 6 คลาสและการเขียนโปรแกรม
บทที่ 6 คลาสและการเขียนโปรแกรมบทที่ 6 คลาสและการเขียนโปรแกรม
บทที่ 6 คลาสและการเขียนโปรแกรมNookky Anapat
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to ScalaBrian Hsu
 
MOST (Newsfromthefront 2010)
MOST (Newsfromthefront 2010)MOST (Newsfromthefront 2010)
MOST (Newsfromthefront 2010)STI International
 
Erlang/OTP for Rubyists
Erlang/OTP for RubyistsErlang/OTP for Rubyists
Erlang/OTP for RubyistsSean Cribbs
 
Ekeko Technology Showdown at SoTeSoLa 2012
Ekeko Technology Showdown at SoTeSoLa 2012Ekeko Technology Showdown at SoTeSoLa 2012
Ekeko Technology Showdown at SoTeSoLa 2012Coen De Roover
 
Programming Android Application in Scala.
Programming Android Application in Scala.Programming Android Application in Scala.
Programming Android Application in Scala.Brian Hsu
 
Meta-objective Lisp @名古屋 Reject 会議
Meta-objective Lisp @名古屋 Reject 会議Meta-objective Lisp @名古屋 Reject 会議
Meta-objective Lisp @名古屋 Reject 会議dico_leque
 
A Proposition for Business Process Modeling
A Proposition for Business Process ModelingA Proposition for Business Process Modeling
A Proposition for Business Process ModelingAng Chen
 
Java for android developers
Java for android developersJava for android developers
Java for android developersAly Abdelkareem
 
Java Zone 2010 - Writing SOLID JavaScript
Java Zone 2010 - Writing SOLID JavaScriptJava Zone 2010 - Writing SOLID JavaScript
Java Zone 2010 - Writing SOLID JavaScriptanoras
 

Semelhante a Cascon2011_5_rules+owl (20)

Class1
Class1Class1
Class1
 
Scala: functional programming for the imperative mind
Scala: functional programming for the imperative mindScala: functional programming for the imperative mind
Scala: functional programming for the imperative mind
 
Ocl
OclOcl
Ocl
 
Tools09 – Reusing & Composing Tests with Traits
Tools09 – Reusing & Composing Tests with TraitsTools09 – Reusing & Composing Tests with Traits
Tools09 – Reusing & Composing Tests with Traits
 
Class
ClassClass
Class
 
บทที่ 6 คลาสและการเขียนโปรแกรม
บทที่ 6 คลาสและการเขียนโปรแกรมบทที่ 6 คลาสและการเขียนโปรแกรม
บทที่ 6 คลาสและการเขียนโปรแกรม
 
Introduction to Scala
Introduction to ScalaIntroduction to Scala
Introduction to Scala
 
Java
JavaJava
Java
 
Ooad Uml
Ooad UmlOoad Uml
Ooad Uml
 
MOST (Newsfromthefront 2010)
MOST (Newsfromthefront 2010)MOST (Newsfromthefront 2010)
MOST (Newsfromthefront 2010)
 
Erlang/OTP for Rubyists
Erlang/OTP for RubyistsErlang/OTP for Rubyists
Erlang/OTP for Rubyists
 
Ekeko Technology Showdown at SoTeSoLa 2012
Ekeko Technology Showdown at SoTeSoLa 2012Ekeko Technology Showdown at SoTeSoLa 2012
Ekeko Technology Showdown at SoTeSoLa 2012
 
Programming Android Application in Scala.
Programming Android Application in Scala.Programming Android Application in Scala.
Programming Android Application in Scala.
 
Meta-objective Lisp @名古屋 Reject 会議
Meta-objective Lisp @名古屋 Reject 会議Meta-objective Lisp @名古屋 Reject 会議
Meta-objective Lisp @名古屋 Reject 会議
 
CAP615-Unit1.pptx
CAP615-Unit1.pptxCAP615-Unit1.pptx
CAP615-Unit1.pptx
 
A Proposition for Business Process Modeling
A Proposition for Business Process ModelingA Proposition for Business Process Modeling
A Proposition for Business Process Modeling
 
Java for android developers
Java for android developersJava for android developers
Java for android developers
 
Java Zone 2010 - Writing SOLID JavaScript
Java Zone 2010 - Writing SOLID JavaScriptJava Zone 2010 - Writing SOLID JavaScript
Java Zone 2010 - Writing SOLID JavaScript
 
ETALIS at RR 2010
ETALIS at RR 2010ETALIS at RR 2010
ETALIS at RR 2010
 
Meet scala
Meet scalaMeet scala
Meet scala
 

Último

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Último (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Cascon2011_5_rules+owl

  • 2. Production rules and the RETE algorithm Skip
  • 3. What are Business Rules? • “Business Rules” is an ambiguous term – Business Rules are a kind of requirement or a definition of business behavior – Business Rules are a declarative approach to system behavior • Source (Business) Rules – Definitions of business behavior – Part of the CIM (computer independent model) • Production (Business) Rules – Definitions of system behavior – Part of the PIM (platform independent model)
  • 4. Production rules • Condition-action rules – If <condition> then do <actions> • Behaviour – Operational semantics • Mostly RETE-based • Intrinsically non-monotonic – 90+ % of the BRMS market • As opposed to logical rules – If <condition> then <condition> • Axiom, definition – Model theoretic semantics • Usually monotonic – Computational logics and logic programming • E.g. OWL2 and Prolog
  • 5. Examples A customer who has purchased for over $1000 in the past three months, reaches status: gold Forall ?c such that ?c # Customer If Exists ?v1 ?v2 ?v3 (And (QuarterMonthlyPurchase(?c ?v1 ?v2 ?v3) func:numeric-greater-than(func:numeric-add(?v1 ?v2 ?v3) 1000) Then Modify(?c[status -> "Gold"  ]) If customer cart contains CD-player and no CD, then advertise CDs on sidebar, based on customer’s musical preferences Forall ?c such that ?c # Customer Forall ?s ?iList such that And(?s # ShoppingCart ?c[shoppingCart -> ?s] ?s[items -> ?iList]) If And (Exists ?cd-p (And ?cd-p # CD-Player pred:list-contains(?cd-p ?iList)) Not (Exists ?cd (And ?cd # CD pred:list-contains(?cd ?iList)))) Then Do ((?pref ?c[preferences ->?pref])(?pref-music ?pref[musical -> ?pref-music)) Execute(act:print(my:prepareAdvertisement(?pref-music)))) The brother of a parent is an uncle Uncle(?x, ?z) :- Brother(?x, ?z) and Parent(?z, ?y) The spouse of one’s spouse is oneself ?x = ?z :- ?x [spouse -> ?y] and ?y [spouse -> ?z] then
  • 6. Production rule engine cycle 1. Match and instantiate – Match rule conditions to facts/objects in the working memory – Instantiate rules whose conditions are satisfied 2. Select – Apply conflict resolution strategy to select one instantiated rule for execution 3. Execute – Execute actions instantiated from selected rule and update working memory – Check ending condition and loop back to step 1 is not satisfied
  • 7. The RETE Algorithme • Efficient many patterns-many objects matching – Charles Forgy 1982 • Rule conditions are compiled in a network (latin: « rete ») of atomic patterns and joins – Tokens corresponding to every objects/facts in the working memory are sent through the network and and kept there until the object/fact is retracted ⇒ Each object/fact is tested only once against each pattern
  • 8. The RETE Algorithme Root Class or fact type tests ... ... Discrimination trees ... ... (intr-object/fact tests) Alpha nodes ... ... (single objects/facts) Join nodes (inter-objects/facts tests) Beta nodes (tuples) ... Rule instances (tuples that satisfy a rule’s condition)
  • 9. Example If { A (a1==3; ?x:a2); B (b1==2; ?y:b2; b3==?x); C (c1==?y); } then {do something } Working memory: A( a1=3 a2=10 ) B( b1=2 b2=4 b3=10 ) B( b1=2 b2=7 b3=10 ) C( c1=4 )
  • 10. IBM Websphere ILOG JRules Skip
  • 12. ILOG Rule Languages The vocabulary is the set of terms and phrases attached to the elements of the Business Object Model (BOM). Vocabulary elements appear in the drop-down lists of business rule editors.
  • 13. ILOG BOM contains the classes and methods that A Rule Languages rule artifacts act on. As an object model, the BOM is very similar to a Java object model. It consists of classes grouped into packages. Each class has a set of attributes, methods, and possibly other nested classes.
  • 15. Studio: Modularity and Re-use • Business Object Model is decoupled from Implementation Business Vocabulary 1 Business Vocabulary 2 Business Object Model BOM2XOM 1 BOM2XOM 2 Execution Object Model 1 Execution Object Model 2
  • 22. IRL abstract grammar • action  := binding | insert | update | retract • insert := value • update := value • retract := value (Only minimal kernel presented here: working memory operations)
  • 24. Overview Rich Logical Knowledge Descriptions Descriptions Axioms Class Expressions OWL2 Ontology Property Expressions Axioms Assertions Simple Runtime Model Assertions about Constants Class Constant ::= Individual | Literal Axiom Class Class Expr Expr Individuals may belong to many Classes Class or Properties are Relations by default Property Non Unique Name Assumption (UNA) Axiom Open World Assumption (OWA) Object Literal individual individual Data Property Expr (DataRange) Property Expr Property Axiom Individual Axiom Object Property Property Expr Axiom individual
  • 25. Descriptions Axioms OWL2 Ontology Assertions ClassExpr ::= DataRange ::= Class Name Datatype Name | oneOf(Individual ...) | oneOf(Literal ...) | unionOf(ClassExpr,ClassExpr) | unionOf(DataRange,DataRange) | intersectionOf(ClassExpr,ClassExpr) | intersectionOf(DataRange,DataRange) | complementOf(ClassExpr) | complementOf(DataRange) | allValuesFrom(PropExpr, ClassExpr | restriction(DataRange, | DataRange) ( ConstrainingFacet | someValuesFrom(PropExpr, ClassExpr Literal ) ...) | DataRange) | cardRestriction((<= | >= | =) nonNegInt , PropExpr) ConstrainingFacet ::= | hasValue(PropExpr,Constant) Constraint Name // XSD: minValue,maxValue... PropExpr ::= Property Name | propertyChain(PropExpr ...) | inverseOf(PropExpr)
  • 26. Descriptions Axioms OWL2 Ontology Assertions ClassAxiom ::= PropertyAxiom ::= equivalentClasses(ClassExpr,ClassExpr) equivalentProperties(PropExpr,PropExpr) | subClassOf(ClassExpr,ClassExpr) | subPropertyOf(PropExpr,PropExpr) | disjointClasses(ClassExpr ...) | domain(PropExpr,ClassExpr) | disjointUnion(ClassExpr,ClassExpr ...) | range(PropExpr, ClassExpr | hasKey(ClassExpr,PropExpr ...) | DataRange) | reflexive(PropExpr) | irreflexive(PropExpr) | symmetric(PropExpr) | asymmetric(PropExpr) | transitive(PropExpr) | functional(PropExpr) | inverseFunctional(PropExpr)
  • 27. Descriptions Axioms OWL2 Ontology Assertions Assertion ::= classAssertion(ClassExpr,Individual) | positivePropertyAssertion(PropExpr,Individual,Constant) | negativePropertyAssertion(PropExpr,Individual,Constant) | sameIndividual(Individual ...) | differentIndividuals(Individual,Individual ...)
  • 28. A small ontology of the Simpsons // Descriptions and Axioms: // Assertions: class Person; Girl(Maggie); class Girl << Person; Girl(Lisa); class Boy << Person; class Girl <> Boy; Boy(Bart); class Parent == some(child,>=1); Boy(Homer); class OneChildParent == some(child,=1); Boy(MrBurns); property child { Boy(Apu); domain Person; Parent(Apu); range Person; }; child(Marge,Maggie); property wife { child(Marge,Lisa); domain Boy; child(Marge,Bart); range Girl; wife(Homer,Marge); }; property cash { cash(Homer,12); functional; cash(MrBurns,3500000000); domain Person; range integer ! (>= 0); };
  • 29. Axioms Derived Knowledge is built by recursive application of Axioms on direct and derived Knowledge Example The direct assertions do not initially say much about Marge wife(Homer,Marge) property wife { range Girl; => }; Girl(Marge)
  • 30. Open World Assumption Existence of Individuals is inferred according to the constraints accumulated along the reasoning path Example The direct assertions do not initially say much about Apu's children Parent(Apu) class Parent == some(child,>=1); <=> (some(child,>=1))(Apu) => child(Apu,new1) // there exists at least // one child even if // not directly mentioned
  • 31. Non-unique name assumption Individuals with different identifiers are not different by default Example Bart fills an administrative form and asserts that Marge has only one child OneChildParent(Marge) class OneChildParent == some(child,=1); <=> (some(child,=1))(Marge) child(Marge,Maggie); child(Marge,Lisa); => child(Marge,Bart); sameIndividual(Maggie,Lisa,Bart)
  • 32. Inconsistency It is easy to introduce inconsistencies OWL2 Reasoning is complex OWL2 Ontologies contain many redundancies But it is impossible to reason on an inconsistent Ontology Inconsistencies must be Statically Detected or Automatically Fixed Example After a few drinks at Moe's, Homer and MrBurns get married wife(Homer,MrBurns) property wife { range Girl; => }; Girl(MrBurns) Boy(MrBurns) => (Girl && Boy)(MrBurns) Boy <> Girl => Nothing(MrBurns)
  • 33. Limitations Only predicates, arity <= 2 are supported BoyProfile(b,10,“Bart”,Sk8) (Boy && has(age,10) && has(name,“Bart”) && has(vehicle,Sk8))(b) Restriction values can only be constants, not variables some(child,<= ?x) ! Boy Error some(cash) ! integer!(>= ?y) Error That's why Rules with more powerful conditions have to be added to Ontologies
  • 34. Coupling production rules and OWL2 ontologies Problems and approaches
  • 35. Production rules VS OWL2 • Objects VS assertions about objects – Static typing VS dynamic classification – Unique Name Assumption VS not UNA • Explicit facts VS axioms – Axioms may make it difficult to detect inconsistencies • Closed VS Open World Assumption • Variables VS constants only • Update VS query only – Updating may introduce inconsistencies ⇒ Need Inconsistency Fixing Strategy – Detect and fix inconsistent Updates at compile time – Automatically fix inconsistent Updates at runtime
  • 36. Coupling Strategies Weak Coupling Tight Coupling OWL2 Ontology OWL2 Reasoner OWL2 Ontology Query / Answer Engine Check Rule Engine Rules Rules 36
  • 37. Assumptions • The OWL2 Ontology is initially consistent • The Production Rules do not modify the Descriptions of the OWL2 Ontology (the T- Box) • The Production Rules – match the direct and the derived assertions of the OWL2 Ontology – update the direct assertions of the OWL2 Ontology (the A-Box is the Working Memory)
  • 38. Coupling JRules and an OWL2 reasoner Weak coupling
  • 39. Compile time OM-like Class OM-like Property Complex Axioms Axioms Axioms OWL2 Named Named Ontology Complex Descriptions Classes Properties Object OM Classes OM Attributes Model isa get add new get / set OO RETE Class Compiled Production Compiled Nodes Conditions Rule Nodes Actions Network Legacy Conditions Production Actions OO Rules Rules
  • 40. Run time Read OWL2 OWL2 Reasoner Axioms Direct Assertions isa query get query Write add class add / remove assertion property assertion Start Here Object OM Classes OM Attributes Model isa get get / set add new OO Class Compiled Production Compiled RETE Nodes Conditions Rule Nodes Actions Engine Conflict Resolution
  • 41. Authoring : OWL 2 BOM Mapping Classes Property Caracteristics OWL BOM OWL BOM P(A,B) Class A{ B P; } P' subPropertyOf P Class A{ B P; Class A Class A B P' ; P'' equivalentProperty P B P''; } B subClassOf A Class B extends A P transitiveProperty Class A{ A P; C = intersectionOf (A,B) Class C extends A,B P' symetricProperty A P';} A extends C P' inverseOf P Class B{ C = unionOf (A,B) A P'; } B extends C P functionalProperty Class A{ B P; } P inverseFunctionalProperty
  • 42. Assessment – OWL plug-in Ontology reasoning Capabilities – Depend on the plugged OWL2 Reasoner • Rule Language – + Compliant with legacy authoring and maintenance Tools – - No complex OWL2 Class Expressions – - No complex OWL2 Property Expressions – - No update of Individual Classes – - No update of Individual identity Assertions • Static Update Verification – Not implemented – Consistency Checking can be delegated to OWL2 Reasoner • Static Type Checking in Actions – Can be broken, updating Attributes can change the Classes of Individuals • Inconsistency Fixing Strategy – Experiments using OWL2 Reasoner to identify inconsistent Assertions going on
  • 43. Taking full advantage of RETE-based production rules and OWL2 Tight coupling
  • 44. Compile time OWL2 Property and Class Property and Class Expressions Axioms Ontology Compiled Compiled Compiled Predicates Predicate Axioms Expression New head Compiled Rules + Tight add / remove Ontology Assertions Actions Combination Language action Compiled Compiled Logical body Compiled condition Production Rules Conditions Rules Rules Logical Production Rules Rules
  • 45. Run time direct derived OWL2 Direct classic Assertions Start forward Here Export Import New Toplevel Assertions Compiled Compiled Compiled Predicates Predicate Axioms Query the Expressions Extension head add / remove Compiled Tight Actions Assertions Engine action Conflict Resolution body Compiled Compiled condition Compiled Logical Conditions Production Rules Rules
  • 46. Assessment – Tight coupling Rule Language + OWL2 Constructs are first class citizens of the Language + Compatible with OWL2 ad RIF-PRD Standards - No dedicated authoring Tool yet Static Update Verification + Verified Assertion updates will never introduce an inconsistency that cannot be automatically fixed at runtime Static Type Checking in Actions + Cannot be broken Only Thing (the Top Class) is allowed to type Action Variables Runtime Inconsistency Fixing Strategy The most recent Assertion is the right one + Now both direct and derived Assertions are fixed However Tight is an extension of the Production Rule Technology, not a Logic Engine - Only a subset of OWL2 is supported (+/- OWL2RL, CWA,UNA) Compile time Error Messages are available to warn about Limitations
  • 48. Assessment – weak VS tight coupling • OWL2 is not an Object Model – It is a Logic, Knowledge is available as Facts, not as complex Terms (Objects) • The Weakly Coupled Approaches are limited – Not incremental Query interface of the OWL2 Reasoner – Performance of the OWL2 Reasoner • The Tightly Coupled Approach is promising but getting Production Rules and OWL2 Ontology to work together requires tradeoffs – By extending a Production Rule Technology, we add Update but only with a subset of OWL2 Logic – Extending a (Constraint) Logic Programming Technology would give us the full power OWL2 Logic but Update is unlikely