Source code for camel.storages.graph_storages.base
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ========= Copyright 2023-2024 @ CAMEL-AI.org. All Rights Reserved. =========
from abc import ABC, abstractmethod
from typing import Any, Dict, List, Optional
[docs]
class BaseGraphStorage(ABC):
r"""An abstract base class for graph storage systems."""
@property
@abstractmethod
def get_client(self) -> Any:
r"""Get the underlying graph storage client."""
pass
@property
@abstractmethod
def get_schema(self) -> str:
r"""Get the schema of the graph storage"""
pass
@property
@abstractmethod
def get_structured_schema(self) -> Dict[str, Any]:
r"""Get the structured schema of the graph storage"""
pass
[docs]
@abstractmethod
def refresh_schema(self) -> None:
r"""Refreshes the graph schema information."""
pass
[docs]
@abstractmethod
def add_triplet(self, subj: str, obj: str, rel: str) -> None:
r"""Adds a relationship (triplet) between two entities in the database.
Args:
subj (str): The identifier for the subject entity.
obj (str): The identifier for the object entity.
rel (str): The relationship between the subject and object.
"""
pass
[docs]
@abstractmethod
def delete_triplet(self, subj: str, obj: str, rel: str) -> None:
r"""Deletes a specific triplet from the graph, comprising a subject,
object and relationship.
Args:
subj (str): The identifier for the subject entity.
obj (str): The identifier for the object entity.
rel (str): The relationship between the subject and object.
"""
pass
[docs]
@abstractmethod
def query(
self, query: str, params: Optional[Dict[str, Any]] = None
) -> List[Dict[str, Any]]:
r"""Query the graph store with statement and parameters.
Args:
query (str): The query to be executed.
params (Optional[Dict[str, Any]]): A dictionary of parameters to
be used in the query. Defaults to `None`.
Returns:
List[Dict[str, Any]]: A list of dictionaries, each
dictionary represents a row of results from the query.
"""
pass