Skip to content

Commit c2c0187

Browse files
authored
Merge pull request #744 from gromgull/master
Remove SPARQLWrapper dependency
2 parents f844d4d + 7c90f64 commit c2c0187

File tree

10 files changed

+233
-164
lines changed

10 files changed

+233
-164
lines changed

rdflib/plugin.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,12 +322,32 @@ def plugins(name=None, kind=None):
322322
register(
323323
'xml', ResultParser,
324324
'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser')
325+
register(
326+
'application/sparql-results+xml', ResultParser,
327+
'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser')
328+
329+
register(
330+
'application/rdf+xml', ResultParser,
331+
'rdflib.plugins.sparql.results.graph', 'GraphResultParser')
332+
333+
325334
register(
326335
'json', ResultParser,
327336
'rdflib.plugins.sparql.results.jsonresults', 'JSONResultParser')
337+
register(
338+
'application/sparql-results+json', ResultParser,
339+
'rdflib.plugins.sparql.results.jsonresults', 'JSONResultParser')
340+
328341
register(
329342
'csv', ResultParser,
330343
'rdflib.plugins.sparql.results.csvresults', 'CSVResultParser')
344+
register(
345+
'text/csv', ResultParser,
346+
'rdflib.plugins.sparql.results.csvresults', 'CSVResultParser')
347+
331348
register(
332349
'tsv', ResultParser,
333350
'rdflib.plugins.sparql.results.tsvresults', 'TSVResultParser')
351+
register(
352+
'text/tab-separated-values', ResultParser,
353+
'rdflib.plugins.sparql.results.tsvresults', 'TSVResultParser')

rdflib/plugins/sparql/results/csvresults.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class CSVResultParser(ResultParser):
2121
def __init__(self):
2222
self.delim = ","
2323

24-
def parse(self, source):
24+
def parse(self, source, content_type=None):
2525

2626
r = Result('SELECT')
2727

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from rdflib import Graph
2+
3+
from rdflib.query import (
4+
Result,
5+
ResultParser,
6+
ResultSerializer,
7+
ResultException
8+
)
9+
10+
class GraphResultParser(ResultParser):
11+
12+
def parse(self, source, content_type):
13+
14+
res = Result('CONSTRUCT') # hmm - or describe?type_)
15+
res.graph = Graph()
16+
res.graph.parse(source, format=content_type)
17+
18+
return res

rdflib/plugins/sparql/results/jsonresults.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121

2222
class JSONResultParser(ResultParser):
2323

24-
def parse(self, source):
24+
def parse(self, source, content_type=None):
2525
inp = source.read()
2626
if isinstance(inp, binary_type):
2727
inp = inp.decode('utf-8')

rdflib/plugins/sparql/results/tsvresults.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@
4747

4848

4949
class TSVResultParser(ResultParser):
50-
def parse(self, source):
50+
def parse(self, source, content_type=None):
5151

5252
if isinstance(source.read(0), binary_type):
5353
# if reading from source returns bytes do utf-8 decoding

rdflib/plugins/sparql/results/xmlresults.py

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -37,25 +37,18 @@
3737

3838
class XMLResultParser(ResultParser):
3939

40-
def parse(self, source):
40+
def parse(self, source, content_type=None):
4141
return XMLResult(source)
4242

4343

4444
class XMLResult(Result):
45-
def __init__(self, source):
45+
def __init__(self, source, content_type=None):
4646

47-
xmlstring = source.read()
48-
49-
if isinstance(xmlstring, text_type):
50-
xmlstring = xmlstring.encode('utf-8')
5147
try:
5248
parser = etree.XMLParser(huge_tree=True)
53-
tree = etree.parse(BytesIO(xmlstring), parser)
49+
tree = etree.parse(source, parser)
5450
except TypeError:
55-
tree = etree.fromstring(xmlstring)
56-
except Exception as e:
57-
log.exception("Error parsing XML results: %s"%xmlstring)
58-
raise e
51+
tree = etree.parse(source)
5952

6053
boolean = tree.find(RESULTS_NS_ET + 'boolean')
6154
results = tree.find(RESULTS_NS_ET + 'results')
@@ -65,18 +58,11 @@ def __init__(self, source):
6558
elif results is not None:
6659
type_ = 'SELECT'
6760
else:
68-
g = Graph()
69-
try:
70-
g.parse(data=xmlstring)
71-
if len(g) == 0:
72-
raise
73-
type_ = 'CONSTRUCT'
74-
75-
except:
76-
raise ResultException(
77-
"No RDF Graph, result-bindings or boolean answer found!")
61+
raise ResultException(
62+
"No RDF result-bindings or boolean answer found!")
7863

7964
Result.__init__(self, type_)
65+
8066
if type_ == 'SELECT':
8167
self.bindings = []
8268
for result in results:
@@ -90,10 +76,11 @@ def __init__(self, source):
9076
'./%shead/%svariable' % (
9177
RESULTS_NS_ET, RESULTS_NS_ET))]
9278

93-
elif type_ == 'ASK':
79+
else:
9480
self.askAnswer = boolean.text.lower().strip() == "true"
95-
elif type_ == 'CONSTRUCT':
96-
self.graph = g
81+
82+
83+
9784

9885

9986
def parseTerm(element):

0 commit comments

Comments
 (0)