2013-07-22 105 views
0

我在圖中的以下節點:Neo4j的查詢路徑

Car 

Trash 

CarToTrash 
[:has_input]-(Car) 
[:has_output]-(Trash) 

RecycleTrash 
[:has_input]-(Trash) 
[:has_output]-(Car) 

我試圖找到一個查詢,這將給我兩種類型之間的所有最短路徑,即

(車) - [has_input] - (CarToTrash) - [has_output] - (Trash) - [has_input] - (RecycleTrash) - [has_output] - (Car)

雖然路徑的長度可能會有所不同。它可以有更多像XToY一樣的has_input和has_output關係的節點。我想找到可能添加到圖形中的任何兩種類型之間的最短路徑。 CarToTrash和RecycleTrash表示函數,關係has_input和has_output是函數的輸入類型和返回類型。基本上我所擁有的是一個類型和函數的圖,我想看看圖中任何兩個任意類型之間是否存在函數路徑。

我試着用下面的查詢工作,但它會找到不遵循模式has_input,has_output(如果存在的話)的路徑。此外,我試圖找到從Car回到Car的方式,我無法做到,我只能找到Car to Trash,但是如果不能查詢這種循環,我可能會進行管理。

MATCH car, trash WHERE car.uid='Car' AND trash.uid='trash' 
WITH car, trash MATCH p = allShortestPaths(car-[*..15]-trash) return p; 

回答