2015-12-01 2 views
0

Я пытаюсь моделировать сложные последствия между узлами в графе. Например, легко реализовать «If A then B», когда A и B являются простыми узлами и имеют ребро «Implies».Логика логики соединения в графике

Но как я могу моделировать условную логику? ie - «Если (A и B) или (C и D), то E"?

Thanks

+0

Не могли бы вы привести более подробный пример? Возможно, что вы до сих пор использовали Cypher? Возможно, предложение ['OPTIONAL MATCH'] (http://neo4j.com/docs/stable/query-optional-match.html) - это то, что вы ищете. –

+0

Предположим, у меня есть база данных событий (процентная ставка будет расти, цена на сырую нефть снизится), и я хочу моделировать последствия между ними (если процентная ставка повысится, тогда цена на сырую нефть снизится). В этом примере у меня может быть 2 объекта с «импликацией» между ними. Теперь предположим, что у меня есть 3-е событие - «ВВП будет расти», и я хочу моделировать: «Если процентные ставки будут расти (А), а цена на сырую нефть снизится (В), тогда ВВП поднимется (С). –

ответ

0

Как насчет моделирования логических операторов как узлов? У вас будет узел с меткой :And, с двумя (или более) входящими отношениями :CONDITION и одним исходящим отношением :IMPLIES. Вы можете приковать их, имея исходящие :CONDITION отношений в другие оператор :Or, :Xor, :Not и т.д.

Для запроса для событий, которые могут произойти как следствие определенного события, вы могли бы использовать эту форму:

MATCH (cause:Event {id: 'A'})-[:CONDITION|IMPLIES*]->(effect:Event) 
RETURN effect.id AS effectsOfA 
Смежные вопросы