【发布时间】:2016-10-13 12:55:54
【问题描述】:
我尝试基于 Neo4j 3.0.4 数据库中的数据开发路由系统。该图包含多个停靠点。其中一些站点像公共汽车站、火车站一样被安排,但不是全部。因此,它们连接到一个调度节点。每个计划节点都连接到一个报价。
子图如下所示:
我的问题是:如何创建返回此子图的查询?到目前为止,我用 cypher 编写了这个查询:
MATCH (from:Stop{poiId:'A'}), (to:Stop{poiId:'Z'}) ,
path = allShortestPaths((from)-[r*]->(to))
RETURN path
这会导致从停靠点 A 到停靠点 Z 的所有最短路径。在 A 和 Z 之间是到更多停靠点,这些停靠点包含在返回的路径中。我想获得所有站点的相关时间表以及这些时间表的相关优惠。
此外,如果可以基于调度节点使用约束,那就太好了,例如。 G。 allShortestPath from A to Z where filter(time in schedule.monday WHERE x > 1100)。
如果这不可能,是否可以基于先前的查询创建一个具有此约束的新查询?
EDIT1:更多信息: 在时间表中是每个站点的出发时间。我想根据所需的出发时间(或者所需的到达时间)计算完整的旅行时间并获得 5 个最佳连接(更少的时间)。 例如。我想在 7:00 开始:切换关系的成本时间为 2。因此,如果 7:02 之后有出发,请检查时间表 1。如果是,请在 7:02 之后乘坐第一班发车。 connected_by 关系的成本时间为 12 分钟。最后一个 switch_to 关系没有成本时间。所以我会在 07:14 到达。注意:如果我在旅行中必须切换服务线路,我必须再次查看时间表。如果计划不适合所需的时间窗口,请将其从结果中排除。我想获得 5 条最佳路径(基于旅行时间或到达时间),跳数并不重要。如果与 e 有联系。 G。 6 站,但旅行时间更短(或更早到达时间)更喜欢这一站。我知道这是一个困难而大的问题,但我不知道如何开始......如果有办法通过 REST(或者如果不是在 Java 中)做到这一点,我会很高兴每个提示!
【问题讨论】:
-
输出将在行和列中,尽管返回的值可以是相关结果的列表。以返回的数据格式了解您要查找的内容会有所帮助。例如,您是否希望每条路径有一个结果行,其中包含包含每个站点及其相关时间表和报价的地图列表?或者你想要每站/时间表/报价一行?还是别的什么?
-
我将通过 rest api 使用这个密码,所以我会得到 JSON 对象,但想法是为每个单独的路径查看一行,其中包含所有站点和它们之间的关系。 “停止列”可以包含更多信息:{stop1 {attributes}}、{switch_to{attributes}}、{stop2 {attributes}、schedule{attributes}、offer{attributes}}...