def add_edge(self, source, target, label): self._G.add_edge(source, target, label=label) t = penman.Triple(source=source.identifier, relation=label, target=target.identifier) triples = self._triples + [t] triples = penman.alphanum_order(triples) self._update_penman_graph(triples)
def replace_node_attribute(self, node, attr, old, new): node.replace_attribute(attr, old, new) triples = [] found = False for t in self._triples: if t.source == node.identifier and t.relation == attr and t.target == old: found = True t = penman.Triple(source=node.identifier, relation=attr, target=new) triples.append(t) if not found: raise KeyError self._triples = penman.alphanum_order(triples)
def add_node(self, instance): identifier = instance[0] assert identifier.isalpha() if identifier in self.variables(): i = 2 while identifier + str(i) in self.variables(): i += 1 identifier += str(i) triples = self._triples + [Triple(identifier, 'instance', instance)] self._triples = penman.alphanum_order(triples) node = AMRNode(identifier, [('instance', instance)]) self._G.add_node(node) return node
def add_node_attribute(self, node, attr, value): node.add_attribute(attr, value) t = penman.Triple(source=node.identifier, relation=attr, target=value) self._triples = penman.alphanum_order(self._triples + [t])
def __str__(self): self._triples = penman.alphanum_order(self._triples) return amr_codec.encode(self)