В этом примере показано, как перейти к графу и исследовать его структуру с помощью интерфейса MATLAB ® к Neo4j ®. Дополнительные сведения об интерфейсе MATLAB для Neo4j см. в разделе Рабочий процесс базы данных Graph для интерфейсов базы данных Neo4j.
Предположим, что данные графика хранятся в базе данных Neo4j, представляющей социальный район. Эта база данных имеет семь узлов и восемь взаимосвязей. Каждый узел имеет только один уникальный ключ свойства name со значением в диапазоне от User1 через User7. Каждая связь имеет тип knows.
На локальном компьютере размещена база данных Neo4j с номером порта 7474Имя пользователя neo4j, и пароль matlab. На этом рисунке представлено визуальное представление данных в базе данных.
Создание объекта Neo4j соединения neo4jconn с использованием URL-адреса http://localhost:7474/db/dataИмя пользователя neo4j, и пароль matlab.
url = 'http://localhost:7474/db/data'; username = 'neo4j'; password = 'matlab'; neo4jconn = neo4j(url,username,password);
Проверьте Message свойство объекта подключения Neo4j neo4jconn. Бланк Message указывает на успешное подключение.
neo4jconn.Message
ans =
[]
Поиск всех меток узлов в базе данных Neo4j с помощью объекта подключения Neo4j neo4jconn.
nlabels = nodeLabels(neo4jconn)
nlabels = 1×1 cell array
{'Person'}
Поиск всех типов отношений в базе данных Neo4j.
reltypes = relationTypes(neo4jconn)
reltypes = 1×1 cell array
{'knows'}
Найдите ключи свойств в базе данных Neo4j.
propkeys = propertyKeys(neo4jconn)
propkeys = 15×1 cell array
{'Name' }
{'property' }
{'title' }
{'Description'}
{'EndNodes' }
{'Location' }
{'EndDate' }
{'Address' }
{'Project' }
{'Department' }
{'StartDate' }
{'Title' }
{'Date' }
{'Weight' }
{'name' }
Поиск всех узлов с меткой узла Person. nodesinfo выходной аргумент содержит метки узлов, данные узлов и Neo4jNode объектов для каждого соответствующего узла.
nlabel = 'Person';
nodesinfo = searchNode(neo4jconn,nlabel)nodesinfo=7×3 table
NodeLabels NodeData NodeObject
__________ ____________ ___________________________________
0 'Person' [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 database.neo4j.http.Neo4jNode]
5 'Person' [1×1 struct] [1x1 database.neo4j.http.Neo4jNode]
9 'Person' [1×1 struct] [1x1 database.neo4j.http.Neo4jNode]
Поиск узла с идентификатором узла 2. nodeinfo выходной аргумент содержит идентификатор узла, данные узла и метки узла для узла с идентификатором узла 2.
nodeid = 2; nodeinfo = searchNodeByID(neo4jconn,nodeid)
nodeinfo =
Neo4jNode with properties:
NodeID: 2
NodeData: [1×1 struct]
NodeLabels: 'Person'
Поиск входящих типов отношений, принадлежащих узлу nodeinfo.
nodereltypes = nodeRelationTypes(nodeinfo,'in')nodereltypes = 1×1 cell array
{'knows'}
Поиск степени всех входящих отношений, принадлежащих узлу nodeinfo.
degree = nodeDegree(nodeinfo,'in')degree = struct with fields:
knows: 1
Поиск связи с идентификатором узла 4.
relationid = 4; relationinfo = searchRelationByID(neo4jconn,relationid)
relationinfo =
Neo4jRelation with properties:
RelationID: 4
RelationData: [1×1 struct]
StartNodeID: 3
RelationType: 'knows'
EndNodeID: 5
Поиск всех входящих связей, принадлежащих узлу nodeinfo. relinfo выходной аргумент содержит данные о начальном и конечном узлах и всех сопоставленных взаимосвязях из исходного узла.
relinfo = searchRelation(neo4jconn,nodeinfo,'in')relinfo = struct with fields:
Origin: 2
Nodes: [2×3 table]
Relations: [1×5 table]
Извлечение всего графика с помощью меток узлов nlabels.
graphinfo = searchGraph(neo4jconn,nlabels)
graphinfo = struct with fields:
Nodes: [7×3 table]
Relations: [8×5 table]
graphinfo содержит данные узла для всех начальных и конечных узлов для каждого сопоставленного отношения. graphinfo также содержит данные отношения для каждого сопоставленного отношения.
close(neo4jconn)
neo4j | nodeDegree | nodeLabels | nodeRelationTypes | propertyKeys | relationTypes | searchNode | searchNodeByID | searchRelation | searchRelationByID