def retrieve_subgraph(G, query): query = query.lower() context = [] for node in G.nodes(data=True): node_name = node[0].lower() if ( query in node_name or node_name in query ): for neighbor in G.neighbors(node[0]): edge = G[node[0]][neighbor] context.append( f"{node[0]} --{edge.get('relation','related_to')}--> {neighbor}" ) return "\n".join(context) #test from graph_builder import load_graph if __name__ == "__main__": G = load_graph() result = retrieve_subgraph( G, "Python" ) print(result)