예제 #1
0
파일: rete.py 프로젝트: pcoder/air-reasoner
 def removeItem(self, item):
     try:
         self.items.remove(item)
     except KeyError:
         raise ValueError(item.flatten(), [x.flatten() for x in self.items])
     if not self.items:
         self.empty = True
         for c in self.children:
             if isinstance(c, JoinNode):
                 dequeRemove(c.alphaNode.successors, c)
예제 #2
0
 def rightActivate(self, triple_holder):
     if self.alphaNode.empty:
         self.relinkBeta()
         if self.parent.empty:
             dequeRemove(self.alphaNode.successors, self)
     triple = triple_holder.triple
     env = triple_holder.env
     for token in self.parent.items:
         newBinding = self.test(token, env)
         if newBinding is not None:
             ##                if token in self.falseMatches:
             ##                    falseTriple = self.falseMatches[token]
             ##                    del self.falseMatches[token]
             ##                    if False and self.retractTriple is not None:
             ##                        self.retractTriple(falseTriple)
             for c in self.children:
                 c.leftActivate(token, triple, newBinding)
예제 #3
0
파일: rete.py 프로젝트: pcoder/air-reasoner
    def rightActivate(self, triple_holder):
        if self.reachedGoal():
            # We reached a goal, so this rule should be turned off.
#            print "ALREADY REACHED A GOAL!"
            return

        if self.alphaNode.empty:
            self.relinkBeta()
            if self.parent.empty:
                dequeRemove(self.alphaNode.successors, self)
        triple = triple_holder.triple
        env = triple_holder.env
        for token in self.parent.items:
            newBinding = self.test(token, env)
            if newBinding is not None:
##                if token in self.falseMatches:
##                    falseTriple = self.falseMatches[token]
##                    del self.falseMatches[token]
##                    if False and self.retractTriple is not None:
##                        self.retractTriple(falseTriple)
                for c in self.children:
                    c.leftActivate(token, triple, newBinding)