TL;DR

  • A Rule is a set of conditions triggering a set of actions (if <conditions> then <action>).
  • A domain expert models the domain knowledge (buisness rules) by defining the set of all the rules.
  • Rules are usually defined using a domain-specific lanaguage also known as DSL.
  • Using these sets of rules, we can build an expert system that can make decisions on behalf of domain experts.
  • A rules engine is in the core of an expert system.
    • Data constantly come through the system in streams or in batches.
    • The rules engine decides when to evaluate which rules (evaluation can happen on-demand or in cycles).
    • The order in which rules are defined does not matter. The rules engine decides which rules should be evaluated in what order.
  • Chaining happens when the action part of one rule changes the state of the system and the conditions of other rules which can lead to triggering other actions as well.
    • Chaining makes it very hard to reason about and debug the system.
  • An inference engine applies logical rules to the knowledge base to infer new information from known facts.
    • Inference engines usually proceed in two modes: forward chaining and backward chaining.
  • There are some challenges with rule-based systems and expert systems:
    • The sets of rules need to be defined and maintained by domain experts.
    • An expert system is just as capable and precise as the rules are.
    • For performance reasons, there are limitations applied to rule definitions (no. of rules, no. of conditions, cardinality of dimensions, etc.).

Read More