Neo4jのCypherで末端親ノードの情報を取得する方法

Neo4jの話です。
つぎのようなpathの場合、
MATCH path=(c:C_Patent)-[r:ORIGINAL|REGIONAL|PRIORITY*0..]->(p)
WHERE
c.Name = "2001-0004-XXXX" // 子ノードの条件
AND (p:C_Patent OR p:C_Design OR p:C_Trademark OR p:C_Gazette) // 親ノードのラベル条件
AND NOT (p)-[:ORIGINAL|REGIONAL|PRIORITY]->() // 末端であることの条件
RETURN path;
‘path’の部分を以下のように変更すれば、末端親ノードのNameの配列が取得できます。
MATCH(c:C_Patent)-[r:ORIGINAL|REGIONAL|PRIORITY*0..]->(p)
WHERE
c.Name = "2001-0004-XXXX" // 子ノードの条件
AND (p:C_Patent OR p:C_Design OR p:C_Trademark OR p:C_Gazette) // 親ノードのラベル条件
AND NOT (p)-[:ORIGINAL|REGIONAL|PRIORITY]->() // 末端であることの条件
RETURN COLLECT(DISTINCT p.Name);
◆リレーションの数やモジュールも取得したいのなら、
MATCH(c:C_Patent)-[r:ORIGINAL|REGIONAL|PRIORITY*0..]->(p)
WHERE
c.Name = "2001-0004-XXXX" // 子ノードの条件
AND (p:C_Patent OR p:C_Design OR p:C_Trademark OR p:C_Gazette) // 親ノードのラベル条件
AND NOT (p)-[:ORIGINAL|REGIONAL|PRIORITY]->() // 末端であることの条件
RETURN COLLECT(DISTINCT {Name:p.Name, Size:SIZE(r), module:LABELS(p)[0]})
◆リレーション数でソートする場合は、
MATCH(c:C_Patent)-[r:ORIGINAL|REGIONAL|PRIORITY*0..]->(p)
WHERE
c.Name = "2001-0004-XXXX" // 子ノードの条件
AND (p:C_Patent OR p:C_Design OR p:C_Trademark OR p:C_Gazette) // 親ノードのラベル条件
AND NOT (p)-[:ORIGINAL|REGIONAL|PRIORITY]->() // 末端であることの条件
WITH DISTINCT {Name:p.Name, Size:SIZE(r), module:LABELS(p)[0]} AS map ORDER BY map.Size
RETURN COLLECT(DISTINCT map)