Neo4j: Как я могу отображать метки как узлы? - PullRequest
0 голосов
/ 18 марта 2020

У меня вопрос по Neo4j. Мне нужно отображать метки в моей базе данных графа как узел - например, если в моей базе данных есть только два типа меток (например, «Вещи» и «Персона»), я хочу иметь 2 дополнительных узла - «Вещи» и «Лица», которые связаны с обычными узлами.

Пример - у меня есть это:

image 1

Оранжевый узел - это Персона, красный - это Вещи. Поэтому я хочу иметь дополнительные узлы меток для каждой метки на графике. Итак, я хочу это:

enter image description here

Может ли это быть создано автоматически?

1 Ответ

1 голос
/ 18 марта 2020

На самом деле вы не хотите этого делать, поскольку визуализация с N узлами будет иметь N посторонних связей со специальными узлами «метки», что затруднит (или даже сделает невозможным) просмотр реальных данных. Использование разных цветов для разных меток является хорошим компромиссом.

В любом случае, верхняя часть панели результатов (в браузере neo4j) показывает, какой цвет принадлежит какому метке, так что вы уже можете легко получить информацию Вы хотите.

[ОБНОВЛЕНИЕ]

Однако, если вам действительно нужно сделать что-то подобное, не существует "автоматизированного" способа. Но вы можете использовать некоторые процедуры APO C для создания виртуальных узлов и отношений , которые не хранятся в БД, но которые можно визуализировать.

Например, если ваш исходный запрос Cypher is:

MATCH path=(p:Person)-[r:RELTYPE]->(t:Thing)
RETURN *

Вы можете использовать этот запрос для генерации соответствующих виртуальных узлов и связей:

MATCH path=(p:Person)-[r:RELTYPE]->(t:Thing)
WITH COLLECT(path) AS paths, COLLECT(DISTINCT p) AS ps, COLLECT(DISTINCT t) AS ts
CALL apoc.create.vNode(['V_Label'], {label: 'Person'}) YIELD node AS pLabel
CALL apoc.create.vNode(['V_Label'], {label: 'Thing'}) YIELD node AS tLabel
UNWIND ps AS person
CALL apoc.create.vRelationship(person, 'IS', {}, pLabel) YIELD rel AS pRel
WITH paths, ts, pLabel, tLabel, COLLECT(pRel) AS pRels
UNWIND ts AS thing
CALL apoc.create.vRelationship(thing, 'IS', {}, tLabel) YIELD rel AS tRel
RETURN *

Образец результирующей визуализации:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...