news 2026/9/24 13:06:08

Neo4j查询语句写法举例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Neo4j查询语句写法举例

Neo4j查询语句写法举例

# -*- coding: utf-8 -*-frompy2neoimportGraph,Node,Relationship,NodeMatcher#版本说明:Py2neo v4classNeo4j_Handle():graph=Nonematcher=Nonedef__init__(self):print("Neo4j Init ...")defconnectDB(self):self.graph=Graph("bolt: // localhost:7687",username="neo4j",password="zhangzl")self.matcher=NodeMatcher(self.graph)#实体查询,用于命名实体识别:品牌+车系+车型defmatchEntityItem(self,value):answer=self.graph.run("MATCH (entity1) WHERE entity1.name = \""+value+"\" RETURN entity1").data()returnanswer#实体查询defgetEntityRelationbyEntity(self,value):#查询实体:不考虑实体类型,只考虑关系方向answer=self.graph.run("MATCH (entity1) - [rel] -> (entity2) WHERE entity1.name = \""+value+"\" RETURN rel,entity2").data()if(len(answer)==0):#查询实体:不考虑关系方向answer=self.graph.run("MATCH (entity1) - [rel] - (entity2) WHERE entity1.name = \""+value+" \" RETURN rel,entity2").data()print(answer)returnanswer#关系查询:实体1deffindRelationByEntity1(self,entity1):#基于品牌查询answer=self.graph.run("MATCH (n1:Bank {name:\""+entity1+"\"})- [rel] -> (n2) RETURN n1,rel,n2").data()#基于车系查询,注意此处额外的空格if(len(answer)==0):answer=self.graph.run("MATCH (n1:Serise {name:\""+entity1+" \"})- [rel] - (n2) RETURN n1,rel,n2").data()returnanswer#关系查询:实体2deffindRelationByEntity2(self,entity1):#基于品牌answer=self.graph.run("MATCH (n1)<- [rel] - (n2:Bank {name:\""+entity1+"\"}) RETURN n1,rel,n2").data()if(len(answer)==0):#基于车系answer=self.graph.run("MATCH (n1) - [rel] - (n2:Serise {name:\""+entity1+" \"}) RETURN n1,rel,n2").data()returnanswer#关系查询:实体1+关系deffindOtherEntities(self,entity,relation):answer=self.graph.run("MATCH (n1:Bank {name:\""+entity+"\"})- [rel:Subtype {type:\""+relation+"\"}] -> (n2) RETURN n1,rel,n2").data()returnanswer#关系查询:关系+实体2deffindOtherEntities2(self,entity,relation):print("findOtherEntities2==")print(entity,relation)answer=self.graph.run("MATCH (n1)- [rel:RELATION {type:\""+relation+"\"}] -> (n2:Bank {name:\""+entity+"\"}) RETURN n1,rel,n2").data()if(len(answer)==0):answer=self.graph.run("MATCH (n1)- [rel:RELATION {type:\""+relation+"\"}] -> (n2:Serise {name:\""+entity+" \"}) RETURN n1,rel,n2").data()returnanswer#关系查询:实体1+实体2(注意Entity2的空格)deffindRelationByEntities(self,entity1,entity2):#品牌 + 品牌answer=self.graph.run("MATCH (n1:Bank {name:\""+entity1+"\"})- [rel] -> (n2:Bank{name:\""+entity2+" \"}) RETURN n1,rel,n2").data()if(len(answer)==0):#品牌 + 系列answer=self.graph.run("MATCH (n1:Bank {name:\""+entity1+"\"})- [rel] -> (n2:Serise{name:\""+entity2+" \"}) RETURN n1,rel,n2").data()if(len(answer)==0):#系列 + 品牌answer=self.graph.run("MATCH (n1:Serise {name:\""+entity1+"\"})- [rel] -> (n2:Bank{name:\""+entity2+" \"}) RETURN n1,rel,n2").data()if(len(answer)==0):#系列 + 系列answer=self.graph.run("MATCH (n1:Serise {name:\""+entity1+"\"})- [rel] -> (n2:Serise{name:\""+entity2+" \"}) RETURN n1,rel,n2").data()returnanswer#查询数据库中是否有对应的实体-关系匹配softdeffindEntityRelation(self,entity1,relation,entity2):answer=self.graph.run("MATCH (n1:Bank {name:\""+entity1+"\"})- [rel:subbank {type:\""+relation+"\"}] -> (n2:Bank{name:\""+entity2+"\"}) RETURN n1,rel,n2").data()if(len(answer)==0):answer=self.graph.run("MATCH (n1:Bank {name:\""+entity1+"\"})- [rel:subbank {type:\""+relation+"\"}] -> (n2:Serise{name:\""+entity2+"\"}) RETURN n1,rel,n2").data()if(len(answer)==0):answer=self.graph.run("MATCH (n1:Serise {name:\""+entity1+"\"})- [rel:subbank {type:\""+relation+"\"}] -> (n2:Bank{name:\""+entity2+"\"}) RETURN n1,rel,n2").data()if(len(answer)==0):answer=self.graph.run("MATCH (n1:Serise {name:\""+entity1+"\"})- [rel:subbank {type:\""+relation+"\"}] -> (n2:Serise{name:\""+entity2+"\"}) RETURN n1,rel,n2").data()returnanswer
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 7:54:43

