1

我受 GEDCOM 文件的启发,在 Neo4J 中的图上建模了家谱。

我的节点和关系是:

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

但是我怎样才能得到一个人的所有祖先或后代?
(换句话说,我如何在个人之间重复模式或将相同的模式应用于我在每个级别上获得的个人?)

4

1 回答 1

0

您可以使用此查询

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

为后代创建祖先树或指向相反的箭头。

于 2017-09-26T15:01:43.207 回答