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)
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)
def test_roundtrip(): # these are some RDF files that HexT can round-trip since the have no # literals with no datatype declared: TEST_DIR = Path(__file__).parent.absolute() / "nt" files_to_skip = { "paths-04.nt": "subject literal", "even_more_literals.nt": "JSON decoding error", "literals-02.nt": "JSON decoding error", "more_literals.nt": "JSON decoding error", "test.ntriples": "JSON decoding error", "literals-05.nt": "JSON decoding error", "i18n-01.nt": "JSON decoding error", "literals-04.nt": "JSON decoding error", "rdflibtest01.nt": "JSON decoding error", "rdflibtest05.nt": "JSON decoding error", } tests = 0 skipped = 0 skip = False print() p = TEST_DIR.glob("**/*") for f in [x for x in p if x.is_file()]: tests += 1 print(f"Test {tests}: {f}") if f.name not in files_to_skip.keys(): try: cg = ConjunctiveGraph().parse(f, format="nt") # print(cg.serialize(format="n3")) except: print(f"Skipping: could not NT parse") skipped += 1 skip = True if not skip: cg2 = ConjunctiveGraph() cg2.parse(data=cg.serialize(format="hext"), format="hext", publicID=cg2.default_context.identifier) if cg2.context_aware: for context in cg2.contexts(): for triple in context.triples((None, None, None)): if type(triple[2]) == Literal: if triple[2].datatype == XSD.string: context.remove( (triple[0], triple[1], triple[2])) context.add((triple[0], triple[1], Literal(str(triple[2])))) else: for triple in cg2.triples((None, None, None)): if type(triple[2]) == Literal: if triple[2].datatype == XSD.string: cg2.remove((triple[0], triple[1], triple[2])) cg2.add((triple[0], triple[1], Literal(str(triple[2])))) # print(cg2.serialize(format="trig")) assert cg.isomorphic(cg2) skip = False else: print(f"Skipping: {files_to_skip[f.name]}") print(f"No. tests: {tests}") print(f"No. tests skipped: {skipped}")