【问题标题】:Getting vertices that are connected to ALL current vertices获取连接到所有当前顶点的顶点
【发布时间】:2018-09-06 20:19:31
【问题描述】:

我可能会问一个明显的问题,但对图形和 gremlin 语言不熟悉,因此有点卡住了。

我有一个图形设置,可以在其中找到特定类型的 N 个顶点。 假设我找到了 2 个 X 类型的顶点。 这些顶点有到 K 个 Y 类型顶点的边。

我想找到 Y 类型的顶点,它们都连接到我找到的 X 类型的 3 个顶点。在这种情况下,Y 类型的顶点可以连接到 X 类型的 3 个顶点中的任何一个,但是我只想得到普通的。

创建示例数据的脚本```

g.addV("X1").property("name", "category1")
g.addV("X2").property("name", "category2")


g.addV("Y").property("name", "y1")
g.addV("Y").property("name", "y2")
g.addV("Y").property("name", "y3")


g.V().has("Y", "name", "y1").addE("isOf").to(g.V().has("X1", "name", "category1"))
g.V().has("Y", "name", "y1").addE("isOf").to(g.V().has("X2", "name", "category2"))

g.V().has("Y", "name", "y2").addE("isOf").to(g.V().has("X1", "name", "category1"))
g.V().has("Y", "name", "y2").addE("isOf").to(g.V().has("X2", "name", "category2"))

g.V().has("Y", "name", "y3").addE("isOf").to(g.V().has("X1", "name", "category1"))

```

我感兴趣的是具有 isOf category1 和 category2 的“Y”顶点,可能还有更多类别。我需要消除仅连接到指定类别子集的顶点 Y。

【问题讨论】:

  • 当询问有关 Gremlin 图的问题很有帮助,但其他人更容易理解一个简单的 Gremlin 脚本,该脚本生成一个可以粘贴到 Gremlin 控制台的小示例图 - 例如,请考虑采取看这个问题:stackoverflow.com/q/51967983/1831717
  • 知道了,我将编辑问题以显示实际关系。谢谢!

标签: gremlin tinkerpop


【解决方案1】:

聚合一个名为x 的集合中的所有源顶点,然后遍历所有y 顶点并验证每个y 顶点有n 数量的边通向存储在x 中的顶点(其中@987654326 @ 等于 x) 的大小。

gremlin> g.V().hasLabel("X1","X2").aggregate("x").
           in("isOf").dedup().
           filter(out("isOf").where(within("x")).count().
                  where(eq("x")).
                    by().
                    by(count(local))).
           valueMap()
==>[name:[y1]]
==>[name:[y2]]

【讨论】:

  • 谢谢!它在 TinkerGraph 中工作,但不幸的是我无法在 AWS Neptune 中运行它,因为它对过滤器操作的支持有限。如果您对如何在没有过滤器的情况下执行相同操作有任何提示,我将不胜感激。接受答案。
  • 嗯? filter 步骤是最基本的步骤之一。 Neptune 中的错误信息是什么?
  • {"detailedMessage":"Cannot use path elements for inside","re​​questId":"adc753aa-b114-45be-a5b8-ab2df2f2dafd","code":"UnsupportedOperationException"}
  • 嗯,也许 ping 海王星支持..? x 不是路径元素,它是副作用。也许只是他们的查询分析器做错了。
  • 有道理,我会用海王星开一张票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
相关资源
最近更新 更多