comparison 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
comparison
equal deleted inserted replaced
0:d30785e31577 1:56ad4e20f292
1
2 """
3 Code for tying SPARQL Engine into RDFLib
4
5 These should be automatically registered with RDFLib
6
7 """
8
9
10 from rdflib.query import Processor, Result, UpdateProcessor
11
12 from rdflib.plugins.sparql.sparql import Query
13
14 from rdflib.plugins.sparql.parser import parseQuery, parseUpdate
15 from rdflib.plugins.sparql.algebra import translateQuery, translateUpdate
16
17 from rdflib.plugins.sparql.evaluate import evalQuery
18 from rdflib.plugins.sparql.update import evalUpdate
19
20
21 def prepareQuery(queryString, initNs={}, base=None):
22 """
23 Parse and translate a SPARQL Query
24 """
25 ret = translateQuery(parseQuery(queryString), base, initNs)
26 ret._original_args = (queryString, initNs, base)
27 return ret
28
29
30 def processUpdate(graph, updateString, initBindings={}, initNs={}, base=None):
31 """
32 Process a SPARQL Update Request
33 returns Nothing on success or raises Exceptions on error
34 """
35 evalUpdate(graph, translateUpdate(
36 parseUpdate(updateString), base, initNs), initBindings)
37
38
39 class SPARQLResult(Result):
40
41 def __init__(self, res):
42 Result.__init__(self, res["type_"])
43 self.vars = res.get("vars_")
44 self.bindings = res.get("bindings")
45 self.askAnswer = res.get("askAnswer")
46 self.graph = res.get("graph")
47
48 class SPARQLUpdateProcessor(UpdateProcessor):
49 def __init__(self, graph):
50 self.graph = graph
51
52 def update(self, strOrQuery, initBindings={}, initNs={}):
53 if isinstance(strOrQuery, str):
54 strOrQuery=translateUpdate(parseUpdate(strOrQuery), initNs=initNs)
55
56 return evalUpdate(self.graph, strOrQuery, initBindings)
57
58
59 class SPARQLProcessor(Processor):
60
61 def __init__(self, graph):
62 self.graph = graph
63
64 def query(
65 self, strOrQuery, initBindings={},
66 initNs={}, base=None, DEBUG=False):
67 """
68 Evaluate a query with the given initial bindings, and initial
69 namespaces. The given base is used to resolve relative URIs in
70 the query and will be overridden by any BASE given in the query.
71 """
72
73 if not isinstance(strOrQuery, Query):
74 parsetree = parseQuery(strOrQuery)
75 query = translateQuery(parsetree, base, initNs)
76 else:
77 query = strOrQuery
78
79 return evalQuery(self.graph, query, initBindings, base)