from unittest import TestCase from rdflib import ConjunctiveGraph from rdflib import Namespace, Literal from rdflib.collection import Collection target1xml = """\ Some Value """ target2xml = """\ """ class CollectionTest(TestCase): def test_collection_render(self): foo = Namespace('http://www.example.org/foo/ns/') ex = Namespace('http://www.example.org/example/foo/') rdf = Namespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#') # Works: x a rdf:List, a foo:Other ; # Fails: y a foo:Wrapper, foo:wraps x; x a rdf:List, a foo:Other ; target1 = ConjunctiveGraph() target1.parse(data=target1xml) target2 = ConjunctiveGraph() target2.parse(data=target2xml) g = ConjunctiveGraph() bits = [ex['a'], ex['b'], ex['c']] l = Collection(g, ex['thing'], bits) triple = (ex['thing'], rdf['type'], foo['Other']) g.add(triple) triple = (ex['thing'], foo['property'], Literal('Some Value')) g.add(triple) for b in bits: triple = (b, rdf['type'], foo['Item']) g.add(triple) self.assertEqual(g.isomorphic(target1), True) # g.add((ex['wrapper'], rdf['type'], foo['Wrapper'])) # g.add((ex['wrapper'], foo['wraps'], ex['thing'])) # # resn3 = g.serialize(format="n3") # # print(resn3) # resxml = g.serialize(format="pretty-xml") # # print(resxml) # self.assertEqual(g.isomorphic(target2), True)