Допустим, у меня есть 4 класса вершин: V1, V2, V3, V4, а также 3 класса ребер: E1, E2, E3.
Затем их экземпляры (возможно) связаны следующим образом:
V1 --E1--> V2
V2 --E2--> V3
V2 --E3--> V4
V3 --E3--> V4
Итак, графически что-то вроде:
V1---E1---V2
| \
E2 E3
| \
V3---E3---V4
С направлениями, показанными выше.
Теперь меня интересуют пути по точным ребрам, показанным от V1 до V4 (между ними могут быть и другие ребра, о которых мы не знаем, поэтому подходят только уже упомянутые типы ребер).
Чтобы проверить, существует ли один из путей от V1 до V4 (скорее будет возвращен V4, если путь существует):
SELECT EXPAND(out('E1').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>
Чтобы проверить, существует ли другой путь (скорее будет возвращен V4, если путь существует):
SELECT EXPAND(out('E1').out('E2').out('E3')) FROM V1 WHERE id = <someIdThatV1Has>
Единственный интерес, который у меня есть, это знать, существует ли ОДИН из двух путей. Я хотел бы сделать это с помощью одного запроса.
Вопрос
Как я могу объединить эти два запроса в один запрос, чтобы узнать, существует ли один из двух путей?
(Если возможно, был бы весьма признателен общий ответ на вопрос о том, как объединить различные запросы обхода в OrientDB вместе с явным ответом.)
Спасибо!