我的图中有以下节点:
Car
Trash
CarToTrash
[:has_input]-(Car)
[:has_output]-(Trash)
RecycleTrash
[:has_input]-(Trash)
[:has_output]-(Car)
我正在尝试找到一个查询,它将为我提供两种类型之间的所有最短路径,即
(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;