Логические операторы в базе данных графа (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
Однако мне не удается найти запрос, который использует логические узлы для фильтрации недопустимых путей. Недопустимый (под) путь будет, когда:
- Логический узел, где тип равен "И", имеет больше входящих:HAS_LOGIC отношений, чем в пути.
- Логический узел, где тип равен "НЕ", имеет входящие:HAS_LOGIC отношения, которые существуют в пути.
Кто-нибудь когда-нибудь пытался смоделировать граф, содержащий логическую информацию в графе, и наткнулся на решение?