Логические операторы в базе данных графа (neo4j)

Редактировать: возможный дубликат: neo4j логические моделирование ворот, как?

У меня есть база данных neo4j, которая содержит Options, OptionValues, Configurations, Products и LogicalNodes. Конкретно, Конфигурация - это просто набор выбранных OptionValues, по одному для каждого Option. С другой стороны, логические узлы пытаются связать, какие комбинации OptionValues ​​указывают на один (или несколько) конкретных продуктов.

Здесь у меня есть пример:

Вы можете видеть, что на этом графике есть 3 варианта, 2 с 2 OptionValues ​​и один с 1 OptionValue. Каждое OptionValue связано с продуктом через один или несколько логических узлов. Логические узлы могут быть связаны друг с другом, и существует 3 типа логических узлов (И, ИЛИ, НЕ (не показано)).

Теперь мой вопрос, я знаю, как получить все продукты, связанные с данной Конфигурацией, не принимая во внимание LogicalNodes, используя этот шифр: MATCH p = (:Configuration {Id:"CONF1ID"})-[r1*]->(pi:ProductInstance) return pi

Однако мне не удается найти запрос, который использует логические узлы для фильтрации недопустимых путей. Недопустимый (под) путь будет, когда:

  1. Логический узел, где тип равен "И", имеет больше входящих:HAS_LOGIC отношений, чем в пути.
  2. Логический узел, где тип равен "НЕ", имеет входящие:HAS_LOGIC отношения, которые существуют в пути.

Кто-нибудь когда-нибудь пытался смоделировать граф, содержащий логическую информацию в графе, и наткнулся на решение?

0 ответов

Другие вопросы по тегам