假设我有以下简单的图表。
我看到了两种遍历此图的方法
选项1
我可以使用Graph类
提供的以下APIGraph factory = ...
factory.getVertices("type", "Response");
选项2
我也可以使用GremlinPipeline来记录here
Graph g = ... // a reference to a Blueprints graph
GremlinPipeline pipe = new GremlinPipeline();
pipe.start(g.getVertex(1))
我的问题是
答案 0 :(得分:2)
有两个用于获取数据的API,因为一个代表一个蓝图级别,它是一个较低的抽象级别,具有用于访问图形的实用级别函数和Gremlin级别,这是一个具有更高程度的表达性的更高抽象级别在遍历图表时。设计原则是围绕以下事实构建的:Blueprints是不同图形数据库(即Neo4j,OrientDB等)上的抽象层,并且它需要足够简单以便快速开发实现。然而,Gremlin是一种图形遍历语言,它适用于Blueprints API,使Gremlin可以在多个图形数据库上运行。
你的例子不允许Gremlin发光。当然,在这些情况下,选择其中一个并不是一个理由。这是一个类似的例子,我认为更好:
// blueprints
g.getVertices()
// gremlin
g.V
除了保存一些角色,Gremlin真的没有给我任何东西。但是,请考虑这个Gremlin:
g.V.out('knows').outE('bought').has('weight',T.gt,100).inV.groupCount().cap()
我不会提供相当于蓝图的蓝图,因为它需要输入很多代码。你必须相信这一行Gremlin值得用很多丑陋的循环来代码。
大多数情况下,对于遍历来说,使用原始Blueprints API并不是必需的。您将发现自己使用它来加载数据,但除此之外,请使用Gremlin。