基于NEO4J图模型的关系计算

  • 一、原始图模型
  • 二、计算关系(不溯源)
  • 三、计算关系(溯源)
  • 四、批量人员关系计算(一对多的计算)<仅供参考>

一、原始图模型

原始图模型只有人与发帖之间的关系(这种关系符合建立图谱的一般逻辑)

二、计算关系(不溯源)

根据原始图模型生成人物之间的关系

MATCH p=(n)-[:评论|发帖]-()-[:评论|发帖]-(m) WHERE zdr.apoc.relatCalculateRestrict(labels(n),labels(m),'FacebookID')=true AND id(n)=519565 AND id(m)=519595 WITH p,n AS startNode,m AS endNode
CALL apoc.merge.relationship(startNode, '评论', NULL, NULL, endNode) YIELD rel WITH id(rel) AS idRel
MATCH path=()-[r]-() WHERE id(r)=idRel SET r.tracingSourceBool='false' WITH r.tracingSourceBool AS tracingSourceBool WITH
CASE
WHEN tracingSourceBool='true'
THEN 'MATCH p=(n)-[:评论|发帖]-()-[:评论|发帖]-(m) WHERE id(n)={idN} AND id(m)={idM} WITH p,n AS startNode,m AS endNode MATCH path=(startNode)-[:评论]-(endNode) RETURN p,path'
ELSE 'MATCH path=(n)-[:评论]-(m) WHERE id(n)={idN} AND id(m)={idM} RETURN path'
END
AS cypher
CALL apoc.cypher.run(cypher,{idN:519565,idM:519595}) YIELD value RETURN value.p AS p,value.path AS path

三、计算关系(溯源)

溯源是指过滤出计算关系的详细过程(原始图模型到->人物关系)-计算过程

MATCH p=(n)-[:评论|发帖]-()-[:评论|发帖]-(m) WHERE zdr.apoc.relatCalculateRestrict(labels(n),labels(m),'FacebookID')=true AND id(n)=519565 AND id(m)=519595 WITH p,n AS startNode,m AS endNode
CALL apoc.merge.relationship(startNode, '评论', NULL, NULL, endNode) YIELD rel WITH id(rel) AS idRel
MATCH path=()-[r]-() WHERE id(r)=idRel SET r.tracingSourceBool='true' WITH r.tracingSourceBool AS tracingSourceBool WITH
CASE
WHEN tracingSourceBool='true'
THEN 'MATCH p=(n)-[:评论|发帖]-()-[:评论|发帖]-(m) WHERE id(n)={idN} AND id(m)={idM} WITH p,n AS startNode,m AS endNode MATCH path=(startNode)-[:评论]-(endNode) RETURN p,path'
ELSE 'MATCH path=(n)-[:评论]-(m) WHERE id(n)={idN} AND id(m)={idM} RETURN path'
END
AS cypher
CALL apoc.cypher.run(cypher,{idN:519565,idM:519595}) YIELD value RETURN value.p AS p,value.path AS path

四、批量人员关系计算(一对多的计算)<仅供参考>

首先找到需要与当前人计算关系的节点,然后使用UNWIND批量计算

MATCH p=(n)-[:评论|发帖]-()-[:评论|发帖]-(m) WHERE id(n)=519565 WITH collect(m) AS nodes
UNWIND nodes AS stopNode
MATCH p=(n)-[:评论|发帖]-()-[:评论|发帖]-(m) WHERE id(n)=519565 AND id(m)=id(stopNode) WITH p,n AS startNode,m AS endNode
CALL apoc.merge.relationship(startNode, '评论', NULL, NULL, endNode) YIELD rel WITH id(rel) AS idRel,id(endNode) AS endNodeId
MATCH path=()-[r]-() WHERE id(r)=idRel SET r.tracingSourceBool='true' WITH r.tracingSourceBool AS tracingSourceBool,endNode(r) AS stopNode WITH
CASE
WHEN tracingSourceBool='true'
THEN 'MATCH p=(n)-[:评论|发帖]-()-[:评论|发帖]-(m) WHERE id(n)={idN} AND id(m)={idM} WITH p,n AS startNode,m AS endNode MATCH path=(startNode)-[:评论]-(endNode) RETURN p,path'
ELSE 'MATCH path=(n)-[:评论]-(m) WHERE id(n)={idN} AND id(m)={idM} RETURN path'
END
AS cypher,id(stopNode) AS endNodeId
CALL apoc.cypher.run(cypher,{idN:519565,idM:endNodeId}) YIELD value RETURN value.p AS p,value.path AS path
// 此函数限制可计算关系的标签,详情请参考下方GITHUB链接
zdr.apoc.relatCalculateRestrict(labels(n),labels(m),'FacebookID')=true

