Cypher: como encontrar todas as cadeias de nós únicos não repetidas?

Quero encontrar TODOS os caminhos que começam e terminam de / para um nó específico. Eu gostaria que cada nó em um caminho fosse exibido apenas uma vez.

Por exemplo, em um gráfico como este:

(a)-[:REL]->(b)-[:REL]->(c)-[:REL]->(a)
(a)-[:REL]->(e)-[:REL]->(f)-[:REL]->(a)
(e)-[:REL]->(b)

graficamente:

  e → b
 ↙ ↖ ↗ ↘
f → a ← c

Código Cypher:

CREATE (a { name:'A' })-[:REL]->(b {name:'B'})-[:REL]->(c { name:'C' })
       -[:REL]->(a)-[:REL]->(e {name:'E'})-[:REL]->(f {name:'F'})-[:REL]->(a),
       (e)-[:REL]->(b)

Gostaria que a pesquisa de cadeias a partir de (a) retorne

(a)->(b)->(c)->(a)

(a)->(e)->(f)->(a)

(a)->(e)->(b)->(c)->(a)

enquanto que a partir de (f) retorna apenas

(f)->(a)->(e)->(f)

e não

(f)->(a)->(b)->(c)->(a)->(e)->(f)

porque passa duas vezes pelo nó (a).

Eu tentei:

MATCH p=(a {name:'F'})-[:REL*1..]->(a) 
WHERE SINGLE(e1 IN TAIL(NODES(p)) WHERE SINGLE(e2 IN TAIL(NODES(p)) WHERE e1=e2))
RETURN p

mas não tenho resultado. O melhor que consegui alcançar é não repetir apenas o nó inicial com esta consulta:

MATCH p=(a {name:'F'})-[:REL*1..]->(a) 
WHERE SINGLE(e IN TAIL(NODES(p)) WHERE e=a)
RETURN p

mas obviamente não é o que eu quero, porque retorna também

(f)->(a)->(b)->(c)->(a)->(e)->(f)

esse é um caminho que envolve o nó (a) duas vezes.

Alguém pode me sugerir uma solução?

Agradeço antecipadamente.

P.S. A versão do Neo4j que eu uso é 2.0

questionAnswers(2)

yourAnswerToTheQuestion