转载自:https://blog.csdn.net/linlin1989117/article/details/82625906

第5期 Gremlin Steps:

path()simplePath()cyclicPath()

本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的“TinkerPop关系图”为初始数据。

上一期:深入学习Gremlin(4):图查询返回结果数限制

Path说明

在使用Gremlin对图进行分析时,关注点有时并不仅仅在最终达到顶点、边或者属性,通过什么样的路径到达最终的顶点、边和属性同样重要。此时可以借助path()来获取经过的路径信息。

path()返回当前遍历过的所有路径。有时需要对路径进行过滤,只选择没有环路的路径或者选择包含环路的路径,Gremlin针对这种需求提供了两种过滤路径的step:simplePath()cyclicPath()

实例讲解

1. path(),获取当前遍历过的所有路径
// “HugeGraph”顶点到与其有直接关联的顶点的路径(仅包含顶点)
g.V().hasLabel('software').has('name','HugeGraph').both().path()
  • 1
  • 2

如果想要同时获得经过的边的信息,可以用.bothE().otherV()替换both()

// “HugeGraph”顶点到与其有直接关联的顶点的路径(包含顶点和边)
g.V().hasLabel('software').has('name','HugeGraph').bothE().otherV().path()
  • 1
  • 2

输出路径的时候,可以通过by()语句指定使用对象的某个属性代替对象,且by()列表是循环应用到路径中的对象,例如路径有3个对象[A B C],by()语句指定两个属性[X Y],代表用“用A的X属性代表A,用B的Y属性代表B,用C的X属性代表C”,具体可参考如下例子:

by()语句的用法详解可以参见TinkerPop By Step

// “HugeGraph”顶点到与其有直接关联的顶点的路径(包含顶点和边)
// 用“name”属性代表person和software顶点,用“weight”属性代表边
g.V().hasLabel('software').has('name','HugeGraph').bothE().otherV().path().by('name').by('weight')
  • 1
  • 2
  • 3

path()返回所有路径,不论是否含有环路,例如:

// “HugeGraph”顶点到与其有两层关系的顶点的所有路径(只包含顶点)
g.V().hasLabel('software').has('name','HugeGraph').both().both().path()
  • 1
  • 2

图中红框内的是含有环路的路径,其他的是不含有环路的路径

2. simplePath(),过滤掉路径中含有环路的对象,只保留路径中不含有环路的对象
// “HugeGraph”顶点到与其有两层关系的顶点的不含环路的路径(只包含顶点)
g.V().hasLabel('software').has('name','HugeGraph').both().both().simplePath().path()
  • 1
  • 2

3. cyclicPath(),过滤掉路径中不含有环路的对象,只保留路径中含有环路的对象
// “HugeGraph”顶点到与其有两层关系的顶点的包含环路的路径(只包含顶点)
g.V().hasLabel('software').has('name','HugeGraph').both().both().cyclicPath().path()
  • 1
  • 2

