Я искал, как использовать временные отношения в Neo4j, когда я натолкнулся на этот вопрос: Cypher temp Relations и комментарий под ним заставил меня задуматься, когда их следует использовать, и поскольку никто не спорил с ним , Я подумал, что подниму это здесь.
Я исхожу в основном из SQL, и моя основная причина использования виртуальных отношений заключалась в том, чтобы исключить дублированные данные и вместо этого выполнить обход, чтобы получить свойства чего-то. *
Для более конкретного c примера, допустим, у нас есть надежный рецепт торта, в состав которого входит сахар. Сахар - вот что делает торт сладким.
А теперь представьте вариант использования, в котором мне не нравятся сладкие пироги, поэтому я хочу получить все ингредиенты рецепта, которые делают торт сладким, и, возможно, удалить их или найти альтернативы.
Тогда есть еще один вариант использования, когда я просто хочу сладкую еду. Я мог бы работать в обратном направлении от сладких ингредиентов, чтобы перейти к еде, или просто запомнить, что торт в целом сладкий, что сэкономит время от обхода и упростит запрос. Однако, как я упоминал ранее, это дублирует известные данные, которые можно вывести.
Извините, если пример слишком странный, я не умею их создавать. Я надеюсь, что главный вопрос все же задан.