def train(cls, graph_data: GraphData or str or Path, *properties): """ train the kg name searcher model from a graph data object by specifying name properties. :param properties: the properties that need to be searched on, could be more than one. e.g., "name","qualified_name","labels_en" :param graph_data:the path of graph data. :return: """ # todo: add some config arguments, to control whether lower the case, split the words. if graph_data == None: raise Exception("Input GraphData object not exist") graph_data_source = None if type(graph_data) == str: graph_data_source: GraphData = GraphData.load(graph_data) if type(graph_data) == Path: graph_data_source: GraphData = GraphData.load(str(graph_data)) if type(graph_data) == GraphData: graph_data_source = graph_data if graph_data_source is None: raise Exception("can't find the graph data") searcher = cls() searcher.start_training(graph_data_source, *properties) return searcher
def load_graph(self, graph_data_path): self.__graph_data = GraphData.load(graph_data_path) # update component graph data for component_name in self.__component_order: component: Component = self.__name2component[component_name] component.set_graph_data(self.__graph_data) print("load graph")
def test_save_and_load(self): graph_data = GraphData() graph_data.create_index_on_property("qualified_name", "alias") graph_data.add_node({"method"}, {"qualified_name": "ArrayList.add"}) graph_data.add_node({"override method"}, {"qualified_name": "ArrayList.pop"}) graph_data.save("test.graph") graph_data: GraphData = GraphData.load("test.graph") self.assertEqual(graph_data.get_node_num(), 2)