主要内容

在社会邻里中寻找人与人之间的最短路径

这个例子展示了如何使用Neo4j®的MATLAB®接口来搜索一个社交社区来找到人与人之间的最短路径。假设您有存储在Neo4j数据库中的图形数据,该数据库表示一个社交社区。该数据库有7个节点和8个关系。每个节点只有一个唯一的属性键的名字取值范围为User1通过User7.每个关系都有类型知道

找到最短路径User1而且User7,使用MATLAB接口对Neo4j和有向图对象。有关Neo4j的MATLAB接口的详细信息,请参见Neo4j数据库接口的图形数据库工作流

本地机器承载带有端口号的Neo4j数据库7474、用户名neo4j和密码matlab.有关数据库中数据的可视化表示,请参见此图。

连接到Neo4j数据库

创建一个Neo4j连接对象neo4jconn使用URLhttp://localhost:7474/db/data、用户名neo4j和密码matlab

url =“http://localhost: 7474 / db /数据”;用户名=“neo4j”;密码=matlab的;neo4jconn = neo4j (url、用户名、密码);

检查消息属性neo4jconn.空白的消息属性指示连接成功。

neo4jconn。消息
ans = []

搜索整个图像

找到所有的节点及其关联的所有关系节点使用searchGraph

social_graphdata = searchGraph (neo4jconn, {“人”})
social_graphdata =结构体字段:节点:[7×3 table]关系:[8×5 table]

将图数据转换为有向图

使用的表social_graphdata。节点,访问的名字属性中出现的每个节点的NodeData表的变量。

分配表social_graphdata。节点nodestable

nodestable = social_graphdata。节点
nodestable =7×3表NodeLabels NodeData NodeObject  __________ ____________ ___________________________________ 0“人”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 1 'Person' [1×1 struct] [1x1 database.neo4j.http.]Neo4jNode] 2 'Person' [1×1 struct] [1x1 database.neo4j.http.]Neo4jNode] 3 'Person' [1×1 struct] [1x1 database.neo4j.http.]Neo4jNode] 4 'Person' [1×1 struct] [1x1 database.neo4j.http.]Neo4jNode] 5 'Person' [1×1 struct] [1x1 database.neo4j.http.][1x1 database.neo4j.http.Neo4jNode] 9 'Person' [1×1 struct] [1x1 database.neo4j.http.Neo4jNode]

为表中的每一行分配行名nodestablerownames

rownames = nodestable.Properties.RowNames
rownames =7×1单元阵列{'0'} {'1'} {'2'} {'3'} {'4'} {'5'} {'9'}

访问NodeData变量的nodestable为每一行。nodedata包含结构数组。

(nodestable nodedata =。NodeData {rownames}]
nodedata =1×7带字段的struct数组:的名字

检索的名字字段从每个结构,索引到数组。节点名包含节点名称的字符向量的单元格数组。

节点名= {nodedata (:) . name}
节点名=1×7单元阵列{User1的}{‘User3} {User2的}{‘User4}{‘User5}{‘User6} {' User7 '}

创建有向图对象social_graph使用neo4jStruct2Digraph函数的图形数据存储在social_graphdata和存储的节点名称节点名

social_graph = neo4jStruct2Digraph (social_graphdata,的节点名节点名)
social_graph =属性有向图:边:[8×3 table]节点:[7×3 table]

要查看图形的可视化表示,请创建一个显示的图形social_graph

情节(social_graph“EdgeLabel”social_graph.Edges.RelationType)

寻找最短路径

找出两者之间的最短路径User1而且User7使用shortestpath

[user1_to_user7,距离]= shortestpath (social_graph,“User1”“User7”
user1_to_user7 =1×5单元阵列{'User1'} {'User3'} {'User4'} {'User6'} {'User7'}
距离= 4

关闭数据库连接

关上(neo4jconn)

另请参阅

|||

相关的例子

更多关于

Baidu
map