class TripleStore(object): """ A root object to supply store connectivity to view code """ def __init__(self, request): self.request = request q = self.request.registry.queryUtility self.logger = q(IDebugLogger) if self.request.registry.settings: if (self.request.registry.settings.get('store_type',None) == 'talis'): # Configure a connection to the talis store self.store = Talis(self.request.registry.settings['talis_store'], self.request.registry.settings['talis_user'], self.request.registry.settings['talis_password']) self.debug_sparql = self.request.registry.settings['debug_sparql'] else: self.store = Graph() self.debug_sparql = False else: self.store = Graph() self.debug_sparql = False def query(self, sparql, format='json'): if self.debug_sparql: msg = (sparql) self.logger and self.logger.debug(msg) #if isinstance(self.store, Graph) and "DESCRIBE" in sparql: # """ rdflib currently requires a hack for describe queries involving literals """ # res = [x for x in self.store if not 'http://plings.net/' in str(x[0])] ## import pdb # pdb.set_trace() #else: res = self.store.query(sparql) # If we're working with a local rdflib graph we'll need to delve to get the results if isinstance(res, SPARQLQueryResult): return res.result else: return res def sync(self): if self.request.registry.settings['store_type'] == 'talis': self.store.sync() else: pass