def doQueryUpdate(self, query_name, initBinds = {}): """ Given a sparql 1.1 update query, perform it. """ query = self.queries[query_name] try: # Doesn't work?! fails silently. #result = self.graph.update(self.prefixes + query, initBindings=initBinds, initNs=self.namespace) result = processUpdate(self.graph, self.prefixes + query, initBindings=initBinds, initNs=self.namespace) except Exception as e: print ("\nSparql query [%s] parsing problem: %s \n" % (query_name, str(e) )) return None return result
""" Process SPARQL Update """ import rdflib from rdflib_sparql.processor import processUpdate g = rdflib.Graph() g.load("foaf.rdf") processUpdate(g, ''' PREFIX foaf: <http://xmlns.com/foaf/0.1/> PREFIX dbpedia: <http://dbpedia.org/resource/> INSERT { ?s a dbpedia:Human . } WHERE { ?s a foaf:Person . } ''') for x in g.subjects( rdflib.RDF.type, rdflib.URIRef('http://dbpedia.org/resource/Human')): print x
# ordered list ontology LOAD <http://purl.org/ontology/olo/core> ; # dublin core stuff LOAD <http://purl.org/dc/elements/1.1/> ; LOAD <http://purl.org/dc/terms/> ; LOAD <http://purl.org/dc/dcmitype/> ; ''' # clear the named graph # template = ''' PREFIX : <{ug}> CLEAR GRAPH : ''' ru = template.format(ug=USER, sg=SCHEMA) processUpdate(citg,ru) # # Insert triples into the named graph # template = ''' PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> PREFIX dc: <http://purl.org/dc/elements/1.1/> PREFIX : <{ug}> INSERT DATA {{ GRAPH : {{ :howard dc:title "Howard Burrows" . :howard :friends [ a rdf:Seq ;
def testCycleDetection(): g = rdflib.Graph() processUpdate(g, qMakeCycle) print g.serialize(format='turtle') print checkCycle(g)
def orderingConstraints(g): processUpdate(g, start_precedes_end) processUpdate(g, start_start_ordering) processUpdate(g, end_end_ordering) processUpdate(g, usage_within_activity1) processUpdate(g, usage_within_activity2) processUpdate(g, generation_within_activity1) processUpdate(g, generation_within_activity2) processUpdate(g, wasInformedBy_ordering) processUpdate(g, generation_precedes_invalidation) processUpdate(g, generation_precedes_usage) processUpdate(g, usage_precedes_invalidation) processUpdate(g, generation_generation_ordering) processUpdate(g, invalidation_invalidation_ordering) processUpdate(g, derivation_usage_generation_ordering) processUpdate(g, derivation_generation_generation_ordering) processUpdate(g, wasStartedBy_ordering1) processUpdate(g, wasStartedBy_ordering2) processUpdate(g, wasEndedBy_ordering1) processUpdate(g, wasEndedBy_ordering2) processUpdate(g, specialization_generation_ordering) processUpdate(g, specialization_invalidation_ordering) processUpdate(g, wasAssociatedWith_ordering1) processUpdate(g, wasAssociatedWith_ordering2) processUpdate(g, wasAssociatedWith_ordering3) processUpdate(g, wasAssociatedWith_ordering4) processUpdate(g, wasAttributedTo_ordering1) processUpdate(g, wasAttributedTo_ordering2) processUpdate(g, actedOnBehalfOf_ordering1) processUpdate(g, actedOnBehalfOf_ordering2) return g
def graphCleaner(): global graph1 processUpdate(settings.graph1, '''DELETE WHERE {?s ?p ?o }''') global graph2 processUpdate(settings.graph2, '''DELETE WHERE {?s ?p ?o }''')