Я пытаюсь разработать систему маршрутизации на основе данных в базе данных Neo4j 3.0.4. График содержит несколько остановок. Некоторые из этих остановок запланированы как автобусные остановки, остановки поездов, но не все из них. Следовательно, они связаны с узлом расписания. Каждый узел расписания подключен к предложению.Cypher Query: получить связанные узлы кратчайшего пути
Подграф выглядит следующим образом:
Мой вопрос: Как я могу создать запрос, который возвращает этот подграф? До сих пор я писал этот запрос в шифре:
MATCH (from:Stop{poiId:'A'}), (to:Stop{poiId:'Z'}) ,
path = allShortestPaths((from)-[r*]->(to))
RETURN path
Это приводит все кратчайшие пути от остановки А до остановки Z. Между А и Z является более остановками, которые включены в возвращенном пути. Я хочу получить для всех остановок соответствующие графики и для этих расписаний соответствующие предложения.
Кроме того, было бы здорово, если бы можно было использовать ограничения, основанные на узле расписания, e. г. allShortestPath от А до Я, где фильтр (время в расписании.monday WHERE x> 1100).
Если это невозможно, возможно ли создать новый запрос с этим ограничением на основе предыдущего запроса?
EDIT1: Дополнительная информация: В расписании - время вылета для каждой остановки. Я хочу рассчитать на основе желаемого времени отправления (в качестве желаемого времени прибытия) полного времени поездки и получить 5 лучших соединений (меньше времени). . Я хочу начать с 7:00: отношение переключателя имеет время в 2 раза, поэтому проверьте расписание 1, если есть отъезд после 7:02. если да, возьмите первый вылет после 7:02. Соотношение connected_by имеет стоимость 12 минут. последнее отношение switch_to не требует затрат времени. Поэтому я приеду в 07:14. Примечание. Если мне нужно переключить служебную линию во время путешествия, я должен снова проверить расписание. Если расписание не соответствует желаемым временным окнам, исключите его из результата. Я хочу получить 5 лучших путей (в зависимости от времени поездки или времени прибытия), количество прыжков не важно. Если есть связь с e. г. 6 остановок, но с меньшим временем поездки (или более ранним временем прибытия), которые предпочитают этот. Я знаю, что это сложная и большая проблема, но я понятия не имею, как начать ... Если есть способ сделать это через REST (или, если не на Java), я был бы рад за каждый намек!
Результат будет в строках и столбцах, хотя возвращаемые значения могут быть списками связанных результатов.Это поможет получить представление о том, что вы ищете в формате возвращаемых данных. Например, вы предпочли бы иметь одну строку результата для каждого пути, со списками карт, состоящими из каждой остановки и связанного с ней графика и предложения? Или вам нужна строка за стоп/расписание/предложение? Или что-то другое? – InverseFalcon
Я буду использовать этот cypher через rest api, поэтому я получу объекты JSON, но идея состоит в том, чтобы увидеть строку для каждого отдельного пути со всеми остановками и отношениями между ними. «Стоп-столбец» может содержать дополнительную информацию: {stop1 {attributes}}, {switch_to {attributes}}, {stop2 {attributes}, schedule {attributes}, offer {attributes}} ... – Stefan