2013-07-22 104 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; 

回答