首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Gremlin查询中对顶点进行内连接?

在Gremlin查询中,可以使用both()步骤来实现对顶点的内连接。both()步骤会返回与当前顶点相连的所有顶点,包括入边和出边的顶点。通过将两个顶点的both()步骤连接起来,就可以实现内连接操作。

以下是一个示例查询,演示了如何在Gremlin中对顶点进行内连接:

代码语言:txt
复制
g.V().hasLabel('person').as('person1').
  both().hasLabel('knows').
  both().hasLabel('person').as('person2').
  select('person1', 'person2')

上述查询首先选择标签为'person'的顶点,并将其标记为'person1'。然后使用both()步骤获取与'person1'相连的所有顶点。接下来,使用hasLabel('knows')步骤过滤出与'person1'相连的顶点中标签为'knows'的顶点。然后再次使用both()步骤获取与'knows'顶点相连的所有顶点,并使用hasLabel('person')步骤过滤出标签为'person'的顶点,并将其标记为'person2'。最后,使用select()步骤选择'person1'和'person2'标记的顶点,即完成了内连接操作。

内连接可以用于查找两个顶点之间的共同关系,例如查找共同的朋友、共同的兴趣等。在实际应用中,可以根据具体的业务需求进行适当的调整和扩展。

腾讯云提供了图数据库服务TencentDB for TGraph,可以用于存储和查询大规模图数据。您可以通过以下链接了解更多关于TencentDB for TGraph的信息:TencentDB for TGraph产品介绍

请注意,本答案仅提供了一种实现内连接的方法,实际应用中可能存在其他更适合的方法,具体取决于数据模型和查询需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【翻译】Gremlin-Gremlin何许人也?

命令式的Gremlin遍历告诉遍历者如何在遍历的每一步进行。 例如,下面的命令遍历首先将遍历器放置在表示Gremlin顶点处。...但是,声明式遍历还有一个额外的好处,即它不仅利用编译时查询计划程序(命令式遍历),而且还利用运行时查询计划程序,根据每个模式的历史统计信息选择接下来要执行的遍历模式 - 支持那些倾向于 reduce/...名称” - 索引获取Gremlin顶点)确定最佳执行计划 。...五:无缝嵌入主语言 经典数据库查询语言(SQL)被认为与最终在生产环境中使用它们的编程语言有根本的不同。出于这个原因,经典数据库要求开发人员以其本机编程语言以及数据库的相应查询语言进行编码。...遍历源定义确定遍历执行的位置,一旦定义了遍历源,就可以以类似于数据库连接的方式反复使用它。最终的效果是用户“感觉”他们的数据和遍历都位于他们的应用程序,并且可以通过他们的应用程序的本机编程语言访问。

2.4K30

何在Ubuntu 16.04上使用Cassandra和ElasticSearch设置Titan Graph数据库

图形数据库适用于高度连接数据的应用程序,其中数据之间的关系是应用程序功能的重要部分,社交网站。Titan用于存储和查询分布在多台机器上的大量数据。...它有一些方法可以帮助管理图形,添加顶点,创建标签和处理事务。...在图形数据库,您主要通过遍历它来查询数据,而不是像关系数据库一样检索具有连接和索引的记录。为了遍历图形,我们需要来自graph参考变量的图形遍历源。以下命令可实现此目的。...gremlin> g = graph.traversal() 您使用g变量执行遍历。让我们使用该变量来创建几个顶点顶点就像SQL的行。...每个顶点都有一个顶点类型或其label关联的属性,类似于SQL的字段。

2.3K20

属性图数据库JanusGraph初探

一旦实现,就可在系统是有Gremlin遍历语言。然而图系统的提供者还可以特定的TraversalStrategy优化策略,允许系统在执行Gremlin查询其进行优化(例如索引查询,步骤重排序)。...最后,采用Gremlin Server使用用户连接支持Tinkerpop的图系统,Gremlin Server提供了可配置的交互接口和度量,这就是Tinkerpop。...然而,声明遍历具有额外的好处,它不仅利用了编译时查询计划器(命令式遍历),而且还是一个运行时查询计划器,根据每个模式的历史统计信息选择下一个执行哪个遍历模式 - 有利于那些倾向于减少/过滤大多数数据的模式...3.4 无缝嵌入主语言 经典数据库查询语言(SQL)被认为与最终在生产环境中使用的编程语言截然不同。因此,经典数据库要求开发人员既要编写主编程语言,还要编写数据库相应的查询语言。...为此每导入一个顶点数据都会执行如下逻辑:获取要导入顶点的id值,查询图中是否有某个顶点的bulkLoader.vertex.id值等于id值的,如果等于,则使用要插入的值,更新该图中已存在的顶点属性;如果不存在

