从路径打印/获取顶点值

时间:2018-03-10 18:03:06

标签: gremlin tinkerpop3

刚开始使用gremlin。

打印出所有精确的Vertex值

gremlin> g.V().values()
==>testing 2
==>Cash Processing
==>Sales
==>Marketing
==>Accounting

我能够在我的顶点之间找到所有直接连接的路径。

gremlin> g.V().hasLabel('Process')
.repeat(both().simplePath())
.until(hasLabel('Process'))
.dedup().path()
==>[v[25],v[28]]
==>[v[25],v[26]]
==>[v[26],v[27]]
==>[v[26],v[25]]

现在我正在尝试打印路径中的值,例如['销售','会计']而不是[v [25],v [28]]

尚未找到方法

已经尝试过失败

  1. 展开:不让我1-1映射

    的gremlin> 。GV()hasLabel('处理&#39)重复(包括()simplePath()。),直到(hasLabel('处理&#39))。。。。去重()路径()。展开()。值() ==>现金处理 ==>会计 ==>现金处理 ==>销售 ==>销售 ==>营销 ==>销售 ==>现金处理

  2. 路径似乎是不同的数据类型,不支持.values()函数

    的gremlin> 。g.V()hasLabel('流程') .repeat(两者()。simplePath()) 。直到(hasLabel('流程')) .dedup()。路径()。值()

  3. org.apache.tinkerpop.gremlin.process.traversal.step.util.ImmutablePath无法强制转换为org.apache.tinkerpop.gremlin.structure.Element

    1. 尝试了以下谷歌搜索并没有得到答案

    2. here找到一个用于java的但是对我没用的

      l = []; g.V().....路径()。填充(L)

    3. (但无法创建列表,无法设置readonly属性:类列表:org.apache.tinkerpop.gremlin.structure.VertexProperty $ Cardinality )

      我在Gremlin控制台上运行它(运行./gremlin.sh)

1 个答案:

答案 0 :(得分:3)

您可以使用by step来调整路径中的元素。例如,通过向valueMap(true)提供by,您可以获得顶点的属性以及顶点标签及其ID:

gremlin> g.V().repeat(both().simplePath()).times(1).dedup().path().by(valueMap(true))
==>[[id:1,name:[marko],label:person,age:[29]],[id:3,name:[lop],lang:[java],label:software]]
==>[[id:1,name:[marko],label:person,age:[29]],[id:2,name:[vadas],label:person,age:[27]]]
==>[[id:1,name:[marko],label:person,age:[29]],[id:4,name:[josh],label:person,age:[32]]]
==>[[id:2,name:[vadas],label:person,age:[27]],[id:1,name:[marko],label:person,age:[29]]]
==>[[id:3,name:[lop],lang:[java],label:software],[id:6,name:[peter],label:person,age:[35]]]
==>[[id:4,name:[josh],label:person,age:[32]],[id:5,name:[ripple],lang:[java],label:software]]

我使用的是现代图表,它是TinkerPop的玩具图表之一,通常用于此类示例。您的输出看起来会有所不同,您可能希望对valueMap(true)调制器使用by之外的其他内容。 TinkerPop documentation of the path step本身包含两个您可能希望查看的path().by()高级示例。