获取连接到所有当前顶点的顶点

时间:2018-09-06 20:19:32

标签: gremlin tinkerpop

我可能会问一个明显的问题,但是对图表和gremlin语言来说是新手,并有些卡住。

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

我想找到所有与我找到的X类型的3个顶点有关的Y类型的顶点。在这种情况下,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。

enter image description here

1 个答案:

答案 0 :(得分:1)

汇总名为x的集合中的所有源顶点,然后遍历所有y顶点,并验证每个y顶点是否具有n个边数,从而导致顶点被存储在x中(其中n等于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]]