2017-07-15 83 views
1

我在Neo4J的圖形上爲GEDCOM文件啓發建立了一個族譜模型。Neo4J/Cypher:可變長度的路徑模式

我的節點和關係是:

Individual <-[CHILD]- Family 
Family -[HUSBAND]-> Individual 
Family -[WIFE]-> Individual 

我沒有家庭模式的關係,因爲我可以有附加多個事件(訂婚,結婚,廢止,離婚,...):

Family -[OCCUR]-> FamilyEvent{type,subtype,date,place,note} 

我可以得到一個人的父親和母親這個暗號查詢:

MATCH (i:Individual {nickname:'Louis XVI'}) 
     <-[r:CHILD]- 
    (m:Family) 
     -[r2:HUSBAND|WIFE]-> 
    (h:Individual) 
    return i,r,m,r2,h 

或者一個人的孩子:

MATCH (i:Individual {nickname:'le Pieux ou le Débonnaire'}) 
     <-[r:HUSBAND]- 
    (m:Family) 
     -[r2:CHILD]-> 
    (h:Individual) 
    return i,r,m,r2,h 

但是,我怎麼能得到一個人的所有上升或後裔?
(在其他的方式,我怎麼能重複個人之間的模式或應用相同的模式來個人,我得到在每個級別?)

回答

0

您可以使用此查詢

match (n:individual{id:###})<-[:child*..9]-(n) return n,m 

創建祖先樹或爲後代指向相反的箭頭。