Je modélise une généalogie sur un graphique dans Neo4J inspiré du fichier GEDCOM.Neo4J/Cypher: longueur variable du chemin d'accès
Mes nœuds et les relations sont:
Individual <-[CHILD]- Family
Family -[HUSBAND]-> Individual
Family -[WIFE]-> Individual
Je ne modélise pas la famille comme une relation parce que je peux avoir plusieurs événements attachés (fiançailles, mariage, annulation, divorce, ...):
Family -[OCCUR]-> FamilyEvent{type,subtype,date,place,note}
je peux obtenir le père et la mère d'une personne avec cette requête Cypher:
MATCH (i:Individual {nickname:'Louis XVI'})
<-[r:CHILD]-
(m:Family)
-[r2:HUSBAND|WIFE]->
(h:Individual)
return i,r,m,r2,h
Ou l'enfant d'une personne:
MATCH (i:Individual {nickname:'le Pieux ou le Débonnaire'})
<-[r:HUSBAND]-
(m:Family)
-[r2:CHILD]->
(h:Individual)
return i,r,m,r2,h
Mais comment puis-je obtenir tous les ascendants ou descendants d'une personne?
(En autre manière, comment puis-je répéter le modèle entre l'individu ou d'appliquer le même modèle à personne que je reçois à chaque niveau?)