log = logging.getLogger('sdh.curator.actions.query') class QueryPlugin(FragmentPlugin): @property def sink_class(self): return QuerySink def consume(self, fid, (c, s, p, o), graph, *args): pass def complete(self, fid, *args): pass FragmentPlugin.register(QueryPlugin) class QueryRequest(FragmentRequest): def __init__(self): super(QueryRequest, self).__init__() def _extract_content(self): super(QueryRequest, self)._extract_content() q_res = self._graph.query("""SELECT ?node WHERE { ?node a curator:QueryRequest . }""") q_res = list(q_res) if len(q_res) != 1:
if sink.stream: log.debug('[{}] Streaming fragment triple...'.format(sink.request_id)) reply((c, s.n3(), p.n3(), o.n3()), headers={'source': 'stream'}, **sink.recipient) def complete(self, fid, *args): sink = args[0] sink.stream = False if sink.delivery == 'streaming': log.debug('Sending end stream signal after {}'.format(sink.delivery)) sink.delivery = 'sent' reply((), headers={'state': 'end'}, **sink.recipient) log.info('Stream of fragment {} for request {} is done'.format(fid, sink.request_id)) FragmentPlugin.register(StreamPlugin) class StreamRequest(FragmentRequest): def __init__(self): super(StreamRequest, self).__init__() def _extract_content(self): super(StreamRequest, self)._extract_content() q_res = self._graph.query("""SELECT ?node WHERE { ?node a curator:StreamRequest . }""") q_res = list(q_res) if len(q_res) != 1:
target = e.target links = dict(map(lambda (l, v): (v, l), e.links)) var_label = str(list(graph.objects(var_candidate, RDFS.label))[0]) if var_label in links: link = links[var_label] if (target, link, s) not in cache.get_context('#enrichment'): e.set_link(link) cache.get_context('#enrichment').add((target, link, s)) print u'{} {} {} .'.format(target.n3(), link.n3(graph.namespace_manager), s.n3()) def complete(self, fid, *args): # TODO: check if all links are set pass FragmentPlugin.register(EnrichmentPlugin) class EnrichmentRequest(FragmentRequest): def __init__(self): super(EnrichmentRequest, self).__init__() self._target_resource = None self._target_links = set([]) def _extract_content(self): super(EnrichmentRequest, self)._extract_content() q_res = self._graph.query("""SELECT ?node ?t WHERE { ?node a curator:EnrichmentRequest; curator:targetResource ?t }""")