主要内容

在社会社区找到朋友的朋友

此示例显示如何使用MATLAB®接口搜索一个社交社区以查找一个人的二级朋友到Neo4J®。假设您具有存储在代表社交社区的Neo4j数据库上的图表数据。该数据库有七个节点和八个关系。每个节点只有一个唯一的属性键名称价值来自User1通过User7.每个关系都有类型知道

找到二级朋友User1,使用MATLAB接口Neo4j和dig目的。有关MATLAB接口到NEO4J的详细信息,请参阅Neo4j数据库接口的图表数据库工作流程

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

连接到Neo4j数据库

创建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 = []

在数据库中搜索一个人

找到具有节点标签的节点属性名User1

user1 = searchNode (neo4jconn,“人”'propertykey'“名字”......“PropertyValue”'user1'
user1 = Neo4jNode with properties: NodeID: 0 NodeData: [1×1 struct] NodeLabels: 'Person'

搜索所有二级朋友的人

为…寻找外向的关系User1.要将搜索限制为与两个或多个距离的关系,请指定2作为名称-值对参数的值“距离”

user1_relation = searchrelation(neo4jconn,user1,'出去'“距离”, 2)
user1_relation =.结构体字段:节点:[4×3 table]关系:[4×5 table]

将图形数据转换为定向图

使用表格user1_relation.nodes.,访问名称显示在每个节点的属性Nodedata.桌子的变量。

分配表user1_relation.nodes.nodestable

nodestable = user1_relation.nodes.
nodestable =4×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.neo4jode]

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

Rownames = nodeStable.properties.roplownames.rownames.
rownames =4×1个单元阵列{'0'} {'1'} {'2'} {'3'}

访问Nodedata.变量从nodestable每行。Nodedata.包含一系列结构。

(nodestable nodedata =。NodeData {rownames}]
nodedata =1×4结构数组与字段:名称

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

节点名= {nodedata (:) . name}
Nodenames =.1×4个单元阵列{'User1'} {'User3'} {'User2'} {'User4'}

创建dig目的user1_graph使用neo4jstruct2digraph.函数中存储的关系数据user1_relation.和存储在的节点名称Nodenames.

user1_graph = neo4jstruct2digraph(user1_relation,'nodenames',Nodenames)
user1_graph =带有属性的数字:边缘:[4×3表]节点:[4×3表]

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

绘图(User1_Graph,'Edgelabel',user1_graph.edges.relationtype)

找到人的朋友

检索所有一级朋友的列表User1.的user1_friend变量是一个字符向量单元数组,包含第一级好友的名称。

DISP(User1的朋友是:
User1的朋友是:
user1_friend =继任者(user1_graph,'user1'
user1_friend =2×1个单元阵列{' User3} {User2的}

查找二级朋友

找到二级朋友User1, 跑步继承人再次通过循环遍历一级好友列表。user1_friends_friend.是字符向量的单元格数组,包含二级好友的名称。

user1_friends_friend = {};为了i = 1:长度(user1_friend)user1_friends_friend = [user1_friends_friend;......继承人(User1_Graph,User1_friend {i})];结尾DISP(“User1'的朋友的朋友是:'
User1的好友是:
user1_friends_friend =唯一(user1_friends_friend)
user1_friends_friend =2×1个单元阵列{'user3'} {'user4'}

删除重复的朋友

从一级朋友列表中的二级朋友列表中删除重复项setdiff.

FinalResult = SetDiff(User1_Friends_Friend,User1_Friend);DISP(User1的二级好友是:
User1的二级朋友是:
为了i = 1:length(finalResult)结尾
User4

最后结果是字符向量的单元格数组,包含二级好友的名称。这个列表删除了第一级朋友的名字。

关闭数据库连接

关上(neo4jconn)

也可以看看

|||||

相关例子

更多关于