当前位置: 首页 > news >正文

分别使用Cypher与python构建neo4j图谱

Cypher /ˈsaɪ.fər/ 赛佛儿语言

  • Cypher 是 Neo4j 图数据库的 声明式查询语言

  • 用来 创建节点、关系、查询图、更新或删除数据。

  • 语法上有点类似 SQL,但面向 图模型(节点、边、属性)。

Neo4j 增删改查:
增:
增加一个节点
create (n:Person {name:'',age:31})
带有关系属性
create (p:Person{name:" ",age:"31"})-[: 包 工 程 { 金 额 :10000}]->(n:Person{name:" 好 大 哥
",age:"35"})
create (n:Person {name:'TYD',age:31})
match (n:Person{name:"TYD"}) delete n
删除关系
match (p:Person{name:"",age:"31"})-[f:包工程]->(n:Person{name:"好大哥",age:"35"})
delete f
改:
加上标签
match (t:Person) where id(t)=789 set t:好人 return t
加上属性
match (a:好人) where id(a)=789 set a.战斗力=200 return a
修改属性
match (a:好人) where id(a)=789 set a.战斗力=500 return a
查:(查操作太多啦,直接参考 neo4j 例子就好)
match (p:Person) - [:包工程] -> (n:Person) return p,n
快速清空数据库:
MATCH (n)
DETACH DELETE n

 上一篇博客中的demo

python与neo4j结合处理excel中的数据创建图谱

# -*- coding: utf-8 -*-
from py2neo import Node, Graph, Relationship,NodeMatcherclass DataToNeo4j(object):"""将excel中数据存入neo4j"""def __init__(self):
一、连接图谱,定义标签"""建立连接"""link = Graph("bolt://localhost:7687", auth=("neo4j", "weixuanlv0304"))self 指向 刚才连接好的图self.graph = link#self.graph = NodeMatcher(link)# 定义labelself.buy = 'buy'self.sell = 'sell'self.graph.delete_all()self.matcher = NodeMatcher(link)"""
二、简单创建结点已经边关系1、创建结点node3 = Node('animal' , name = 'cat')node4 = Node('animal' , name = 'dog')  node2 = Node('Person' , name = 'Alice')node1 = Node('Person' , name = 'Bob')  2、创建边           结点2    关系     结点1r1 = Relationship(node2 , 'know' , node1)    r2 = Relationship(node1 , 'know' , node3) r3 = Relationship(node2 , 'has' , node3) r4 = Relationship(node4 , 'has' , node2)    3、create 将结点和边添加到这个图中self.graph.create(node1)self.graph.create(node2)self.graph.create(node3)self.graph.create(node4)self.graph.create(r1)self.graph.create(r2)self.graph.create(r3)self.graph.create(r4)"""三、利用函数在图中创建实体结点def create_node(self, node_buy_key,node_sell_key):"""建立节点"""创建购买方结点for name in node_buy_key:buy_node = Node(self.buy, name=name)self.graph.create(buy_node)创建售卖方结点for name in node_sell_key:sell_node = Node(self.sell, name=name)self.graph.create(sell_node)def create_relation(self, df_data):"""建立联系"""      m = 0for m in range(0, len(df_data)):try:    print(list(self.matcher.match(self.buy).where("_.name=" + "'" + df_data['buy'][m] + "'")))print(list(self.matcher.match(self.sell).where("_.name=" + "'" + df_data['sell'][m] + "'")))rel = Relationship(self.matcher.match(self.buy).where("_.name=" + "'" + df_data['buy'][m] + "'").first(),df_data['money'][m], self.matcher.match(self.sell).where("_.name=" + "'" + df_data['sell'][m] + "'").first())self.graph.create(rel)except AttributeError as e:print(e, m)

http://www.lryc.cn/news/591188.html

相关文章:

  • Mysql测试题
  • 网络爬虫的介绍
  • 【前沿技术动态】【AI总结】Spring Boot 4.0 预览版深度解析:云原生时代的新里程碑
  • 比特币技术简史 第三章:区块链技术 - 区块结构、链式结构与工作量证明
  • Spark 之 HashJoin
  • CDSS系统升级“可视化解释-智能反馈-临床语言“三位一体设计架构设计分析
  • (自用)补充说明2
  • 【组件库】VanillaTilt.js使用教程和配置项说明
  • C++ AVL树实现详解:平衡二叉搜索树的原理与代码实现
  • 【Python练习】046. 编写一个函数,检查一个数组是否是排序的
  • 算法学习笔记:27.堆排序(生日限定版)——从原理到实战,涵盖 LeetCode 与考研 408 例题
  • 【agent实战】基于 LangGraph 实现 Agentic RAG:原理、实战与创新全解
  • Java集合处理库——collection-complete
  • React Native 基础tabBar和自定义tabBar - bottom-tabs
  • React hooks——useMemo
  • Android离线TTS实战——集成espeak-ng实现开箱即用的中文语音播报
  • Flutter:上传图片,选择相机或相册:wechat_assets_picker
  • 玖[9],相机/镜头/光源
  • 2021-07-21 VB窗体求范围质数(Excel复制工作簿)
  • Java使用FastExcel实现模板写入导出(多级表头)
  • 在Anaconda Prompt中安装库【保姆教程】
  • 使用flock单进程启动,仍然有多个同名进程可以同时运行
  • 苹果的机器学习框架将支持英伟达的CUDA平台
  • web后端开发(javaweb第十天)
  • 【后端】Linux系统发布.NetCore项目
  • suricata新增Mysql告警规则处理
  • Zemax坐标断点
  • GitHub开源轻量级语音模型 Vui:重塑边缘智能语音交互的未来
  • 【git 如何查看本地分支与远程分支之间的差异】
  • Oracle11.2.0.4 RAC迁移升级Oracle19.3 RAC