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

article/2025/10/7 18:49:45

前言:Gremlin语言是图数据库最主流的查询语言,是Apache TinkerPop框架下规范的图语言,相当于SQL之于关系型数据库。为了图数据库使用者更好的掌握Gremlin这门图语言,我们对Gremlin Steps进行了分类与总结,接下来将会出一个Gremlin系列文章(分25期来完成这个计划),每一期会针对一类Step进行语法讲解与实例分析。

深入学习Gremlin 系列文章链接汇总:https://blog.csdn.net/javeme/article/details/82631834

第1期 Gremlin Steps:
V()E()id()label()properties()valueMap()values()

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

图基本概念

  • 图Graph:指关系图。比如:同学及朋友关系图、银行转账图等。
  • 顶点Vertex:一般指实体。比如:人、账户等。
  • 边Edge:一般指关系。比如:朋友关系、转账动作等。
  • 属性Property:顶点或边可以包含属性,比如:人的姓名、人的年龄、转账的时间。

下面使用一个例子来进一步理解上面的概念。如下图片展示了一个“软件、人”之间的关系图。

图示例

其中:

  • 包括4个顶点:3个“人”顶点、一个“软件HugeGraph”顶点。
  • 包括5条边:3条“创建created”边、2条“认识knows”边。
  • 包括若干属性:如“HugeGraph”顶点包括“名称name”、“标签tag”、“语言lang”等属性,一个属性由属性名和属性值组成,如“lang:java”。

此外:

  • 顶点与边有类别之分,如“HugeGraph”顶点的label是“software”、3个“人”顶点的label是“person”,在Gremlin里面称之为“label”。
  • 顶点与边均由id来唯一标识,Gremlin里顶点与边必须包括id,一般图数据库的顶点id或边id均由系统自动生成。

图基本操作

对图基本概念有了初步了解之后,我们接下来学习如何使用Gremlin去操作它。首先准备好一些数据,这里以搭建环境文章中的“TinkerPop关系图”为例。下面将要学习的Gremlin Steps包括:

V()E()id()label()properties()valueMap()values()

  1. Step V():查询顶点,一般作为图查询的第1步,后面可以续接的语句种类繁多(后续会一一讲解)。

    示例:

    // 查询图中所有的顶点
    // 注意:g 代表的是整个图
    // 一切查询都是以图开始
    g.V()
    

    g.V()

    // 根据id查询顶点
    g.V('4:Gremlin', '3:TinkerPop')
    

    g.V(id)

    请尝试执行语句g.V('4:Gremlin').in('supports') ---- 查询支持Gremlin语言的所有图数据库。

  2. Step E():查询边,一般作为图查询的第1步,后面可以续接的语句种类繁多。

    示例:

    // 查询图中所有的边
    g.E()
    

    g.E()

    // 根据id查询边
    g.E('S3:TinkerPop>4>>S4:Gremlin')
    

    g.E(id)

  3. Step id():获取顶点、边的id。

    示例:

    // 查询所有顶点的id
    g.V().id()
    

    g.V().id()

    类似的,通过g.E().id()查询所有边的id。

    注意:Gremlin Step是作用在上一步产生的结果集上,如果上一步的结果是多个元素,那么这里id()将返回多个元素的id。

  4. Step label():获取顶点、边的label。

    示例:

    // 查询所有顶点的label
    g.V().label()
    

    g.V().label()

    类似的,通过g.E().label()查询所有边的label。

  5. Step properties():获取顶点、边的属性。

    示例:

    // 查询所有顶点的属性
    g.V().properties()
    
    // 查询所有顶点的“lang”属性
    // 如果无“lang”属性的顶点将跳过
    g.V().properties('lang')
    

    类似的,通过g.E().properties()查询所有边的属性。

    此外 properties()还可以和 key()value()搭配使用,以获取属性的名称或值。

    示例 key()

    // 查询所有顶点的属性名称
    g.V().properties().key()
    

    g.V().properties().key()

    示例 value()

    // 查询所有顶点的属性值
    g.V().properties().value()
    

    g.V().properties().value()

  6. Step valueMap():获取顶点、边的属性, valueMap()properties()不同的地方是:它们返回的结构不一样,后者将所有的属性扁平化到一个大列表里面,一个元素代表一个属性;前者保持一个顶点或一条边的属性作为一组,每一组由若干属性的键值对组成。

    示例:

    // 查询所有顶点的属性
    g.V().valueMap()
    

    类似的,通过g.E().valueMap()查询所有边的属性。

  7. Step values():获取顶点、边的属性值。

    示例:

    // 查询所有顶点的属性值
    // 效果等同于:
    // g.V().properties().value()
    g.V().values()
    

    g.V().values()

    // 查询所有顶点的“lang”属性
    // 效果等同于:
    // g.V().properties('lang').value()
    g.V().values('lang')
    

    类似的,通过g.E().values()查询所有边的属性值。

