def handle_sentence(self, sentence): """Creates a `TigerGraph` for a sentence specification and feeds it to the indexer.""" graph = TigerGraph(sentence.get("id")) graph_elem = sentence.find("graph") self._read_nodes(graph_elem.getiterator("t"), graph.nodes, TerminalNode, self._postproc_terminal) self._read_nodes(graph_elem.getiterator("nt"), graph.nodes, NonterminalNode, self._postproc_nonterminal) graph.root_id = graph_elem.get("root") self._indexer.add_graph(graph) return self.DELETE_BRANCH
def deserialize_graph(self, graph_id, graph_data_buffer): graph = TigerGraph(graph_id) up = cPickle.Unpickler( cStringIO.StringIO(zlib.decompress(graph_data_buffer))) graph.root_id = up.load() data = up.load() for i in xrange(0, len(data), 3): node = NonterminalNode(data[i]) node.features = self._get_features(self._nt_features, data[i + 1]) node.edges = self._get_edge_list(data[i + 2], self._edge_label_rmap) graph.nodes[node.id] = node data = up.load() for i in xrange(0, len(data), 3): node = TerminalNode(data[i]) node.features = self._get_features(self._t_features, data[i + 1]) node.order = data[i + 2] graph.nodes[node.id] = node data = up.load() for i in xrange(0, len(data), 4): node = NonterminalNode(data[i]) node.features = self._get_features(self._nt_features, data[i + 1]) node.edges = self._get_edge_list(data[i + 2], self._edge_label_rmap) node.secedges = self._get_edge_list(data[i + 3], self._secedge_label_rmap) graph.nodes[node.id] = node data = up.load() for i in xrange(0, len(data), 4): node = TerminalNode(data[i]) node.features = self._get_features(self._t_features, data[i + 1]) node.order = data[i + 2] node.secedges = self._get_edge_list(data[i + 3], self._secedge_label_rmap) graph.nodes[node.id] = node return graph
def deserialize_graph(self, graph_id, graph_data_buffer): graph = TigerGraph(graph_id) up = cPickle.Unpickler(cStringIO.StringIO(zlib.decompress(graph_data_buffer))) graph.root_id = up.load() data = up.load() for i in xrange(0, len(data), 3): node = NonterminalNode(data[i]) node.features = self._get_features(self._nt_features, data[i+1]) node.edges = self._get_edge_list(data[i+2], self._edge_label_rmap) graph.nodes[node.id] = node data = up.load() for i in xrange(0, len(data), 3): node = TerminalNode(data[i]) node.features = self._get_features(self._t_features, data[i+1]) node.order = data[i+2] graph.nodes[node.id] = node data = up.load() for i in xrange(0, len(data), 4): node = NonterminalNode(data[i]) node.features = self._get_features(self._nt_features, data[i+1]) node.edges = self._get_edge_list(data[i+2], self._edge_label_rmap) node.secedges = self._get_edge_list(data[i+3], self._secedge_label_rmap) graph.nodes[node.id] = node data = up.load() for i in xrange(0, len(data), 4): node = TerminalNode(data[i]) node.features = self._get_features(self._t_features, data[i+1]) node.order = data[i+2] node.secedges = self._get_edge_list(data[i+3], self._secedge_label_rmap) graph.nodes[node.id] = node return graph