Skip to main content

Запрос содержания графа знаний

Вы можете выполнить запрос к графу знаний, чтобы найти поднабор элементов и отношений, которые он содержит, и определить, как различные элементы связаны. При этом могут использоваться записи о происхождении, и записи о происхождении могут при необходимости включаться в результаты запроса. См. примеры ниже:

  • На основе графа знаний, представляющего распространение инфекционного заболевания, можно работать с людьми и животными, связанными любыми отношениями с данным помещением.

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

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

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

Вы можете определить поднабор элементов и отношений или их свойства, запросив граф знаний. Используйте язык запросов openCypher, чтобы писать запросы openCypher для обнаружения связанных элементов и их свойств, и для работы с этим ограниченным набором информации в графе знаний, карте или диаграмме связей.

Вид Запроса Вид Запроса – это вид по умолчанию в каждом проекте Knowledge Studio, который позволяет запрашивать содержание графа знаний проекта. В виде запроса есть шесть ключевых областей, которые показаны на следующем изображении и описаны в таблице ниже. Цифры на картинке соответствуют описаниям.

Диаграмма основных областей вида запроса.

Элемент Описание
Элемент 1 Содержание запроса Раздел Содержание запроса содержит редактор Запросов Вид Запроса, в котором вы пишете новые запросы, и коллекцию Сохраненные запросы Коллекция сохраненных запросов, которые остаются в проекте при его сохранении.
Элемент 2 Ящик запроса Окно запроса представляет собой многострочное текстовое поле, позволяющее форматировать и выполнять запрос OpenCypher.
Элемент 3 Результаты запросов Результаты запроса по умолчанию отображаются в таблице.
Элемент 4 Выборка запроса Выбор записи в Результатах запроса позволяет изучить свойства возвращённых записей графа.
Элемент 5 Предварительный обзор результатов Вы можете предварительно просмотреть результаты и выбранные элементы в диаграмме связей, карте или предварительном просмотре диаграммы, а также добавить или удалить все результаты из выборки с помощью панели инструментов результатов.
Элемент 6 Контекстная панель инструментов Контекстная панель инструментов предоставляет инструменты, специфичные для запроса, такие как определение параметров запроса и сохранение вашего запроса в проекте для последующего использования.

Запрос к графу знаний

Можно запрашивать элементы и отношения графа знаний, используя вид запроса вид запроса. При желании, можно включить записи о происхождении в результаты запроса

  1. Щелкните Запрос Вид запроса на панели Содержание проекта, чтобы открыть вид запроса.

    Вид запроса открывается с полем запроса, а результаты не отображаются. Окно запроса представляет собой многострочное текстовое поле, позволяющее форматировать запрос OpenCypher.

  2. Введите запрос в окно запроса. Нажмите Enter, чтобы переместить указатель на новую строку и продолжите ввод.

    Например, такой запрос, как MATCH (e) RETURN e, вернет все элементы в графе знаний. Этот запрос работает с любым графом знаний.

    Подсказка:

    Если вы не знаете, сколько результатов будет возвращено из запроса, добавьте LIMIT 1000 в конец запроса, чтобы избежать неожиданного возврата десятков тысяч записей, что может привести к затруднению в работе вашего браузера.

  3. Можно также отметить опцию Включить происхождение, чтобы разрешить использование или возврат записей о происхождении в запросе.

    Подробнее о регистрации происхождения в запросах

  4. Щелкните Запустить.

    Результаты запроса появятся в области Результаты. Элементы, отношение и записи о происхождении, которые возвращает запрос, обозначаются соответствующими значками.

Написание запроса openCypher

Запросы openCypher относятся к базам данных графов так же, как запросы SQL относятся к реляционным базам данных. Базовая структура запроса заключается в поиске или сопоставлении элементов и возвращении этих элементов, где элементы, которые вы хотите найти, указаны в круглых скобках. Например, запрос MATCH (e) RETURN e возвращает элементы любого типа. Количество возвращаемых элементов ограничено только конфигурацией графа знаний. Чтобы ограничить количество возвращаемых элементов графа, используйте выражение LIMIT. Например, запрос MATCH (e) RETURN e LIMIT 5 вернет пять элементов любого типа.

