class TestSearchAnnotations(unittest.TestCase): def test_search_for_uri(self): for url in annotation_urls: g, target, selector = specific_resource(self.canvas, res=URIRef(uuid.uuid4()), selector=URIRef(uuid.uuid4())) g, anno, body, target = annotation(g=g, anno=URIRef(uuid.uuid4()), target=target, body=URIRef(uuid.uuid4())) response = self.client.post(url, data=g.serialize(), content_type="text/xml") self.assertEqual(response.status_code, 201) for uri in [anno, body, target, selector, self.canvas]: response = self.client.get(url, {'uri': uri}) self.assertEqual(response.status_code, 200) validate_return_content(self, response, g) def tearDown(self): pass def setUp(self): url = reverse('semantic_store_annotations', kwargs=dict()) self.client = Client() fixture_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), "semantic_store_test_fixture.xml") self.g = ConjunctiveGraph(rdfstore.rdfstore(), identifier=rdfstore.default_identifier) self.g.parse(fixture_filename) canvases = self.g.subjects(URIRef(NS.rdf['type']), URIRef(NS.dms['Canvas'])) self.canvas = list(canvases)[0]
primer.add((myNS.pat, myNS.knows, myNS.jo)) # or: primer.add((myNS['pat'], myNS['age'], long(24))) # Now, with just that, lets see how the system # recorded *way* too many details about what # you just asserted as fact. # from pprint import pprint pprint(list(primer)) # just think .whatever((s, p, o)) # here we report on what we know pprint(list(primer.subjects())) pprint(list(primer.predicates())) pprint(list(primer.objects())) # and other things that make sense # what do we know about pat? pprint(list(primer.predicate_objects(myNS.pat))) # who is what age? pprint(list(primer.subject_objects(myNS.age))) # Okay, so lets now work with a bigger # dataset from the example, and start # with a fresh new graph.
def testFormulaStore(store="default", configString=None): try: g = ConjunctiveGraph(store=store) except ImportError: raise SkipTest("Dependencies for store '%s' not available!" % store) if configString: g.destroy(configString) g.open(configString) else: if store == 'SQLite': _, path = mkstemp(prefix='test', dir='/tmp', suffix='.sqlite') g.open(path, create=True) else: g.open(mkdtemp(), create=True) g.parse(data=testN3, format="n3") try: for s, p, o in g.triples((None, implies, None)): formulaA = s formulaB = o assert type(formulaA) == QuotedGraph and type(formulaB) == QuotedGraph # a = URIRef('http://test/a') b = URIRef('http://test/b') c = URIRef('http://test/c') d = URIRef('http://test/d') v = Variable('y') universe = ConjunctiveGraph(g.store) #test formula as terms assert len(list(universe.triples((formulaA, implies, formulaB)))) == 1 #test variable as term and variable roundtrip assert len(list(formulaB.triples((None, None, v)))) == 1 for s, p, o in formulaB.triples((None, d, None)): if o != c: assert isinstance(o, Variable) assert o == v s = list(universe.subjects(RDF.type, RDFS.Class))[0] assert isinstance(s, BNode) assert len(list(universe.triples((None, implies, None)))) == 1 assert len(list(universe.triples((None, RDF.type, None)))) == 1 assert len(list(formulaA.triples((None, RDF.type, None)))) == 1 assert len(list(formulaA.triples((None, None, None)))) == 2 assert len(list(formulaB.triples((None, None, None)))) == 2 assert len(list(universe.triples((None, None, None)))) == 3 assert len(list(formulaB.triples( (None, URIRef('http://test/d'), None)))) == 2 assert len(list(universe.triples( (None, URIRef('http://test/d'), None)))) == 1 # #context tests # #test contexts with triple argument # assert len(list(universe.contexts((a, d, c)))) == 1, \ # [ct for ct in universe.contexts((a, d, c))] # FAIL: test.test_graph_formula.testFormulaStores('SQLite',) # -------------------------------------------------------------------- # Traceback (most recent call last): # File ".../site-packages/nose/case.py", line 197, in runTest # self.test(*self.arg) # File ".../test_graph_formula.py", line 80, in testFormulaStore # [ct for ct in universe.contexts((a, d, c))] # AssertionError: [ # <Graph identifier=N52fd4417ef7641089b2e4045ef19ad87 # (<class 'rdflib.graph.Graph'>)>, # <Graph identifier=_:Formula16 (<class 'rdflib.graph.Graph'>)> # ] #Remove test cases universe.remove((None, implies, None)) assert len(list(universe.triples((None, implies, None)))) == 0 assert len(list(formulaA.triples((None, None, None)))) == 2 assert len(list(formulaB.triples((None, None, None)))) == 2 formulaA.remove((None, b, None)) assert len(list(formulaA.triples((None, None, None)))) == 1 formulaA.remove((None, RDF.type, None)) assert len(list(formulaA.triples((None, None, None)))) == 0 universe.remove((None, RDF.type, RDFS.Class)) #remove_context tests universe.remove_context(formulaB) assert len(list(universe.triples((None, RDF.type, None)))) == 0 assert len(universe) == 1 assert len(formulaB) == 0 universe.remove((None, None, None)) assert len(universe) == 0 g.close() if store == 'SQLite': os.unlink(path) else: g.store.destroy(configString) except: g.close() if store == 'SQLite': os.unlink(path) else: g.store.destroy(configString) raise
def make_property_graph(properties, args): graph = ConjunctiveGraph() output_graph = ConjunctiveGraph() GH = 'https://raw.githubusercontent.com' OBO = 'https://purl.obolibrary.org/obo' ontologies = [ OBO + '/sepio.owl', OBO + '/geno.owl', OBO + '/iao.owl', OBO + '/ero.owl', OBO + '/pco.owl', OBO + '/xco.owl', OBO + '/ro.owl', GH + '/jamesmalone/OBAN/master/ontology/oban_core.ttl', ] for ontology in ontologies: print("parsing: " + ontology) try: graph.parse(ontology, format=rdflib_util.guess_format(ontology)) except SAXParseException as e: logger.error(e) logger.error('Retrying: ' + ontology) graph.parse(ontology, format="turtle") except OSError as e: # URLError: # simple retry logger.error(e) logger.error('Retrying: ' + ontology) graph.parse(ontology, format=rdflib_util.guess_format(ontology)) # Get object properties output_graph = add_property_to_graph( graph.subjects(RDF['type'], OWL['ObjectProperty']), output_graph, OWL['ObjectProperty'], properties) # Get annotation properties output_graph = add_property_to_graph( graph.subjects(RDF['type'], OWL['AnnotationProperty']), output_graph, OWL['AnnotationProperty'], properties) # Get data properties output_graph = add_property_to_graph( graph.subjects(RDF['type'], OWL['DatatypeProperty']), output_graph, OWL['DatatypeProperty'], properties) # Hardcoded properties output_graph.add( (URIRef('https://monarchinitiative.org/MONARCH_cliqueLeader'), RDF['type'], OWL['AnnotationProperty'])) output_graph.add( (URIRef('https://monarchinitiative.org/MONARCH_anonymous'), RDF['type'], OWL['AnnotationProperty'])) # Check monarch data triple data_url = "https://data.monarchinitiative.org/ttl/{0}".format( re.sub(r".*/", "", args.input)) new_url = "https://data.monarchinitiative.org/ttl/{0}".format( re.sub(r".*/", "", args.output)) if (URIRef(data_url), RDF.type, OWL['Ontology']) in output_graph: output_graph.remove(URIRef(data_url), RDF.type, OWL['Ontology']) output_graph.add((URIRef(new_url), RDF.type, OWL['Ontology'])) for row in output_graph.predicates(DC['source'], OWL['AnnotationProperty']): if row == RDF['type']: output_graph.remove( (DC['source'], RDF['type'], OWL['AnnotationProperty'])) output_graph.add((DC['source'], RDF['type'], OWL['ObjectProperty'])) return output_graph
def testN3Store(store="default", configString=None): storetest = True g = ConjunctiveGraph(store=store) if configString is not None: g.destroy(configString) g.open(configString, create=True) g.parse(data=testN3, format="n3") # op = g.serialize(format="n3") # print(op) formulaA = BNode() formulaB = BNode() try: for s,p,o in g.triples((None,implies,None)): formulaA = s formulaB = o assert type(formulaA)==QuotedGraph and type(formulaB)==QuotedGraph a = URIRef('http://test/a') b = URIRef('http://test/b') c = URIRef('http://test/c') d = URIRef('http://test/d') v = Variable('y') universe = ConjunctiveGraph(g.store) #test formula as terms assert len(list(universe.triples((formulaA,implies,formulaB))))==1 #test variable as term and variable roundtrip assert len(list(formulaB.triples((None,None,v))))==1 for s,p,o in formulaB.triples((None,d,None)): if o != c: assert isinstance(o,Variable) assert o == v s = list(universe.subjects(RDF.type, RDFS.Class))[0] assert isinstance(s,BNode) assert len(list(universe.triples((None,implies,None)))) == 1 assert len(list(universe.triples((None,RDF.type,None)))) ==1 assert len(list(formulaA.triples((None,RDF.type,None))))==1 assert len(list(formulaA.triples((None,None,None))))==2 assert len(list(formulaB.triples((None,None,None))))==2 assert len(list(universe.triples((None,None,None))))==3 assert len(list(formulaB.triples((None,URIRef('http://test/d'),None))))==2 assert len(list(universe.triples((None,URIRef('http://test/d'),None))))==1 #context tests #test contexts with triple argument assert len(list(universe.contexts((a,d,c))))==1 #Remove test cases universe.remove((None,implies,None)) assert len(list(universe.triples((None,implies,None))))==0 assert len(list(formulaA.triples((None,None,None))))==2 assert len(list(formulaB.triples((None,None,None))))==2 formulaA.remove((None,b,None)) assert len(list(formulaA.triples((None,None,None))))==1 formulaA.remove((None,RDF.type,None)) assert len(list(formulaA.triples((None,None,None))))==0 universe.remove((None,RDF.type,RDFS.Class)) #remove_context tests universe.remove_context(formulaB) assert len(list(universe.triples((None,RDF.type,None))))==0 assert len(universe)==1 assert len(formulaB)==0 universe.remove((None,None,None)) assert len(universe)==0 g.store.destroy(configString) except: g.store.destroy(configString) raise
def testN3Store(store="default", configString=None): storetest = True del storetest g = ConjunctiveGraph(store=store) if configString: # g.destroy(configString) g.open(configString, create=True) g.parse(data=testN3, format="n3") # op = g.serialize(format="n3") # print(op) formulaA = BNode() formulaB = BNode() try: for s, p, o in g.triples((None, implies, None)): formulaA = s formulaB = o assert type(formulaA) == QuotedGraph \ and type(formulaB) == QuotedGraph a = URIRef('http://test/a') b = URIRef('http://test/b') c = URIRef('http://test/c') d = URIRef('http://test/d') v = Variable('y') universe = ConjunctiveGraph(g.store) #test formula as terms assert len(list(universe.triples((formulaA, implies, formulaB)))) == 1 #test variable as term and variable roundtrip assert len(list(formulaB.triples((None, None, v)))) == 1 for s, p, o in formulaB.triples((None, d, None)): if o != c: assert isinstance(o, Variable) assert o == v s = list(universe.subjects(RDF.type, RDFS.Class))[0] assert isinstance(s, BNode) assert len(list(universe.triples((None, implies, None)))) == 1 assert len(list(universe.triples((None, RDF.type, None)))) == 1 assert len(list(formulaA.triples((None, RDF.type, None)))) == 1 assert len(list(formulaA.triples((None, None, None)))) == 2 assert len(list(formulaB.triples((None, None, None)))) == 2 assert len(list(universe.triples((None, None, None)))) == 3 assert len( list(formulaB.triples((None, URIRef('http://test/d'), None)))) == 2 assert len( list(universe.triples((None, URIRef('http://test/d'), None)))) == 1 #context tests #test contexts with triple argument assert len(list(universe.contexts((a, d, c)))) == 1 #Remove test cases universe.remove((None, implies, None)) assert len(list(universe.triples((None, implies, None)))) == 0 assert len(list(formulaA.triples((None, None, None)))) == 2 assert len(list(formulaB.triples((None, None, None)))) == 2 formulaA.remove((None, b, None)) assert len(list(formulaA.triples((None, None, None)))) == 1 formulaA.remove((None, RDF.type, None)) assert len(list(formulaA.triples((None, None, None)))) == 0 universe.remove((None, RDF.type, RDFS.Class)) #remove_context tests universe.remove_context(formulaB) assert len(list(universe.triples((None, RDF.type, None)))) == 0 assert len(universe) == 1 assert len(formulaB) == 0 universe.remove((None, None, None)) assert len(universe) == 0 g.store.destroy(configString) except: g.store.destroy(configString) raise
def test_n3_store(self): # Thorough test suite for formula-aware store implies = URIRef("http://www.w3.org/2000/10/swap/log#implies") testN3 = """ @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix : <http://test/> . {:a :b :c;a :foo} => {:a :d :c,?y}. _:foo a rdfs:Class. :a :d :c.""" g = self.open_graph() g.parse(data=testN3, format="n3") formulaA = BNode() formulaB = BNode() for s,o in g.subject_objects(predicate=implies): formulaA = s formulaB = o assert type(formulaA)==QuotedGraph and type(formulaB)==QuotedGraph a = URIRef('http://test/a') b = URIRef('http://test/b') c = URIRef('http://test/c') d = URIRef('http://test/d') v = Variable('y') universe = ConjunctiveGraph(g.store) # test formula as terms assert len(list(universe.triples((formulaA, implies, formulaB)))) == 1 # test variable as term and variable roundtrip assert len(list(formulaB.triples((None,None,v)))) == 1 for s,p,o in formulaB.triples((None,d,None)): if o != c: assert isinstance(o, Variable) assert o == v s = list(universe.subjects(RDF.type, RDFS.Class))[0] assert isinstance(s, BNode) assert len(list(universe.triples((None,implies,None)))) == 1 assert len(list(universe.triples((None,RDF.type,None)))) == 1 assert len(list(formulaA.triples((None,RDF.type,None)))) == 1 assert len(list(formulaA.triples((None,None,None)))) == 2 assert len(list(formulaB.triples((None,None,None)))) == 2 assert len(list(formulaB.triples((None,d,None)))) == 2 assert len(list(universe.triples((None,None,None)))) == 3 assert len(list(universe.triples((None,d,None)))) == 1 # context tests # test contexts with triple argument assert len(list(universe.contexts((a,d,c))))==1 # remove test cases universe.remove((None,implies,None)) assert len(list(universe.triples((None,implies,None)))) == 0 assert len(list(formulaA.triples((None,None,None)))) == 2 assert len(list(formulaB.triples((None,None,None)))) == 2 formulaA.remove((None,b,None)) assert len(list(formulaA.triples((None,None,None)))) == 1 formulaA.remove((None,RDF.type,None)) assert len(list(formulaA.triples((None,None,None)))) == 0 universe.remove((None,RDF.type,RDFS.Class)) # remove_context tests universe.remove_context(formulaB) assert len(list(universe.triples((None,RDF.type,None)))) == 0 assert len(universe) == 1 assert len(formulaB) == 0 universe.remove((None,None,None)) assert len(universe) == 0
def test_rdflib_mysql_test(self): """ test taken from rdflib/test/test_mysql.py """ implies = URIRef("http://www.w3.org/2000/10/swap/log#implies") testN3=""" @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . @prefix : <http://test/> . {:a :b :c;a :foo} => {:a :d :c,?y}. _:foo a rdfs:Class. :a :d :c.""" #Thorough test suite for formula-aware store g = self.rdflib_graph g.parse(data=testN3, format="n3") #print g.store for s,p,o in g.triples((None,implies,None)): formulaA = s formulaB = o self.assertTrue(type(formulaA)==QuotedGraph and type(formulaB)==QuotedGraph) a = URIRef('http://test/a') b = URIRef('http://test/b') c = URIRef('http://test/c') d = URIRef('http://test/d') v = Variable('y') universe = ConjunctiveGraph(g.store) #test formula as terms self.assertTrue(len(list(universe.triples((formulaA,implies,formulaB))))==1) #test variable as term and variable roundtrip self.assertTrue(len(list(formulaB.triples((None,None,v))))==1) for s,p,o in formulaB.triples((None,d,None)): if o != c: self.assertTrue(isinstance(o,Variable)) self.assertTrue(o == v) s = list(universe.subjects(RDF.type, RDFS.Class))[0] self.assertTrue(isinstance(s,BNode)) self.assertTrue( len(list(universe.triples((None,implies,None)))) == 1) self.assertTrue( len(list(universe.triples((None,RDF.type,None)))) ==1) self.assertTrue( len(list(formulaA.triples((None,RDF.type,None))))==1) self.assertTrue( len(list(formulaA.triples((None,None,None))))==2) self.assertTrue( len(list(formulaB.triples((None,None,None))))==2) self.assertTrue( len(list(universe.triples((None,None,None))))==3) self.assertTrue( len(list(formulaB.triples((None,URIRef('http://test/d'),None))))==2) self.assertTrue( len(list(universe.triples((None,URIRef('http://test/d'),None))))==1) #context tests #test contexts with triple argument self.assertTrue( len(list(universe.contexts((a,d,c))))==1) #Remove test cases universe.remove((None,implies,None)) self.assertTrue( len(list(universe.triples((None,implies,None))))==0) self.assertTrue( len(list(formulaA.triples((None,None,None))))==2) self.assertTrue( len(list(formulaB.triples((None,None,None))))==2) formulaA.remove((None,b,None)) self.assertTrue( len(list(formulaA.triples((None,None,None))))==1) formulaA.remove((None,RDF.type,None)) self.assertTrue( len(list(formulaA.triples((None,None,None))))==0) universe.remove((None,RDF.type,RDFS.Class)) #remove_context tests universe.remove_context(formulaB) self.assertTrue( len(list(universe.triples((None,RDF.type,None))))==0) self.assertTrue( len(universe)==1) self.assertTrue( len(list(formulaB.triples((None,None,None))))==0) universe.remove((None,None,None)) self.assertTrue( len(universe)==0)
class TestSingleAnnotation(unittest.TestCase): def test_embedded_textual_body_bnode(self): for url in annotation_urls: g, target, selector = svg_specific_resource(source=self.canvas) g, body = content_as_text_resource(g=g, chars=self.shortText) g, anno, body, target = annotation(g=g, body=body, target=target) data = g.serialize(initNs=ns) response = self.client.post(url, data=data, content_type="text/xml") self.assertEqual(response.status_code, 201) validate_return_content(self, response, g) def test_embedded_textual_body_uuids(self): for url in annotation_urls: g = Graph() bind_namespaces(g) anno = URIRef(uuid.uuid4()) body = URIRef(uuid.uuid4()) g.add((anno, NS.rdf['type'], NS.oa['Annotation'])) g.add((anno, NS.oa['hasTarget'], self.canvas)) g.add((anno, NS.oa['hasBody'], body)) g.add((body, NS.rdf['type'], NS.dctypes['Text'])) g.add((body, NS.rdf['type'], NS.cnt['ContentAsText'])) g.add((body, NS.cnt['chars'], self.shortText)) g.add((body, NS.dc['format'], Literal("text/plain"))) data = g.serialize(initNs=ns) response = self.client.post(url, data=data, content_type="text/xml") self.assertEqual(response.status_code, 201) validate_return_content(self, response, g) def test_body_uuid(self): for url in annotation_urls: g = Graph() bind_namespaces(g) anno = URIRef(uuid.uuid4()) body = URIRef(uuid.uuid4()) g.add((anno, NS.rdf['type'], NS.oa['Annotation'])) g.add((anno, NS.oa['hasTarget'], self.canvas)) g.add((anno, NS.oa['hasBody'], body)) g.add((body, NS.rdf['type'], NS.dctypes['Text'])) data = g.serialize(initNs=ns) response = self.client.post(url, data=data, content_type="text/xml") self.assertEqual(response.status_code, 201) validate_return_content(self, response, g) def test_specific_target_only(self): # See http://www.openannotation.org/spec/core/specific.html#Specific # and http://www.openannotation.org/spec/core/publishing.html#Embedding for url in annotation_urls: g, target, selector = svg_specific_resource( Literal("<circle cx='300' cy='200' r='100'/>")) g, anno, body, target = annotation(g=g, target=target) data = g.serialize() response = self.client.post(url, data=data, content_type="text/xml") self.assertEqual(response.status_code, 201) validate_return_content(self, response, g) def test_no_annos(self): for url in annotation_urls: g, res, selector = svg_specific_resource( Literal("<circle cx='300' cy='200' r='100'/>")) data = g.serialize() response = self.client.post(url, data=data, content_type="text/xml") self.assertEqual(response.content, "No %s nodes found." % NS.oa['Annotation']) self.assertEqual(response.status_code, 400) def test_specific_target_uuid(self): for url in annotation_urls: g = Graph() bind_namespaces(g) anno = URIRef(uuid.uuid4()) target = URIRef(uuid.uuid4()) svg = URIRef(uuid.uuid4()) g.add((anno, NS.rdf['type'], NS.oa['Annotation'])) g.add((anno, NS.oa['hasTarget'], target)) g.add((target, NS.rdf['type'], NS.oa['SpecificResource'])) g.add((target, NS.oa['hasSelector'], svg)) g.add((svg, NS.rdf['type'], NS.oa['SvgSelector'])) g.add((svg, NS.rdf['type'], NS.cnt['ContentAsText'])) g.add((svg, NS.cnt['chars'], Literal("<circle cx='300' cy='200' r='100'/>"))) g.add((svg, NS.cnt['characterEncoding'], Literal("utf-8"))) data = g.serialize(initNs=ns) response = self.client.post(url, data=data, content_type="text/xml") self.assertEqual(response.status_code, 201) def tearDown(self): pass def setUp(self): self.client = Client() fixture_filename = os.path.join(os.path.dirname(os.path.realpath(__file__)), "semantic_store_test_fixture.xml") self.g = ConjunctiveGraph(rdfstore.rdfstore(), identifier=rdfstore.default_identifier) self.g.parse(fixture_filename) canvases = self.g.subjects(URIRef(NS.rdf['type']), URIRef(NS.dms['Canvas'])) self.canvas = list(canvases)[0] self.shortText = Literal("This is a short text.") self.longText = """
def make_property_graph(properties, args): graph = ConjunctiveGraph() output_graph = ConjunctiveGraph() ontologies = [ 'https://raw.githubusercontent.com/monarch-initiative/SEPIO-ontology/master/src/ontology/sepio.owl', 'https://raw.githubusercontent.com/monarch-initiative/GENO-ontology/develop/src/ontology/geno.owl', 'http://purl.obolibrary.org/obo/ro.owl', 'http://purl.obolibrary.org/obo/iao.owl', 'http://purl.obolibrary.org/obo/ero.owl', 'https://raw.githubusercontent.com/jamesmalone/OBAN/master/ontology/oban_core.ttl', 'http://purl.obolibrary.org/obo/pco.owl', 'http://purl.obolibrary.org/obo/xco.owl' ] for ontology in ontologies: print("parsing: " + ontology) try: graph.parse(ontology, format=rdflib_util.guess_format(ontology)) except SAXParseException as e: logger.error(e) logger.error('Retrying: ' + ontology) graph.parse(ontology, format="turtle") except OSError as e: # URLError: # simple retry logger.error(e) logger.error('Retrying: ' + ontology) graph.parse(ontology, format=rdflib_util.guess_format(ontology)) # Get object properties output_graph = add_property_to_graph( graph.subjects(RDF['type'], OWL['ObjectProperty']), output_graph, OWL['ObjectProperty'], properties) # Get annotation properties output_graph = add_property_to_graph( graph.subjects(RDF['type'], OWL['AnnotationProperty']), output_graph, OWL['AnnotationProperty'], properties) # Get data properties output_graph = add_property_to_graph( graph.subjects(RDF['type'], OWL['DatatypeProperty']), output_graph, OWL['DatatypeProperty'], properties) # Hardcoded properties output_graph.add( (URIRef('https://monarchinitiative.org/MONARCH_cliqueLeader'), RDF['type'], OWL['AnnotationProperty'])) output_graph.add( (URIRef('https://monarchinitiative.org/MONARCH_anonymous'), RDF['type'], OWL['AnnotationProperty'])) # Check monarch data triple data_url = "https://data.monarchinitiative.org/ttl/{0}".format( re.sub(r".*/", "", args.input)) new_url = "https://data.monarchinitiative.org/ttl/{0}".format( re.sub(r".*/", "", args.output)) if (URIRef(data_url), RDF.type, OWL['Ontology']) in output_graph: output_graph.remove(URIRef(data_url), RDF.type, OWL['Ontology']) output_graph.add((URIRef(new_url), RDF.type, OWL['Ontology'])) for row in output_graph.predicates( DC['source'], OWL['AnnotationProperty']): if row == RDF['type']: output_graph.remove( (DC['source'], RDF['type'], OWL['AnnotationProperty'])) output_graph.add((DC['source'], RDF['type'], OWL['ObjectProperty'])) return output_graph
def testFormulaStore(store="default", configString=None): try: g = ConjunctiveGraph(store=store) except ImportError: raise SkipTest("Dependencies for store '%s' not available!"%store) if configString: g.destroy(configString) g.open(configString) else: g.open(mkdtemp(), create=True) g.parse(data=testN3, format="n3") print g.store try: for s,p,o in g.triples((None,implies,None)): formulaA = s formulaB = o assert type(formulaA)==QuotedGraph and type(formulaB)==QuotedGraph a = URIRef('http://test/a') b = URIRef('http://test/b') c = URIRef('http://test/c') d = URIRef('http://test/d') v = Variable('y') universe = ConjunctiveGraph(g.store) #test formula as terms assert len(list(universe.triples((formulaA,implies,formulaB))))==1 #test variable as term and variable roundtrip assert len(list(formulaB.triples((None,None,v))))==1 for s,p,o in formulaB.triples((None,d,None)): if o != c: assert isinstance(o,Variable) assert o == v s = list(universe.subjects(RDF.type, RDFS.Class))[0] assert isinstance(s,BNode) assert len(list(universe.triples((None,implies,None)))) == 1 assert len(list(universe.triples((None,RDF.type,None)))) ==1 assert len(list(formulaA.triples((None,RDF.type,None))))==1 assert len(list(formulaA.triples((None,None,None))))==2 assert len(list(formulaB.triples((None,None,None))))==2 assert len(list(universe.triples((None,None,None))))==3 assert len(list(formulaB.triples((None,URIRef('http://test/d'),None))))==2 assert len(list(universe.triples((None,URIRef('http://test/d'),None))))==1 #context tests #test contexts with triple argument assert len(list(universe.contexts((a,d,c))))==1 #Remove test cases universe.remove((None,implies,None)) assert len(list(universe.triples((None,implies,None))))==0 assert len(list(formulaA.triples((None,None,None))))==2 assert len(list(formulaB.triples((None,None,None))))==2 formulaA.remove((None,b,None)) assert len(list(formulaA.triples((None,None,None))))==1 formulaA.remove((None,RDF.type,None)) assert len(list(formulaA.triples((None,None,None))))==0 universe.remove((None,RDF.type,RDFS.Class)) #remove_context tests universe.remove_context(formulaB) assert len(list(universe.triples((None,RDF.type,None))))==0 assert len(universe)==1 assert len(formulaB)==0 universe.remove((None,None,None)) assert len(universe)==0 g.close() g.store.destroy(configString) except: g.close() g.store.destroy(configString) raise
primer.add((myNS['pat'], myNS['age'], long(24))) # Now, with just that, lets see how the system # recorded *way* too many details about what # you just asserted as fact. # from pprint import pprint pprint(list(primer)) # just think .whatever((s, p, o)) # here we report on what we know pprint(list(primer.subjects())) pprint(list(primer.predicates())) pprint(list(primer.objects())) # and other things that make sense # what do we know about pat? pprint(list(primer.predicate_objects(myNS.pat))) # who is what age? pprint(list(primer.subject_objects(myNS.age))) # Okay, so lets now work with a bigger # dataset from the example, and start