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
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
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
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
def from_uri(uri): e = Endpoint(href=uri, media="text/turtle") rdf_source = RDFSource(e) return rdf_source
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