深入学习Gremlin(5):查询路径path相关推荐

  1. 深入学习Gremlin(4):图查询返回结果数限制

    深入学习Gremlin(4):图查询返回结果数限制 第4期 Gremlin Steps: count().range().limit().tail().skip() 本系列文章的Gremlin示例均在 ...

  2. NVIDIA NCCL 源码学习(五)- 路径计算

    上节NCCL完成了对机器PCI系统拓扑的建图,其中建好的图如下所示,其中GPU之间是通过NVLink连接起来的 为了方便之后的搜索channel,接下来NCCL会先计算GPU和NIC节点到其他任意节点 ...

  3. 图数据库入门教程-深入学习Gremlin(1):图基本概念与操作

    前言:Gremlin语言是图数据库最主流的查询语言,是Apache TinkerPop框架下规范的图语言,相当于SQL之于关系型数据库.为了图数据库使用者更好的掌握Gremlin这门图语言,我们对Gr ...

  4. 一文掌握abaqus各类选取功能,以基于路径(Path)选择为例

    附赠仿真学习包,包含结构.流体.电磁.热仿真等多学科视频教程,点击领取: ​​​​​​仿真秀粉丝专属礼包 作者:米条老师,仿真秀专栏作者 对于软件用户来讲,经常面临非常众多且繁琐的选取功能,本文将结合 ...

  5. 大数据HiveSQL学习笔记三-查询基础语法以及常用函数

    大数据HiveSQL学习笔记三-查询基础语法以及常用函数 一.基础语法 1.SELECT -列名- FROM -表名- WHERE -筛选条件- 如:需要根据城市,性别找出匹配的10个用户 user_ ...

  6. 深入学习Gremlin(12):数学运算

    第12期 Gremlin Steps: math() 本系列文章的Gremlin示例均在HugeGraph图数据库上执行,环境搭建可参考准备Gremlin执行环境,本文示例均以其中的"Tin ...

  7. SSH学习-Hibernate关联查询

    与MyBatis类似,Hibernate也有关联查询,数据库中表与表之间的关联关系使用主外键的形式体现,实体对象之间的关联关系体现在对象与对象的引用.在Mybatis中,当涉及到复杂查询并且表之间存在 ...

  8. 小师妹学JavaIO之:文件File和路径Path

    文章目录 简介 文件和路径 文件中的不同路径 构建不同的Path 总结 简介 文件和路径有什么关系?文件和路径又隐藏了什么秘密?在文件系统的管理下,创建路径的方式又有哪些?今天F师兄带小师妹再给大家来 ...

  9. 深度学习论文阅读进阶路径图

    ↑ 点击上方[计算机视觉联盟]关注我们 介绍: 列表选自github用户floodsung发起的Deep Learning Papers Reading Roadmap项目,主要目标是收集深度学习论文 ...

最新文章

  1. SaltStack实战之数据系统-Grains
  2. Flutter 底部导航——BottomNavigationBar | 掘金技术征文
  3. Linux 零拷贝 sendfile函数中文说明及实际操作
  4. 国外少儿PYTHON编程书推荐
  5. 用Java解析:您可以使用的所有工具和库
  6. 7个华为关于C语言的经典面试题
  7. 电脑公司win11旗舰版32位镜像v2021.07
  8. 沃土云创首批方案认证伙伴授牌,华为云与伙伴共创云原生产业新价值
  9. php 禁用外部实体,php – Doctrine 2 – 从实体外部禁用PrePersist
  10. php 获取上周日期_php 获取上一周下一周的日期列表
  11. 低代码/无代码,在国内还有多长的路要走?
  12. 数字后端基本概念介绍<IO Cluster>
  13. 阿里云域名注册和怎么使用(域名解析)
  14. OpenFOAM提取等值面并计算面积
  15. 电脑重装系统后序列号怎么查
  16. dell服务器sd卡装系统,DELL服务器通过sd卡安装系统(iDRAC-Use-vFlash-).docx
  17. 解决BUG:Incorrect string value: ‘\xAC\xED\x00\x05~r...‘ for column ‘XX‘ at row 1 Query
  18. k8s pod 在节点间调度控制
  19. Unity Shader Fog雾气效果
  20. Kotlin——幸运大转盘

热门文章

  1. T 检验 (T test)
  2. openwrt重启后,修复dns
  3. 服装ERP应用 四 从手工到Web 2 0时代的VIP客户管理
  4. 【SIP教程】 SDP(Session Description Protocol)会话描述协议
  5. 简单的说一下S5PV210
  6. Python:根据身高、体重计算BMI指数
  7. 基于MSP432控制的红外循迹爬坡小车设计报告
  8. 卡西欧计算机fx82cnx怎么玩游戏,卡西欧fx-82ES计算器乱码玩法问题
  9. 修改dpr提高ECharts图表的清晰度
  10. java获取word图片_java代码获取word文件中的图片