2017-06-12 4 views
1

La base de données comporte des nœuds qui forment un arbre. Chaque nœud suit un autre avec le prédicat "précède". Je veux écrire une requête qui peut lire l'arbre entier donné le noeud de départ.Comment lire les nœuds liés récursivement dans la base de données de Cayley Graph?

J'ai essayé le morphisme, mais la sortie n'a aucun sens pour moi. Peut-être à cause de mon manque de comprendre ce que « morphisme » signifie en fait ...

Tout conseils ou des liens vers de bons exemples réels seraient appréciés

Répondre

1

Dans Neo4j vous devriez faire quelque chose comme ceci:

MATCH p = (:Root)-[:precedes*]-() 
RETURN p 

Notez que * spécifié après le type de relation effectue une recherche complète dans l'ensemble du graphique. Cela peut causer des problèmes de mémoire. Comme @Bruno l'a souligné dans sa réponse, l'équivalent de * dans Gremlin est FollowRecursive().

+0

Merci. Des idées comment cela pourrait ressembler à Gremlin/Gizmo? Ou des mots-clés pour ces concepts? –

1

var c1 = g.M().Both("precedes") 
g.V("chain-1").FollowRecursive(c1).All() 

Une chose clé ici est la partie dans .Les deux morphisme requête. Il code pour que la direction du prédicat soit à la fois dans et hors. Je ne suis pas sûr comment cela correspond au modèle de requête Neo4j