以图搜图-【案例】将图搜结果转换为虚拟图之后输出
- 将图搜结果转换为虚拟图之后输出
- CYPHER语句
- CYPHER执行结果
- 参考链接
Here’s the table of contents:
将图搜结果转换为虚拟图之后输出
CYPHER语句
- 提取图结构并以图搜图将结果转换为虚拟图
创建一个多环路子图并抽取其图结构匹配其它相似子图之后生成虚拟图
CREATE (n1:公司) SET n1.name='公司' WITH n1
CREATE (n2:公司) SET n2.name='公司' WITH n1,n2
CREATE (n3:公司) SET n3.name='公司' WITH n1,n2,n3
CREATE (n4:行业) SET n4.name='行业' WITH n1,n2,n3,n4
CREATE p1=(n1)-[:持股]->(n2) WITH n1,n2,n3,n4,p1
CREATE p2=(n1)-[:担保]->(n2) WITH n1,n2,n3,n4,p1,p2
CREATE p3=(n1)-[:属于]->(n4) WITH n1,n2,n3,n4,p1,p2,p3
CREATE p4=(n1)-[:持股]->(n3) WITH n1,n2,n3,n4,p1,p2,p3,p4
CREATE p5=(n2)-[:持股]->(n3) WITH n1,n2,n3,n4,p1,p2,p3,p4,p5
CREATE p6=(n3)-[:属于]->(n4) WITH n1,n2,n3,n4,p1,p2,p3,p4,p5,p6
CREATE p7=(n2)-[:担保]->(n3) WITH n1,n2,n3,n4,p1,p2,p3,p4,p5,p6,p7
CREATE p8=(n1)-[:担保]->(n3) WITH n1,n2,n3,n4,p1,p2,p3,p4,p5,p6,p7,p8
WITH olab.convert.json([p1,p2,p3,p4,p5,p6,p7,p8]) AS json
WITH olab.schema.auto.cypher(json,-1,10) AS cypher
CALL apoc.cypher.run(cypher,{}) YIELD value WITH value.graph.graph AS paths
UNWIND paths AS path
WITH RELATIONSHIPS(path) AS rels
UNWIND rels AS r
// 生成虚拟图并将指标占位符转换为JSON-STRING
CALL olab.schema.loop.vpath(r,-1) YIELD from,rel,to RETURN (from)-[rel]->(to) AS path
CYPHER执行结果
- 执行结果
注意看生成的虚拟图节点还有关系ID全部为负数。虚拟图表示将查询结果生成为一个物理存储中不存储在的图,例如将虚拟图挂上指标数据之后返回给数据分析系统实现三维和二维数据的集成。其中三维主要指图数据,二维指关系数据库、ES或者其它存储系统。在图模型建模中一般将时间序列建模为图模型指标更方便理解和查询操作,指标数据主要存储在二维存储中,图结构主要存储在图数据库中。生成虚拟图这个结果集可以提供给后续更多数据分析应用使用。
参考链接
ONgDB图数据库存储过程插件ongdb-lab-apoc