下一期:深入学习Gremlin(2):边的遍历操作


http://chatgpt.dhexx.cn/article/K0Uxi8p9.shtml

相关文章

Gremlin:图遍历语言

Gremlin简介 Gremlin是Apache TinkerPop 框架下的图遍历语言。Gremlin是一种函数式数据流语言,可以使得用户使用简洁的方式表述复杂的属性图(property graph)的遍历或查询。每个Gremlin遍历由一系列步骤(可能存在嵌套)…

TWR双边测距

本篇承接UWB那篇,专门介绍下双边测距的原理。 1.单侧双边测距 如上图所示,设备A发起交换,设备B响应完成交换,每个设备精确地记录发送和接收时间戳信息。设备B在收到设备A的信号后,延迟固定的时间回发信号&#xff0…

Java 7 - TWR 和 多异常捕获 示例

为什么80%的码农都做不了架构师?>>> package interview.blob_clob;import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared…

TWR_MPC8309调试日志

版权声明:本文为博主原创文章,未经博主允许不得转载。 TWR_MPC8309调试日志 --------By Moresung Chan , At 12:00 ,Sep 16,2012 一、软硬件: PC机操作系统:Microsoft Windows Server 2003 R2 开发板:TWR_MPC8309、…

DWM1000 测距原理简单分析 之 SS-TWR代码分析2 -- [蓝点无限]

蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: 首先将SS 原理介绍中的图片拿过来,将图片印在脑海里。 对于DeviceA 和 DeviceB来说,初始化代码都一样,而后面部分…

Java 处理资源的try语句 (try-with-resources, TWR)

JAVA中try块的标准形式很通用,但有些常见的情况需要开发者小心编写catch和finally块。这些情况是清理或关闭不再需要使用的资源。 正常情况下,我们用try-catch-finally语句来实现打开文件资源,最后再关闭清理文件资源。例如下面的代码&#…

DWM1000 测距原理简单分析 之 SS-TWR

蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: DWM1000 超宽带测距,使用的TOF(time of fly) 的方式,也就是计算无线电磁波传输时间,通过传输的时间换算成距离。 电磁波传输速率和光速一样,速度是299792.458km/s,可参见百度百…

完成“LPS node 与Crazyflie在TWR协议下的成功双向测距”实现心路历程总结

完成“LPS node 与Crazyflie在TWR协议下的成功双向测距”实现心路历程总结 1.初识TWR协议2. TWR进阶1.03.TWR协议进阶2.04.TWR协议进阶3.05.TWR协议进阶4.06.总结 说来惭愧,这一点点东西做了快3个月[手动狗头.jpg] 但是这个协议的深入学习让我真正认识到研究生该怎样…

惠普台式机EliteDesk TWR安装双系统

关于HP EliteDesk 800 G4 TWR安装双系统 磁盘分区BIos界面操作Linux系统安装 由于需要在Linux系统下跑ros,但电脑有安装win10系统,为了不破坏Win10系统内的资料,所以就选择安装双系统,根据我之前的安装经验,装个双系统…

