Gremlin Double 无法转换为 class org.apache.tinkerpop.gremlin.structure.Element
Gremlin Double cannot be cast to class org.apache.tinkerpop.gremlin.structure.Element
我尝试在 Java 上实现 gremlin 遍历。
在这里,我尝试根据我的管道insert/update“VISIBLE_ON”关系的分数与计算分数。
GraphTraversal t = graph.V().hasLabel("App").as("a")
.inE("RANKS").as("r")
.outV().as("k")
.choose(__.select("k").by("countryCode").is(__.in(...)),
__.math("1.0 / r").by("rank1"),
__.math("1.0 / r").by("rank2"))
.as("score")
.has("Country", "countryCode", __.select("k")
.by("countryCode")).as("c")
.inE("VISIBLE_ON").as("v")
.property("score", __.select("score"))
.select("c");
但我尝试 运行 我的 gremlin 代码,出现如下异常:org.apache.tinkerpop.gremlin.driver.exception.ResponseException: class java.lang.Double cannot be cast to class org.apache.tinkerpop.gremlin.structure.Element
有什么建议吗?
解决如下:
GraphTraversal t = graph.V().hasLabel("App").as("a")
.inE("RANKS").as("r")
.outV().as("k")
.choose(__.select("k").by("countryCode").is(__.in(...)),
__.math("1.0 / r").by("rank1"),
__.math("1.0 / r").by("rank2"))
.as("score")
.select("a")
.outE("VISIBLE_ON").as("v")
.property("score", __.select("score"))
.inV().as("c")
.hasLabel("Country")
.has("countryCode", __.select("k").by("countryCode")).as("c")
.select("c");
我认为你的问题出在这里:
.choose(__.select("k").by("countryCode").is(__.in(...)),
__.math("1.0 / r").by("rank1"),
__.math("1.0 / r").by("rank2"))
.as("score")
.has("Country", "countryCode", __.select("k")
choose()
从任一 math()
分支生成双精度,然后您尝试在双精度上调用 has()
,而 has()
仅适用于 Element
.
我尝试在 Java 上实现 gremlin 遍历。
在这里,我尝试根据我的管道insert/update“VISIBLE_ON”关系的分数与计算分数。
GraphTraversal t = graph.V().hasLabel("App").as("a")
.inE("RANKS").as("r")
.outV().as("k")
.choose(__.select("k").by("countryCode").is(__.in(...)),
__.math("1.0 / r").by("rank1"),
__.math("1.0 / r").by("rank2"))
.as("score")
.has("Country", "countryCode", __.select("k")
.by("countryCode")).as("c")
.inE("VISIBLE_ON").as("v")
.property("score", __.select("score"))
.select("c");
但我尝试 运行 我的 gremlin 代码,出现如下异常:org.apache.tinkerpop.gremlin.driver.exception.ResponseException: class java.lang.Double cannot be cast to class org.apache.tinkerpop.gremlin.structure.Element
有什么建议吗?
解决如下:
GraphTraversal t = graph.V().hasLabel("App").as("a")
.inE("RANKS").as("r")
.outV().as("k")
.choose(__.select("k").by("countryCode").is(__.in(...)),
__.math("1.0 / r").by("rank1"),
__.math("1.0 / r").by("rank2"))
.as("score")
.select("a")
.outE("VISIBLE_ON").as("v")
.property("score", __.select("score"))
.inV().as("c")
.hasLabel("Country")
.has("countryCode", __.select("k").by("countryCode")).as("c")
.select("c");
我认为你的问题出在这里:
.choose(__.select("k").by("countryCode").is(__.in(...)),
__.math("1.0 / r").by("rank1"),
__.math("1.0 / r").by("rank2"))
.as("score")
.has("Country", "countryCode", __.select("k")
choose()
从任一 math()
分支生成双精度,然后您尝试在双精度上调用 has()
,而 has()
仅适用于 Element
.