В этом примере показано, как добавить группу коллег, сохраненных как ориентированный граф, группе друзей в социальном окружении, сохраненном как узлы и отношения в базе данных Neo4j®. Пример затем показывает, как запросить график в базе данных при помощи языка запросов Cypher®, который позволяет вам создать пользовательские запросы.
Для получения дополнительной информации об интерфейсе MATLAB® к Neo4j, смотрите Рабочий процесс Базы данных Графика для Интерфейсов БД Neo4j.
Примите, что вам сохранили данные о графике в базе данных Neo4j, которая представляет социальное окружение. Эта база данных имеет семь узлов и восемь отношений. Каждый узел имеет только один ключ name уникального свойства со значением в пределах от User1 через User7. Каждое отношение имеет тип knows.
Локальная машина размещает базу данных Neo4j с номером порта 7474, имя пользователя neo4j, и пароль matlab. Этот рисунок обеспечивает визуальное представление данных в базе данных.
Создайте объект neo4jconn связи Neo4j использование http://localhost:7474/db/data URL, имя пользователя neo4j, и пароль matlab.
url = 'http://localhost:7474/db/data'; username = 'neo4j'; password = 'matlab'; neo4jconn = neo4j(url,username,password);
Проверяйте Message свойство объекта neo4jconn связи Neo4j. Пустой Message свойство указывает на успешную связь.
neo4jconn.Message
ans =
[]
Задайте группу из четырех коллег путем создания ориентированного графа в MATLAB. Создайте digraph объект, который имеет четыре узла и три ребра.
s = [1 1 1]; t = [2 3 4]; G = digraph(s,t);
Задайте имена для узлов.
G.Nodes.name = {'User8';'User9';'User10';'User11'};Постройте диграф, чтобы просмотреть узлы и ребра.
plot(G)

Сохраните ориентированного графа как график Neo4j. Задайте две метки для всех узлов в получившемся графике Neo4j при помощи GlobalNodeLabel аргумент пары "имя-значение". Кроме того, задайте тип works with для всех отношений в получившемся графике Neo4j при помощи GlobalRelationType аргумент пары "имя-значение".
graphinfo = storeDigraph(neo4jconn,G, ... 'GlobalNodeLabel',{'Colleague','Person'}, ... 'GlobalRelationType','works with');
Отобразите метки узла первого узла в графике.
graphinfo.Nodes.NodeLabels{1}ans = 2×1 cell array
{'Person' }
{'Colleague'}
Результатом является массив ячеек из символьных векторов. Каждый вектор символов является меткой узла для первого узла.
Отобразите отношения в графике.
graphinfo.Relations
ans=3×5 table
StartNodeID RelationType EndNodeID RelationData RelationObject
___________ ____________ _________ ____________ _______________________________________
20 31 'works with' 8 [1×1 struct] [1x1 database.neo4j.http.Neo4jRelation]
23 31 'works with' 32 [1×1 struct] [1x1 database.neo4j.http.Neo4jRelation]
24 31 'works with' 33 [1×1 struct] [1x1 database.neo4j.http.Neo4jRelation]
Relations таблица, которая содержит эти переменные:
Запустите идентификатор узла
Тип связей
Идентификатор конечного узла
Данные об отношении
Neo4jRelation объект
Ищите узлы с меткой Person узла и ключ name свойства установите на значения User7 и User8 при помощи соединения с базой данных Neo4j.
nlabel = 'Person'; user7 = searchNode(neo4jconn,nlabel,'PropertyKey','name', ... 'PropertyValue','User7'); user8 = searchNode(neo4jconn,nlabel,'PropertyKey','name', ... 'PropertyValue','User8');
Добавьте отношение между узлами User7 и User8 соединять группу коллег группе друзей.
relationtype = 'knows';
relation = createRelation(neo4jconn,user7,user8,relationtype);Отобразите получившийся график в базе данных Neo4j.

Создайте запрос Шифра, чтобы найти людей, которые работают с людьми User7 знает. Отобразите имена тех людей.
query = ['MATCH (:Person {name: "User7"})-[:knows]->(:Person)-[:`works with`]' ... '->(potentialContact:Person) RETURN potentialContact.name']; results = executeCypher(neo4jconn,query)
results=3×1 table
potentialContact_name
_____________________
'User11'
'User10'
'User9'
User9, User10, и User11 все работают с кем-то тот User7 знает. User7 знает User8, кто работает с User9, User10, и User11.
close(neo4jconn)