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

在gremlin路径经过过滤、切片和分割之后,从gremlin路径返回特定属性

基础概念

Gremlin 是一种图遍历语言,用于在图数据库中进行复杂的查询。它允许用户通过一系列的操作来遍历图中的节点和边,从而获取所需的数据。

相关优势

  1. 灵活性:Gremlin 提供了丰富的操作符,可以轻松地构建复杂的查询。
  2. 表达能力:Gremlin 可以表达各种图遍历模式,包括深度优先搜索(DFS)和广度优先搜索(BFS)。
  3. 跨平台:Gremlin 可以在多种图数据库中使用,如 Apache TinkerPop、JanusGraph 等。

类型

  1. 过滤:通过条件筛选节点或边。
  2. 切片:限制返回结果的数量。
  3. 分割:将遍历结果分成多个部分。

应用场景

Gremlin 常用于社交网络分析、推荐系统、知识图谱等领域,特别是在需要复杂图遍历的场景中。

示例问题

假设我们有一个社交网络图,节点表示用户,边表示用户之间的关系。我们希望从图中获取特定用户的直接好友,并且只返回他们的用户名。

Gremlin 查询示例

代码语言:txt
复制
g.V('user-id').out('friend').hasLabel('user').values('username')

解释

  1. g.V('user-id'):从图中找到 ID 为 user-id 的节点。
  2. .out('friend'):遍历该节点的所有出边,表示直接好友。
  3. .hasLabel('user'):筛选出这些出边的目标节点是用户节点。
  4. .values('username'):返回这些用户节点的用户名属性。

遇到的问题及解决方法

问题:查询结果为空

原因

  1. 用户 ID 不存在。
  2. 用户没有直接好友。
  3. 数据库中没有相应的边或属性。

解决方法

  1. 检查用户 ID 是否正确。
  2. 确认数据库中存在相应的边和属性。
  3. 使用 hashasNot 操作符进行更详细的过滤。

示例代码

代码语言:txt
复制
// 检查用户 ID 是否存在
g.V().hasId('user-id').count()

// 检查是否有直接好友
g.V('user-id').out('friend').count()

// 检查是否有相应的边和属性
g.V('user-id').outE('friend').hasLabel('user').inV().values('username')

参考链接

Apache TinkerPop 官方文档

通过以上内容,您可以了解 Gremlin 路径经过过滤、切片和分割之后,如何从 Gremlin 路径返回特定属性,并解决可能遇到的问题。

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

相关·内容

一文了解各大图数据库查询语言(Gremlin vs Cypher vs nGQL)| 操作入门篇

Gremlin nGQL 中称之为 Vertex,Cypher 则称之为 Node。如何在图数据库中新建一个点呢?...)这里说明下,无论 Gremlin nGQL 中存在类似 IF NOT EXISTS  用法,即:如果不存在则创建,存在则直接返回。...*N]->()WHERE conditionRETURN r# nGQL 沿指定点查询指定边 N 跳GO N STEPS FROM OVER 返回指定两点路径# Gremlin...返回指定两点路径g.V().repeat(out()).until().path()# Cypher 返回指定两点路径MATCH p =(a)-[.*]->(b)WHERE conditionRETURN...p# nGQL 返回指定两点路径FIND ALL PATH FROM TO OVER *图查询语言·实操篇说了一通语法之后,是时候展示真正的技术了——来个具体一点的例子。

11.5K21

Gremlin查询语言

Gremlin是JanusGraph的查询语言,用于图中检索数据更新数据。 Gremlin是一种面向路径的语言,它能够简洁地表示复杂的图形遍历多步操作。...Gremlin是一种函数式语言,遍历运算被链接在一起形成类似路径的表达式。 例如,“Hercules,遍历他的父亲,然后他父亲的父亲,并返回祖父的名字。”...has('name', 'hercules'):过滤出顶点name为hercules的顶点。 out('father'):hercules顶点遍历出边为father的边。...out('father'):hercules的father顶点遍历出边为father的边。 name:获取hercules祖父顶点的name属性的值。 总之,这些步骤构成了类似路径的遍历查询。...可以顶点边上设置作为键值对的属性。 使用SET或LIST基数定义的属性键,必须使用addProperty向顶点添加此属性

