我正在尝试建模图来解决一些连接时间问题。例如,我有以下图表
F1,F2 F3 F4
ST_B ---------> ST2 -----> ST3 ------> ST_E
F5,F6 F7 F8
ST_B --------> ST4 ----> ST5 ------> ST_E
F9
ST_B --------> ST_E
我将ST_B,ST2,ST3,ST4,ST5,ST_E建模为站(节点)。和F1-F9作为flt节点。每个flt节点都有出发时间和到达时间。这种关系是连接的。同样在这种情况下,假设F2到达时间比F3出发时间少30分钟,而F6比F7少30分钟。 (表示连接无效)因此从ST_B到ST_E的有效路由应为F1-F3-F4,F5-F7-F8和F9。我试图使用cypher来解决这个问题但没有成功。 (可能是我造的错了)。
答案 0 :(得分:4)
我为节点添加了标签,以区分航班和车站。所有航班F1-F9都标有:航班,所有车站ST_B,ST_E和ST_2-ST_5都标有:车站。
Match path=stb:Station-[:Connect*]->ste:Station
Where stb.name='ST_B' and ste.name='ST_E'
With filter(x in nodes(path) where x:Flight ) as flts
Where all ( i in Range(0,length(flts)-2) Where flts[i].arrvTime < flts[i+1].dptrTime)
Return extract(flt in flts | flt.name)