Если все ваши узлы проиндексированы (например, с помощью автоматической индексации), вы можете использовать запрос индекса в качестве начальной точки, а затем найти те узлы, которые не имеют исходящих отношений.
start n=node:node_auto_index("id:*")
match n-[r?]->m
where r is null
return n
В настоящее время я предпочел бы использовать:
start n=node:node_auto_index("id:*")
where not (n-->m)
return n