2016-03-19 18 views
0

Maçların yapısını ve maçın değişkenlerinin yaşadığı kapsamı anlamakta genel bir sorunum olduğunu düşünüyorum. Ben bunun için ne olduğunu anlamak alakalı olmadığını düşünüyorumCypher: Değişkenlerin Geçerli Olduğu Eşlik İfadelerinin Kapsamı

// 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 

:

Ben sorun var kod belirli bir parçasının budur. Yaptığım yapıyı görmeye yetiyor, ama temel olarak ne yapıyor: S-->sent1-->gfbf yolunun olduğu bir alt çizgiye ve ayrıca A-->gfbf-->T yoluna bakıyor. Yeni bir yol A-->sent2-->ideaOf-->gfbf yaparsa, yeni düğümlerin özelliklerini ayarlarken düğümdeki düğümlerin özelliklerine göre ayarlar. Ayrıca, writer-->...-->sent numaralı bir yola sahip olup olmadığına bakar, burada ... bölümündeki tüm düğümler PS etiketine sahiptir. Bu yolu bulursa, bunu programın farklı bir bölümünde daha fazla işlem için döndürür.

alıyorum hata şudur:

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) 

Bunu kullanmak ve geçerli kılmak için nasıl kod yeniden gerekir nereye Neden sent1 artık tanımlanır? içinde

cevap

0

sent1 değil İLE önce - yani bunu değiştirmek:

WITH NODES(p)[1..-1] AS ps_nodes, sent1