Example #1
0
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:
Example #2
0
        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
                                    }""")