CREATE (p1:Person {name: '孙悟空', title: '齐天大圣'}) CREATE (p2:Person {name: '唐僧', title: '师傅'}) CREATE (p1)-[:PROTECT {role: '保镖'}]->(p2) RETURN p1, p2
from neo4j import GraphDatabase class KnowledgeGraph: def __init__(self, uri, user, password): """ 连接 Neo4j 数据库 """ self.driver = GraphDatabase.driver(uri, auth=(user, password)) def close(self): """ 关闭连接 """ self.driver.close() def create_node_and_relationship(self, person1, relation, person2): """ 创建节点和关系 使用 MERGE 关键字,保证节点不被重复创建 """ with self.driver.session() as session: # Cypher 语句说明: # 1. 查找或创建名为 person1 的节点 # 2. 查找或创建名为 person2 的节点 # 3. 建立两者之间的关系" MERGE (p1:Character {name: $name1}) MERGE (p2:Character {name: $name2}) MERGE (p1)-[r:RELATION {type: $rel}]->(p2) RETURN p1, p2, r """ session.run(query, name1=person1, name2=person2, rel=relation) print(f"成功构建:{person1} --[{relation}]--> {person2}") def clear_data(self): """ (可选) 清空数据库,方便测试 """ with self.driver.session() as session: session.run("MATCH (n) DETACH DELETE n") print("数据库已清空!") # --- 主程序执行 --- if __name__ == "__main__": # 1. 配置数据库连接 (请修改你的密码) URI = "bolt://localhost:7687" USER = "neo4j" PASSWORD = "123456" # 替换为你自己的密码 # 2. 准备数据 (模拟从 Excel 读取的数据) data = [ ("唐僧", "师徒", "孙悟空"), ("唐僧", "师徒", "猪八戒"), ("唐僧", "师徒", "沙僧"), ("孙悟空", "师兄弟", "猪八戒"), ("孙悟空", "师兄弟", "沙僧"), ("孙悟空", "结拜兄弟", "牛魔王"), ("牛魔王", "夫妻", "铁扇公主"), ("铁扇公主", "母子", "红孩儿") ] # 3. 开始构建 kg = KnowledgeGraph(URI, USER, PASSWORD) try: # 先清空旧数据,防止重复 kg.clear_data() print("开始构建知识图谱...") for p1, rel, p2 in data: kg.create_node_and_relationship(p1, rel, p2) print("\n图谱构建完成!请去 Neo4j Browser 查看效果。") except Exception as e: print(f"发生错误: {e}") finally: kg.close()