| from langchain_community.graphs.graph_document import ( | |
| Node as BaseNode, | |
| Relationship as BaseRelationship, | |
| ) | |
| from langchain.schema import Document | |
| from typing import List, Dict, Any, Optional | |
| from langchain.pydantic_v1 import Field, BaseModel | |
| class Property(BaseModel): | |
| """A single property consisting of key and value""" | |
| key: str = Field(..., description="key") | |
| value: str = Field(..., description="value") | |
| class Node(BaseNode): | |
| properties: Optional[List[Property]] = Field( | |
| None, description="List of node properties") | |
| class Relationship(BaseRelationship): | |
| properties: Optional[List[Property]] = Field( | |
| None, description="List of relationship properties" | |
| ) | |
| class KnowledgeGraph(BaseModel): | |
| """Generate a knowledge graph with entities and relationships.""" | |
| nodes: List[Node] = Field(..., description="List of nodes in the knowledge graph") | |
| rels: List[Relationship] = Field(..., description="List of relationships in the knowledge graph") |