www.gusucode.com > database 案例源码程序 matlab代码 > database/FindShortestPathExample.m
%% Find Shortest Path Between People in Social Neighborhood % This example shows how to search a social neighborhood to find the % shortest path between people, using the MATLAB(R) interface to Neo4j(R). % Assume that you have graph data that is stored on a Neo4j(R) % database which represents a social neighborhood. This database has seven % nodes and eight relationships. Each node has only one unique property key % |name| with values |User1| through |User7|. Each relationship has type % |knows|. % % To find the shortest path between |User1| and |User7|, use the MATLAB(R) % interface to Neo4j(R) and the <docid:matlab_ref.bun70tf> object. For % details about the MATLAB(R) interface to Neo4j(R), see % <docid:database_ug.bveys16-1>. % % The local machine hosts the Neo4j(R) database with port number |7474|, % user name |neo4j|, and password |matlab|. For a visual representation of % the data in the database, see this figure. % % <<../Social.JPG>> % %% Connect to Neo4j(R) Database % Create a Neo4j(R) connection object |neo4jconn| using the URL % |http://localhost:7474/db/data|, user name |neo4j|, and password % |matlab|. url = 'http://localhost:7474/db/data'; username = 'neo4j'; password = 'matlab'; neo4jconn = neo4j(url,username,password); %% % Check the |Message| property of the Neo4j(R) connection object % |neo4jconn|. neo4jconn.Message %% % The blank |Message| property indicates a successful connection. %% Search Entire Graph % Find all the |Person| nodes and all the relationships associated with % each |Person| node using |searchGraph|. social_graphdata = searchGraph(neo4jconn,{'Person'}) %% Convert Graph Data to Directed Graph % Using the table |social_graphdata.Nodes|, access the |name| property for % each node that appears in the |NodeData| variable of the table. %% % Assign the table |social_graphdata.Nodes| to |nodestable|. nodestable = social_graphdata.Nodes %% % Assign the row names for each row in the table |nodestable| to % |rownames|. rownames = nodestable.Properties.RowNames %% % Access the |NodeData| variable from |nodestable| for each row. nodedata = [nodestable.NodeData{rownames}] %% % |nodedata| contains an array of structures. %% % To retrieve the |name| field from each structure, index into the array. nodenames = {nodedata(:).name} %% % |nodenames| is a cell array of character vectors that contains node % names. %% % Create the |digraph| object |social_graph| using the % |neo4jStruct2Digraph| function with the graph data stored in % |social_graphdata| and the node names stored in |nodenames|. social_graph = neo4jStruct2Digraph(social_graphdata,'NodeNames',nodenames) %% % To see a visual representation of the graph, create a figure that % displays |social_graph|. plot(social_graph,'EdgeLabel',social_graph.Edges.RelationType) %% Find Shortest Path % Find the shortest path between |User1| and |User7| using |shortestpath|. [user1_to_user7,distance] = shortestpath(social_graph,'User1','User7')