2013-12-19 30 views
1

假設我有一個看起來像變量arity樹的圖。我有Vertex,除了id0之外,我不知道最後一點的下落。我已經看到了Gremlin用法的一些例子,但找不到合適的例子 - 它們都基本上做了類似x.out.in.out等等,這在我的情況下是不適用的。我也使用Java綁定,所以如果你的反應與這個事實有關,我將不勝感激。如何在給定起點的情況下遍歷圖形,而不知道最終的圖形?

P.S.也許我應該更具體。我還想收集該節點的所有properties,所以如果有某種類型的reduce/foldLeft等,但僅限於pipe s - 那會很好。

回答

0

實施例用於Tinkerpop Toy Graph(找到vadas的路徑[頂點2]〜彼得[頂點6]):

gremlin> g = TinkerGraphFactory.createTinkerGraph() 
==>tinkergraph[vertices:6 edges:6] 
gremlin> start = g.v(2) 
==>v[2] 
gremlin> end = g.v(6) 
==>v[6] 
gremlin> start.as("x").both().loop("x", {it.object != end}, {true}).retain([end]).path()[0] 
==>[v[2], v[1], v[3], v[6]] 

查詢不是最佳的,並且將永遠運行如果不限制數量的結果,但它應該回答你的問題。

如果你想所有的屬性:

gremlin> start.as("x").both().loop("x", {it.object != end}, {true}).retain([end]).path().transform({ it.collect({ it.map() }) })[0] 
==>[{age=27, name=vadas}, {age=29, name=marko}, {name=lop, lang=java}, {age=35, name=peter}] 

如果你只需要一個單一的屬性:

gremlin> start.as("x").both().loop("x", {it.object != end}, {true}).retain([end]).path().transform({ it.collect({ it.name }) })[0] 
==>[vadas, marko, lop, peter] 

乾杯, 丹尼爾

+0

謝謝丹尼爾。 「兩個」是什麼意思?我的意思是,它在Java API中有什麼模擬,'都是V'? – tkroman

+0

請參閱:http://www.tinkerpop.com/docs/javadocs/gremlin/2.4.0/com/tinkerpop/gremlin/java/GremlinPipeline.html#both(java.lang.String ...) –

相關問題