Гремлин: не может суммировать собственность с другого узла - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть граф с post вершинами, у которых есть ребра до 1 или более tag вершин.

Я пытаюсь вычислить общий вес для каждого тега:

// Create empty graph
graph = TinkerGraph.open()
g = graph.traversal()

// Create some tag vertices
g.inject('food', 'drink').addV('tag').property(id, identity())

// Create some posts with 'food' tag
posts = g.inject(10, 20).addV('post').property('weight', identity()).toList()
g.V(posts).addE('tagged').to(g.V('food'))

// Create some posts with 'drink' tag
posts = g.inject(5).addV('post').property('weight', identity()).toList()
g.V(posts).addE('tagged').to(g.V('drink'))

// Attempt to calculate total weight for each tag
g.V().
  hasLabel('post').as('p').
  out('tagged').
  group('g').
    by(id).
    by(select('p').values('weight').sum()).
  cap('g').next()

но я получаю эту ошибку:

java.lang.Long cannot be cast to org.apache.tinkerpop.gremlin.process.traversal.traverser.util.TraverserSet

Обратите внимание, что вычисление общего веса для всех сообщений работает нормально:

g.V().hasLabel('post').values('weight').sum()

Есть предложения?

Использование Gremlin Server 3.3.4

1 Ответ

0 голосов
/ 16 ноября 2018

Это ошибка в 3.3.4 (и более ранних версиях).Вот обходной путь:

gremlin> g.V().hasLabel('post').as('p').
......1>   out('tagged').
......2>   group().
......3>     by(id).
......4>     by(select('p').by('weight').sum())
==>[food:30,drink:5]
...