Dify + NPM 构建可复用AI组件库的方法论

Dify NPM 构建可复用AI组件库的方法论 在企业智能化转型的浪潮中&#xff0c;一个现实问题反复浮现&#xff1a;为什么同一个“智能客服问答”功能&#xff0c;在三个不同项目里被重复开发了三次&#xff1f;每次都要重新设计提示词、对接知识库、调试模型响应&#xff0c;不仅…

作者头像 李华
网站建设 2026/9/24 16:48:38

4、游戏开发中的对象操作、宏使用与资源管理

游戏开发中的对象操作、宏使用与资源管理 1. 解决问题的思路与宏的使用 在开发过程中,为了连接手部和手臂,至少需要两个新的容器对象。同时,可以创建一个硬纸板木偶娃娃类,其元素为继承自显示对象容器的类。 1.1 宏的解释 Sparrow 为常用颜色提供了简写常量,例如用 S…

作者头像 李华
网站建设 2026/9/24 23:04:10

29、Linux脚本编写与项目构建全解析

Linux脚本编写与项目构建全解析 1. 命令选项与格式优化 1.1 长短选项名称 在Linux命令行操作中,许多命令都同时具备短选项和长选项名称。以 ls 命令为例,以下两个命令是等价的: [me@linuxbox ~]$ ls -ad [me@linuxbox ~]$ ls --all --directory在命令行输入选项时,为…

作者头像 李华
网站建设 2026/9/24 23:04:04

35、流程控制与字符串数字处理

流程控制与字符串数字处理 1. for 循环 在流程控制中,for 循环是一种强大的工具,与 while 和 until 循环不同,它提供了在循环中处理序列的方法,在编程中非常实用,在 bash 脚本编写中也很受欢迎。在现代 bash 版本中,for 循环有两种形式。 1.1 传统 shell 形式 传统 f…

作者头像 李华
网站建设 2026/9/24 23:03:59

发明专利申请流程、申请资料

发明专利概述&#xff1a;发明是指人运用自然规律而研究提出用于解决某一特定问题的技术方案&#xff0c;中国专利法实施细中指出“专利法所称的发明是指对产品、方法或其改进所提出的新的技术方案”。中国专利法规定可以获得专利保护的发明创造有发明、实用新型和外观设计三种…

作者头像 李华
网站建设 2026/9/24 19:16:27

p-NCS-Bz-DOTA-GA(CAS号:2194580-71-5)用于金属离子标记与分离

一、化合物基础信息与结构特征 p-NCS-Bz-DOTA-GA&#xff08;CAS号&#xff1a;2194580-71-5&#xff09;是一种大环配体化合物&#xff0c;其分子式为C27H38N6O9S&#xff0c;分子量622.69。以1,4,7,10-四氮杂环十二烷-1,4,7,10-四乙酸&#xff08;DOTA&#xff09;为核心骨架…

作者头像 李华