Учитывая график как:
g.V().drop()
g.addV('Person').property(id, 'P1').property('age', 20)
g.addV('Person').property(id, 'P2').property('age', 70)
g.addV('Person').property(id, 'P3').property('age', 32)
g.addV('Person').property(id, 'P4').property('age', 50)
g.addV('Person').property(id, 'P5').property('age', 63)
g.addE('KNOWS').from(V('P1')).to(V('P2'))
g.addE('KNOWS').from(V('P2')).to(V('P3'))
g.addE('KNOWS').from(V('P3')).to(V('P4'))
g.addE('KNOWS').from(V('P4')).to(V('P5'))
g.addE('KNOWS').from(V('P2')).to(V('P5'))
g.addE('KNOWS').from(V('P3')).to(V('P5'))
Я хочу знать все пути между P1
и P5
, вызванными краем KNOWS
, а затем рассчитать произведение разницы в возрасте на пути.
К настоящему времени я могу получить только путь:
gremlin> g.V('P1').
......1> repeat(both('KNOWS').simplePath()).
......2> until(hasId('P5')).path()
==>[v[P1],v[P2],v[P5]]
==>[v[P1],v[P2],v[P3],v[P5]]
==>[v[P1],v[P2],v[P3],v[P4],v[P5]]
gremlin> g.V('P1').
......1> repeat(both('KNOWS').simplePath()).
......2> until(hasId('P5')).path().by("age")
==>[20,70,63]
==>[20,70,32,63]
==>[20,70,32,50,63]
Чтобы прояснить значение product of age gap
, выберите первый путь [20,70,63]
, например: разрыв по возрасту равен [70-20, 63-70]
, что составляет [50, -7]
, разрыв по возрасту должен быть положительным, поэтому продукт равен 50 * 7 = 350
.
Ожидаемый результат:
==>[path: [v[P1],v[P2],v[P5]], product: 350]
==>[path: [v[P1],v[P2],v[P3],v[P5]], product: 58900]
==>[path: [v[P1],v[P2],v[P3],v[P4],v[P5]], product: 444600]
Любая помощь приветствуется.