|
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") |