Spaces:
Runtime error
Runtime error
| import networkx as nx | |
| # Global in-memory graph | |
| academic_graph = nx.DiGraph() | |
| def add_paper_relation(source_paper: str, target_paper: str, relation_type: str = "cites"): | |
| """ | |
| Menambahkan hubungan antar paper ke Knowledge Graph. | |
| relation_type: cites, refutes, supports | |
| """ | |
| academic_graph.add_edge(source_paper, target_paper, relation=relation_type) | |
| return f"Berhasil memetakan: '{source_paper}' {relation_type} '{target_paper}'." | |
| def query_graph(paper_name: str): | |
| """ | |
| Mencari informasi paper dan siapa saja yang terkait dengannya di graph. | |
| """ | |
| if paper_name not in academic_graph: | |
| return f"Paper '{paper_name}' belum ada di dalam Knowledge Graph." | |
| successors = list(academic_graph.successors(paper_name)) | |
| predecessors = list(academic_graph.predecessors(paper_name)) | |
| result = f"Analisis Graph untuk '{paper_name}':\n" | |
| if successors: | |
| result += "Mempengaruhi/Mengutip:\n" | |
| for s in successors: | |
| rel = academic_graph[paper_name][s]['relation'] | |
| result += f" - [{rel}] -> {s}\n" | |
| if predecessors: | |
| result += "Dipengaruhi/Dikutip oleh:\n" | |
| for p in predecessors: | |
| rel = academic_graph[p][paper_name]['relation'] | |
| result += f" - {p} -> [{rel}]\n" | |
| if not successors and not predecessors: | |
| result += "Belum ada hubungan yang terpetakan." | |
| return result | |