Skip to content

Commit

Permalink
Merge pull request #744 from gromgull/master
Browse files Browse the repository at this point in the history
Remove SPARQLWrapper dependency
  • Loading branch information
gromgull authored Oct 27, 2018
2 parents f844d4d + 7c90f64 commit c2c0187
Show file tree
Hide file tree
Showing 10 changed files with 233 additions and 164 deletions.
20 changes: 20 additions & 0 deletions rdflib/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -322,12 +322,32 @@ def plugins(name=None, kind=None):
register(
'xml', ResultParser,
'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser')
register(
'application/sparql-results+xml', ResultParser,
'rdflib.plugins.sparql.results.xmlresults', 'XMLResultParser')

register(
'application/rdf+xml', ResultParser,
'rdflib.plugins.sparql.results.graph', 'GraphResultParser')


register(
'json', ResultParser,
'rdflib.plugins.sparql.results.jsonresults', 'JSONResultParser')
register(
'application/sparql-results+json', ResultParser,
'rdflib.plugins.sparql.results.jsonresults', 'JSONResultParser')

register(
'csv', ResultParser,
'rdflib.plugins.sparql.results.csvresults', 'CSVResultParser')
register(
'text/csv', ResultParser,
'rdflib.plugins.sparql.results.csvresults', 'CSVResultParser')

register(
'tsv', ResultParser,
'rdflib.plugins.sparql.results.tsvresults', 'TSVResultParser')
register(
'text/tab-separated-values', ResultParser,
'rdflib.plugins.sparql.results.tsvresults', 'TSVResultParser')
2 changes: 1 addition & 1 deletion rdflib/plugins/sparql/results/csvresults.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class CSVResultParser(ResultParser):
def __init__(self):
self.delim = ","

def parse(self, source):
def parse(self, source, content_type=None):

r = Result('SELECT')

Expand Down
18 changes: 18 additions & 0 deletions rdflib/plugins/sparql/results/graph.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from rdflib import Graph

from rdflib.query import (
Result,
ResultParser,
ResultSerializer,
ResultException
)

class GraphResultParser(ResultParser):

def parse(self, source, content_type):

res = Result('CONSTRUCT') # hmm - or describe?type_)
res.graph = Graph()
res.graph.parse(source, format=content_type)

return res
2 changes: 1 addition & 1 deletion rdflib/plugins/sparql/results/jsonresults.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

class JSONResultParser(ResultParser):

def parse(self, source):
def parse(self, source, content_type=None):
inp = source.read()
if isinstance(inp, binary_type):
inp = inp.decode('utf-8')
Expand Down
2 changes: 1 addition & 1 deletion rdflib/plugins/sparql/results/tsvresults.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@


class TSVResultParser(ResultParser):
def parse(self, source):
def parse(self, source, content_type=None):

if isinstance(source.read(0), binary_type):
# if reading from source returns bytes do utf-8 decoding
Expand Down
35 changes: 11 additions & 24 deletions rdflib/plugins/sparql/results/xmlresults.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,25 +37,18 @@

class XMLResultParser(ResultParser):

def parse(self, source):
def parse(self, source, content_type=None):
return XMLResult(source)


class XMLResult(Result):
def __init__(self, source):
def __init__(self, source, content_type=None):

xmlstring = source.read()

if isinstance(xmlstring, text_type):
xmlstring = xmlstring.encode('utf-8')
try:
parser = etree.XMLParser(huge_tree=True)
tree = etree.parse(BytesIO(xmlstring), parser)
tree = etree.parse(source, parser)
except TypeError:
tree = etree.fromstring(xmlstring)
except Exception as e:
log.exception("Error parsing XML results: %s"%xmlstring)
raise e
tree = etree.parse(source)

boolean = tree.find(RESULTS_NS_ET + 'boolean')
results = tree.find(RESULTS_NS_ET + 'results')
Expand All @@ -65,18 +58,11 @@ def __init__(self, source):
elif results is not None:
type_ = 'SELECT'
else:
g = Graph()
try:
g.parse(data=xmlstring)
if len(g) == 0:
raise
type_ = 'CONSTRUCT'

except:
raise ResultException(
"No RDF Graph, result-bindings or boolean answer found!")
raise ResultException(
"No RDF result-bindings or boolean answer found!")

Result.__init__(self, type_)

if type_ == 'SELECT':
self.bindings = []
for result in results:
Expand All @@ -90,10 +76,11 @@ def __init__(self, source):
'./%shead/%svariable' % (
RESULTS_NS_ET, RESULTS_NS_ET))]

elif type_ == 'ASK':
else:
self.askAnswer = boolean.text.lower().strip() == "true"
elif type_ == 'CONSTRUCT':
self.graph = g





def parseTerm(element):
Expand Down
Loading

0 comments on commit c2c0187

Please sign in to comment.