2014-12-22 4 views
1

Я хочу, чтобы найти все пути доступных с «другом» краем:найти все пути с конкретными типами кромок в Tinkerpop 3

g.v(1).out("friend").out("friend")..... 

, так что результат будет все путями от V (1), которые могут быть связаны этот тип края. было бы здорово, если я могу ограничить длину поиска и могу иметь несколько типа края вместо «друга», что-то вроде:

g.v(1).out("friend" or "enemy").out("friend" or "enemy). ..... 

что бы гном образом, если у меня есть два узла, и хочет, чтобы найти все пути/кратчайший путь?

ответ

1

Используйте jump рекурсивно пройти по пути, и path шаг, чтобы реализовать пройденный путь:

gremlin> g = TinkerFactory.createClassic() 
==>tinkergraph[vertices:6 edges:6] 
gremlin> g.V(1).as('x').out('knows').jump('x'){it.loops<3}{true} 
==>v[2] 
==>v[4] 
gremlin> g.V(1).as('x').out().jump('x'){it.get().id() != 5 && it.loops < 6}.path() 
==>[v[1], v[4], v[5]] 

подробнее в GremlinDocs:

+0

спасибо за ответ, но мой вопрос был найден: gv (1) .out («друг» или «враг»). Out («друг» или «враг»). так рекурсивно найти всю возможную форму пути gv (1) .out («знает»). out («знает») .... было бы здорово, если бы я мог установить для него предел. моему второму вопросу давали два узла найти все возможные пути между ними – Omid

+0

обновил мой ответ, чтобы отразить ваше разъяснение по вопросу –

+0

Является ли это способом Tinkerpop3? (Я думал, что в Tnkerpop3 больше нет цикла?) – Omid

0

Я d сделать это следующим образом:

g.V(1).as('x').out('knows').loop('x'){it.loops<100}{true} 

смысл перейти от Vertex 1 через край «знает» и продолжать делать это, пока вы не сделали это в течение 100 раз. Иглы говорят, что он вернет список вершин, которые связаны таким образом.