在社会社区找到人与人之间的最短路径
这个例子展示了如何搜索社会社区人与人之间寻找最短路径,使用MATLAB®接口Neo4j®。假设您有图的数据存储在一个数据库Neo4j代表社会社区。该数据库有7个节点和8个关系。每个节点只有一个惟一的属性键的名字
从与一个值User1
通过User7
。每个关系类型知道
。
找到之间的最短路径User1
和User7
,使用MATLAB接口Neo4j和有向图
对象。Neo4j MATLAB接口的详细信息,请参阅图形数据库的工作流Neo4j数据库接口。
Neo4j数据库本地计算机主机和端口号7474年
、用户名neo4j
和密码matlab
。对数据库中数据的可视化表示,看到这个图。
连接到Neo4j数据库
创建一个Neo4j连接对象neo4jconn
使用URLhttp://localhost: 7474 / db /数据
、用户名neo4j
和密码matlab
。
url =“http://localhost: 7474 / db /数据”;用户名=“neo4j”;密码=matlab的;neo4jconn = neo4j (url、用户名、密码);
检查消息
Neo4j连接对象的属性neo4jconn
。空白的消息
属性表示连接成功。
neo4jconn.Message
ans = []
搜索整个图像
找到所有的人
每个节点和所有相关的关系人
节点使用searchGraph
。
social_graphdata = searchGraph (neo4jconn, {“人”})
social_graphdata =结构体字段:节点(7×3表):关系:[8×5表]
图形数据转换为有向图
使用的表social_graphdata.Nodes
,访问的名字
为每个节点属性中出现NodeData
表的变量。
分配表social_graphdata.Nodes
来nodestable
。
nodestable = social_graphdata.Nodes
nodestable =7×3表NodeLabels NodeData NodeObject __________ _______ ___________________________________ 0“人”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 1“人”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 2“人”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 3 '人' [1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 4“人”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 5“人”[1×1 struct] [1 x1 database.neo4j.http。Neo4jNode] 9“人”[1×1 struct] [1 x1 database.neo4j.http.Neo4jNode]
分配表中的每一行的行名称nodestable
来rownames
。
rownames = nodestable.Properties.RowNames
rownames =7×1单元阵列{' 0 '}{1}{' 2 '}{‘3’}{‘4’}{‘5’}{' 9 '}
访问NodeData
变量的nodestable
为每一行。nodedata
包含一个结构数组。
nodedata = [nodestable.NodeData {rownames}]
nodedata =1×7结构体数组字段:的名字
检索的名字
从每个结构,数组的索引。节点名
是一个单元阵列特征向量包含节点的名称。
节点名= {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表]节点:[7×3表]
看到一个图的可视化表示,创建一个图显示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)
另请参阅
neo4j
|searchNode
|searchRelation
|shortestpath