Результаты запросов по умолчанию выводятся в виде таблицы

Запрос может идентифицировать элементы, связанные с помощью символов, образующих стрелку. Например, запрос MATCH (e1)-->(e2) RETURN e1,e2 вернет пары элементов e1 и e2, между которыми любой тип отношений и которые соединяет любой путь, от элемента e1 до элемента e2, соединяющий их. Если бы запрос был написан со стрелкой, указывающей в другом направлении, пути считались бы начинающимися от элемента-источника e2 до элемента-назначения e1: MATCH (e1)<--(e2) RETURN e1,e2. Способ, которым элементы связаны друг с другом, называется шаблоном.

Связанные элементы, возвращаемые запросом, отображаются в таблице результатов.

Запрос может идентифицировать определенные отношения, которые следует заключать в квадратные скобки. Например, запрос MATCH (e1)-[]->(e2) RETURN e1,e2 вернет пары элементов e1 и e2, где два элемента соединяет одно отношение любого типа. Этот запрос показывает другой способ представления тех же запросов, что и показанные выше, и иллюстрирует предпочтительный синтаксис запроса. Запрос можно изменить так, чтобы он возвращал полную группу элементов, описывающих отношения, путем возврата элемента-источника e1, отношения r и элемента-назначения e2: MATCH (e1)-[r]->(e2) RETURN e1,r,e2. Аналогичные запросы MATCH (e1)-[ ]->( )-[ ]->(e2) RETURN e1,e2 или MATCH (e1)-[*2]->(e2) RETURN e1,e2 будут возвращать пары элементов, связанных двумя отношениями в одном направлении. Запросы также могут идентифицировать шаблоны, в которых отношения имеют разные направления, например, MATCH (e1)-[ ]->(e2)<-[ ]-(e3) RETURN e1,e2,e3.

Возвращаются связанные элементы и элементы, которые их соединяют.

Приведенные выше примеры запросов можно использовать с любым графом знаний.

Возвращаются отношения, в которых элемент Person является источником отношения.

Вы можете ограничить запрос рассмотрением определенных типов отношений и конкретных связанных элементов, добавив типы отношений и типы элементов к другим аспектам запроса. Например, MATCH (p:Person)-[v:HasVehicle]->(e) RETURN p,v,e будет возвращать все элементы Person - p, в которых отношение HasVehicle - v, соединяет Person с другим элементом любого типа - e. Переменные p и v назначаются элементам Person и отношениям HasVehicle соответственно, поэтому информация о них может быть возвращена запросом. По сравнению с предыдущим примером отношения, в которых элемент Pet или Document является назначением отношения, не включаются в результаты. В зависимости от модели данных графа знаний элемент назначения - e, может быть общим элементом Vehicle или одним из серии определенных типов элементов, таких как Automobile, Motorcycle, Boat, Airplane, Commercial Vehicle и т.д.

Возвращаются отношения, в которых элемент Vehicle является назначением отношения.

В результаты запроса могут быть включены определенные свойства элементов и отношений. Например, MATCH (p:Person)-[:HasVehicle]->(e) RETURN p,e.make,e.model,e.year будет выполнять тот же запрос, что был определен ранее. Однако вместо отображения самого элемента-назначения в результатах будут показаны значения, хранящиеся в нескольких его свойствах: марка, модель и год выпуска автомобиля соответственно. В этом примере для определенного отношения, рассматриваемого запросом, не присвоена переменная, поскольку данные отношения не включаются в результаты запроса и не оцениваются где-либо еще в запросе.

Свойства элемента назначения Vehicle включаются в результаты.

Точно так же вы можете ограничить оцениваемые элементы и отношения, указав свойства, которые определяют интересующие элементы и отношения. Свойства, которые следует учитывать, определяются путем добавления в запрос условия WHERE. Как и в приведенных выше примерах, переменные должны быть назначены для ссылки на конкретную информацию об элементах и отношениях в условии WHERE. Например, в следующем запросе оцениваются только элементы Person с определенным значением свойства lastName; Отношения HasVehicle учитываются, только если они имеют значение NULL в свойстве endDate; и связанные элементы Vehicle учитываются только в том случае, если свойство year имеет значение, предшествующее 1980: MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) WHERE p.lastName = 'Doe' and hv.endDate IS NULL and v.year < 1980 RETURN p,p.firstName,v,v.make,v.year.