24C02 Twr

连续写24C02,只有第一次能够成功,后面写都失败了。这次调整写的时间间隔。调成了5ms,才成功。 查看datasheet,发现有一个tWR参数。表示写的最小时间间隔。这个时间应该是内部写入所需要的时间,如果连续写的时间过短,就会失败。 但…

DWM1000 测距原理简单分析 之 SS-TWR代码分析1 -- [蓝点无限]

蓝点DWM1000 模块已经打样测试完毕,有兴趣的可以申请购买了,更多信息参见 蓝点论坛 正文: 这一篇内容主要是通过官方源码理解SS-TWR 细节 代码下载链接:https://download.csdn.net/download/duanfei255/10787882 所有代码使用方法:复制example 中的main.c到Keil MDK工…

UWB定位算法比较TDOA和TWR究竟哪个好

使用UWB技术进行定位时,有两种基本定位算法:基于差分飞行时间(TDOA)和双向测距(TWR)的UWB定位算法,这两种算法各有优劣,下面将进行比较。 超宽带是一种可用于室内定位的短距离无线电…

HP EliteDesk 880 G2 TWR无法从U盘启用

一、客户需求 客户一台HP EliteDesk 880 G2 TWR台式机,想更换一块固态盘,于是即到哥带了一块固态盘上门给客户更换固态盘,重新安装系统。 更换完固态盘后,准备重新给客户安装系统。 客户的台式机型号是:HP EliteDesk …

java TWR是怎么优雅我们的代码的?

我们在编写IO代码的时候,有的时候真的是对对java IO那种模板化的代码感到厌倦,而且写出来的代码,很臃肿丑陋。像下面这样的代码: public void readFile(String filePath) {FileInputStream fis null;InputStreamReader inReader …

基于UWB的室内SDS_TWR测距算法优化和定位算法融合的研究

1、内容简介 略257 2、内容说明 1、RSSI定位方法 基于接收信号强度RSS(Receive Signal Strength)[57]方法通过三个及以上己知位置的锚节点来测量移动节点发射的信号场强强度,从而通过己有的传播损耗模型来估算移动节点距锚节点的距离,从而实现位置测量…

UWB-DW1000的TWR测距及代码(五)

UWB测距过程很简单,两个设备(A和B)。设备A先发送,设备B等待接收 设备A 发送 P 给 设备B,此时读取时间戳,也可以等收到应答再进行读取,发送时间戳和接收时间戳都会保留最新一次,只要…

UWB DW1000 TWR测距定位功能实现

3基站对1标签进行测距的流程如下: 1、标签发起测距poll,等待3个基站的回应resp;依次收到3个基站的resp后,发送携带时间戳的final; 2、基站等待poll;收到poll后,发送resp,再继续等待…

hp 800 g4 twr linux,【拆机】HP EliteDesk 800 G4 TWR—探究塔式机箱的秘密

惠普商务台式机在专业领域口碑一直强势,其优良的结构设计与出色的稳定性素来为用户所青睐。今天的拆机要为大家带来的是——HP EliteDesk 800 G4 TWR。这款商务台式机内部做工到底如何?今天我就为大家带来答案。 按照惯例先为大家介绍一下这款产品的外观。 作为一台商务台式机…

uwb最详细的DS-TWR测距

简介 •测距、定位和数据传输。 •利用双向测距(TOF)测量或单向到达时间差(TDOA)到达时间差,误差在10cm,经过一定的滤波可以达到更低。 •跨越 3.5 GHz 至 6.5 GHz 的 6 个 RF 频段。 •支持 110 kbps&…

DRAM知识整理系列(三):部分时序参数整理

目录 一、时序参数整理 第一时序: 1、tCL - CAS Lantency Control 2、tRCD - RAS to CAS Delay 3、tRP - Row Precharge Timing 4、tRAS - RAS Active Time 第二时序: 5、CWL - CAS Write Latency 6、tRC - Row Cycle Time 7、tRFC - Row Refr…