File size: 788 Bytes
c9f1afa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# src/memory/semantic_memory/graph_db/base.py
from abc import ABC, abstractmethod
from typing import Dict, List, Optional, Any
from pydantic import BaseModel

class Node(BaseModel):
    id: str
    type: str
    properties: Dict[str, Any]

class Relationship(BaseModel):
    source_id: str
    target_id: str
    type: str
    properties: Dict[str, Any] = {}

class GraphDatabase(ABC):
    @abstractmethod
    def create_node(self, node: Node) -> None:
        pass
    
    @abstractmethod
    def get_node(self, node_id: str) -> Optional[Node]:
        pass
    
    @abstractmethod
    def create_relationship(self, rel: Relationship) -> None:
        pass
    
    @abstractmethod
    def find_nodes(self, labels: List[str] = None, properties: Dict = None) -> List[Node]:
        pass