NEO4J存储过程扩展包

基于NEO4J图模型的关系计算相关推荐

  1. 多目标跟踪最新综述(基于Transformer/图模型/检测和关联/孪生网络)

    本文约11000字,建议阅读10+分钟 本文试图对计算机视觉在MOT中的最新发展趋势进行总结和回顾. 论文链接:https://arxiv.org/pdf/2209.04796.pdf 关注微信公众号 ...

  2. neo4j安装_基于Neo4j的知乎关系爬虫

    贴一个16年当时写的一个爬取知乎用户follow关系的爬虫.做这个爬虫是受一个知乎专栏的启发Web Crawler with Python - 09.怎样通过爬虫找出我和轮子哥.四万姐之间的最短关系, ...

  3. 使用py2neo构建neo4j图模型小demo

    首先启动neo4j ./neo4j console 连接数据库 from py2neo import Graph, Node, Relationshipgraph = Graph("http ...

  4. Neo4j图数据库从入门到精通

    add by zhj: 转载时,目录没整理好,还会跳转到原文 其实RDB也可以存储多对多的关系,使用的是中间表,GDB使用的是边,RDB中的实体存储在数据表,而GDB存储在节点.两者使用的底层技术不同 ...

  5. 异构网络中基于元图的推荐——FMG

    主要参考论文:<Meta-Graph Based Recommendation Fusion over Heterogeneous Information Networks> 概述 基于异 ...

  6. matlab产生er随机图,ER随机图模型 | 集智百科

    原标题:ER随机图模型 | 集智百科 "集智百科精选"是一个长期专栏,持续为大家推送复杂性科学相关的基本概念和资源信息.作为集智俱乐部的开源科学项目,集智百科希望打造复杂性科学领域 ...

  7. AGGCN | 基于图神经网络的关系抽取模型

    今天给大家介绍2019年6月发表在ACL上的论文"Attention Guided Graph Convolutional Networks for Relation Extraction& ...

  8. 图模型+Bert香不香?完全基于注意力机制的图表征学习模型Graph-Bert

    作者 | Jiawei Zhang.Haopeng Zhang.Congying Xia.Li Sun 译者 | 凯隐 编辑 | Jane 出品 | AI科技大本营(ID:rgznai100) [导读 ...

  9. MILA研究院唐建:基于图神经网络的关系推理(附视频)

    2020 北京智源大会 本文属于2020北京智源大会嘉宾演讲的整理报道系列.北京智源大会是北京智源人工智能研究院主办的年度国际性人工智能高端学术交流活动,以国际性.权威性.专业性和前瞻性的" ...

最新文章

  1. Redis运行流程源码解析
  2. 虚拟内存,虚拟地址空间,用户空间,内核空间
  3. python eval()函数使用
  4. 敏捷开发中的Code Review
  5. Failed to resolve: android.arch.lifecycle:runtime:1.0.0,Failed to resolve: support-v4
  6. 详解Java线程生命周期与状态切换
  7. java 判断两个时间段是不是有交集
  8. linux编译生成GUI程序命令,linux – 快速开发GUI命令行
  9. [DSF] Devices Syndication Foundation Architecture V1
  10. Flutter安装依赖包
  11. Shell批量解压tar.gz压缩包(转)
  12. TestFlight构建版本提示缺少出口合规证明
  13. maya blend shape
  14. LaSOT: A High-quality Benchmark for Large-scale Single Object Tracking(论文翻译)
  15. caj格式能免费转换成pdf吗
  16. 陪伴java多年,学完ssm后我也迷茫了很久
  17. 自制一个3D眼镜 超爽
  18. JavaScript DOM对象控制HTML元素详解
  19. 【Go学习】go语言圣经学习笔记
  20. PBOC金融IC卡,卡片与终端交互的13个步骤,简介-第三组

热门文章

  1. VINS-mono 学习之 三角化
  2. 更改表格行tr的背景颜色
  3. 不会吧,你开发直播卖货软件源码时,不用PHP写后台?
  4. 【CSS】骨架屏 Skeleton 效果
  5. auto-drawing
  6. 网易云音乐网络问题修复 (加载失败)
  7. 2021年G1工业锅炉司炉多少分及格及G1工业锅炉司炉模拟考试题
  8. GitHub个人主页默认模板
  9. 系统安全及应用(上)
  10. implement tcp bbr on ns3 (在ns3上实现TCP BBR)