Source code for langchain_community.graphs.tigergraph_graph

from typing import Any, Dict, List, Optional

from langchain_community.graphs.graph_store import GraphStore


[docs]class TigerGraph(GraphStore): """TigerGraph图操作的包装器。 *安全提示*:确保数据库连接使用的凭据范围狭窄,仅包括必要的权限。 如果未这样做,可能会导致数据损坏或丢失,因为调用代码可能会尝试执行会导致删除、变异数据(如果适当提示)或读取敏感数据(如果数据库中存在此类数据)的命令。 防范这些负面结果的最佳方法是(根据情况)限制授予此工具使用的凭据的权限。 有关更多信息,请参见 https://python.langchain.com/docs/security。"""
[docs] def __init__(self, conn: Any) -> None: """创建一个新的TigerGraph图包装器实例。""" self.set_connection(conn) self.set_schema()
@property def conn(self) -> Any: return self._conn @property def schema(self) -> Dict[str, Any]: return self._schema
[docs] def get_schema(self) -> str: # type: ignore[override] if self._schema: return str(self._schema) else: self.set_schema() return str(self._schema)
[docs] def set_connection(self, conn: Any) -> None: try: from pyTigerGraph import TigerGraphConnection except ImportError: raise ImportError( "Could not import pyTigerGraph python package. " "Please install it with `pip install pyTigerGraph`." ) if not isinstance(conn, TigerGraphConnection): msg = "**conn** parameter must inherit from TigerGraphConnection" raise TypeError(msg) if conn.ai.nlqs_host is None: msg = """**conn** parameter does not have nlqs_host parameter defined. Define hostname of NLQS service.""" raise ConnectionError(msg) self._conn: TigerGraphConnection = conn self.set_schema()
[docs] def set_schema(self, schema: Optional[Dict[str, Any]] = None) -> None: """设置TigerGraph数据库的模式。 如果 **schema** 为None,则自动生成模式。 """ self._schema = self.generate_schema() if schema is None else schema
[docs] def generate_schema( self, ) -> Dict[str, List[Dict[str, Any]]]: """生成TigerGraph数据库的模式并返回 用户可以指定一个 **sample_ratio** (0到1)来确定 用于呈现每个Collection模式的文档/边的比例 (相对于Collection大小)。 """ return self._conn.getSchema(force=True)
[docs] def refresh_schema(self): # type: ignore[no-untyped-def] self.generate_schema()
[docs] def query(self, query: str) -> Dict[str, Any]: # type: ignore[override] """查询TigerGraph数据库。""" answer = self._conn.ai.query(query) return answer
[docs] def register_query( self, function_header: str, description: str, docstring: str, param_types: dict = {}, ) -> List[str]: """ 包装函数,用于将自定义的GSQL查询注册到TigerGraph NLQS。 """ return self._conn.ai.registerCustomQuery( function_header, description, docstring, param_types )