【发布时间】:2015-04-18 17:44:59
【问题描述】:
我的问题最好用一个具体的场景来回答。
假设我正在为航空旅行建模。机场被建模为节点,航班被建模为关系。
假设我有一条从皮奥里亚到芝加哥再到洛杉矶的单程路径。
PIA -> ORD -> LAX
因此,这条路径有三个机场和两个航班:PIA -> ORD 和 ORD -> LAX。每个航班都有到达和离开时间。
是否可以在每对关系之间进行计算/比较并使用它们进行过滤?
例如 我想计算中途停留时间,即 ORD 的出发时间 -> LAX 减去 PIA 的到达时间 -> ORD。如果该停留时间小于/大于某个最小值/最大值,则过滤掉该路径。
对图中的每一对关系执行上述操作。
我当然可以在事后执行这个计算。也就是说,我可以找到长度为 N 的所有路径或最短路径,然后以编程方式过滤掉不满足中转约束的路径。
我已经研究过使用 Java API 的选项,例如 Dijkstra,但它的局限性太大。
我对 Cypher 比较陌生;我的大部分工作都是使用 Java API。尽管我缺乏使用 Cypher 的经验,但我熟悉使用 WHERE 子句排除节点和关系。我的问题集中在使用 WHERE 子句过滤路径上每对关系之间的计算。
谢谢
【问题讨论】:
标签: neo4j