3.5K50

图数据库调研

SPARQL的查询与 RDF 是一致的,RDF 是图,SPARQL 查询是子图匹配。 Gremlin:数据以属性图的形式存在,属性仍然在表,但是联接关系是直接以链接(比如指针)的形式存在的。...但是有一个比较大的问题是各家 Gremlin 的实现不一,自动生成代码比较困难,实现的效率也不一样,让人比较头疼。 SPARQL:W3C 标准,查询语句比较简单,自动生成语义查询也相对容易。...应用程序的客户代码(相对JanusGraph来说是客户)直接调用Gremlin查询JanusGraph存储的图,这种情况下外部存储系统可以是本地的,也可以处在远程。...应用程序和Janus Graph处在两个不同JVM,应用通过给JanusGraph提交Gremlin查询给GremlinServer,来使用JanusGraph,因为JanusGraph原生是支持Gremlin...HugeGraph 可以与 Spark GraphX 进行链接,借助Spark GraphX 图分析算法(PageRank、Connected Components、Triangle Count等)

6.5K30

3. JanusGraph快速开始

这个抽象的数据模型对应图模型的属性,这个特定的实例描述了罗马万神殿中人物和地点之间的关系。此外,图中的特殊文本和符号修饰符(:粗体、下划线等)表示图中不同的示意图/类型。 ?...通过name属性上的唯一索引,可以检索到Saturn顶点,然后可以查到它的所有属性值(即Saturn属性的键值)。...它可以查询Gods图中发生在Athens(纬度:37.97, 经度:23.72) 50km范围内的信息。然后通过这些信息查看涉及到哪些顶点。...上一节,证明了Saturn的孙子是Hercules。这也可以使用循环的方式来查询,实际上Hercules是从Saturn在in('father') 路径上循环两次到达的点。...每个遍历查询的说明在注释显示。

3.3K20

知识图谱之图数据库如何选型:知识图谱存储与图数据库总结、主流图数据库对比(JanusGraph、HugeGraph、Neo4j、Dgraph、NebulaGraph、Tugrapg)

Gremlin 其他语义可以被模拟出来. 7. PGQL 路径查询可通过用户定义函数实现其他语义. 8. PGQL 路径查询返回单条最短路径, 集合和包语义相同. 9....(2) 对于一行来说,仅在极 少数列上具有值, 表存在大量空值, 空值过多会影响表的存储、索引和查询性能 (3) 在知识图谱,同一主语 和谓语可能具有多个不同宾语,即一多联系或多值属性,而水平表的一行一列上只能存储一个值...缺点: (1) 需要创建的表的数目与知识图谱不同谓语数目相等,而大规模的真实知识图谱 ( DBpedia、YAGO、WikiData 等) 谓语数目可能超过几千个,在关系数据库维护如此规模的表需要花费很大开销...RDF-3X , Hexastore 优点: (1) 知识图谱查询的每种三元组模式查询都可以直接使用相应的索引进行快速 前缀范围查找; (2) 可以通过不同索引表之间的连接操作 直接加速知识图谱上的连接查询..., 会产生大量的连接索引表查询操作, 依然不可避免索引表的自连接.

2.2K11

百亿级图数据JanusGraph迁移之旅

这里主要列举下它的优点: 分布式图数据库,支持水平拓展 底层存储基于 Hbase/Cassandra ,技术成熟 支持 OLAP 图进行批量处理,丰富图的功能 支持 TinkerPop Gremlin...方案一:利用 GremlimServer 批量插入 我们最开始采用的数据导入方式是连接 GremlinServer 批量插入顶点,然后再插入边,在插入边的同时需要检索到关联的顶点。...社区里面建议是维持 name 索引到顶点id的一个 map 存放到内存,我们没试过,主要感觉有两方面问题,第一20亿点的需要不少内存,其次因为我们顶点是批量插入的,构建这个 map 不是很方便,于是就放弃了这个方案...我们这边时间也不允许, AgensGraph 的磁盘很快就满了,查询压力也越来越大。另外这个也需要对 Hbase 有深入了解,团队缺少这样的技术专家,大家都停留在使用层面。...其实最开始想到的就是这个方案,但是这个方案导入的数据有非常严格的要求,它需要每个顶点一行数据,再把这个顶点关联的所有边都关联到这一行,中间用 tab 分隔,第一部分是顶点的属性,第二部分是顶点的入边,

