Мы пытаемся распространить свойство на узлах с определенной меткой («Концепция») на подключенные узлы (с предикатом «CONTAINS_OBJECT») в качестве новой метки, но пытаемся присвоить свойство переменной в запросе,Как это можно сделать, предполагая, что будет несколько «Концептуальных» узлов, при условии, что никакие «Концептуальные» узлы не будут иметь перекрывающихся соединений с другими «Концептуальными» узлами.
, т.е. никогда не произойдет следующее, где n0и n1 различны:
(n0:Concept)-[:CONTAINS_OBJECT]->(o:Object)<-[:CONTAINS_OBJECT]-(n1:Concept)
В основном, как это должно быть сделано с Cypher?
Отказ от ответственности: Мы новички в Cypher - любые советы приветствуются.
Мы пробовали несколько более ограниченных запросов, но у нас тоже были проблемы с назначением переменных.
Этот запрос достиг желаемого результата для одного указанного узла «Concept»:
MATCH p = (c:Concept{ Name: 'Con0' })-[:CONTAINS_OBJECT]->(END)
FOREACH (n in nodes(p) | SET n:Con0)
Следующий запрос был нашей попыткой привязать свойство «Name» узла «Concept» к переменной », но в этом случае не назначается« p »:
MATCH p = (c:Concept{ Name: 'Con0' })-[:CONTAINS_OBJECT]->(END)
WITH c.Name as conceptName
FOREACH (n in nodes(p) | SET n:conceptName)
Чтобы упроститьрезультат, которого мы добиваемся максимально возможного, конечный результат состоит в том, что следующие два оператора MATCH должны возвращать одинаковые результаты для любого данного узла «Concept»:
1)
MATCH (c:Concept{ Name: 'Con0' })-[:CONTAINS_OBJECT]->(o:Object)
2)
MATCH (c:Concept{ Name: 'Con0' })-[:CONTAINS_OBJECT]->(o:Con0)
Хотите построить запрос по следующим строкам:
MATCH p = (c:Concept)-[:CONTAINS_OBJECT]->(END)
WITH c.Name as conceptName
FOREACH (n in nodes(p) | SET n:conceptName)