Считается, что свойства элемента-источника, отношения и элемента-назначения позволяют получить определенный набор результатов.

Вместо того, чтобы возвращать ряд отдельных элементов и отношений, ваш запрос может возвращать полный путь, представленный шаблоном. Для этого назначьте шаблон, определенный в выражении MATCH, переменной и верните эту переменную. Например, запрос MATCH path = (:Person)-[:HasVehicle]->(:Vehicle) RETURN path вернет список путей для всех комбинаций элементов и отношений, соответствующих указанному шаблону. Каждый путь будет содержать все части сопоставленного шаблона: Person, отношение HasVehicle и Vehicle. Вам не нужно назначать переменные отдельным частям этого шаблона, поскольку они не возвращаются запросом.

Пути содержат все части соответствия шаблону.

Изменить и обновить результаты запроса

Вы можете получить сфокусированный набор элементов и отношений в графе знаний, оценив определенные типы элементов графа и определенные значения свойств.

  1. Щелкните в окне запроса.

  2. Обновите текст существующего запроса openCypher.

    Например, измените запрос на MATCH (p:Person)-[hv:HasVehicle]->(v:Vehicle) WHERE v.year < 2005 RETURN p, p.firstName, p.phoneNumber, hv, v, v.make, v.model, v.year для возврата всех элементов Person, имеющих отношение HasVehicle к элементам Vehicle, в котором свойство Vehicle year раньше 2005 года. Результаты будут включать значения из свойств firstName и phoneNumber элемента Person, отношения HasVehicle и свойств марки, модели и года элемента Vehicle.

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

    Запрос может занимать несколько строк при использовании многострочного текстового поля запроса.

  3. Щелкните Запустить, чтобы получить новые результаты.

    Результаты запроса появятся в разделе Результаты. Элементы и отношения, которые возвращает запрос, обозначаются соответствующими значками.

    Результаты запроса

  4. Вы также можете щелкнуть Очистить, чтобы удалить текст текущего запроса окна запроса.

Сохранить запрос

Вы можете сохранить отдельные запросы, которые хотите оставить для вашего проекта. При сохранении проекта сохраненные запросы сохраняются в проекте и перечислены в разделе Сохраненные запросы Коллекция сохраненных запросов панели Содержание запроса.

  1. Щелкните Сохранить запрос Вид запроса в контекстной панели инструментов запроса.

    Появится модальное окно нового сохраненного запроса.

    Модальное окно Сохранить

  2. Дополнительно:

    • Введите название запроса в области ввода Заголовок.

    • Введите описание запроса в текстовое поле Описание. Описание обеспечивает контекст для результатов запроса без необходимости читать запрос openCypher.

  3. Щелкните Хранилище.

    Запрос хранится в разделе Сохраненные запросы Коллекция сохраненных запросов панели Содержание запроса.

  4. Щелкните сохраненный запрос Коллекция сохраненных запросов, чтобы запустить запрос и просмотреть результаты.

    Сохраненный запрос будет запущен, как только он будет выбран. Заголовок и описание запроса отображаются над результатами. Окно запроса скрыто.

    Таблица результатов для сохраненного запроса

  5. Щелкните Показать запрос, чтобы отобразить текст запроса openCypher в окне запроса.

  6. Щелкните текстовое поле запроса и измените существующий запрос.

  7. Щелкните Обновить сохраненный запрос Вид запроса на контекстной панели инструментов запроса, чтобы обновить сохраненный запрос с учетом внесенных изменений.

  8. Щелкните меню Опции Опции для этого сохраненного запроса в Содержании запроса.

  9. Щелкните Переименовать Переименовать, чтобы обновить текстовые поля Заголовок и Описание запроса с учетом внесенных изменений.

  10. Щелкните Применить.

  11. Вы также можете щелкнуть Удалить Удалить в меню Опции Опции для этого сохраненного запроса, чтобы удалить сохраненный запрос из проекта.