annotate service/mqtt_to_rdf/stmt_chunk_test.py @ 1655:15e195fb24bb

new stmt_chunk_test
author drewp@bigasterisk.com
date Sun, 19 Sep 2021 13:21:33 -0700
parents
children 15e84c71beee
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1655
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
1 import unittest
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
2
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
3 from rdflib.term import Variable
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
4
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
5 from inference_test import N3
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
6 from rdflib import ConjunctiveGraph, Graph, Literal, Namespace, Variable
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
7
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
8 from stmt_chunk import ChunkedGraph, Chunk, applyChunky
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
9
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
10 ROOM = Namespace('http://projects.bigasterisk.com/room/')
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
11
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
12 from lhs_evaluation import functionsFor
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
13 from candidate_binding import CandidateBinding
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
14
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
15
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
16 class TestChunkedGraph(unittest.TestCase):
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
17
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
18 def testMakesSimpleChunks(self):
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
19 cg = ChunkedGraph(N3(':a :b :c .'), functionsFor)
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
20
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
21 self.assertSetEqual(cg.chunksUsedByFuncs, set())
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
22 self.assertSetEqual(cg.patternChunks, set())
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
23 self.assertSetEqual(cg.staticChunks, set([Chunk((ROOM.a, ROOM.b, ROOM.c), subjList=None, objList=None)]))
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
24
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
25 def testSeparatesPatternChunks(self):
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
26 cg = ChunkedGraph(N3('?x :b :c . :a ?y :c . :a :b ?z .'), functionsFor)
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
27 self.assertEqual(len(cg.patternChunks), 3)
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
28
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
29 def testBoolMeansEmpty(self):
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
30 self.assertTrue(ChunkedGraph(N3(":a :b :c ."), functionsFor))
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
31 self.assertFalse(ChunkedGraph(N3(""), functionsFor))
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
32
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
33 def testContains(self):
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
34 # If I write with assertIn, there's a seemingly bogus pytype error.
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
35 self.assert_(Chunk((ROOM.a, ROOM.b, ROOM.c)) in ChunkedGraph(N3(":a :b :c ."), functionsFor))
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
36 self.assert_(Chunk((ROOM.a, ROOM.b, ROOM.zzz)) not in ChunkedGraph(N3(":a :b :c ."), functionsFor))
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
37
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
38 def testNoPredicatesAppear(self):
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
39 cg = ChunkedGraph(N3(":a :b :c ."), functionsFor)
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
40 self.assertTrue(cg.noPredicatesAppear([ROOM.d, ROOM.e]))
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
41 self.assertFalse(cg.noPredicatesAppear([ROOM.b, ROOM.d]))
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
42
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
43
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
44 class TestApplyChunky(unittest.TestCase):
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
45 binding = CandidateBinding({Variable('x'): ROOM.xval})
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
46
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
47 def testBoundStatementsOnly(self):
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
48 ret = list(
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
49 applyChunky(self.binding,
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
50 g=[Chunk((ROOM.a, ROOM.b, Variable('x'))),
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
51 Chunk((ROOM.ay, ROOM.by, Variable('y')))],
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
52 returnBoundStatementsOnly=True))
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
53 self.assertEqual(ret, [Chunk((ROOM.a, ROOM.b, ROOM.xval))])
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
54
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
55 def testAllStatements(self):
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
56 ret = list(
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
57 applyChunky(self.binding,
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
58 g=[Chunk((ROOM.a, ROOM.b, Variable('x'))),
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
59 Chunk((ROOM.ay, ROOM.by, Variable('y')))],
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
60 returnBoundStatementsOnly=False))
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
61 self.assertCountEqual(
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
62 ret,
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
63 [
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
64 Chunk((ROOM.a, ROOM.b, ROOM.xval)), #
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
65 Chunk((ROOM.ay, ROOM.by, Variable('y')))
15e195fb24bb new stmt_chunk_test
drewp@bigasterisk.com
parents:
diff changeset
66 ])