// all paths MATCH p=(c:Organisation {duns_nbr:'216236900'})-[r:SHARES_HELD_BY*1..50]->(shb) RETURN p // longest path with sorting MATCH p=(c:Organisation {duns_nbr:'216236900'})-[r:SHARES_HELD_BY*1..50]->(shb) RETURN p order by size(p) desc return p limit 1 // longest path by checking end-node with size() aka get-degree MATCH p=(c:Organisation {duns_nbr:'216236900'})-[r:SHARES_HELD_BY*1..50]->(shb) WHERE SIZE((shb)<-[:SHARES_HELD_BY]-())=0 RETURN p // longest path by checking end-node with exists() which is cheaper for long chains MATCH p=(c:Organisation {duns_nbr:'216236900'})-[r:SHARES_HELD_BY*1..50]->(shb) WHERE not exists( (shb)<-[:SHARES_HELD_BY]-() ) RETURN p