Imagine a domain where the objects, attributes, relationships can be reasoned about separately:
obj1 = RelationalDataset(pos=['a(i1).'], neg=[], facts=['b(i1).', 'c(i1).'])
obj2 = RelationalDataset(pos=['a(i2).'], neg=[], facts=['b(i2).'])
It would be convenient to provide semantics for merging these:
>>> obj1 | obj2
RelationalDataset(pos=['a(i1).', 'a(i2).'], neg=[], facts=['b(i1).', 'c(i1).', 'b(i2).'])
See also: