Mimi c временный вид результатов Neo4j - PullRequest
0 голосов
/ 27 мая 2020

У меня есть диаграмма, состоящая из различных доказательств. Я хочу на лету агрегировать оценку достоверности между свидетельствами между двумя узлами и вернуть новую тройку, например node1-[aggregate_score {agg_confidence:100}]->node2.

Мой текущий запрос:

MATCH (n1{name:"test_node1"})-[:IS_SRC_OF_EVIDENCE]->(test_ev:TestEvidence {theme:"test_rel"})<-[:IS_TRG_OF_EVIDENCE]-(n2{name:"test_node2"})
WITH avg(test_ev.confidence) as agg_confidence, n1, n2
CREATE (n1)-[statement:TEST_REL{confidence:agg_confidence}]->(n2)
RETURN (n1)-[statement]->(n2)

Насколько я понимаю, нет способа вернуть временные отношения - могут быть возвращены только те вещи, которые существуют. Поэтому следующим лучшим вариантом было бы иметь что-то вроде подграфа, в котором я мог бы временно сохранить эти новые отношения; действует как своего рода кеш, который я мог бы регулярно очищать.

Прежде чем кто-то заявит, что я должен явно создать эту совокупную связь для всех наборов узлов, это не вариант, поскольку есть несколько полей метаданных, которые будут отфильтрованы на которых нет в списке - date_published et c. что в таком случае повлияет на совокупный балл.

Есть какие-либо рекомендации или проработал ли кто-нибудь аналогичный вариант использования?

1 Ответ

1 голос
/ 27 мая 2020

Вы можете использовать APO C для создания виртуальных узлов и отношений , которые браузер neo4j может визуализировать, но которые на самом деле не существуют в БД.

Например, запустив это запрос в браузере neo4j должен отображать виртуальные TEST_REL отношения с желаемыми confidence значениями:

MATCH (n1{name:"test_node1"})-[:IS_SRC_OF_EVIDENCE]->(t:TestEvidence {theme:"test_rel"})<-[:IS_TRG_OF_EVIDENCE]-(n2{name:"test_node2"})
RETURN n1, n2,
  apoc.create.vRelationship(n1, 'TEST_REL', {confidence: AVG(t.confidence)}, n2) as rel
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...