当前位置: 首页 > 知识库问答 >
问题:

使用gremlin遍历和来自图的方法之间的区别

司徒斌
2023-03-14

假设我有以下简单图表。

我看到了两种遍历这个图的方法。

选项1

我可以使用 Graph 类提供的以下 API

Graph factory = ...
factory.getVertices("type", "Response");

选项 2

我也可以使用此处记录的GremlinPipeline API

Graph g = ... // a reference to a Blueprints graph
GremlinPipeline pipe = new GremlinPipeline();
pipe.start(g.getVertex(1))

我的问题是

  • 为什么是两个API?
  • 什么时候用哪一个?
  • GremlinPipeline是否利用了使用TnkerGraph的索引相关方法创建的indeces?

共有1个答案

邢晗日
2023-03-14

有两个用于获取数据的API,因为一个表示蓝图级,它是较低的抽象级别,具有用于访问图形的实用程序级功能,另一个表示Gremlin级,它是较高的抽象级别,在遍历图形时具有更高的表达程度。设计原则是基于这样一个事实,即Blueprints是不同图形数据库(如Neo4j、OrientDB等)的抽象层,它需要足够简单,以便快速开发实现。然而,Gremlin是一种在Blueprints API上工作的图形遍历语言,使得Gremlin能够在多个图形数据库上操作。

你的例子根本不允许Gremlin发光。当然,在这种情况下,真的没有理由选择其中一个。这里有一个类似的例子,我认为更好:

// blueprints
g.getVertices()

// gremlin
g.V

除了拯救几个角色,格林林真的没有给我任何东西。然而,考虑一下这个Gremlin:

g.V.out('knows').outE('bought').has('weight',T.gt,100).inV.groupCount().cap()

我不会提供与之相当的蓝图,因为要输入的代码太多了。你必须相信这一行Gremlin值得许多行代码和大量丑陋的循环

大多数时候,对于遍历来说,使用raw Blueprints API并不是真正必要的。您会发现自己使用它来加载数据,但除此之外,使用Gremlin。

 类似资料:
  • 编辑:在@Prashant回答后,我明白我的输出顺序需要保留,因此我相应地编辑了我的原始问题并重新发布。 我想从根节点(2)遍历到叶节点(1、6、8、3、11和12)。在这种遍历过程中,我希望获取连接到产品节点13(即)的节点,我希望编写一个返回1、8、9、3、11和12的查询。 @Prashant的回答: 输出 然而,我所需输出的顺序是1、8、9、3、11和12,即在每个级别上,要求选择一个子节

  • 如何从Java对象输出Gremlin查询?默认输出()看起来像这不容易阅读。

  • 我只想遍历一棵树并聚合父树及其直接子树。我该如何使用Gremlin将其聚合到({parent1,child},{child,child1}…}的结构列表数组中 在这种情况下,我想输出 订单并不重要。此外,请注意,我希望避免仅在同一节点上存在的任何圆形边(从子顶点到父顶点不可能存在圆形循环) 每个顶点都有一个标签城市,每个边都有一个标签高速公路 我的查询超时了,我想知道是否有更快的方法来实现这一点。

  • 问题 你有一个HTML文档要从中提取数据,并了解这个HTML文档的结构。 方法 将HTML解析成一个Document之后,就可以使用类似于DOM的方法进行操作。示例代码: File input = new File("/tmp/input.html"); Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/"); Elem

  • 本文向大家介绍C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法,包括了C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#使用前序遍历、中序遍历和后序遍历打印二叉树的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的C#程序设计有所帮助。

  • 本文向大家介绍图和树之间的区别,包括了图和树之间的区别的使用技巧和注意事项,需要的朋友参考一下 在编程中,数据类型表示打算由用户使用的数据的类型和性质。它是编译器或解释器要处理的数据类型,并在主存储器中提供相应的存储位置。现在,为了存储数据,我们根据数据的性质引入了不同的数据结构。由于数据主要分为线性和非线性类,因此专门针对非线性数据,存在图和树的概念来表示此类数据,以便更好地理解。 现在,由于用

  • 本文向大家介绍jQuery遍历之next()、nextAll()方法使用实例,包括了jQuery遍历之next()、nextAll()方法使用实例的使用技巧和注意事项,需要的朋友参考一下 jquery遍历:next()和nextAll()方法。实例如下: 说明: (1)next()方法:是指获得匹配元素的相邻同同辈元素(即下一个同辈元素),注意,同辈元素并不是标签相同的元素,而是指该元素闭合后的下

  • 本文向大家介绍Python实现深度遍历和广度遍历的方法,包括了Python实现深度遍历和广度遍历的方法的使用技巧和注意事项,需要的朋友参考一下 深度遍历: 原则:从上到下,从左到右 逻辑(本质用递归): 1)、找根节点 2)、找根节点的左边 3)、找根节点的右边 广度遍历: 核心:队列+递归 以上这篇Python实现深度遍历和广度遍历的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希