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)