此示例显示如何使用MATLAB®界面搜索社交社区以找到人与人之间的最短路径。假设您具有存储在代表社交社区的Neo4j数据库上的图表数据。该数据库有七个节点和八个关系。每个节点只有一个唯一的属性键姓名
价值来自User1.
通过User7
。每个关系都有类型知道
。
找到最短的路径User1.
和User7
,使用MATLAB接口的Neo4j和dig
目的。有关MATLAB接口到NEO4J的详细信息,请参阅Neo4j数据库接口的图表数据库工作流程。
本地计算机将Neo4j数据库带到端口号7474.
、用户名neo4j.
和密码matlab
。有关数据库中数据的可视化表示,请参阅此图。
创建neo4j连接对象neo4jconn
使用URL.http:// localhost:7474 / db / data
、用户名neo4j.
和密码matlab
。
url ='http:// localhost:7474 / db / data';用户名='neo4j';密码='matlab';neo4jconn = neo4j (url、用户名、密码);
检查消息
neo4j连接对象的属性neo4jconn
。空白消息
属性表示连接成功。
neo4jconn.message.
ans = []
找到所有的人
节点和每个关联的所有关系人
节点使用SearchGread.
。
social_graphdata = searchGraph (neo4jconn, {“人”})
social_graphdata =结构与字段:节点:[7×3表]关系:[8×5表]
使用表格social_graphdata.nodes.
,访问姓名
显示在每个节点的属性Nodedata.
桌子的变量。
分配表social_graphdata.nodes.
到nodestable
。
nodestable = socum_graphdata.nodes.
nodestable =7×3表NodeLabels Nodedata NodeObject __________ ________________________ 0'个人'[1×1 struct] [1x1 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数据库。neo4j.http.neo4jnode] 5'person'[1×1 struct] [1x1 database.neo4j.http.neo4jnode] 9'person'[1×1 struct] [1x1 database.neo4j.http.neo4jnode]
为表中的每一行分配行名称nodestable
到rownames.
。
Rownames = nodeStable.properties.roplownames.rownames.
rownames =7×1个单元阵列{'0'} {'1'} {'2'} {'3'} {'3'} {'4'} {'5'} {'5'} {'9'}
访问Nodedata.
变量从nodestable
每行。Nodedata.
包含一系列结构。
(nodestable nodedata =。NodeData {rownames}]
nodedata =1×7结构数组与字段:姓名
检索姓名
从每个结构,索引到阵列的字段。Nodenames.
是包含节点名称的字符向量的单元格数组。
节点名= {nodedata (:) . name}
Nodenames =.1×7单元阵列{User1的}{‘User3} {User2的}{‘User4}{‘User5}{‘User6} {' User7 '}
创造dig
目的Social_Graph..
使用neo4jstruct2digraph.
函数中存储图形数据social_graphdata.
和存储在的节点名称Nodenames.
。
social_graph = neo4jstruct2digraph(socum_graphdata,'nodenames',Nodenames)
social_graph = diggraph with properties: Edges: [8×3 table] Nodes: [7×3 table]
要查看图形的可视表示,请创建一个显示的图形Social_Graph..
。
绘图(Social_Graph,'Edgelabel',seamial_graph.edges.relationtype)
找到最短的路径User1.
和User7
使用最短路径
。
[user1_to_user7,距离]= shortestpath (social_graph,'user1'那'user7')
user1_to_user7 =1×5个单元阵列{'user1'} {'user3'} {'user4'} {'user6'} {'user7'}
距离= 4.
关上(neo4jconn)
neo4j.
|searchnode.
|searchrelation.
|最短路径