マッチの構造とマッチの変数が有効なスコープを理解することには、一般的な問題があります。私はそれが、これは何のためにあるのかを理解することは関係ないと思うCypher:変数が有効な一致ステートメントの範囲
// S sentiment toward A goodFor/badFor T
// => S sentiment toward the idea of A goodFor/badFor T
MATCH (S:A)-[:SOURCE]->(sent1:PS {type:"sentiment"})-[:TARGET]->(gfbf:E {type:"gfbf"}) , (A)-[:SOURCE]->(gfbf)-[:TARGET]->(T) , (Writer:A {type:"writer"})
// if there is some negative belief in any of the writers private state spaces that involve gfbf then inference is blocked
WHERE NOT (Writer)-[*1..]->({type:"believesTrue" , spec:FALSE})-[*1..]->(gfbf)
// if sent1 is in some private state spaces of the writer return all of these
OPTIONAL MATCH p=(Writer)-[*]->(sent1)
WITH NODES(p)[1..-1] AS ps_nodes
WHERE ALL(x IN ps_nodes[1..] WHERE LABELS(x) = "PS")
MERGE (S)-[:SOURCE]->(sent2:PS {type:"sentiment" , spec:(sent1.spec)})-[:TARGET]->(ideaOf:I {name:"ideaOf" , type:"ideaOf"})-[:TARGET]->(gfbf)
ON CREATE SET sent2.name =
CASE sent2.spec
WHEN FALSE THEN "-S"
ELSE "+S"
END
RETURN p
:
私は問題を抱えているコードの特定の部分はこれです。私が想定している構造を見れば十分ですが、基本的には:S-->sent1-->gfbf
のパスとA-->gfbf-->T
のサブグラフがあります。新しいパスが見つかるとA-->sent2-->ideaOf-->gfbf
、すべてのノードはノードのプロパティに応じて新しいノードのプロパティを設定します。さらに、...
部分のすべてのノードがラベルPS
を持っているパスwriter-->...-->sent
もあるかどうかを調べます。そのパスを見つけると、それはプログラムの別の部分でのさらなる操作のためにこれを返します。
私は取得していますエラーは、このされていない:
py2neo.cypher.error.statement.InvalidSyntax: sent1 not defined (line 6, column 58 (offset: 421))
"MERGE (S)-[:SOURCE]->(sent2:PS {type:"sentiment" , spec:(sent1.spec)})-[:TARGET]->(ideaOf:I {name:"ideaOf" , type:"ideaOf"})-[:TARGET]->(g"bf)
私はそれを使用する場所なぜsent1
はもはや定義され、どのように私はそれを有効にするためにコードを再構築する必要があるでしょうか?中