Exemple #1
0
 def setUp(self):
     self.q = parse_queries_from_file("unit_tests_files/queries.txt")[0]
     self.x = structures.AtomValue("X", True)
     self.y = structures.AtomValue("Y", True)
     self.z = structures.AtomValue("Z", True)
     self.r = structures.Atom("R", [self.x, self.y])
     self.s = structures.Atom("S", [self.y, self.z])
Exemple #2
0
 def setUp(self):
     self.q = parse_queries_from_file("unit_tests_files/queries.txt")[7]
     self.other = parse_queries_from_file("unit_tests_files/queries.txt")[1]
     self.z = structures.AtomValue("Z", True)
     self.w = structures.AtomValue("W", True)
     self.fd = structures.FunctionalDependency([self.z], self.w)
     self.t1 = structures.Atom("T_1", [self.z, self.w])
     self.t2 = structures.Atom("T_2", [self.z, self.w])
Exemple #3
0
 def test_is_well_saturated(self):
     bad_fd_set = algorithms.find_bad_internal_fd(self.q)
     self.q, new_rules = saturate(self.q, bad_fd_set)
     new_atom = structures.Atom(
         "N_0",
         [structures.AtomValue("Z", True),
          structures.AtomValue("W", True)])
     self.assertTrue(new_atom in self.q.get_consistent_atoms())
     self.assertTrue(
         structures.DatalogProgram(new_rules) == structures.DatalogProgram(
             self.datalog.rules[:2]))
Exemple #4
0
 def test_simple_case(self):
     x = structures.AtomValue("X", True)
     y = structures.AtomValue("Y", True)
     z = structures.AtomValue("Z", True)
     r = structures.Atom("R", [x, y])
     s = structures.Atom("S", [y, z])
     fd_set_r = structures.FunctionalDependencySet()
     fd_set_s = structures.FunctionalDependencySet()
     fd_set_r.add(structures.FunctionalDependency([x], y))
     fd_set_s.add(structures.FunctionalDependency([y], z))
     q = structures.ConjunctiveQuery()
     q = q.add_atom(r, fd_set_r, [True, False], False)
     q = q.add_atom(s, fd_set_s, [True, False], False)
     self.assertTrue(q == self.queries[0])
Exemple #5
0
 def test_read_is_ok(self):
     x = structures.AtomValue("X", True)
     y = structures.AtomValue("Y", True)
     z = structures.AtomValue("Z", True)
     r = structures.Atom("R", [x, y])
     s = structures.Atom("S", [y, z])
     r_1 = structures.Atom("BadBlock_0", [x])
     r_2 = structures.Atom("RewriteAtom_1", [x, y])
     rule1 = structures.DatalogQuery(structures.Atom("CERTAINTY", []))
     rule1.add_atom(r)
     rule1.add_atom(r_1, True)
     rule2 = structures.DatalogQuery(r_1)
     rule2.add_atom(r)
     rule2.add_atom(r_2, True)
     rule3 = structures.DatalogQuery(r_2)
     rule3.add_atom(r)
     rule3.add_atom(s)
     true_program = structures.DatalogProgram([rule1, rule2, rule3])
     self.assertTrue(self.program == true_program)
Exemple #6
0
 def test_free_vars(self):
     q = self.queries[3]
     x = structures.AtomValue("X", True)
     self.assertTrue(q.free_vars == [x])