2013-05-21 4 views
1

Je voudrais créer un groupe de "et" et "ou" et "pas" portes dans un graphique dirigé. Puis traversez les entrées pour voir ce qu'elles sont. Je suppose qu'il y a une traversée prête à l'emploi qui ferait cela mais je ne le vois pas. Je ne sais pas quel serait le nom d'une telle traversée.neo4j simulation de porte logique, comment?

Certainement la largeur d'abord ne fera pas le travail. Je dois obtenir TOUTES les feuilles, et remonter vers la racine. En d'autres termes

A = (B & (C & Z))

Je dois résoudre C @ Z premier.

J'ai besoin de mettre ce type de chose dans un graphique et de le parcourir.

+0

Alors esse Initialement, vous essayez de résoudre une expression booléenne dans la base de données graphique? – Nicholas

+1

Avez-vous déjà utilisé une solution? – Nicholas

+0

est-ce mort? C'est l'une des seules ressources que je peux trouver sur le sujet – tscherg

Répondre

1

Vous devez probablement créer chacune des opérations en tant que nœud qui a une connexion entrante et une connexion sortante. Bien sûr, vous pouvez également encapsuler des opérations plus complexes en tant que nœud.

Avec Neo4j 2.0, j'utiliserais des étiquettes pour les 3 types d'opérations.

Je suppose que vos feuilles seraient alors des valeurs booléennes? En fait, je pense que vous avez beaucoup de racines et juste une seule feuille (l'expression de résultat)

(input1)-->(:AND {id:1})-->(:OR {id:2})-->(output) 
(input2)-->(:AND {id:1}) 
(input3)------------------>(:OR {id:2}) 

vous pouvez utiliser CASE lorsque des décisions sur le type d'étiquette et d'utiliser les prédicats de collecte (ALL, ANY) pour le calcul

Voir: http://docs.neo4j.org/chunked/milestone/cypher-query-lang.html

prédicats: http://docs.neo4j.org/chunked/milestone/query-function.html

Labels: http://docs.neo4j.org/chunked/milestone/query-match.html#match-get-all-nodes-with-a-label