aboutsummaryrefslogtreecommitdiffstats
path: root/test/graph/test_result.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/graph/test_result.py')
-rw-r--r--test/graph/test_result.py392
1 files changed, 392 insertions, 0 deletions
diff --git a/test/graph/test_result.py b/test/graph/test_result.py
new file mode 100644
index 0000000..89b0da1
--- /dev/null
+++ b/test/graph/test_result.py
@@ -0,0 +1,392 @@
+"""
+
+Part of the bsfs test suite.
+A copy of the license is provided with the project.
+Author: Matthias Baumgartner, 2022
+"""
+# imports
+import unittest
+
+# bsie imports
+from bsfs import schema as bsc
+from bsfs.namespace import ns
+from bsfs.utils import URI
+
+# objects to test
+from bsfs.graph.result import to_list_view, to_dict_view
+
+
+## code ##
+
+class TestListView(unittest.TestCase):
+ def setUp(self):
+ self.triples_111 = [('ent#1234', ns.bse.iso, 123)]
+ self.triples_11U = [('ent#1234', ns.bse.tag, 'tag#1234'),
+ ('ent#1234', ns.bse.tag, 'tag#5678')]
+ self.triples_1M1 = [('ent#1234', ns.bse.iso, 123),
+ ('ent#1234', ns.bse.t_created, '2010-01-02')]
+ self.triples_1MU = [('ent#1234', ns.bse.iso, 123),
+ ('ent#1234', ns.bse.tag, 'tag#1234'),
+ ('ent#1234', ns.bse.tag, 'tag#5678')]
+ self.triples_N11 = [('ent#1234', ns.bse.iso, 123),
+ ('ent#4321', ns.bse.iso, 321)]
+ self.triples_N1U = [('ent#1234', ns.bse.tag, 'tag#1234'),
+ ('ent#1234', ns.bse.tag, 'tag#5678'),
+ ('ent#4321', ns.bse.tag, 'tag#4321')]
+ self.triples_NM1 = [('ent#1234', ns.bse.iso, 123),
+ ('ent#1234', ns.bse.t_created, '2010-01-02'),
+ ('ent#4321', ns.bse.iso, 321),
+ ('ent#4321', ns.bse.t_created, '2022-02-22')]
+ self.triples_NMU = [('ent#1234', ns.bse.iso, 123),
+ ('ent#1234', ns.bse.tag, 'tag#1234'),
+ ('ent#1234', ns.bse.tag, 'tag#5678'),
+ ('ent#4321', ns.bse.iso, 321),
+ ('ent#4321', ns.bse.t_created, '2022-02-22')]
+
+ def test_copy(self):
+ # iterator yields tuples
+ self.assertIsInstance(list(to_list_view([('subject', 'predicate', 'object')], node=False, path=False, value=False))[0], tuple)
+ # components are not changed
+ class Foo(): pass
+ foo = Foo()
+ self.assertListEqual(list(to_list_view([('subject', 'predicate', 'object')], node=False, path=False, value=False)),
+ [('subject', 'predicate', 'object')])
+ self.assertListEqual(list(to_list_view([(foo, 'predicate', 'object')], node=False, path=False, value=False)),
+ [(foo, 'predicate', 'object')])
+ self.assertListEqual(list(to_list_view([('subject', foo, 'object')], node=False, path=False, value=False)),
+ [('subject', foo, 'object')])
+ self.assertListEqual(list(to_list_view([('subject', 'predicate', foo)], node=False, path=False, value=False)),
+ [('subject', 'predicate', foo)])
+
+ def test_agg_none(self):
+ self.assertListEqual(list(to_list_view(self.triples_111, node=False, path=False, value=False)), self.triples_111)
+ self.assertListEqual(list(to_list_view(self.triples_11U, node=False, path=False, value=False)), self.triples_11U)
+ self.assertListEqual(list(to_list_view(self.triples_1M1, node=False, path=False, value=False)), self.triples_1M1)
+ self.assertListEqual(list(to_list_view(self.triples_1MU, node=False, path=False, value=False)), self.triples_1MU)
+ self.assertListEqual(list(to_list_view(self.triples_N11, node=False, path=False, value=False)), self.triples_N11)
+ self.assertListEqual(list(to_list_view(self.triples_N1U, node=False, path=False, value=False)), self.triples_N1U)
+ self.assertListEqual(list(to_list_view(self.triples_NM1, node=False, path=False, value=False)), self.triples_NM1)
+ self.assertListEqual(list(to_list_view(self.triples_NMU, node=False, path=False, value=False)), self.triples_NMU)
+
+ def test_agg_node(self):
+ self.assertListEqual(list(to_list_view(self.triples_111, node=True, path=False, value=False)),
+ [(ns.bse.iso, 123)])
+ self.assertListEqual(list(to_list_view(self.triples_11U, node=True, path=False, value=False)),
+ [(ns.bse.tag, 'tag#1234'), (ns.bse.tag, 'tag#5678')])
+ self.assertListEqual(list(to_list_view(self.triples_1M1, node=True, path=False, value=False)),
+ [(ns.bse.iso, 123), (ns.bse.t_created, '2010-01-02')])
+ self.assertListEqual(list(to_list_view(self.triples_1MU, node=True, path=False, value=False)),
+ [(ns.bse.iso, 123), (ns.bse.tag, 'tag#1234'), (ns.bse.tag, 'tag#5678')])
+ self.assertListEqual(list(to_list_view(self.triples_N11, node=True, path=False, value=False)),
+ [(ns.bse.iso, 123), (ns.bse.iso, 321)])
+ self.assertListEqual(list(to_list_view(self.triples_N1U, node=True, path=False, value=False)),
+ [(ns.bse.tag, 'tag#1234'), (ns.bse.tag, 'tag#5678'), (ns.bse.tag, 'tag#4321')])
+ self.assertListEqual(list(to_list_view(self.triples_NM1, node=True, path=False, value=False)),
+ [(ns.bse.iso, 123), (ns.bse.t_created, '2010-01-02'), (ns.bse.iso, 321), (ns.bse.t_created, '2022-02-22')])
+ self.assertListEqual(list(to_list_view(self.triples_NMU, node=True, path=False, value=False)),
+ [(ns.bse.iso, 123), (ns.bse.tag, 'tag#1234'), (ns.bse.tag, 'tag#5678'), (ns.bse.iso, 321), (ns.bse.t_created, '2022-02-22')])
+
+ def test_agg_path(self):
+ self.assertListEqual(list(to_list_view(self.triples_111, node=False, path=True, value=False)),
+ [('ent#1234', 123)])
+ self.assertListEqual(list(to_list_view(self.triples_11U, node=False, path=True, value=False)),
+ [('ent#1234', 'tag#1234'), ('ent#1234', 'tag#5678')])
+ self.assertListEqual(list(to_list_view(self.triples_1M1, node=False, path=True, value=False)),
+ [('ent#1234', 123), ('ent#1234', '2010-01-02')])
+ self.assertListEqual(list(to_list_view(self.triples_1MU, node=False, path=True, value=False)),
+ [('ent#1234', 123), ('ent#1234', 'tag#1234'), ('ent#1234', 'tag#5678')])
+ self.assertListEqual(list(to_list_view(self.triples_N11, node=False, path=True, value=False)),
+ [('ent#1234', 123), ('ent#4321', 321)])
+ self.assertListEqual(list(to_list_view(self.triples_N1U, node=False, path=True, value=False)),
+ [('ent#1234', 'tag#1234'), ('ent#1234', 'tag#5678'), ('ent#4321', 'tag#4321')])
+ self.assertListEqual(list(to_list_view(self.triples_NM1, node=False, path=True, value=False)),
+ [('ent#1234', 123), ('ent#1234', '2010-01-02'), ('ent#4321', 321), ('ent#4321', '2022-02-22')])
+ self.assertListEqual(list(to_list_view(self.triples_NMU, node=False, path=True, value=False)),
+ [('ent#1234', 123), ('ent#1234', 'tag#1234'), ('ent#1234', 'tag#5678'), ('ent#4321', 321), ('ent#4321', '2022-02-22')])
+
+ def test_agg_node_path(self):
+ self.assertListEqual(list(to_list_view(self.triples_111, node=True, path=True, value=False)),
+ [123])
+ self.assertListEqual(list(to_list_view(self.triples_11U, node=True, path=True, value=False)),
+ ['tag#1234', 'tag#5678'])
+ self.assertListEqual(list(to_list_view(self.triples_1M1, node=True, path=True, value=False)),
+ [123, '2010-01-02'])
+ self.assertListEqual(list(to_list_view(self.triples_1MU, node=True, path=True, value=False)),
+ [123, 'tag#1234', 'tag#5678'])
+ self.assertListEqual(list(to_list_view(self.triples_N11, node=True, path=True, value=False)),
+ [123, 321])
+ self.assertListEqual(list(to_list_view(self.triples_N1U, node=True, path=True, value=False)),
+ ['tag#1234', 'tag#5678', 'tag#4321'])
+ self.assertListEqual(list(to_list_view(self.triples_NM1, node=True, path=True, value=False)),
+ [123, '2010-01-02', 321, '2022-02-22'])
+ self.assertListEqual(list(to_list_view(self.triples_NMU, node=True, path=True, value=False)),
+ [123, 'tag#1234', 'tag#5678', 321, '2022-02-22'])
+
+ def test_agg_value(self):
+ # value flag has no effect
+ self.assertListEqual(list(to_list_view(self.triples_111, node=False, path=False, value=False)), self.triples_111)
+ self.assertListEqual(list(to_list_view(self.triples_11U, node=False, path=False, value=False)), self.triples_11U)
+ self.assertListEqual(list(to_list_view(self.triples_1M1, node=False, path=False, value=False)), self.triples_1M1)
+ self.assertListEqual(list(to_list_view(self.triples_1MU, node=False, path=False, value=False)), self.triples_1MU)
+ self.assertListEqual(list(to_list_view(self.triples_N11, node=False, path=False, value=False)), self.triples_N11)
+ self.assertListEqual(list(to_list_view(self.triples_N1U, node=False, path=False, value=False)), self.triples_N1U)
+ self.assertListEqual(list(to_list_view(self.triples_NM1, node=False, path=False, value=False)), self.triples_NM1)
+ self.assertListEqual(list(to_list_view(self.triples_NMU, node=False, path=False, value=False)), self.triples_NMU)
+
+ def test_agg_node_value(self):
+ # value flag has no effect -> same test as test_agg_node
+ self.assertListEqual(list(to_list_view(self.triples_111, node=True, path=False, value=True)),
+ [(ns.bse.iso, 123)])
+ self.assertListEqual(list(to_list_view(self.triples_11U, node=True, path=False, value=True)),
+ [(ns.bse.tag, 'tag#1234'), (ns.bse.tag, 'tag#5678')])
+ self.assertListEqual(list(to_list_view(self.triples_1M1, node=True, path=False, value=True)),
+ [(ns.bse.iso, 123), (ns.bse.t_created, '2010-01-02')])
+ self.assertListEqual(list(to_list_view(self.triples_1MU, node=True, path=False, value=True)),
+ [(ns.bse.iso, 123), (ns.bse.tag, 'tag#1234'), (ns.bse.tag, 'tag#5678')])
+ self.assertListEqual(list(to_list_view(self.triples_N11, node=True, path=False, value=True)),
+ [(ns.bse.iso, 123), (ns.bse.iso, 321)])
+ self.assertListEqual(list(to_list_view(self.triples_N1U, node=True, path=False, value=True)),
+ [(ns.bse.tag, 'tag#1234'), (ns.bse.tag, 'tag#5678'), (ns.bse.tag, 'tag#4321')])
+ self.assertListEqual(list(to_list_view(self.triples_NM1, node=True, path=False, value=True)),
+ [(ns.bse.iso, 123), (ns.bse.t_created, '2010-01-02'), (ns.bse.iso, 321), (ns.bse.t_created, '2022-02-22')])
+ self.assertListEqual(list(to_list_view(self.triples_NMU, node=True, path=False, value=True)),
+ [(ns.bse.iso, 123), (ns.bse.tag, 'tag#1234'), (ns.bse.tag, 'tag#5678'), (ns.bse.iso, 321), (ns.bse.t_created, '2022-02-22')])
+
+ def test_agg_path_value(self):
+ # value flag has no effect -> same test as test_agg_path
+ self.assertListEqual(list(to_list_view(self.triples_111, node=False, path=True, value=True)),
+ [('ent#1234', 123)])
+ self.assertListEqual(list(to_list_view(self.triples_11U, node=False, path=True, value=True)),
+ [('ent#1234', 'tag#1234'), ('ent#1234', 'tag#5678')])
+ self.assertListEqual(list(to_list_view(self.triples_1M1, node=False, path=True, value=True)),
+ [('ent#1234', 123), ('ent#1234', '2010-01-02')])
+ self.assertListEqual(list(to_list_view(self.triples_1MU, node=False, path=True, value=True)),
+ [('ent#1234', 123), ('ent#1234', 'tag#1234'), ('ent#1234', 'tag#5678')])
+ self.assertListEqual(list(to_list_view(self.triples_N11, node=False, path=True, value=True)),
+ [('ent#1234', 123), ('ent#4321', 321)])
+ self.assertListEqual(list(to_list_view(self.triples_N1U, node=False, path=True, value=True)),
+ [('ent#1234', 'tag#1234'), ('ent#1234', 'tag#5678'), ('ent#4321', 'tag#4321')])
+ self.assertListEqual(list(to_list_view(self.triples_NM1, node=False, path=True, value=True)),
+ [('ent#1234', 123), ('ent#1234', '2010-01-02'), ('ent#4321', 321), ('ent#4321', '2022-02-22')])
+ self.assertListEqual(list(to_list_view(self.triples_NMU, node=False, path=True, value=True)),
+ [('ent#1234', 123), ('ent#1234', 'tag#1234'), ('ent#1234', 'tag#5678'), ('ent#4321', 321), ('ent#4321', '2022-02-22')])
+
+ def test_agg_all(self):
+ # value flag has no effect -> same test as test_agg_node_path
+ self.assertListEqual(list(to_list_view(self.triples_111, node=True, path=True, value=True)),
+ [123])
+ self.assertListEqual(list(to_list_view(self.triples_11U, node=True, path=True, value=True)),
+ ['tag#1234', 'tag#5678'])
+ self.assertListEqual(list(to_list_view(self.triples_1M1, node=True, path=True, value=True)),
+ [123, '2010-01-02'])
+ self.assertListEqual(list(to_list_view(self.triples_1MU, node=True, path=True, value=True)),
+ [123, 'tag#1234', 'tag#5678'])
+ self.assertListEqual(list(to_list_view(self.triples_N11, node=True, path=True, value=True)),
+ [123, 321])
+ self.assertListEqual(list(to_list_view(self.triples_N1U, node=True, path=True, value=True)),
+ ['tag#1234', 'tag#5678', 'tag#4321'])
+ self.assertListEqual(list(to_list_view(self.triples_NM1, node=True, path=True, value=True)),
+ [123, '2010-01-02', 321, '2022-02-22'])
+ self.assertListEqual(list(to_list_view(self.triples_NMU, node=True, path=True, value=True)),
+ [123, 'tag#1234', 'tag#5678', 321, '2022-02-22'])
+
+
+class TestDictView(unittest.TestCase):
+ def setUp(self):
+ self.unique_paths = {ns.bse.iso, ns.bse.t_created}
+ self.triples_111 = [('ent#1234', ns.bse.iso, 123)]
+ self.triples_11U = [('ent#1234', ns.bse.tag, 'tag#1234'),
+ ('ent#1234', ns.bse.tag, 'tag#5678')]
+ self.triples_1M1 = [('ent#1234', ns.bse.iso, 123),
+ ('ent#1234', ns.bse.t_created, '2010-01-02')]
+ self.triples_1MU = [('ent#1234', ns.bse.iso, 123),
+ ('ent#1234', ns.bse.tag, 'tag#1234'),
+ ('ent#1234', ns.bse.tag, 'tag#5678')]
+ self.triples_N11 = [('ent#1234', ns.bse.iso, 123),
+ ('ent#4321', ns.bse.iso, 321)]
+ self.triples_N1U = [('ent#1234', ns.bse.tag, 'tag#1234'),
+ ('ent#1234', ns.bse.tag, 'tag#5678'),
+ ('ent#4321', ns.bse.tag, 'tag#4321')]
+ self.triples_NM1 = [('ent#1234', ns.bse.iso, 123),
+ ('ent#1234', ns.bse.t_created, '2010-01-02'),
+ ('ent#4321', ns.bse.iso, 321),
+ ('ent#4321', ns.bse.t_created, '2022-02-22')]
+ self.triples_NMU = [('ent#1234', ns.bse.iso, 123),
+ ('ent#1234', ns.bse.tag, 'tag#1234'),
+ ('ent#1234', ns.bse.tag, 'tag#5678'),
+ ('ent#4321', ns.bse.iso, 321),
+ ('ent#4321', ns.bse.t_created, '2022-02-22')]
+
+ def test_errounous_call(self):
+ # return set instead of value
+ self.assertSetEqual(to_dict_view(self.triples_111, one_node=False, one_path=True, unique_paths=self.unique_paths, node=True, path=True, value=True),
+ {123})
+ self.assertSetEqual(to_dict_view(self.triples_111, one_node=True, one_path=False, unique_paths=self.unique_paths, node=True, path=True, value=True),
+ {123})
+ # one_node mismatch: return set of values instead of value
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=False, one_path=True, unique_paths=self.unique_paths, node=True, path=False, value=True),
+ {ns.bse.iso: {123}})
+ # one_path mismatch: return set of values instead of value
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=True, one_path=False, unique_paths=self.unique_paths, node=False, path=True, value=True),
+ {'ent#1234': {123}})
+ # unique_paths mismatch: return set of values instead of value
+ self.assertSetEqual(to_dict_view(self.triples_111, one_node=True, one_path=False, unique_paths={}, node=True, path=True, value=True),
+ {123})
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=True, one_path=False, unique_paths={}, node=True, path=False, value=True),
+ {ns.bse.iso: {123}})
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=True, one_path=False, unique_paths={}, node=False, path=True, value=True),
+ {'ent#1234': {123}})
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=True, one_path=False, unique_paths={}, node=False, path=False, value=True),
+ {'ent#1234': {ns.bse.iso: {123}}})
+
+ def test_agg_none(self):
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=True, one_path=True, unique_paths=self.unique_paths, node=False, path=False, value=False),
+ {'ent#1234': {ns.bse.iso: {123}}})
+ self.assertDictEqual(to_dict_view(self.triples_11U, one_node=True, one_path=True, unique_paths=self.unique_paths, node=False, path=False, value=False),
+ {'ent#1234': {ns.bse.tag: {'tag#1234', 'tag#5678'}}})
+ self.assertDictEqual(to_dict_view(self.triples_1M1, one_node=True, one_path=False, unique_paths=self.unique_paths, node=False, path=False, value=False),
+ {'ent#1234': {ns.bse.iso: {123}, ns.bse.t_created: {'2010-01-02'}}})
+ self.assertDictEqual(to_dict_view(self.triples_1MU, one_node=True, one_path=False, unique_paths=self.unique_paths, node=False, path=False, value=False),
+ {'ent#1234': {ns.bse.iso: {123}, ns.bse.tag: {'tag#1234', 'tag#5678'}}})
+ self.assertDictEqual(to_dict_view(self.triples_N11, one_node=False, one_path=True, unique_paths=self.unique_paths, node=False, path=False, value=False),
+ {'ent#1234': {ns.bse.iso: {123}}, 'ent#4321': {ns.bse.iso: {321}}})
+ self.assertDictEqual(to_dict_view(self.triples_N1U, one_node=False, one_path=True, unique_paths=self.unique_paths, node=False, path=False, value=False),
+ {'ent#1234': {ns.bse.tag: {'tag#1234', 'tag#5678'}}, 'ent#4321': {ns.bse.tag: {'tag#4321'}}})
+ self.assertDictEqual(to_dict_view(self.triples_NM1, one_node=False, one_path=False, unique_paths=self.unique_paths, node=False, path=False, value=False),
+ {'ent#1234': {ns.bse.iso: {123}, ns.bse.t_created: {'2010-01-02'}}, 'ent#4321': {ns.bse.iso: {321}, ns.bse.t_created: {'2022-02-22'}}})
+ self.assertDictEqual(to_dict_view(self.triples_NMU, one_node=False, one_path=False, unique_paths=self.unique_paths, node=False, path=False, value=False),
+ {'ent#1234': {ns.bse.iso: {123}, ns.bse.tag: {'tag#1234', 'tag#5678'}}, 'ent#4321': {ns.bse.iso: {321}, ns.bse.t_created: {'2022-02-22'}}})
+
+ def test_agg_node(self):
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=True, one_path=True, unique_paths=self.unique_paths, node=True, path=False, value=False),
+ {ns.bse.iso: {123}})
+ self.assertDictEqual(to_dict_view(self.triples_11U, one_node=True, one_path=True, unique_paths=self.unique_paths, node=True, path=False, value=False),
+ {ns.bse.tag: {'tag#1234', 'tag#5678'}})
+ self.assertDictEqual(to_dict_view(self.triples_1M1, one_node=True, one_path=False, unique_paths=self.unique_paths, node=True, path=False, value=False),
+ {ns.bse.iso: {123}, ns.bse.t_created: {'2010-01-02'}})
+ self.assertDictEqual(to_dict_view(self.triples_1MU, one_node=True, one_path=False, unique_paths=self.unique_paths, node=True, path=False, value=False),
+ {ns.bse.iso: {123}, ns.bse.tag: {'tag#1234', 'tag#5678'}})
+ self.assertDictEqual(to_dict_view(self.triples_N11, one_node=False, one_path=True, unique_paths=self.unique_paths, node=True, path=False, value=False),
+ {ns.bse.iso: {123, 321}})
+ self.assertDictEqual(to_dict_view(self.triples_N1U, one_node=False, one_path=True, unique_paths=self.unique_paths, node=True, path=False, value=False),
+ {ns.bse.tag: {'tag#1234', 'tag#5678', 'tag#4321'}})
+ self.assertDictEqual(to_dict_view(self.triples_NM1, one_node=False, one_path=False, unique_paths=self.unique_paths, node=True, path=False, value=False),
+ {ns.bse.iso: {123, 321}, ns.bse.t_created: {'2010-01-02', '2022-02-22'}})
+ self.assertDictEqual(to_dict_view(self.triples_NMU, one_node=False, one_path=False, unique_paths=self.unique_paths, node=True, path=False, value=False),
+ {ns.bse.iso: {123, 321}, ns.bse.tag: {'tag#1234', 'tag#5678'}, ns.bse.t_created: {'2022-02-22'}})
+
+ def test_agg_path(self):
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=True, one_path=True, unique_paths=self.unique_paths, node=False, path=True, value=False),
+ {'ent#1234': {123}})
+ self.assertDictEqual(to_dict_view(self.triples_11U, one_node=True, one_path=True, unique_paths=self.unique_paths, node=False, path=True, value=False),
+ {'ent#1234': {'tag#1234', 'tag#5678'}})
+ self.assertDictEqual(to_dict_view(self.triples_1M1, one_node=True, one_path=False, unique_paths=self.unique_paths, node=False, path=True, value=False),
+ {'ent#1234': {123, '2010-01-02'}})
+ self.assertDictEqual(to_dict_view(self.triples_1MU, one_node=True, one_path=False, unique_paths=self.unique_paths, node=False, path=True, value=False),
+ {'ent#1234': {123, 'tag#1234', 'tag#5678'}})
+ self.assertDictEqual(to_dict_view(self.triples_N11, one_node=False, one_path=True, unique_paths=self.unique_paths, node=False, path=True, value=False),
+ {'ent#1234': {123}, 'ent#4321': {321}})
+ self.assertDictEqual(to_dict_view(self.triples_N1U, one_node=False, one_path=True, unique_paths=self.unique_paths, node=False, path=True, value=False),
+ {'ent#1234': {'tag#1234', 'tag#5678'}, 'ent#4321': {'tag#4321'}})
+ self.assertDictEqual(to_dict_view(self.triples_NM1, one_node=False, one_path=False, unique_paths=self.unique_paths, node=False, path=True, value=False),
+ {'ent#1234': {123, '2010-01-02'}, 'ent#4321': {321, '2022-02-22'}})
+ self.assertDictEqual(to_dict_view(self.triples_NMU, one_node=False, one_path=False, unique_paths=self.unique_paths, node=False, path=True, value=False),
+ {'ent#1234': {123, 'tag#1234', 'tag#5678'}, 'ent#4321': {321, '2022-02-22'}})
+
+ def test_agg_node_path(self):
+ self.assertSetEqual(to_dict_view(self.triples_111, one_node=True, one_path=True, unique_paths=self.unique_paths, node=True, path=True, value=False),
+ {123})
+ self.assertSetEqual(to_dict_view(self.triples_11U, one_node=True, one_path=True, unique_paths=self.unique_paths, node=True, path=True, value=False),
+ {'tag#1234', 'tag#5678'})
+ self.assertSetEqual(to_dict_view(self.triples_1M1, one_node=True, one_path=False, unique_paths=self.unique_paths, node=True, path=True, value=False),
+ {123, '2010-01-02'})
+ self.assertSetEqual(to_dict_view(self.triples_1MU, one_node=True, one_path=False, unique_paths=self.unique_paths, node=True, path=True, value=False),
+ {123, 'tag#1234', 'tag#5678'})
+ self.assertSetEqual(to_dict_view(self.triples_N11, one_node=False, one_path=True, unique_paths=self.unique_paths, node=True, path=True, value=False),
+ {123, 321})
+ self.assertSetEqual(to_dict_view(self.triples_N1U, one_node=False, one_path=True, unique_paths=self.unique_paths, node=True, path=True, value=False),
+ {'tag#1234', 'tag#5678', 'tag#4321'})
+ self.assertSetEqual(to_dict_view(self.triples_NM1, one_node=False, one_path=False, unique_paths=self.unique_paths, node=True, path=True, value=False),
+ {123, '2010-01-02', 321, '2022-02-22'})
+ self.assertSetEqual(to_dict_view(self.triples_NMU, one_node=False, one_path=False, unique_paths=self.unique_paths, node=True, path=True, value=False),
+ {123, 'tag#1234', 'tag#5678', 321, '2022-02-22'})
+
+ def test_agg_value(self):
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=True, one_path=True, unique_paths=self.unique_paths, node=False, path=False, value=True),
+ {'ent#1234': {ns.bse.iso: 123}})
+ self.assertDictEqual(to_dict_view(self.triples_11U, one_node=True, one_path=True, unique_paths=self.unique_paths, node=False, path=False, value=True),
+ {'ent#1234': {ns.bse.tag: {'tag#1234', 'tag#5678'}}})
+ self.assertDictEqual(to_dict_view(self.triples_1M1, one_node=True, one_path=False, unique_paths=self.unique_paths, node=False, path=False, value=True),
+ {'ent#1234': {ns.bse.iso: 123, ns.bse.t_created: '2010-01-02'}})
+ self.assertDictEqual(to_dict_view(self.triples_1MU, one_node=True, one_path=False, unique_paths=self.unique_paths, node=False, path=False, value=True),
+ {'ent#1234': {ns.bse.iso: 123, ns.bse.tag: {'tag#1234', 'tag#5678'}}})
+ self.assertDictEqual(to_dict_view(self.triples_N11, one_node=False, one_path=True, unique_paths=self.unique_paths, node=False, path=False, value=True),
+ {'ent#1234': {ns.bse.iso: 123}, 'ent#4321': {ns.bse.iso: 321}})
+ self.assertDictEqual(to_dict_view(self.triples_N1U, one_node=False, one_path=True, unique_paths=self.unique_paths, node=False, path=False, value=True),
+ {'ent#1234': {ns.bse.tag: {'tag#1234', 'tag#5678'}}, 'ent#4321': {ns.bse.tag: {'tag#4321'}}})
+ self.assertDictEqual(to_dict_view(self.triples_NM1, one_node=False, one_path=False, unique_paths=self.unique_paths, node=False, path=False, value=True),
+ {'ent#1234': {ns.bse.iso: 123, ns.bse.t_created: '2010-01-02'}, 'ent#4321': {ns.bse.iso: 321, ns.bse.t_created: '2022-02-22'}})
+ self.assertDictEqual(to_dict_view(self.triples_NMU, one_node=False, one_path=False, unique_paths=self.unique_paths, node=False, path=False, value=True),
+ {'ent#1234': {ns.bse.iso: 123, ns.bse.tag: {'tag#1234', 'tag#5678'}}, 'ent#4321': {ns.bse.iso: 321, ns.bse.t_created: '2022-02-22'}})
+
+ def test_agg_node_value(self):
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=True, one_path=True, unique_paths=self.unique_paths, node=True, path=False, value=True),
+ {ns.bse.iso: 123})
+ self.assertDictEqual(to_dict_view(self.triples_11U, one_node=True, one_path=True, unique_paths=self.unique_paths, node=True, path=False, value=True),
+ {ns.bse.tag: {'tag#1234', 'tag#5678'}})
+ self.assertDictEqual(to_dict_view(self.triples_1M1, one_node=True, one_path=False, unique_paths=self.unique_paths, node=True, path=False, value=True),
+ {ns.bse.iso: 123, ns.bse.t_created: '2010-01-02'})
+ self.assertDictEqual(to_dict_view(self.triples_1MU, one_node=True, one_path=False, unique_paths=self.unique_paths, node=True, path=False, value=True),
+ {ns.bse.iso: 123, ns.bse.tag: {'tag#1234', 'tag#5678'}})
+ self.assertDictEqual(to_dict_view(self.triples_N11, one_node=False, one_path=True, unique_paths=self.unique_paths, node=True, path=False, value=True),
+ {ns.bse.iso: {123, 321}})
+ self.assertDictEqual(to_dict_view(self.triples_N1U, one_node=False, one_path=True, unique_paths=self.unique_paths, node=True, path=False, value=True),
+ {ns.bse.tag: {'tag#1234', 'tag#5678', 'tag#4321'}})
+ self.assertDictEqual(to_dict_view(self.triples_NM1, one_node=False, one_path=False, unique_paths=self.unique_paths, node=True, path=False, value=True),
+ {ns.bse.iso: {123, 321}, ns.bse.t_created: {'2010-01-02', '2022-02-22'}})
+ self.assertDictEqual(to_dict_view(self.triples_NMU, one_node=False, one_path=False, unique_paths=self.unique_paths, node=True, path=False, value=True),
+ {ns.bse.iso: {123, 321}, ns.bse.tag: {'tag#1234', 'tag#5678'}, ns.bse.t_created: {'2022-02-22'}})
+
+ def test_agg_path_value(self):
+ self.assertDictEqual(to_dict_view(self.triples_111, one_node=True, one_path=True, unique_paths=self.unique_paths, node=False, path=True, value=True),
+ {'ent#1234': 123})
+ self.assertDictEqual(to_dict_view(self.triples_11U, one_node=True, one_path=True, unique_paths=self.unique_paths, node=False, path=True, value=True),
+ {'ent#1234': {'tag#1234', 'tag#5678'}})
+ self.assertDictEqual(to_dict_view(self.triples_1M1, one_node=True, one_path=False, unique_paths=self.unique_paths, node=False, path=True, value=True),
+ {'ent#1234': {123, '2010-01-02'}})
+ self.assertDictEqual(to_dict_view(self.triples_1MU, one_node=True, one_path=False, unique_paths=self.unique_paths, node=False, path=True, value=True),
+ {'ent#1234': {123, 'tag#1234', 'tag#5678'}})
+ self.assertDictEqual(to_dict_view(self.triples_N11, one_node=False, one_path=True, unique_paths=self.unique_paths, node=False, path=True, value=True),
+ {'ent#1234': 123, 'ent#4321': 321})
+ self.assertDictEqual(to_dict_view(self.triples_N1U, one_node=False, one_path=True, unique_paths=self.unique_paths, node=False, path=True, value=True),
+ {'ent#1234': {'tag#1234', 'tag#5678'}, 'ent#4321': {'tag#4321'}})
+ self.assertDictEqual(to_dict_view(self.triples_NM1, one_node=False, one_path=False, unique_paths=self.unique_paths, node=False, path=True, value=True),
+ {'ent#1234': {123, '2010-01-02'}, 'ent#4321': {321, '2022-02-22'}})
+ self.assertDictEqual(to_dict_view(self.triples_NMU, one_node=False, one_path=False, unique_paths=self.unique_paths, node=False, path=True, value=True),
+ {'ent#1234': {123, 'tag#1234', 'tag#5678'}, 'ent#4321': {321, '2022-02-22'}})
+
+ def test_agg_all(self):
+ self.assertEqual(to_dict_view(self.triples_111, one_node=True, one_path=True, unique_paths=self.unique_paths, node=True, path=True, value=True),
+ 123)
+ self.assertSetEqual(to_dict_view(self.triples_11U, one_node=True, one_path=True, unique_paths=self.unique_paths, node=True, path=True, value=True),
+ {'tag#1234', 'tag#5678'})
+ self.assertSetEqual(to_dict_view(self.triples_1M1, one_node=True, one_path=False, unique_paths=self.unique_paths, node=True, path=True, value=True),
+ {123, '2010-01-02'})
+ self.assertSetEqual(to_dict_view(self.triples_1MU, one_node=True, one_path=False, unique_paths=self.unique_paths, node=True, path=True, value=True),
+ {123, 'tag#1234', 'tag#5678'})
+ self.assertSetEqual(to_dict_view(self.triples_N11, one_node=False, one_path=True, unique_paths=self.unique_paths, node=True, path=True, value=True),
+ {123, 321})
+ self.assertSetEqual(to_dict_view(self.triples_N1U, one_node=False, one_path=True, unique_paths=self.unique_paths, node=True, path=True, value=True),
+ {'tag#1234', 'tag#5678', 'tag#4321'})
+ self.assertSetEqual(to_dict_view(self.triples_NM1, one_node=False, one_path=False, unique_paths=self.unique_paths, node=True, path=True, value=True),
+ {123, '2010-01-02', 321, '2022-02-22'})
+ self.assertSetEqual(to_dict_view(self.triples_NMU, one_node=False, one_path=False, unique_paths=self.unique_paths, node=True, path=True, value=True),
+ {123, 'tag#1234', 'tag#5678', 321, '2022-02-22'})
+
+
+## main ##
+
+if __name__ == '__main__':
+ unittest.main()
+
+## EOF ##