Main Content

neo4jStruct2Digraph

Convert graph or relationship structure from Neo4j database to directed graph

Description

example

G = neo4jStruct2Digraph(s) creates a directed graph from the structure s. With the directed graph, run graph network analytics using MATLAB®. For example, to visualize the graph, see Graph Plotting and Customization.

example

G = neo4jStruct2Digraph(s,'NodeNames',nodenames) specifies names of the Neo4j® database nodes in the directed graph.

Examples

collapse all

Create a Neo4j® database connection 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 connection object neo4jconn. The blank Message property indicates a successful connection.

neo4jconn.Message
ans =

     []

Search for incoming relationships using the Neo4j database connection neo4jconn and origin node identifier nodeid.

nodeid = 1;
direction = 'in';

relinfo = searchRelation(neo4jconn,nodeid,direction);

Convert the relationship information into a directed graph. G is a digraph object that contains two tables for edges and nodes.

G = neo4jStruct2Digraph(relinfo)
G = 
  digraph with properties:

    Edges: [2×3 table]
    Nodes: [3×3 table]

Access the table of edges.

G.Edges
ans=2×3 table
     EndNodes     RelationType    RelationData
    __________    ____________    ____________

    '0'    '1'      'knows'       [1×1 struct]
    '2'    '1'      'knows'       [1×1 struct]

Access the table of nodes.

G.Nodes
ans=3×3 table
    Name    NodeLabels      NodeData  
    ____    __________    ____________

    '0'      'Person'     [1×1 struct]
    '1'      'Person'     [1×1 struct]
    '2'      'Person'     [1×1 struct]

Find the shortest path between all nodes in G.

d = distances(G)
d = 3×3

     0     1   Inf
   Inf     0   Inf
   Inf     1     0

Close the database connection.

close(neo4jconn)

Create a Neo4j® database connection 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 connection object neo4jconn. The blank Message property indicates a successful connection.

neo4jconn.Message
ans =

     []

Search for a subgraph using the Neo4j database connection neo4jconn and node label nlabel.

nlabel = {'Person'};

graphinfo = searchGraph(neo4jconn,nlabel);

Convert the graph information into a directed graph. G is a digraph object that contains two tables for edges and nodes.

G = neo4jStruct2Digraph(graphinfo)
G = 
  digraph with properties:

    Edges: [8×3 table]
    Nodes: [7×3 table]

Access the table of edges.

G.Edges
ans=8×3 table
     EndNodes     RelationType    RelationData
    __________    ____________    ____________

    '0'    '1'      'knows'       [1×1 struct]
    '0'    '2'      'knows'       [1×1 struct]
    '1'    '3'      'knows'       [1×1 struct]
    '2'    '1'      'knows'       [1×1 struct]
    '3'    '4'      'knows'       [1×1 struct]
    '3'    '5'      'knows'       [1×1 struct]
    '5'    '4'      'knows'       [1×1 struct]
    '5'    '9'      'knows'       [1×1 struct]

Access the table of nodes.

G.Nodes
ans=7×3 table
    Name    NodeLabels      NodeData  
    ____    __________    ____________

    '0'      'Person'     [1×1 struct]
    '1'      'Person'     [1×1 struct]
    '2'      'Person'     [1×1 struct]
    '3'      'Person'     [1×1 struct]
    '4'      'Person'     [1×1 struct]
    '5'      'Person'     [1×1 struct]
    '9'      'Person'     [1×1 struct]

Find the shortest path between all nodes in G.

d = distances(G)
d = 7×7

     0     1     1     2     3     3     4
   Inf     0   Inf     1     2     2     3
   Inf     1     0     2     3     3     4
   Inf   Inf   Inf     0     1     1     2
   Inf   Inf   Inf   Inf     0   Inf   Inf
   Inf   Inf   Inf   Inf     1     0     1
   Inf   Inf   Inf   Inf   Inf   Inf     0

Close the database connection.

close(neo4jconn)

Create a Neo4j® database connection 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 connection object neo4jconn. The blank Message property indicates a successful connection.

neo4jconn.Message
ans =

     []

Search for a subgraph using the Neo4j database connection neo4jconn and node label nlabel.

nlabel = {'Person'};

graphinfo = searchGraph(neo4jconn,nlabel);

Convert the graph information into a directed graph using the node names in the subgraph. Convert node names into a cell array of character vectors nodenames. G is a digraph object that contains two tables for edges and nodes.

names = [graphinfo.Nodes.NodeData{:}];
nodenames = {names(:).name};

G = neo4jStruct2Digraph(graphinfo,'NodeNames',nodenames)
G = 
  digraph with properties:

    Edges: [8×3 table]
    Nodes: [7×3 table]

Access the table of edges.

G.Edges
ans=8×3 table
         EndNodes         RelationType    RelationID
    __________________    ____________    __________

    'User1'    'User3'      'knows'           1     
    'User1'    'User2'      'knows'           0     
    'User3'    'User4'      'knows'           3     
    'User2'    'User3'      'knows'           2     
    'User4'    'User5'      'knows'           5     
    'User4'    'User6'      'knows'           4     
    'User6'    'User5'      'knows'           6     
    'User6'    'User7'      'knows'           8     

Access the table of nodes.

G.Nodes
ans=7×3 table
     Name      NodeLabels      NodeData  
    _______    __________    ____________

    'User1'     'Person'     [1×1 struct]
    'User3'     'Person'     [1×1 struct]
    'User2'     'Person'     [1×1 struct]
    'User4'     'Person'     [1×1 struct]
    'User5'     'Person'     [1×1 struct]
    'User6'     'Person'     [1×1 struct]
    'User7'     'Person'     [1×1 struct]

Find the shortest path between all nodes in G.

d = distances(G)
d = 7×7

     0     1     1     2     3     3     4
   Inf     0   Inf     1     2     2     3
   Inf     1     0     2     3     3     4
   Inf   Inf   Inf     0     1     1     2
   Inf   Inf   Inf   Inf     0   Inf   Inf
   Inf   Inf   Inf   Inf     1     0     1
   Inf   Inf   Inf   Inf   Inf   Inf     0

Close the database connection.

close(neo4jconn)

Input Arguments

collapse all

Graph or relationship information, specified as a structure returned by searchGraph or searchRelation.

Data Types: struct

Node names in a Neo4j database, specified as a cell array of character vectors or string array.

Example: ["User6","User7"]

Data Types: cell | string

Output Arguments

collapse all

Directed graph, returned as a digraph object.

Introduced in R2016b