exponenta event banner

searchGraph

Поиск подграфа или всего графа в Neo4j базе данных

Описание

пример

graphinfo = searchGraph(neo4jconn,criteria) возвращает графическую информацию на основе критериев поиска с использованием подключения к базе данных Neo4j ®. Можно выполнить поиск подграфа или всего графа.

пример

graphinfo = searchGraph(neo4jconn,criteria,'DataReturnFormat','digraph') возвращает информацию о графе в виде digraph объект.

Примеры

свернуть все

Найдите графическую информацию в базе данных Neo4j ® с помощью меток узлов и просмотрите эту информацию.

Создание Neo4j подключения к базе данных по 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 =

     []

Поиск в графике всех узлов с меткой 'Person' с использованием подключения к базе данных Neo4j.

nlabel = {'Person'};

graphinfo = searchGraph(neo4jconn,nlabel)
graphinfo = struct with fields:
        Nodes: [7×3 table]
    Relations: [8×5 table]

graphinfo - структура, содержащая результаты поиска:

  • Все начальные и конечные узлы, которые обозначают каждое сопоставленное отношение

  • Все сопоставленные отношения

Доступ к таблице узлов.

graphinfo.Nodes
ans=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]

Доступ к ключам свойств для первого узла.

graphinfo.Nodes.NodeData{1}
ans = struct with fields:
    name: 'User1'

Откройте таблицу отношений.

graphinfo.Relations
ans=8×5 table
         StartNodeID    RelationType    EndNodeID    RelationData                RelationObject             
         ___________    ____________    _________    ____________    _______________________________________

    1         0           'knows'           1        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    0         0           'knows'           2        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    3         1           'knows'           3        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    2         2           'knows'           1        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    5         3           'knows'           4        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    4         3           'knows'           5        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    6         5           'knows'           4        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    8         5           'knows'           9        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]

Доступ к ключам свойств для первого отношения. Первое отношение не имеет ключей свойств.

graphinfo.Relations.RelationData{1}
ans = struct with no fields.


Найдите на графике все метки узлов в базе данных.

allnodes = nodeLabels(neo4jconn);

graphinfo = searchGraph(neo4jconn,allnodes);

Закройте подключение к базе данных.

close(neo4jconn)

Найдите графическую информацию в базе данных Neo4j ®, используя тип связи, и просмотрите информацию.

Создание Neo4j подключения к базе данных по 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 =

     []

Поиск в графике типа отношений 'knows' с использованием подключения к базе данных Neo4j.

reltype = {'knows'};

graphinfo = searchGraph(neo4jconn,reltype)
graphinfo = struct with fields:
        Nodes: [7×3 table]
    Relations: [8×5 table]

graphinfo - структура, содержащая результаты поиска:

  • Все начальные и конечные узлы, которые обозначают каждое сопоставленное отношение

  • Все сопоставленные отношения

Доступ к таблице узлов.

graphinfo.Nodes
ans=7×3 table
         NodeLabels      NodeData                  NodeObject             
         __________    ____________    ___________________________________

    0     'Person'     [1×1 struct]    [1x1 database.neo4j.http.Neo4jNode]
    2     'Person'     [1×1 struct]    [1x1 database.neo4j.http.Neo4jNode]
    1     'Person'     [1×1 struct]    [1x1 database.neo4j.http.Neo4jNode]
    3     'Person'     [1×1 struct]    [1x1 database.neo4j.http.Neo4jNode]
    5     'Person'     [1×1 struct]    [1x1 database.neo4j.http.Neo4jNode]
    4     'Person'     [1×1 struct]    [1x1 database.neo4j.http.Neo4jNode]
    9     'Person'     [1×1 struct]    [1x1 database.neo4j.http.Neo4jNode]

Откройте таблицу отношений.

