def testAncestor(self): v, a = self.v, self.a self.loadFamilyTree1() ancestor = RuleBasedPredicate('ancestor', (FamilyMember, FamilyMember)) self.kb.add(ancestor) positive_tuples = [[a.jane, a.ann], [a.tim, a.tom], [a.tipsy, a.billy], [a.jannet, a.billy], [a.joan, a.jane], [a.rebecca, a.ann], [a.frank, a.jane], [a.jan, a.ann], [a.jill, a.ann]] negative_tuples = [[a.tim, a.ann], [a.ann, a.billy], [a.jane, a.frank], [a.tom, a.debrah], [a.tim, a.tammy], [a.tom, a.george], [a.jane, a.joan]] foil(ancestor, positive_tuples, negative_tuples, self.kb, ordering=None) self.assertFollows(ancestor(a.bob, a.jane)) self.assertNotFollows(ancestor(a.bob, a.ian)) self.kb.remove(ancestor) self.print_rules(ancestor)
def testMemberPredicate(self): print "" v, a = VariableFactory(), AtomFactory() kb = KnowledgeBase() kb.add(components) member = RuleBasedPredicate("member", (Term, dot)) kb.add(member) positive_tuples = ((1, plist([1, 2, 3, 4])), (4, plist([1, 2, 3, 4])), (5, plist([5, 4, 3, 2])), (2, plist([1, 2, 3, 4])), (3, plist([1, 2, 3, 4]))) negative_tuples = ((1, plist([2, 3, 4, 5])), (2, plist([1, 3, 4, 5])), (3, plist([1, 2, 4, 5])), (4, plist([1, 2, 3, 5])), (5, plist([1, 2, 3, 4])), (plist([1, 2]), plist([1, 2, 3, 4]))) foil(member, positive_tuples, negative_tuples, kb, ordering=None) self.assertFollows(member(11, plist([2, 3, 5, 7, 11, 13]))) self.assertNotFollows(member(12, plist([2, 3, 5, 7, 11, 13]))) self.print_rules(member)
def testGrandparent(self): import sys v, a = self.v, self.a self.loadFamilyTree1() grandfather = RuleBasedPredicate('grandfather', (FamilyMember, FamilyMember)) grandfather.arity = 2 self.kb.add(grandfather) positive_tuples = [[a.frank, a.sean], [a.tom, a.billy], [a.george, a.jan], [a.bob, a.jane], [a.sean, a.ann], [a.frank, a.sean]] negative_tuples = [[a.jannet, a.tim], [a.jane, a.alan], [a.rebecca, a.sean], [a.jan, a.ann]] foil(grandfather, positive_tuples, negative_tuples, self.kb, ordering=None) self.assertFollows(grandfather(a.george, a.tom)) self.assertFollows(grandfather(a.alan, a.jane)) self.assertNotFollows(grandfather(a.tipsy, a.billy)) self.assertNotFollows(grandfather(a.bob, a.ian)) self.kb.remove(grandfather) self.print_rules(grandfather)