Mercurial > repos > guerler > springsuite
diff planemo/lib/python3.7/site-packages/rdflib/plugins/sparql/processor.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/planemo/lib/python3.7/site-packages/rdflib/plugins/sparql/processor.py Fri Jul 31 00:32:28 2020 -0400 @@ -0,0 +1,79 @@ + +""" +Code for tying SPARQL Engine into RDFLib + +These should be automatically registered with RDFLib + +""" + + +from rdflib.query import Processor, Result, UpdateProcessor + +from rdflib.plugins.sparql.sparql import Query + +from rdflib.plugins.sparql.parser import parseQuery, parseUpdate +from rdflib.plugins.sparql.algebra import translateQuery, translateUpdate + +from rdflib.plugins.sparql.evaluate import evalQuery +from rdflib.plugins.sparql.update import evalUpdate + + +def prepareQuery(queryString, initNs={}, base=None): + """ + Parse and translate a SPARQL Query + """ + ret = translateQuery(parseQuery(queryString), base, initNs) + ret._original_args = (queryString, initNs, base) + return ret + + +def processUpdate(graph, updateString, initBindings={}, initNs={}, base=None): + """ + Process a SPARQL Update Request + returns Nothing on success or raises Exceptions on error + """ + evalUpdate(graph, translateUpdate( + parseUpdate(updateString), base, initNs), initBindings) + + +class SPARQLResult(Result): + + def __init__(self, res): + Result.__init__(self, res["type_"]) + self.vars = res.get("vars_") + self.bindings = res.get("bindings") + self.askAnswer = res.get("askAnswer") + self.graph = res.get("graph") + +class SPARQLUpdateProcessor(UpdateProcessor): + def __init__(self, graph): + self.graph = graph + + def update(self, strOrQuery, initBindings={}, initNs={}): + if isinstance(strOrQuery, str): + strOrQuery=translateUpdate(parseUpdate(strOrQuery), initNs=initNs) + + return evalUpdate(self.graph, strOrQuery, initBindings) + + +class SPARQLProcessor(Processor): + + def __init__(self, graph): + self.graph = graph + + def query( + self, strOrQuery, initBindings={}, + initNs={}, base=None, DEBUG=False): + """ + Evaluate a query with the given initial bindings, and initial + namespaces. The given base is used to resolve relative URIs in + the query and will be overridden by any BASE given in the query. + """ + + if not isinstance(strOrQuery, Query): + parsetree = parseQuery(strOrQuery) + query = translateQuery(parsetree, base, initNs) + else: + query = strOrQuery + + return evalQuery(self.graph, query, initBindings, base)