Если вы явно знаете отношения для прохождения, то вы сможете сделать это с Cypher, хотя ваше условие вернуть N3, если N4 отсутствует, может быть сложным.
Известен ли ярлык N3, или вы просто хотите, чтобы этот путь был максимально длинным? Кроме того, если узлы метки N4 встречаются вдоль пути, а не только в конце, они вам тоже нужны или вас интересует только N4 в конце цепочки отношений?
Кроме того, вас интересуют все возможные пути или вам нужен только один путь, если он существует?
Этот запрос должен работать, если вы явно знаете (и можете определить в запросе) отношения для прохождения, и если вам нужен только один путь, если он существует, и если вас интересует только узел метки N4 в конец (или узел перед этим, если в конце нет N4):
MATCH p=(:N1{id:'xyz'})-[:a]->()-[:b]->()-[:c*0..1]->(last)
WHERE length(p) = 3 and last:N4 OR length(p) = 2
WITH p
ORDER BY length(p) DESC
LIMIT 1
RETURN p
Если критерии более сложные, для этого могут потребоваться процедуры расширителя пути APOC.