Neo4j Cypher - как запросить "унаследованные" отношения на дочернем узле?

Я хочу использовать Cypher для запроса всех спецификаций, которые действительны для продукта, но со спецификациями, определенными на разных родительских уровнях продукта.

У меня есть модель данных, которая представляет собой дерево категоризации продукта с уровнями C1, C2, C3, ... и на продуктах самого низкого уровня P. Для упрощения обслуживания и ввода данных о спецификациях продукта, валидность спецификаций продукта определяется в уровни категоризации. Продукты "наследуют" спецификации, действительные для всех их родительских категорий, вплоть до корня дерева категоризации.

(Упрощенная) модель данных показана на рисунке. В этом случае спецификации продукта определяются для уровней категоризации C1, C2 и C3. Продукт связан с самым низким уровнем категоризации C3. Моя цель состоит в том, чтобы запросить все спецификации, которые действительны для продукта P, на основе их отношений с уровнями категоризации C1, C2 и C3.

графовая модель

У меня есть следующие вопросы:

  1. Возможно ли это с помощью одного запроса Cypher?
  2. Какова наилучшая стратегия запросов в большой базе данных? Использовать запрос? Создать реальные отношения для всех действительных спецификаций для продукта вместо запроса "унаследованных" спецификаций?
  3. Поменять модель данных?

Другие советы?

Спасибо

1 ответ

Решение

Вы можете найти все характеристики продукта, сопоставляя образцы переменной длины.

Если у вас есть параметр productId, вы бы использовали что-то вроде этого

MATCH (p:PRODUCT {productId:$productiId)-[:BELONGS_TO*]->(c:Category)<-[:VALID_FOR]-(s:Specification)
RETURN s

чтобы получить соответствующие спецификации.

Поскольку вы, кажется, работаете над списками материалов, вы можете захотеть взглянуть на некоторые вещи:

Управление сложными спецификациями продуктов путем разделения их на "атомы" https://www.slideshare.net/neo4j/graphtour-neo4j-murrelektronik

а также

Пример того, как вы можете отслеживать версии своей спецификации: https://www.youtube.com/watch?v=7iMraBHtTqE

Раскрытие информации: я являюсь членом команды Graphileon и занимаюсь тем, что показано в слайде и видео.

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