此示例显示如何使用MATLAB®接口到NEO4J®在网络中的服务中分析依赖关系。假设您具有存储在Neo4J®数据库上的图数据,该数据代表网络。该数据库有七个节点和七个关系。每个节点只有一个唯一的属性键姓名
有价值服务1
通过服务7.
.每个关系都有类型取决于
.
要查找每个服务取决于的服务数,请使用MATLAB®接口到NEO4J®和dig
对象。关于Neo4j®的MATLAB®接口的详细信息,请参见Neo4j数据库接口的图表数据库工作流程.
本地计算机将Neo4j®数据库带有端口号7474.
、用户名neo4j.
和密码matlab
.对于数据库中数据的可视化表示,请参阅此图。
创建neo4j®连接对象neo4jconn
使用URL.http:// localhost:7474 / dB /数据
、用户名neo4j.
和密码matlab
.
url ='http:// localhost:7474 / db / data';用户名='neo4j';密码='matlab';neo4jconn = neo4j (url、用户名、密码);
检查消息
neo4j®连接对象的属性neo4jconn
.空白消息
属性表示连接成功。
neo4jconnmessage.
ans = []
检索类型的所有关系取决于
以及与每个关系相关联的所有节点。
network_graphdata = searchgraph(neo4jconn,{'取决于'})
network_graphdata =结构与字段:节点:[7×3表]关系:[7×5表]
使用表格network_graphdata。节点
,访问姓名
出现在的每个节点的属性Nodedata.
桌子的变量。
分配表network_graphdata。节点
到nodestable
.
nodeStable = network_graphdata.nodes.nodes.
nodestable =7×3表NodeLabels Nodedata nodeObject __________ _____________________________________________________[1×1 struct] [1x1 database.neo4j.http.neo4jnode] 2'服务'[1×1 struct] [1x1 database.neo4j.http.neo4jnode] 3'服务'[1×1 struct] [1x1数据库。neo4j.http.neo4jnode] 5'服务'[1×1 struct] [1x1 database.neo4j.http.neo4jode] 1'服务'[1×1 struct] [1x1 database.neo4j.http.neo4jnode]
为每行分配行名称rownames.
.
rownames = nodeestable.properties.roply.rownames.
rownames =7×1个单元阵列{'6'} {'0'} {'4'} {'2'} {'3'} {'3'} {'5'} {'5'} {'1'}
访问Nodedata.
变量从nodestable
每行。Nodedata.
包含一系列结构。
(nodestable nodedata =。NodeData {rownames}]
nodedata =1×7结构数组与字段:姓名
检索姓名
从每个结构,索引到阵列的字段。Nodenames.
是包含节点名称的字符向量的单元格数组。
节点名= {nodedata (:) . name}
Nodenames =.1×7单元阵列{' Service7}{‘价格’}{‘Service1}{‘Service3}{”生成“Service2}{‘Service4} {' Service5 '}
创造dig
目的Network_Graph..
使用neo4jstruct2digraph.
功能和图形network_graphdata.
.
network_graph = neo4jstruct2digraph(network_graphdata,'nodenames',Nodenames)
network_graph =有向图属性:Edges: [7×3 table] Nodes: [7×3 table]
要查看图形的可视化表示,创建显示该图形的图形Network_Graph..
.
情节(network_graph'Edgelabel',network_graph.edges.relationtype)
在图中找到每个服务所依赖的服务数量Network_Graph..
.通过使用for循环遍历图中的节点,确定每个节点的依赖项计数。要确定依赖项计数,请使用最近
功能。
创建表格dependency_count.
存储每个服务的依赖服务的计数。按依赖项计数降序排列表中的行。
dependency_count = table;为了i = 1:height(network_graph.Nodes) nodeid = network_graph.Nodes. name (i);nearest_node =最近的(network_graph nodeid,正无穷,'方向'那out);nearest_length =长度(nearest_node);dependency_count = [dependency_count;......表(NodeID,最近的_Length,......'variablenames',{“节点”那“Dependency_count”}));结尾dependency_count = sortrows(dependency_count,-2)
dependency_count =7×2表Node Dependency_count __________ ________________ 'Service6' 5' Service7' 3' Service4' 2' Service5' 2' Service3' 1' Service2' 1' Service1' 0
查找服务的所有服务服务6.
取决于图表中Network_Graph..
使用最近
功能。
disp ('Service6依赖于以下服务:');
Service6取决于以下服务:
最近的(network_graph,'服务6',inf,'方向'那out的)
ANS =.5×1单元阵列{'service4'} {'service5'} {'service3'} {'service2'} {'service1'}
关上(neo4jconn)
neo4j.
|searchnode.
|searchrelation.
|最近