Python バインディング v 1.6 で自分の neo4j データベースに対して次の Cypher クエリを実行すると、問題が発生しました。
START n0 = node:my_nodes(label='1'), n1 = node:my_nodes(label='1'),
n2 = node:my_nodes(label='2'), n3 = node:my_nodes(label='2'),
n4 = node:my_nodes(label='2')
MATCH (n0)-[r0]-(n1),(n0)-[r1]-(n4),(n1)-[r2]-(n2),(n2)-[r3]-(n3)
WHERE (r1.year - r0.year = 1) AND (r2.year - r1.year = 0) AND
(r3.year - r2.year = 0)
RETURN count(distinct n0), count(distinct n1),
count(distinct n2), count(distinct n3),
count(distinct n4)
私のデータベースには、インデックス付きプロパティlabel
と整数プロパティとの関係を持つノードがありますyear
。このクエリを実行すると、エラーが発生します
in decorator return fn(*args, **kwargs)
org.neo4j.cypher.CypherExceptionPyRaisable: Unclosed parenthesis
"WHERE (r1.label - r0.label = 1) AND
(r2.label - r1.label = 0) AND (r3.label - r2.label = 0)"
^
私はすでにこのクエリで括弧をいじっていますが、成功していません。誰でもこのエラーを解決するのを手伝ってもらえますか?
編集: 問題は neo4j-embedded バージョン 1.6 の使用にあると思いましたが、バージョン 1.9.dev0 (github からコンパイル) までアップグレードしましたが、それでも同じエラーが発生します。
Edit2: ulkas のコメントのおかげで、インタラクティブなサイファー コンソールについて知り、そこにサンプル グラフとサイファー クエリを作成しました (ただし、インデックス部分はありません)。クエリに問題があります:
Error: java.lang.RuntimeException: org.neo4j.helpers.ThisShouldNotHappenError:
Developer: Andres claims that: Unexpected traversal state encountered.
Edit3: コンソールをいじってみたところ、無向リレーションシップとダイヤモンド シェイプ パターン マッチングが許可されていないことがわかりました。それが、コンソールhttp://console.neo4j.org/?id=oqspkcで作業したものです。このクエリは Python で失敗し、同じエラー メッセージが表示されます ( Unclosed parenthesis
)。neo4j でひし形のパターンを一致させることはできますか? Python バインディングの何が問題になる可能性がありますか?