gremlin - Gremlin Java 查询以合并两个节点
问题描述
假设我有两个节点 - A 和 B。
我正在尝试使用 gremlin - Java 将这两个节点合并到一个图中。能够使用此 SO 答案生成查询 - https://stackoverflow.com/a/46435070
g.V(parentNode).union(identity(), janusClient.g.V(aliasNode))
.unfold()
.sideEffect(properties().group("p").by(T.key).by(value()))
.sideEffect(__.outE().group("o").by(T.label).by(__.project("p","iv").by(__.valueMap()).by(__.inV()).fold()))
.sideEffect(__.inE().group("i").by(T.label).by(__.project("p","ov").by(__.valueMap()).by(__.outV()).fold()))
.sideEffect(__.drop())
.cap("p","o","i").as("poi")
.addV().as("u")
.sideEffect(
__.select("poi").select("p").unfold().as("kv")
.select("u").property(__.select("kv").select(Column.keys), __.select("kv").select(Column.values)))
.sideEffect(
__.select("poi").select("o").unfold().as("x").select(Column.values)
.unfold().addE(__.select("x").select(Column.keys)).from(__.select("u")).to(__.select("iv")))
.sideEffect(
__.select("poi").select("i").unfold().as("x").select(Column.values)
.unfold().addE(__.select("x").select(Column.keys)).from(__.select("ov")).to(__.select("u"))).iterate();
问题在于.addE(__.select("x").select(Column.keys))
最后一个 sideEffect 步骤中的这一行。这不会编译,因为.addE
需要 type 的参数,Traversal
而__.select("x").select(Column.keys)
返回 type 的结果GraphTraversal
。
替换为String.valueOf(.addE(__.select("x").select(Column.keys)))
不会产生预期的结果。
任何帮助表示赞赏!
解决方案
我想你可能只是有一个泛型问题?是在 3.3.1 中添加的,但在这种情况下addE(Traversal<?, String>)
你试图给它一个我应该是的GraphTraversal<S, Collection<E2>>
位置。您应该能够通过一些类型擦除来解决它 - 只需转换为:E2
String
Traversal
addE((Traversal) __.select("x").select(Column.keys))
推荐阅读
- r - 在 sparklyr 中的 spark 数据帧的所有列上应用 if else mutate 函数
- python - 将 pandas DataFrame 写入 CSV 文件。结果得到额外的行
- jquery - 如何使用 jquery 更改 select2 下拉文本?
- java - 尝试在单击按钮时返回组合框值时一直出错
- html-table - 将中心 td 标签放在应用 colspan 的 tr 标签中
- javascript - 如何找到页面加载完成
- javascript - 在没有目标 onClick 的情况下向下滚动。网页视差+角度
- laravel - 保存 adminlte 自定义状态
- java - Whitelabel 错误页面 - 如何解决此问题
- android - Android构建失败并出现错误:任务':app:checkReleaseDuplicateClasses'的执行失败