2.6K50

伸手党福利-从零开始玩转图库

核心在于提供gremlin查询语法及引擎,类似sqlparse,把查询语言转变成执行计划。...GraphTraversal inside GraphTraversal通过了顶点,边等提供了图数据的一种解释,并因此提供图形遍历DSL。...持久化模型 JanusGraph内部数据布局 JanusGraph将邻接表按行row保存在后台存储。使用64位的顶点Id作Key指向相应顶点的邻接表row。...每个边或者属性会保存在顶点的邻接表row的cell。序列化之后的column数据字节序也反映了原来的Edge标签的key序。...结束语-图库使用场景 推荐系统,总有类似关联推荐 :用户A喜欢某些item,推荐有相同兴趣其他用户所喜欢的item给用户A,在图库里面很容易实现。

4.8K30

分布式图数据库JanusGraph-优势

(4)支持在很大的图上顶点和边进行地理位置、数值范围、全文搜索。 (5)原生支持Apache TinkerPop 描述的当前流行的属性图数据模型。...(6)原生支持图遍历语言Gremlin。 (7)通过使用非编程的方式连接很容易与Gremlin Server集成 (8)提供了很多图级别配置选项用于调节性能。...(9)以顶点为中心的索引提供顶点查询,以缓解臭名昭着的超级节点问题。 (10)提供优化的磁盘表示,从而允许有效地使用存储和访问速度。...(2)由于没有主/从架构,因此图的读/写没有瓶颈。 (3)弹性可扩展性允许加入和移除机器。 (4)缓存层确保内存多次连续访问的数据可用。 (5)通过添加集群的机器来增加缓存的大小。...JanusGraph 和 CAP 理论 尽管你付出了最大的努力,你的系统仍会遇到很多的错误,以至于必须在减少输出(:停止响应请求)和降低收获(:响应不完整的答案)之间做出选择。

1.7K30

分布式图数据库JanusGraph-简介

(4)支持在很大的图上顶点和边进行地理位置、数值范围、全文搜索。 (5)原生支持Apache TinkerPop 描述的当前流行的属性图数据模型。...(6)原生支持图遍历语言Gremlin。 (7)通过使用非编程的方式连接很容易与Gremlin Server集成 (8)提供了很多图级别配置选项用于调节性能。...(9)以顶点为中心的索引提供顶点查询,以缓解臭名昭着的超级节点问题。 (10)提供优化的磁盘表示,从而允许有效地使用存储和访问速度。...(2)由于没有主/从架构,因此图的读/写没有瓶颈。 (3)弹性可扩展性允许加入和移除机器。 (4)缓存层确保内存多次连续访问的数据可用。 (5)通过添加集群的机器来增加缓存的大小。...JanusGraph 和 CAP 理论 尽管你付出了最大的努力,你的系统仍会遇到很多的错误,以至于必须在减少输出(:停止响应请求)和降低收获(:响应不完整的答案)之间做出选择。

2.1K20

「数据库深度探索」图型数据库JanusGraph支持知识图谱和图型分析

JanusGraph是一个可扩展的图形数据库,用于存储和查询分布在多机集群的包含数千亿顶点和边的图形。...当然,用户必须再次自己决定他们更喜欢哪种查询语言,Gremlin还是Cipher,以及能够在将来的某个时候轻松切换到另一个图形数据库他们来说有多重要。...另一个JanusGraph非常重要的项目是TinkerPop,我已经提到过几次了。因此,我建议新用户熟悉TinkerPop,最重要的是,熟悉它的图形查询语言Gremlin。...对于图模型,另一个需要考虑的问题是,某个东西是否应该是一个顶点上的属性,还是它自己连接到另一个带边的顶点上的另一个顶点。...准备好使用您的域的一个小的代表性数据集和您想要运行的查询列表,这样您就可以看到模型您的用例的执行情况。当您从一个顶点跳到另一个顶点时,请密切关注分支因子。

2.4K20

十的次方 - 第一部分

拥有数十亿条边的分布图进行复杂的图分析像是有待进行的冒险。就像刘易斯卡罗尔的故事的狮鹫一样,我们对立刻进行这场冒险有着强烈的欲望。...很明显,它提供了像Titan这样的图形数据库的访问,但是在同一个REPL会话,也可以连接到关系数据库,接触到Web服务,读取文件等。...w=250] 维基选票网站(包含了维基百科从2008年1月成立之初至今所有的维基百科投票数据,网络顶点代表了维基的用户,其中由箭头线连接顶点i至j代表了用户i给用户j的投票)。...bg.setVertexIdKey("npi")- 告诉BatchGraph顶点标识符将被存储在一个叫做npi的顶点属性键。...如果有倾向于从非JVM语言(Python)加载数据,可以理清本文思路并在Gremlin编写加载脚本。

