0

このグラフを考えると:

http://console.neo4j.org/r/g3j3xo

同じ schoolTypeClass 内の哲学者に影響を与えるすべての哲学者を返そうとしています。最初に、正常に動作しているクエリを示します。問題のクエリは投稿の下部にあります。

これは、上記のリンクのデフォルトのクエリです。私はデータがそこにあることを示すことを意図しています。つまり、アリストテレスとプラトンの両方が SchoolTypeClass 'movement' を共有します。

MATCH p1:Philosopher-[:MEMBER_OF]->s1:School-[:TYPE_OF]->st1:SchoolType-[:SUBCLASS_OF]->stc1:SchoolTypeClass
   WHERE  stc1.name = 'movement'
   RETURN p1.name as p1Name, s1.name as s1Name, st1.name as st1Name, stc1.name as stc1Name

これは正常に機能するクエリです。これは、機能しないクエリと非常によく似ています。これは、schoolTypeClass ではなく、同じ schoolType 内の哲学者に影響を与える哲学者を示しています。

MATCH st2:SchoolType<-[:TYPE_OF]-s2:School<-[:MEMBER_OF]-p2:Philosopher<-[:INFLUENCES]-p1:Philosopher-[:MEMBER_OF]->s1:School-[:TYPE_OF]->st1:SchoolType
   WHERE  st2 = st1
   RETURN p1.name as p1Name, s1.name as s1Name, st1.name as st1Name, p2.name as p2Name, s2.name as s2Name, st2.name as st2Name

問題 クエリは何も返しません。同じ schoolTypeClass 内の哲学者に影響を与える哲学者を取得するにはどうすればよいですか?

MATCH stc2:SchoolTypeClass<-[:SUBCLASS_OF]-st2:SchoolType<-[:TYPE_OF]-s2:School<-[:MEMBER_OF]-p2:Philosopher<-[:INFLUENCES]-p1:Philosopher-[:MEMBER_OF]->s1:School-[:TYPE_OF]->st1:SchoolType-[:SUBCLASS_OF]->stc1:SchoolTypeClass
   WHERE stc1 = stc2
   RETURN p1.name as p1Name, s1.name as s1Name, st1.name as st1Name, stc1.name as stc1Name, p2.name as p2Name, s2.name as s2Name, st2.name as st2Name, stc2.name as stc2Name
4

1 に答える 1

0

同じ MATCH (stc1/2) で異なる名前の同じノードを 2 回持つことはできません。

MATCH p=s2:School<-[:MEMBER_OF]-p2:Philosopher
        <-[:INFLUENCES]-p1:Philosopher-[:MEMBER_OF]->s1:School
        -[:TYPE_OF]->st1:SchoolType-[:SUBCLASS_OF]->stc:SchoolTypeClass 
WHERE (stc)<-[:SUBCLASS_OF]-(:SchoolType)<-[:TYPE_OF]-s2 
RETURN p1.name AS p1Name, s1.name AS s1Name, st1.name AS st1Name, 
       stc.name AS stcName, p2.name AS p2Name, s2.name AS s2Name, p

だから、試合後にチェックしてください。

http://console.neo4j.org/r/t6lj05

于 2013-07-08T22:27:05.013 に答える