【问题标题】:Neo4J/Cypher : variable length of path patternNeo4J/Cypher:路径模式的可变长度
【发布时间】:2017-07-15 09:22:37
【问题描述】:

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

我的节点和关系是:

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

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

【问题讨论】:

    标签: neo4j cypher traversal hierarchical-data genealogy


    【解决方案1】:

    你可以使用这个查询

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

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

    【讨论】:

      猜你喜欢
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多