Spaces:
Running
Running
| from __future__ import annotations | |
| from dataclasses import dataclass | |
| from typing import Any | |
| import networkx as nx | |
| class KGEdge: | |
| src: str | |
| dst: str | |
| rel: str | |
| metadata: dict[str, Any] | |
| class L5KnowledgeGraph: | |
| """ | |
| MVP: in-process NetworkX graph. A Neo4j adapter can be added later. | |
| """ | |
| def __init__(self) -> None: | |
| self._g = nx.MultiDiGraph() | |
| def add_edge(self, *, src: str, dst: str, rel: str, metadata: dict[str, Any] | None = None) -> None: | |
| self._g.add_edge(src, dst, key=rel, rel=rel, **(metadata or {})) | |
| def neighbors(self, *, node: str) -> list[str]: | |
| if node not in self._g: | |
| return [] | |
| return list(self._g.successors(node)) | |