join from the right

Ryan Minor
2010-12-23
2012-11-23
  • Ryan Minor
    Ryan Minor
    2010-12-23

    I am wondering if someone can explain briefly or point to a source that discusses what is a "join from the right"?

     
  • Gary Riley
    Gary Riley
    2011-01-02

    Joins from the right allow more complex topologies to be supported by the join network, specifically groups of nested patterns within a not conditional element:

    (defrule example
    (a ?x)
    (not (b ?x)
            (not (and (c ?x)
                          (d ?x))))
    =>)

    In early implementations of the rete algorithm, the right input to a join was an alpha memory (a pattern matching a single fact). Joins from the right allow the right input to be a beta memory (a group of patterns). There's an article on of the rete algorithm on wikipedia: http://en.wikipedia.org/wiki/Rete_algorithm. This paper by Doorenbos, http://reports-archive.adm.cs.cmu.edu/anon/1995/CMU-CS-95-113.pdf, also describes a method for handling what it refers to as conjunctive negations which is similar to the method used by CLIPS in versions prior to 6.3