Exemple #1
0
    def from_graph(graph, node, node_map):
        # type: (Graph, Node) -> iter
        if node in node_map:
            return node_map[node]

        try:
            e_node = list(graph.objects(node, MAP.mapsResourcesFrom)).pop()
        except IndexError:
            pass

        endpoint = Endpoint.from_graph(graph, e_node, node_map=node_map)

        am = AccessMapping(endpoint)

        try:
            for m in graph.objects(node, MAP.hasMapping):
                am.mappings.add(Mapping.from_graph(graph, m, node_map=node_map))
                am.__find_vars()
        except IndexError:
            pass

        try:
            am.order = list(graph.objects(node, MAP.order)).pop().toPython()
        except IndexError:
            pass

        node_map[node] = am
        return am
Exemple #2
0
    def from_graph(graph, node, node_map, **kwargs):
        # type: (Graph, Node, dict, dict) -> AccessMapping
        if node in node_map:
            return node_map[node]

        try:
            e_node = list(graph.objects(node, MAP.mapsResourcesFrom)).pop()
        except IndexError:
            endpoint = None
        else:
            endpoint = Endpoint.from_graph(graph, e_node, node_map=node_map)

        am = AccessMapping(endpoint)

        try:
            for m in graph.objects(node, MAP.hasMapping):
                am.mappings.add(
                    Mapping.from_graph(graph, m, node_map=node_map, **kwargs))
                am.__find_vars()
        except IndexError:
            pass

        try:
            am.order = list(graph.objects(node, MAP.order)).pop().toPython()
        except IndexError:
            pass

        try:
            am.id = list(graph.objects(node, CORE.identifier)).pop()
        except IndexError:
            pass

        node_map[node] = am
        return am
Exemple #3
0
def add_access_mapping(eco_gw, td_id, link):
    # type: (EcoGateway, basestring, basestring) -> AccessMapping
    td = eco_gw.get_description(td_id)
    if not td:
        raise NotFoundError(td_id)

    endpoint_hrefs = map(lambda e: u'{}'.format(e.href), td.endpoints)
    if link in endpoint_hrefs:
        raise ConflictError('Link already mapped')

    e = Endpoint(href=link)
    am = AccessMapping(e)
    td.add_access_mapping(am)
    g = td.to_graph(th_nodes={})

    eco_gw.learn_descriptions(g)
    return am
Exemple #4
0
    def clone(self, id=None, **kwargs):
        new = TD(self.__resource, id=id)
        new.__node = self.node
        for am in self.__access_mappings:
            am_end = am.endpoint
            href = am_end.evaluate_href(**{'$' + k: kwargs[k] for k in kwargs})
            e = Endpoint(href=href, media=am_end.media, whref=am_end.whref,
                         intercept=am_end.intercept)
            clone_am = AccessMapping(e)
            for m in am.mappings:
                clone_am.mappings.add(m)
            new.add_access_mapping(clone_am)
        for s in self.rdf_sources:
            new.add_rdf_source(s)

        for td in self.extends:
            new.__td_ext.add(td)
        return new
Exemple #5
0
 def from_uri(uri):
     e = Endpoint(href=uri, media="text/turtle")
     rdf_source = RDFSource(e)
     return rdf_source
Exemple #6
0
 def from_graph(graph, node, node_map):
     # type: (Graph, Node) -> iter
     endpoint = Endpoint.from_graph(graph, node, node_map=node_map)
     rsource = RDFSource(endpoint)
     return rsource