3.6K20
  • 3. JanusGraph快速开始

    本节将使用Gods图作为演示示例,此图JanusGraph演示中广泛使用。该图如下图所示。这个抽象的数据模型对应图模型中的属性,这个特定的实例描述了罗马万神殿中人物地点之间的关系。...从起始点,Gremlin路径描述描述了如何通过显示的图结构来遍历图中的其他点。 通过name属性上的唯一索引,可以检索到Saturn顶点,然后可以查到它的所有属性值(即Saturn属性的键值对)。...这也可以使用循环的方式来查询,实际上Hercules是Saturnin('father') 路径上循环两次到达的点。...可以Hercules顶点去遍历他的母亲和父亲。最后可以去确定他们的类型是“god”“human”。...根据约束/过滤通过time检索Hercules的battled边比线性检索所有的边过滤(通常为O(log n),n代表边的数目)更快。

    3.3K20

    Gremlin 图查询概述

    ,这里可能会用到索引; out :从上一步结果集合中,拉出一个,即 “vid” 的 id,并把该点对应的那行数据hbase里读取出来(即该点的属性、相邻点、相邻边),返回出度节点,返回结果 edgeList1...; out :从上一步结果 edgeList1 中,拉出一个,即把第一个出度点拉出来,并把该点对应的那行数据 hbase 里读取出来(即该点的属性、相邻点、相邻边),找出出度节点,返回结果 edgeList2...; has:把 edgeList2 中的第一个节点拉出来,把该点对应的属性字段 hbase 里读取出来,并进行 name 为 jack 的过滤返回结果; 迭代执行第4步,直至 edgeList2 遍历完毕...JanusGraph 的缺陷 由上面的存储查询也可以看到,基于 Hbase的属性图有下面几个明显的缺陷: 顶点属性边存储一行中,当点的出入度越大时,属性查询耗时将会越大; 更新边某一个属性时,需要先获取整个边的数据...,修改完成后再写回,效率较低; 对边的属性过滤,将数据取回客户端,客户端进行过滤,增加了网络传输的消耗; 一言以蔽之,目前基于 NoSQL的图数据库,都可以视为只是分布式 NoSQL 上封装了一层逻辑的图

    4.1K10

    9. JanusGraph ConfiguredGraphFactory

    在这种情况下,我们通过复制存储模板配置中的所有属性并附加相关的graphName属性来为你创建的图创建配置,然后根据该特定配置打开图。 4....由于使用模板配置创建的图形首先使用复制创建方法为该图形创建配置,这意味着: 对使用模板配置创建的特定图表的任何更新都不能保证特定图表上生效,直到: 删除相关配置:ConfiguredGraphFactory.removeConfiguration.../ graph2.properties都不包含属性graph.graphname,那么这些图将存储JanusGraphManager中,因此分别作为graph1graph2绑定在gremlin脚本执行中...如果提供此参数,则还必须提供graph.graphname属性,这个绝对存储目录将是storage.root路径加上graph.graphname路径。 以下是一些使用示例: 10....这意味着,第一次创建/打开图形后,在后续连接到服务器时,你可以通过 _traversal属性访问图形遍历引用。

    1.6K20

    属性图数据库JanusGraph初探

    使用关系数据库来进行欺诈侦测不是不可行,但表形式并不适合描述数据之间的某些特定的复杂关系,而且海量数据的情况下,表之间的JOIN操作会带来大量系统性能的损耗,单次运算时间甚至以小时计,导致反欺诈策略无法实时返回结果...然而图系统的提供者还可以特定的TraversalStrategy优化策略,允许系统执行Gremlin查询时对其进行优化(例如索引查询,步骤重排序)。...一旦实现,Gremlin遍历可以图数据库(OLTP)图处理器(OLAP)上执行。然而,Gremlin语言是基于图的领域特定语言,根据点边来解释图。用户也可以创建自己的领域特定语言。...用于联机事务图的持久化技术(通常直接实时地应用程序中访问)。...索引,加快查询复杂查询 Elasticsearch Apache Solr Apache Lucene 通常,应用通过两种方法与JanusGraph交互: 1.当本地或者远程检索数据, 内嵌应用中的

    3.6K50

    图查询语言指南

    使用图查询语言,您可以遍历这些节点边以查找特定模式或关系。这使得处理涉及多个连接级别的复杂查询变得更加容易。例如,您可以社交网络中快速找到所有朋友的朋友,或在交通网络中识别两点之间的最短路径。...与 Cypher 不同,Gremlin 允许您将查询编写为一系列步骤,这些步骤可以按特定顺序执行。这种灵活性使 Gremlin 适用于复杂的图遍历算法。...SELECT 查询检索特定数据,而 CONSTRUCT 查询根据查询结果创建新的 RDF 图。ASK 查询返回一个布尔值,指示模式是否存在,而 DESCRIBE 查询返回描述资源的 RDF 数据。...高效的数据检索 图查询语言擅长高效地遍历检索连接的数据。使用图数据库时,您经常需要探索实体之间的关系。例如,社交网络中查找某人的所有朋友,或追踪交通网络中的最短路径。...基础开始 了解图的基础概念是第一步。图由节点、边属性组成。节点代表实体,边定义这些实体之间的关系,属性存储有关节点边的附加信息。掌握这些基础知识将帮助您浏览更复杂查询和数据结构。

    16110

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

    Gremlin是一种函数式数据流语言,可以使得用户使用简洁的方式表述复杂的属性图(property graph)的遍历或查询。...path().by("name") 步骤:1.找到gremlin节点 2.遍历查找gremlin的被管理关系 3.直到查找到的节点包含title为ceo的节点为止 4.遍历路径中的管理者姓名...这样做的好处是用户不需要学习数据库查询语言和域特定的BigData分析语言(例如Spark DSL,MapReduce等)。...命令式的Gremlin遍历告诉遍历者如何在遍历中的每一步进行。 例如,下面的命令遍历首先将遍历器放置表示Gremlin的顶点处。...“查询语言”“编程语言”之间的差异并不像我们所教导的那么大。 Gremlin统一了这种鸿沟,遍历可以用任何支持函数组合嵌套的编程语言编写(每种主要的编程语言都支持)。

    2.5K30

    图数据库调研

    Gremlin:数据以属性图的形式存在,属性仍然表中,但是联接关系是直接以链接(比如指针)的形式存在的。查询的本质是图遍历,擅长解决求图的直径、点到点之间的路径。...各自的特点: Cypher:只能在 Neo4j 上使用,但是社区版的Neo4j 只能跑单机上,用 Gremlin SPARQL 可以很容易地某个数据库转到另外一个,但Cypher就不要想了。...Neo4j Neo4j 是目前最流行的图形数据库,支持完整的事务,属性图中,图是由顶点(Vertex),边(Edge)属性(Property)组成的,顶点边都可以设置属性,顶点也称作节点,边也称作关系...,每个节点关系都可以由一个或多个属性。...用 Gremlin 查询 Apache TinkerPop3样式属性图。Gremlin 是一种图遍历语言,其中查询是遍历节点边缘之后离散步骤构成的遍历。 用 SPARQL 查询 RDF。

    6.6K30

    百亿级图数据JanusGraph迁移之旅

    经过分析发现慢的最主要的原因就是 JanusGraph 获取顶点属性特别慢,默认居然不是并行获取而是逐条获取。...好在 JanusGraph 最新的 0.4 版本中提供了一个 _multiPreFetch 的优化功能,能在属性过滤的时候批量并行获取所有关联顶点的属性,再在内存做属性过滤,关于这个功能的详细介绍可以看这里...并且这个功能并不是很完善,当你的过滤条件是 hasNot, 或者返回边的属性,或者语句后有 limit 操作都会使这个优化失效。...而你能做的只能是想尽办法绕开,例如:has("is_exception", neq("true")) 另一个问题就是 JanusGraph 查询的数据如何返回的问题,Gremlin 返回数据支持多种写法...最常用的就是使用 valueMap 的方式,但是这里面有两个比较大的坑,第一个是返回属性值默认是list类型,第二个是如果返回结果使用多个 valueMap 导致特别消耗内存。

    2.7K50

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

    ) RPQ 超集 (增加比较路径上的顶点边) RPQ 超集 (增加复杂路径表达式) 语义 任意路径、集合 4 无重复边 5、包 2 任意路径 6、包 2 最短路径 7、包 8 最短路径 9、包 2...Gremlin 中其他语义可以被模拟出来. 7. PGQL 路径查询可通过用户定义函数实现其他语义. 8. PGQL 路径查询返回单条最短路径, 集合包语义相同. 9....查询语言方面,OrientDB 支持扩展的 SQL Gremlin 用于图上的导航式查询;OrientDB 的 MATCH 语句实现了声明式的模式匹配,这类似于 Cypher 语言查询模式。...查询语言对比 查询语句的角度出发,Gremlin 比较复杂,nGQL Cypher 比较简练,可读性角度出发,nGQL 比较类 SQL 化,比较符合大家的使用习惯。...比较了多款业内主要使用的开源数据库后,我们性能,学习成本与业务的贴合程度多个角度考虑,最终选择了性能出众,上手简单,能大幅提高业务效率的 Nebula Graph 图数据库。

    4.1K11

    JanusGraph图数据库的应用以及知识图谱技术介绍

    程序与janus的交互 将JanusGraph嵌入应用程序内,同一JVM中直接执行Gremlin查询。...查询执行、JanusGraph的缓存事务处理都在与应用程序相同的JVM中进行,而存储后端检索数据可能是本地的或远程的。...JanusGraph借助图领域的路径寻找优化算法,支持高效的关系挖掘。 5. 属性图存储模型: 图数据库采用属性图的基础数据存储模型,将数据描述为点边及它们的属性。...例如,知识图谱中进行全文搜索,查找包含特定关键词的实体。 图结构存储 图结构存储涉及两种典型的图结构定义:RDF模型属性图模型。...它还支持查询两点间的最短路径或完全路径,以及使用多种查询语言(包括Gremlin、Cypher、SQL)进行查询、删除、更新等操作。 8.

    26410

    社区版本idea查看继承关系的骚操作

    下载完之后,进入idea的插件管理页面,点击红色方框设置按钮 ? 弹出如下界面: ? 就可以选择磁盘安装code iris插件了。...点击之后弹出如下框,浪尖这里只对gremlin-core模块构建。 ?...选中gremlin-core之后点击确定,不会等待多久就会完成了类继承关系图的构建,完成之后会有消息提示,完成之后code iris插件页面如下: ?...鼠标可视化界面移动,会显示各个小方框代表的包路径。也可以选择类级别的可视化: ? 默认,类级别的可视化就更密集了,根本无法阅读。点击Fit View 按钮,可以以图结构显示,更适合阅读点。 ?...3.总结 idea 查看类的继承关系,阅读源码的时候是很重要的,比如一个接口被几十次继承,每次继承均实现自己特定的功能,然后调用的时候都是使用接口,一不小心就蒙蔽了双眼。

    3.1K30

    2018-11-23 graph图数据库概览,经过一个星期的Demo终于看懂了这篇文章20180818图数据库概览

    图存储图处理:这个是图数据库的核心,图存储负责将关系型数据集非结构化数据转成图结构进行存储,这里的存储可以为原生存储或序列化之后的非原生存储;图处理则负责数据的更新及运算。...数据导入导出:数据外界到图存储的导入导出能力,如从外界的json、csv,rdf等数据形式导入到图数据库中,或将图数据库中的数据导出来。...据neo4j的中国合作方的社区中描述,主要区别如下: 1、容量:社区版最多支持 320 亿个节点、320 亿个关系 640 亿个属性,而企业版没有这个限制; 2、并发:社区版只能部署成单实例,不能做集群...【2】OrientDB OrientDB据描述性能可以达到Neo4j的数倍,但也有测试表明遍历时磁盘空间增加,以空间换时间,遍历性能不高,但计算最短路径等性能高。...原生图存储一般都是经过专门为了存储管理图结构而优化的,遍历查询性能很高,但掐非遍历类的查询则不占优势,且为了全局搜索还会占用大量内存。

    3.6K30
    领券