Cypherにおけるdistinctとorder byの併用

そしてぬこは途方に暮れた。

CypherのRETURN句には、distinctの指定とorder byの指定がある。

order byの例

neo4j-sh (0)$ START i=node(1) MATCH p=i-[:SCHEMA]->s-[r:META*0..]->n RETURN n.name order by n.name ;
==> +-----------+
==> | n.name    |
==> +-----------+
==> | "integer" |
==> | "string"  |
==> | "string"  |
==> | "string"  |
==> | "string"  |
==> | "string"  |
==> | "string"  |
==> | "string"  |
==> | "string"  |
==> | "カラム"     |
==> | "カラム"     |
==> | "カラムlist" |
==> | "カラムlist" |
==> | "カラム名"    |
==> | "カラム名"    |
==> | "カラム名"    |
==> | "カラム名"    |
==> | "テーブル名"   |
==> | "テーブル定義書" |
==> | "データ型"    |
==> | "データ型"    |
==> | "処理定義書"   |
==> | "参照テーブル"  |
==> | "機能番号"    |
==> +-----------+
==> 24 rows
==> 0 ms

distinctの例

neo4j-sh (0)$ START i=node(1) MATCH p=i-[:SCHEMA]->s-[r:META*0..]->n RETURN distinct n.name ;
==> +-----------+
==> | n.name    |
==> +-----------+
==> | "処理定義書"   |
==> | "参照テーブル"  |
==> | "string"  |
==> | "機能番号"    |
==> | "integer" |
==> | "テーブル定義書" |
==> | "カラムlist" |
==> | "カラム"     |
==> | "カラム名"    |
==> | "データ型"    |
==> | "テーブル名"   |
==> +-----------+
==> 11 rows
==> 3 ms

ここまでは良い。この挙動をみたら、distinctした結果をorder by したくなるわけで、それをやってみると

neo4j-sh (0)$ START i=node(1) MATCH p=i-[:SCHEMA]->s-[r:META*0..]->n RETURN distinct n.name order by n.name;
==> SyntaxException: Unknown identifier `n`.
neo4j-sh (0)$ 

は?(威圧)
いやいやいや、ドキュメント上はdistinctとorder byの併用は不可という記述はないように思えたんだけど・・・。
大体、"Unknown identifier `n`."ってどういうことよ?
MATCH句にきちんと書いてあるじゃないか。

さらに奇妙なことに、distinct対象がプロパティではなく、nodeだとdistinctもorder byも併用できる。

neo4j-sh (0)$ START i=node(1) MATCH p=i-[:SCHEMA]->s-[r:META*0..]->n RETURN distinct n order by n.name;
==> +---------------------------------------------+
==> | n                                           |
==> +---------------------------------------------+
==> | Node[12]{type:"meta_value",name:"integer"}  |
==> | Node[5]{type:"meta_value",name:"string"}    |
==> | Node[7]{type:"meta_complex",name:"カラム"}     |
==> | Node[6]{type:"meta_complex",name:"カラムlist"} |
==> | Node[8]{type:"meta_simple",name:"カラム名"}     |
==> | Node[3]{type:"meta_simple",name:"テーブル名"}    |
==> | Node[2]{type:"meta_complex",name:"テーブル定義書"} |
==> | Node[9]{type:"meta_simple",name:"データ型"}     |
==> | Node[10]{type:"meta_complex",name:"処理定義書"}  |
==> | Node[13]{type:"meta_simple",name:"参照テーブル"}  |
==> | Node[11]{type:"meta_simple",name:"機能番号"}    |
==> +---------------------------------------------+
==> 11 rows
==> 0 ms

何コレ?