Я работаю с графом IBM и использую gremlin, чтобы попытаться отфильтровать определенные вершины. На моих краях есть две обязательные и необязательные метки. это ситуация:
V3 -- V5 -- V6
/ \
V1 \
\ \
V2 -- V4
Это немного похоже на цепочку спроса и предложения. V1 - это объект, который обеспечивает два типа поставок (V3 и V2). Для работы V4 требуются оба расходных материала. Для работы V5 необходимы как V3, так и V6. Так как у меня только V2 и V3. Мне нужен запрос, который позволяет мне переходить от V2 и V3 к каждой исходящей вершине, но исключать вершину в зависимости от того, имеет ли эта вершина необходимое ребро (но допускает дополнительные ребра).
После долгих попыток вот что придумал коллега:
def g = graph.traversal(); g.V(1).out().outE().aggregate('edges').inV().where(inE('required').where(not(within('edges'))).count().is(eq(0))).dedup()
Это лучший способ сделать это? Или есть способ поумнее?