graphinfo.Relations
ans=8×5 table
         StartNodeID    RelationType    EndNodeID    RelationData                RelationObject             
         ___________    ____________    _________    ____________    _______________________________________

    0         0           'knows'           2        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    1         0           'knows'           1        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    2         2           'knows'           1        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    3         1           'knows'           3        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    4         3           'knows'           5        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    5         3           'knows'           4        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    6         5           'knows'           4        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]
    8         5           'knows'           9        [1×1 struct]    [1x1 database.neo4j.http.Neo4jRelation]

Выполните поиск по графу для всех типов отношений в базе данных.

allreltypes = relationTypes(neo4jconn);

graphinfo = searchGraph(neo4jconn,allreltypes);

Закройте подключение к базе данных.

close(neo4jconn)

Поиск информации о графах в базе данных Neo4j ® с помощью меток узлов. Возвращает информацию в виде направленного графика и отображает ребра и узлы графика.

Предположим, что данные графика хранятся в базе данных Neo4j, представляющей социальный район. Эта база данных имеет семь узлов и восемь взаимосвязей. Каждый узел имеет только один уникальный ключ свойства name со значением в диапазоне от User1 через User7. Каждая связь имеет тип knows.

Создание Neo4j подключения к базе данных по 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 =

     []

Поиск в графике всех узлов с меткой узла Person с использованием подключения к базе данных Neo4j. Возврат информации о графике в виде направленного графика с помощью 'DataReturnFormat' аргумент пары имя-значение со значением 'digraph'.

nlabel = "Person";
graphinfo = searchGraph(neo4jconn,nlabel, ...
    'DataReturnFormat','digraph');

Отображение рёбер направленного графика.

graphinfo.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}

Отображение узлов направленного графика.

graphinfo.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}

Закройте подключение к базе данных.

close(neo4jconn)

Входные аргументы

свернуть все

Neo4j подключение к базе данных, указанное как Neo4jConnect объект, созданный с помощью функции neo4j.

Критерий поиска, заданный как массив ячеек из векторов символов или строкового массива. Для поиска по узлам укажите одну или несколько меток узлов в качестве векторов символов в массиве ячеек. Для поиска по связям укажите один или несколько типов связей в качестве векторов символов в массиве ячеек. Или укажите строковый массив для нескольких меток узлов или типов связей.

Типы данных: cell | string

Выходные аргументы

свернуть все

Данные графика в базе данных Neo4j, соответствующие критериям поиска, возвращены в виде структуры с этими полями.

ОбластьОписание

Nodes

Таблица, содержащая информацию о каждом узле в Relations таблица. Nodes таблица содержит следующие переменные:

  • NodeLabels - символьный вектор, обозначающий метку узла для каждого соответствующего узла базы данных;

  • NodeData - Структурный массив, содержащий сведения о узле, например ключи свойств для каждого соответствующего узла базы данных

  • NodeObjectNeo4jNode объект для каждого соответствующего узла базы данных

Имена строк в таблице представляют Neo4j идентификаторы соответствующих узлов базы данных.

Если criteria содержит метки узлов, вывод автоматически сортируется по StartNodeID и Label.

Relations

Таблица, содержащая информацию о связи для узлов в Nodes таблица. Relations таблица содержит следующие переменные:

  • StartNodeID - Идентификатор узла для начального узла для каждого сопоставленного отношения

  • RelationType - символьный вектор, обозначающий тип связи для каждой сопоставленной связи;

  • EndNodeID - Идентификатор узла для конечного узла для каждого сопоставленного отношения

  • RelationData - Структурный массив, содержащий ключи свойств, связанные с каждой сопоставленной связью

  • RelationObjectNeo4jRelation объект, представляющий каждую сопоставленную связь

Имена строк в таблице являются Neo4j идентификаторами отношений.

Если criteria содержит типы связей, вывод автоматически сортируется по RelationID.

Примечание

При использовании 'DataReturnFormat' аргумент пары имя-значение со значением 'digraph', searchGraph функция возвращает графическую информацию в digraph объект. Получающееся digraph объект содержит те же данные, что и digraph объект, созданный при выполнении neo4jStruct2Digraph с помощью функции graphinfo выходной аргумент.

Представлен в R2016b