Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >图重构-重复关系重构

图重构-重复关系重构

作者头像
马超的博客
发布于 2022-07-04 06:23:54
发布于 2022-07-04 06:23:54
91000
代码可运行
举报
文章被收录于专栏:马超的博客马超的博客
运行总次数:0
代码可运行

今天看到社区有人提问如何进行关系重构,顺手回答了一下。在此记录下关系重构的方法。

- 创建测试数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MERGE (A:Test {name:'A'})
MERGE (B:Test {name:'B'})
CREATE (A)-[:Realation {name:'属性1'}]->(B)
CREATE (A)-[:Realation {name:'属性1'}]->(B)
CREATE (A)-[:Realation {name:'属性2'}]->(B)
CREATE (A)-[:Realation {name:'属性2'}]->(B)
CREATE (A)-[:Realation {name:'属性2'}]->(B)
CREATE (A)-[:Realation {name:'属性3'}]->(B)

- 查询测试数据

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH p=(A:Test {name:'A'})-->(B:Test {name:'B'}) RETURN p

- 如何重构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
想请教下大佬,如何删除两个节点间的重复关系,重复的定义指的是,关系的属性不同
比如
(A)-[:Realation{name:‘属性1]-(B)
(A)-[:Realation{name:‘属性1]-(B)
(A)-[:Realation{name:‘属性2]-(B)
(A)-[:Realation{name:‘属性2]-(B)
(A)-[:Realation{name:‘属性2]-(B)
(A)-[:Realation{name:‘属性3]-(B)
想把重复的部分去掉,就是变成
(A)-[:Realation{name:‘属性1]-(B)
(A)-[:Realation{name:‘属性2]-(B)
(A)-[:Realation{name:‘属性3]-(B)

- 重构关系

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
MATCH p=(A:Test {name:'A'})-[r]->(B:Test {name:'B'})
WITH ID(r) AS id,r.name AS name
WITH name,COLLECT(id) AS relIds
WITH name,relIds,SIZE(relIds) AS relIdsSize
WHERE relIdsSize>1
WITH name,apoc.coll.subtract(relIds, [relIds[0]]) AS deleteRelIds
WITH name,deleteRelIds
MATCH ()-[r]-() WHERE ID(r) IN deleteRelIds DELETE r

- 重构结果

- 更多复杂重构可以使用下面的存储过程实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CALL apoc.do.case([relationship=1,\'MATCH (from:Label {hcode:$fromHcode}),(to:Label {hcode:$toHcode}) MERGE (from)-[:NEXT]->(to)\',relationship=-1,\'MATCH (from:Label {hcode:$fromHcode}),(to:Label {hcode:$toHcode}) MERGE (from)<-[:NEXT]-(to)\'],\'\',{fromHcode:fromHcode,toHcode:toHcode}) YIELD value RETURN value

- 社区问答连接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://neo4j.com.cn/topic/5f3b28e4a4477ec754d2b55f

- 推荐一下lyonwj的博客

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.lyonwj.com/
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马超的博客 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Neo4j-APOC扩展与使用
备注:本文APOC是基于Neo4j3.5版本进行安装,原因在于本地电脑的Java版本为1.8
用户2225445
2022/11/12
4K0
Neo4j-APOC扩展与使用
同构图与异构图CYPHER-TASK设计与TASK锁机制
•每个任务都需要获取锁然后执行数据构建逻辑,不管构建逻辑是否成功执行TASK结束时必须释放锁•[NODE-TASK]负责锁的node_check-point更新以及后续任务的rel_check_point同步•[REL-TASK]负责node_check-point的回滚和任务状态同步rel_check_point=node_check_point
马超的博客
2022/07/04
6750
使用Neo4j和LangChain实现“Local to Global”的GraphRAG
GraphRAG是一种基于知识图谱的检索增强技术。它使用多来源数据构建图模型的知识表达,将实体和关系之间的联系以图的形式展示,然后利用大语言模型进行检索增强。这种方法能更高效准确地检索相关信息,并为LLM生成响应提供更好的上下文。微软和领英的技术人员已经科学的验证了这种技术相较于基线 RAG 的优势,并发表了相关论文。
马超的博客
2024/07/15
3.3K0
使用Neo4j和LangChain实现“Local to Global”的GraphRAG
喂饭教程!全网首发Neo4J可视化GraphRAG索引
GraphRAG通过结合知识图谱,增加RAG的全局检索能力。今天我将讲解如何使用Neo4J可视化GraphRAG索引的结果,以便进一步的处理、分析。本篇仍然以小说《仙逆》提取的实体为例,一图胜千言。本文分为4小节,安装neo4j、导入GraphRAG索引文件、Neo4J可视化分析和总结,所有坑都已经帮你趟过啦,放心食用。
AgenticAI
2025/03/18
3882
喂饭教程!全网首发Neo4J可视化GraphRAG索引
如何用Neo4j和Scikit-Learn做机器学习任务?| 附超详细分步教程
图算法不是一个新兴技术领域,在开源库中已经有很多功能强大的算法实现。近两年,业内的学者与科学家都在积极探索可以弥补深度学习不可解释性,无法进行因果推断的这个缺陷,而图神经网络(GNN)成为备受关注和期待的“宠儿”。随着学界和业界越来越关注GNN,各种新工作不断被提出,基于图神经网络的框架随之产生,如大家现在都已经熟悉的DGL,两大深度学习框架PyTorch和TensorFlow中也开始支持相应的功能,大家对图(Graph)、图计算、图数据库、图机器学习等研究的关注度越发高涨。
AI科技大本营
2019/12/10
4.5K0
如何用Neo4j和Scikit-Learn做机器学习任务?| 附超详细分步教程
时序图数据建模与产业链分析
# 扩展PATH方式MATCH (indus:行业) WHERE indus.name='消费品商贸' WITH indusCALL apoc.path.expandConfig(indus,{maxLevel:3, relationshipFilter:'NEXT>|<BELONG_TO', labelFilter:'+产业|/产品', bfs:false, filterStartNode:true,uniqueness:'NODE_GOLBEL', limit:-1}) YIELD path WITH pathRETURN path
马超的博客
2022/07/04
8090
时序图数据建模与产业链分析
知难而上,砥砺前行
0.说在前面1.数据处理2.Apoc导入3.Neo4J导入展示4.Web开发5.动态交互可视化6.可视化展示7.作者的话
公众号guangcity
2019/09/20
1.2K0
知难而上,砥砺前行
基于check-point实现图数据构建任务
从关系数据库抽取图数据,需要考虑的一个场景是新增数据的处理【其中任务状态的依赖与数据依赖关系非常重要】。从一个自动化抽取图数据的工具角度来说,自动化生成脚本可以与如下实现完成对接【即设计好schema之后自动生成如下脚本】。该设计方案可以与自动化抽取图数据的工具无缝集成。 在现有的Airflow调度系统中【可以自行实现调度逻辑或者可以是其它的调度系统,本文的设计思路可以借鉴】,可以设计Task和DAG来完整增量数据的处理,完成线上数据的持续更新需求。在构建TASK时,按照图数据的特点设计了节点TASK和关系TASK,并在同一个DAG中执行调度。【DAG的设计可以是某一类业务数据的处理流程】在下面的案例中主要展示了担保关系图数据的构建设计。
马超的博客
2022/07/04
3450
基于check-point实现图数据构建任务
使用Cypher获取指定结构的树
•一、来自社区的问题链接•二、编写查询实现数据封装 •2.1 创建样例数据 •2.2 Cypher实现
马超的博客
2022/09/02
8700
使用Cypher获取指定结构的树
Datawhale 知识图谱组队学习 Task 1 Neo4J介绍与基本使用
https://www.injdk.cn/,根据自己需求下载,注意:社区版4.2.2需要jdk版本为jdk11
听城
2021/01/14
9420
Datawhale 知识图谱组队学习 Task 1 Neo4J介绍与基本使用
基于check-point机制的任务状态回滚和数据分块任务
基于check-point实现图数据构建任务针对这篇文章提出的方案增加了数据分块操作与任务状态回滚操作。 数据分块:控制加载到内存的数据量,避免占用过多堆内存保证图数据库可靠运行。 任务状态回滚:回滚到构建节点的任务状态,下一次构建节点关系时从回滚点开始操作【构建任务分为节点TASK和关系TASK,任务回滚操作是在关系TASK中进行回滚】。
马超的博客
2022/07/04
4430
图数据重构子图
•一、查找需要合并的概念•二、扩展概念查看一度关联关系•三、新建一个节点•四、将节点列表合并到第一个节点 •4.1 待操作节点 •4.2 将节点一度关系全部扩展出来 •4.3 进行重构分析 •4.4 重构时设置不对节点属性进行操作 •4.5 重构后的效果•四、总结
马超的博客
2022/09/02
7740
图数据重构子图
手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
知识图谱存储方式主要包含资源描述框架(Resource Description Framework,RDF)和图数据库(Graph Database)。
汀丶人工智能
2023/07/08
1.5K0
手把手教学小型金融知识图谱构建:量化分析、图数据库neo4j、图算法、关系预测、命名实体识别、Cypher Cheetsheet详细教学等
史上最全面的Neo4j使用指南「建议收藏」
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。
全栈程序员站长
2022/09/18
45.8K1
史上最全面的Neo4j使用指南「建议收藏」
neo4j官方开发文档阅读记录
neo-4j由两部分组成:relationship,label和property,label或者relationship中包含property,label与label之间形成关系.
DuncanZhou
2020/01/21
7290
图数据库Neo4j学习笔记系列
作者简介:20年IT工作经验,曾在华为、HP、移动、电网等国内外知名IT企业任职;关注领域包括证券、航空、制造、电信、电网等。在数据库开发和优化、数据仓库、系统架构、大中型项目管理、部门管理、数据挖掘和分析、数据治理、大数据方面有一定研究。
jeanron100
2019/11/28
1.7K1
图数据库Neo4j学习笔记系列
图数据库与传统数仓实现联邦查询
•一、MySQL得到研报实体在Oracle中的唯一ID•二、Oracle中过滤时间序列数据•三、CYPHER实现MySQL和Oracle查询语句串联•四、通过apoc.case实现布尔值的判断•五、将查询封装为函数•六、将函数运用在数据过滤查询中•七、总结
马超的博客
2022/09/02
6840
图数据库与传统数仓实现联邦查询
如何使用 Neo4J 和 Transformer 构建知识图谱
在这篇文章中,我将展示如何使用经过优化的、基于转换器的命名实体识别(NER)以及 spaCy 的关系提取模型,基于职位描述创建一个知识图谱。这里介绍的方法可以应用于其他任何领域,如生物医学、金融、医疗保健等。
深度学习与Python
2022/04/19
2.4K0
如何使用 Neo4J 和 Transformer 构建知识图谱
探索Neo4j:图数据库的卓越特性与应用实践
第三步:修改配置文件默认在/etc/neo4j/neo4j.conf, 为了方便显示下面把一些修改显示在这里
小言从不摸鱼
2024/12/12
5130
探索Neo4j:图数据库的卓越特性与应用实践
图数据库neo4j(二)python 连接neo4j
在完成安装之后,在python中调用py2neo即可,常用的有Graph,Node, Relationship。
学到老
2019/01/25
6.9K1
图数据库neo4j(二)python 连接neo4j
推荐阅读
相关推荐
Neo4j-APOC扩展与使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验