1.7K50

图解图库JanusGraph系列-解惑图数据库,你知道什么是图数据库吗?

JanusGraph是一个可扩展的图形数据库,专门用于存储和查询分析分布在多机集群的数千亿个顶点和关系边的图形。 JanusGraph是一个事务数据库,可以支持数千个并发用户实时执行复杂的图遍历。...(Property Graph Model)的支持和属性图模型进行遍历的Gremlin遍历语言。...Vertex:节点/顶点,用于表示现实世界的实体对象。...图查询语言 \ Gremlin图服务器 \ Gremlin应用程序 Apache 2许可下的开源 工具可视化存储在JanusGraph的图形:Cytoscape \Apache TinkerPop 的...Graph处在两个不同JVM,应用通过给JanusGraph提交Gremlin查询给GremlinServer,来使用JanusGraph,因为JanusGraph原生是支持Gremlin Server

2.5K40

解惑图数据库!你知道什么是图数据库吗?

在图数据库图将实体表现为节点,实体与其他实体连接的方式表现为联系(边)。...JanusGraph是一个可扩展的图形数据库,专门用于存储和查询分析分布在多机集群的数千亿个顶点和关系边的图形。 JanusGraph是一个事务数据库,可以支持数千个并发用户实时执行复杂的图遍历。...Vertex:节点/顶点,用于表示现实世界的实体对象。...图查询语言 \ Gremlin图服务器 \ Gremlin应用程序 Apache 2许可下的开源 工具可视化存储在JanusGraph的图形:Cytoscape \Apache TinkerPop 的...Graph处在两个不同JVM,应用通过给JanusGraph提交Gremlin查询给GremlinServer,来使用JanusGraph,因为JanusGraph原生是支持Gremlin Server

4.6K270

# 知识图谱之图数据库如何选型:知识图谱存储与图数据库总结、主流图数据库对比(JanusGraph、HugeGraph、Neo4j、Dgraph、NebulaG

Gremlin 其他语义可以被模拟出来. 7. PGQL 路径查询可通过用户定义函数实现其他语义. 8. PGQL 路径查询返回单条最短路径, 集合和包语义相同. 9...., 解决了空值问题;(2) 一个主语的一多联系或多值属性存储在谓语表的多行, 解决了 多值问题;(3) 每个谓语表都按主语列的值进行排序, 能够使用归并排序连接 (merge-sort join)...快速执行不同谓 语表的连接查询操作.缺点:(1) 需要创建的表的数目与知识图谱不同谓语数目相等,而大规模的真实知识图谱 ( DBpedia、YAGO、WikiData 等) 谓语数目可能超过几千个...,在关系数据库维护如此规模的表需要花费很大开销(2) 越是复杂的知识图谱查询操作,需要执行的表连接操作数量越多,而对于未指定谓语的三元组查询,将发生需要连接全部谓语表进行查询的极端情况(3) 谓语表的数量越多...RDF-3X , Hexastore优点:(1) 知识图谱查询的每种三元组模式查询都可以直接使用相应的索引进行快速 前缀范围查找;(2) 可以通过不同索引表之间的连接操作 直接加速知识图谱上的连接查询

60210

查询语言的进化和主要的图查询语言以及特点

图片图查询语言的进化图查询语言是用于图数据进行查询和操作的编程语言。随着图数据库的兴起和图数据的应用场景逐渐增多,图查询语言也在不断进化。...图查询语言的进化有以下几个主要方向:查询表达能力的提升:图查询语言的进化首先是为了提升图数据的查询表达能力。新的图查询语言不仅支持更复杂的查询模式和条件,还提供更丰富的查询操作。...例如,一些现代的图查询语言支持路径查询连接查询、聚合查询等。性能的优化:进化的图查询语言不仅关注查询的灵活性,还注重提高查询的性能。...它采用类似 SQL 的语法,支持模式匹配、图模式描述、连接查询等。SPARQL 具有丰富的查询功能和强大的表达能力,但学习难度相对较高。GQL:GQL 是一种通用的图查询语言,与特定的图数据库无关。...GremlinGremlin 是一种图遍历语言,适用于各种图数据库。它通过遍历图的顶点和边来执行查询,具有非常强大的表达能力和灵活性。

33071
领券