Tinkerpop3 Gremlin 遍历错误

Tinkerpop3 Gremlin Traversal Error

我有一个具有以下结构的图表:

|-ProductFit
|-|-Part
|-|-App
|-|-|-ProductID
|-|-|-ProductModelID
|-|-|-ProductYearID

|-ProductID
|-|-ProductName
|-|-ProductModelID
|-|-ProductYearID

|-ProductModelID
|-|-ProductModelName

|-ProductYearID
|-|-ProductYear

其中 ProductFit 是我的第一个独立顶点,ProductID、ProductModelID 和 ProductYearID 是我连接的顶点。

现在,ProductFit 中 ProductID 的某些字段具有错误的值,我需要从 ProductID 的其他顶点获取值。

这是我的查询:

g.V().has('ProductFit','Part','PA01').properties('App')
.valueMap('ProductID','ProductModelID','ProductYearID')
.choose(values('ProductModelID'))
.option(PM01, g.V().has('ProductFit','Part','PA01').properties('App').values('ProductModelID'))
.option(PM02, g.V().has('ProductID','ProductModelID','PM01'))
.values('ProductModelID')

但这给了我这个错误:

java.util.HashMap cannot be cast to org.apache.tinkerpop.gremlin.structure.Element

是我遍历的时候不能从一个顶点到另一个顶点还是查询有问题? TIA.

您的 choose() 使用的是 values(),这并不是要从 Map 中选取值。它旨在与 Element 一起使用。我在 The Crew 玩具图上遇到了同样的错误:

gremlin> graph = TinkerFactory.createTheCrew()
==>tinkergraph[vertices:6 edges:14]
gremlin> g = graph.traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:14], standard]
gremlin> g.V().properties('location').valueMap().choose(values('startTime')).option(2004,constant(1)).option(none,constant(2))
java.util.HashMap cannot be cast to org.apache.tinkerpop.gremlin.structure.Element
Type ':help' or ':h' for help.
Display stack trace? [yN]n

您应该改用 select:

gremlin> g.V().properties('location').valueMap().choose(select('startTime')).option(2004,constant(1)).option(none,constant(2))
==>2
==>2
==>1
...
==>2