Neo4j - ссылка на узел в свойствах отношения - PullRequest
0 голосов
/ 09 апреля 2020

Мне интересно, может ли свойство отношения между двумя узлами ссылаться на другой узел. Я пытаюсь увидеть, могу ли я визуализировать списки ACL Cisco с Neo4j, поэтому у меня есть некоторые данные, которые выглядят так:

сеть группы объектов Server_Group_A

сеть-объект хост 1.2.3.4

хост сетевого объекта 2.3.4.5

хост сетевого объекта 3.4.5.6

сеть группы объектов Server_Group_B

сеть объекта хост 4.3.2.1

хост сетевого объекта 5.4.3.2

хост сетевого объекта 6.5.4.3

служба группы объектов Port_Group_A tcp

port- объектный эквалайзер 80

порт-объектный эквалайзер 443

access-list Расширенное разрешение Some_Interface tcp объектная группа Server_Group_A объектная группа Server_Group_B объектная группа Port_Group_A

Пока что Я строил все в Cypher так:

(Server1: Сервер {IP: '1.2.3.4'}),

... et c. ..

(Server_Group_A: ObjectGroup {Имя: 'Server_Group_A'}),

(Server_Group_B: ObjectGroup {Имя: 'Server_Group_B'}),

(Port_Group_A: PortGrou p {Name: 'Server_Group_B'}),

(Port_80: PortObject {Port: '80 '}),

(Port_443: PortObject {Port:' 443 '} ),

(Server1) - [: MemberOf] -> (Server_Group_A)

... et c ...

( Port_80) - [: MemberOf] -> (Port_Group_A)

... et c ...

Когда речь идет о выражении отношений между Server_Group_A и Server_Group_B для соответствия ACL, возможно ли, чтобы узел Port_Group_A был одним из свойств отношения? Я пробовал это, но я получаю ошибку типа, которую я ожидал:

(Server_Group_A) - [: ConnectedTo {Ports: [Port_Group_A]}] -> ( Server_Group_B)

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

1 Ответ

0 голосов
/ 09 апреля 2020

Значение свойства не может быть узлом.

Но оно может быть уникальным идентификатором узла (например, его свойство Name, если оно уникально). Но чтобы получить этот узел, потребуется более сложный запрос (и он может быть менее эффективным).

Вместо этого вы можете «преобразовать» отношение ConnectedTo, превратив его в узел Connection. Например:

(Server_Group_A)-[:HAS_OUTPUT_CONNECTION]->(c:Connection)<-[:HAS_INPUT_CONNECTION]-(Server_Group_B)
(c)-[:USES_PORT_GROUP]->(Port_Group_A])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...