Source code for rdfextras.sparql.processor


import rdfextras.sparql.parser

from rdfextras.sparql.algebra import TopEvaluate
from rdflib import RDFS, RDF, OWL
from rdflib.query import Processor
from rdfextras.sparql.components import Query, Prolog

[docs]class Processor(Processor):
def __init__(self, graph): self.graph = graph def query(self, strOrQuery, initBindings={}, initNs={}, DEBUG=False, PARSE_DEBUG=False, dataSetBase=None, extensionFunctions={}, USE_PYPARSING=False, dSCompliance=False, loadContexts=False): initNs.update({u'rdfs':RDFS.uri, u'owl':str(OWL), u'rdf':RDF.uri}) assert isinstance(strOrQuery, (basestring, Query)),"%s must be a string or an rdfextras.sparql.components.Query instance"%strOrQuery if isinstance(strOrQuery, basestring): strOrQuery = rdfextras.sparql.parser.parse(strOrQuery) if not strOrQuery.prolog: strOrQuery.prolog = Prolog(None, []) strOrQuery.prolog.prefixBindings.update(initNs) else: for prefix, nsInst in initNs.items(): if prefix not in strOrQuery.prolog.prefixBindings: strOrQuery.prolog.prefixBindings[prefix] = nsInst return TopEvaluate(strOrQuery, self.graph, initBindings, DEBUG=DEBUG, dataSetBase=dataSetBase, extensionFunctions=extensionFunctions, dSCompliance=dSCompliance, loadContexts=loadContexts)