def skipTriples(self, skip, graph): if not len(skip): return if skip.endswith("/"): skip = skip[:len(skip) - 1] print("skip %s" % skip) delcore = """PREFIX schema: <http://schema.org/> DELETE {?term ?p ?o} WHERE { ?term ?p ?o. ?term a ?t. FILTER NOT EXISTS {?term schema:isPartOf ?x}. }""" delext = """PREFIX schema: <http://schema.org/> DELETE {?s ?p ?o} WHERE { ?s a ?t; schema:isPartOf <%s>. ?s ?p ?o. }""" % skip if skip == "http://schema.org": q = delcore else: q = delext before = len(graph) processUpdate(graph, q)
def skipTriples(self,skip, graph): if not len(skip): return if skip.endswith("/"): skip = skip[:len(skip) -1] print("skip %s" % skip) delcore="""PREFIX schema: <http://schema.org/> DELETE {?term ?p ?o} WHERE { ?term ?p ?o. ?term a ?t. FILTER NOT EXISTS {?term schema:isPartOf ?x}. }""" delext ="""PREFIX schema: <http://schema.org/> DELETE {?s ?p ?o} WHERE { ?s a ?t; schema:isPartOf <%s>. ?s ?p ?o. }""" % skip if skip == "http://schema.org": q = delcore else: q = delext before = len(graph) processUpdate(graph,q)
def skipOddTriples(self, graph): delf = """ DELETE {?s ?p ?o} WHERE { ?s ?p ?o. FILTER (! strstarts(str(?s), "http://schema.org")). }""" processUpdate(graph, delf)
def skipOddTriples(self, graph): delf = """ DELETE {?s ?p ?o} WHERE { ?s ?p ?o. FILTER (! strstarts(str(?s), "http://schema.org")). }""" processUpdate(graph,delf)
def doQueryUpdate(self, query_name, initBinds={}): """ Given a sparql 1.1 update query, perform it. """ query = self.queries[query_name] try: result = processUpdate(self.graph, self.prefixes + query, initBindings=initBinds, initNs=self.namespace) #result = parseUpdate(self.graph, self.prefixes + query, initBindings=initBinds, initNs=self.namespace) #self.graph.query(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.plugins.sparql 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