neo4j:表示对象属性,而不是对象之间链接中的关系

neo4j:表示对象属性,而不是对象之间链接中的关系,neo4j,cypher,Neo4j,Cypher,我想使用neo4j来表示网络,以便制作像这样的漂亮图形: 以下是迄今为止使用的代码: CREATE (router1:Router {name:'router1', defaultgw:'192.168.123.1'}) CREATE (network1:Network {name:'network1', cidr:'192.168.123.0/24'}) CREATE (server1:Server {hostname:'server1', ip:'192.168.123.7'}) CREA

我想使用neo4j来表示网络,以便制作像这样的漂亮图形:

以下是迄今为止使用的代码:

CREATE (router1:Router {name:'router1', defaultgw:'192.168.123.1'})
CREATE (network1:Network {name:'network1', cidr:'192.168.123.0/24'})
CREATE (server1:Server {hostname:'server1', ip:'192.168.123.7'})
CREATE (server2:Server {hostname:'server2', ip:'192.168.123.9'})
CREATE
(router1)-[:CONNECTED_TO {}]->(network1),
(network1)-[:CONNECTED_TO {}]->(server1),
(network1)-[:CONNECTED_TO {}]->(server2) 
WITH router1 AS r
  MATCH (r)-[:CONNECTED_TO]->(n)-[:CONNECTED_TO]->(s) RETURN r,n,s
;
是否有方法表示路由器和网络之间使用的子网,以及服务器和相关网络之间链路上的服务器ip,而不是连接到的适当但无意义的

我试图将关系定义为:

CREATE (router1)-[:CONNECTED_TO {'192.168.123.0/24'}]->(network1)
or
CREATE (router1)-[:CONNECTED_TO {network1.cidr}]->(network1)
没有成功。有可能吗

非常感谢您的帮助

[编辑]

每个属性都需要一个名称。例如,
cidr

CREATE (router1)-[:CONNECTED_TO {cidr: '192.168.123.0/24'}]->(network1)
以下是完整的查询:

CREATE (router1:Router {name:'router1', defaultgw:'192.168.123.1'})
CREATE (network1:Network {name:'network1', cidr:'192.168.123.0/24'})
CREATE (server1:Server {hostname:'server1', ip:'192.168.123.7'})
CREATE (server2:Server {hostname:'server2', ip:'192.168.123.9'})
CREATE
  (router1)-[:CONNECTED_TO {cidr: '192.168.123.0/24'}]->(network1),
  (network1)-[:CONNECTED_TO {ip:'192.168.123.7'}]->(server1),
  (network1)-[:CONNECTED_TO {ip:'192.168.123.9'}]->(server2) 
WITH router1 AS r
  MATCH (r)-[:CONNECTED_TO]->(n)-[:CONNECTED_TO]->(s) RETURN r,n,s
;

但是,将此属性添加到关系中会导致将属性存储在两个位置——这可能是浪费,如果需要更改属性值,则需要额外的努力才能在多个位置执行更新。我建议只将属性放在一个地方,根据您所有用例的需要做出决定。

谢谢您的回答,但它似乎不起作用;我将此
用于gw_项目_路由器,作为g匹配p=(g)-[:连接到*]->(x),其中不(x)-[:连接到]->()返回p作为查询查看我编辑的完整查询答案。这对我有用。你说得对:它有用。也许我一直在添加有属性和无属性的关系,这一事实让我无法为整个图形选择要显示的属性。非常感谢!