in RDFLib fängt Syntaxfehler ab, aber ich kann keine Möglichkeit finden, dass RDFLib semantische/statische Probleme (z. B. GROUP BY-Konflikte) vor der Ausführung auf einem Remote-Endpunkt kennzeichnet. translatorQuery wurde als strengere Prüfung vorgeschlagen, aber es scheint nicht in den Fällen zu kommen, die ich erwarten würde. Selbst das Ausführen der Abfrage für ein leeres Diagramm erzeugt keine Ausnahme.
Code: Select all
from rdflib import Graph
from rdflib.plugins.sparql.parser import parseQuery
from rdflib.plugins.sparql.algebra import translateQuery
q = """SELECT ?s WHERE {
?s ?p ?o .
}
GROUP BY ?nonexistent"""
ast = parseQuery(q) # succeeds (syntax OK)
algebra = translateQuery(ast) # also succeeds...!?
g = Graph()
for row in g.query(q): # runs on empty graph; no exception...!?
print(row)
Wenn die SPARQL-Abfrage auf einem Blazegraph-basierten Endpunkt ausgeführt wird, gibt es – wie erwartet – den Fehler „Ungültiges Aggregat“.