# 图数据库核心功能模块

本模块提供了与Neo4j图数据库交互的核心功能，包括连接、查询和数据操作。

## 功能概述

图数据库核心模块是整个系统的基础设施之一，负责处理所有与图数据库相关的底层操作。它提供了一组工具函数，用于执行常见的图数据库操作，如节点和关系的创建、查询和子图提取等。

## 主要功能

### 1. 数据库连接 (connect_graph)

提供了与Neo4j图数据库建立连接的功能，支持配置化连接参数。

### 2. 节点操作 (create_or_get_node)

创建具有给定标签和属性的新节点或获取现有节点，支持节点属性的更新。如果节点已存在（通过ID匹配），则更新节点属性。

### 3. 关系操作 (create_relationship)

在两个节点之间创建关系，支持定义关系类型和属性。

### 4. 子图提取 (get_subgraph)

根据指定的起始节点、关系类型和深度，提取子图数据。返回的数据包括节点和关系的集合，可直接用于前端图形可视化。

### 5. Cypher查询执行 (execute_cypher_query)

执行自定义的Cypher查询，支持参数化查询，并处理查询结果为标准格式。可处理各种类型的查询结果，包括节点、关系和路径。

## 技术实现

本模块主要基于py2neo和neo4j-python-driver，实现了对Neo4j图数据库的访问。主要技术点包括：

- 数据库连接与会话管理
- Cypher查询构建与执行
- 查询结果序列化与转换
- 异常处理与日志记录

## 使用方法

```python
from app.core.graph import connect_graph, create_or_get_node, execute_cypher_query

# 创建节点
node_id = create_or_get_node('Person', name='张三', age=30)

# 执行查询
cypher = "MATCH (n:Person) WHERE n.name = $name RETURN n"
results = execute_cypher_query(cypher, {'name': '张三'})

# 获取子图
from app.core.graph import get_subgraph
graph_data = get_subgraph([node_id], ['KNOWS', 'WORKS_WITH'], max_depth=2)
```

## 依赖项

- neo4j: 图数据库核心驱动
- Config: 系统配置模块，提供数据库连接参数 