python 编写的 neo4j 三元组是否存在的判定函数

文章介绍了在使用Python构建知识图谱时如何通过Neo4jCypher查询来检查节点、标签和关系是否已存在,以避免重复添加。提供了三个函数:`lblExist`用于检查标签,`nodeExist`检查节点,`relExist`检查关系。
摘要由CSDN通过智能技术生成

在用python 编码构建知识图谱的时候,要向neo4j中增加节点、关系和标签,但neo4j本身默认没有数据库的那种“关键字”的概念,就会重复添加,下面的代码可以检查这些元素是否已经存在,分享一下:

#判断标签(本体类)是否存在
def lblExist(lbl):
    cql = "MATCH (n:%s) RETURN count(n)"%(lbl)
    ret = ng.run(cql)
    for x in ret.data():
        if x['count(n)'] > 0:
            print('节点已经存在.........')
            return True
        else:
            return False

#判断节点是否存在
def nodeExist(lbl, node):
    cql = "MATCH(n:%s {name:'%s'}) return count(n)"%(lbl, node)
    ret = ng.run(cql)
    for x in ret.data():
        if x['count(n)'] > 0:
            print('节点已经存在.........')
            return True
        else:
            return False

#判断关系是否存在 sl主词的标签,el宾词的标签,sp主词,rel关系,ep宾词
def relExist(sl, el, sp ,rel, ep):
    cql = "MATCH(n: %s{name:'%s'}), (n1: %s{name:'%s'}), p = (n) - [r:%s] -> (n1) return count(p)"%(sl[len(names):],sp,el,ep,rel)
    ret = ng.run(cql)
    for x in ret.data():
        if x['count(p)'] >0:
            print('关系已经存在........')
            return True
        else:
            return False
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值