Skip to content

Настройка семантического поиска

Семантический поиск позволяет извлекать и представлять в табличной форме информацию из базы фактов (ABox) и базы знаний (TBox).

Создание и редактирование семантического поиска

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

Редактирование семантического поиска начинается с выбора корневого класса. Окно выбора корневого класса появляется автоматически при первом открытии поиска в режиме редактирования или при клике по иконке :mdi-magnify: (Выбрать новый корневой класс):

img

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

Конструирование дерева семантического поиска

Конструирование дерева семантического поиска производится с помощью выпадающего меню класса, которое появляется при клике левой клавишей мыши по элементам-классам поиска (зеленый или желтый прямоугольники):

img

В меню класса доступны четыре раздела:

  • Подклассы - список подклассов выбранного класса (только первый уровень наследования)
  • Отношения - список отношений, для которых выбранный класс является доменом
  • Свойства - список скалярных свойств, для которых выбранный класс является доменом
  • Ссылки - список отношений, для которых выбранный класс является диапазоном

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

Выбор любого элемента в меню класса приведет к отображению в дереве семантического поиска выбранного свойства/отношения и его объекта-диапазона.

img

Внимание

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

Элементы дерева семантического поиска

Все элементы дерева семантического поиска имеют форму прямоугольника со скругленными углами. Цвет заливки прямоугольника указывает на тип элемента:

  • Зеленый - корневой класс семантического поиска
  • Желтый - класс
  • Голубой - отношение или свойство
  • Белый - скалярный тип данных (Строка, Целое число, Дата и т.п.)

img

Результаты семантического поиска

Для отображения результатов семантического поиска необходимо кликнуть по иконке Отобразить результат на панели инструментов семантического поиска.

Результат семантического поиска будет отображен в табличном виде. Каждая колонка таблицы соответствует отношению/свойству из дерева семантического поиска.

Рассмотрим построение семантического поиска и отображение его результатов на примере следующей онтологии:

Предположим, мы хотим найти и отобразить всех людей, а также:

  • отцов людей
  • вес отцов людей
  • жён отцов людей

Этапы построения дерева семантического поиска:

  1. В качестве корневого класса семантического поиска выберем класс хх Люди
  2. В меню класса хх Люди в разделе Свойства выберем свойство хх Люди для отображения в результатах поиска названий экземпляра класса хх Люди (овал оранжевого цвета на картинке ниже)
  3. В меню класса хх Люди в разделе Отношения выберем отношение хх имеет отца (овал красного цвета). Видно, что отцом человека является мужчина, т.к. диапазоном отношения хх имеет отца является класс хх Мужчина
  4. В меню класса хх Мужчина выберем свойство хх имеет вес (овал голубого цвета) - это вес мужчины, являющегося отцом человека
  5. В меню класса хх Мужчина выберем отношение хх имеет жену (овал зеленого цвета) - это жена мужчины, являющегося отцом человека

img

Внимание

Порядок расположения и названия колонок семантического поиска могут быть изменены на закладке Колонки в панели настроек семантического поиска.

Примеры извлечения метаданных из базы знаний (TBox)

Классы онтологической карты

img

Свойства класса и их диапазоны

img

Дата создания и создатель

img

Панель настроек семантического поиска

Для открытия панели настроек семантического поиска кликните по иконке Открыть панель настроек семантического поиска на панели инструментов семантического поиска.

Закладка "Колонки"

На закладке "Колонки" настраивается отображение и дополнительные параметры колонок табличного представления результатов семантического поиска.

ПолеОписание
Оригинальное названиеНазвание отношения, как оно указано в онтологии. Если не указано значение в поле "Новое название", то именно это название будет отображаться в заголовке колонки с результатами поиска
Новое названиеПереопределение заголовка колонки для отображения в результатах семантического поиска
КодКод колонки должен состоять из латинских букв без пробелов, допускаются символы подчеркивания. Код колонки имеет смысл указывать только в том случае, если в семантическом поиске используются расчетные колонки
ПорядокЧисло, указывающее на порядок колонки в результатах поиска. Чем меньше число, тем ближе к началу (левому краю) таблицы находится колонка
СортировкаПорядковый номер (число) в сортируемой последовательности задает правила сортировки результатов семантического поиска. При единственном сортируемом поле значение не важно, для нескольких сортируемых полей важно только их соотношение (например, если в передаваемом запросе есть три отношения prop1, prop2, prop3 со значениями сортировки 12, 3, 8 соответственно, то сортировка будет осуществлена в такой последовательности: prop2, prop3, prop1)
СкрытьУправляет отображением колонки в результатах семантического поиска
Не фильтроватьСлужебный параметр для использования в общесистемных поисках. Видимых изменений в пользовательские поиски не вносит
ГруппироватьУправление группировкой (агрегацией) результатов поиска. Для полей разных типов доступны различные способы агрегации

Закладка "Расчетные колонки"

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

ПолеОписание
Название колонкиНазвание расчетной колонки для отображения в результатах семантического поиска
Формула для расчетаДопустимы любые валидные конструкции Javascript. В качестве ссылок на обычные колонки необходимо использовать коды колонок (задаются на закладке "Колонки") в квадратных скобках (см. примеры ниже). Формулы рассчитываются построчно, сослаться на значение в другой строке или посчитать сумму по всем строкам не получится.
ПорядокСм. описание одноименного поля с закладки "Колонки"
Тип данныхТип данных расчетной колонки
ГруппироватьУправление группировкой (агрегацией) результатов поиска. Для полей разных типов доступны различные способы агрегации

Примеры формул

  • [cost] * [amount] - формула для вычисления суммы как произведения цены (значения в колонке с кодом cost) на количество (значения в колонке с кодом amount)
  • [code] + ". " + [name] - формула для вычисления составного названия объекта типа "Код. Название"
  • [dev] < 0 ? "Плохо" : "Хорошо" - условная формула; если в колонке с кодом dev значение будет меньше нуля, то результатом будет "Плохо", иначе "Хорошо"
  • [auto] == 1 ? "Да" : "" - условная формула; если в колонке с кодом auto значение будет равно единице, то результатом будет "Да", иначе пустая строка
  • "Скидка: " + ([isMember] == 1 ? 20 : 10) + "%" - условная формула; если в колонке с кодом isMember значение будет равно единице, то результатом формулы будет строка "Скидка: 20%", иначе "Скидка: 10%"

Особенности синтаксиса формул

  • Для указания строковых литералов (строк) используйте двойные кавычки "
  • В качестве разделителя целой и дробной части в вещественных числах используйте точку .
  • В условном операторе условие ? выражение1 : выражение2, - условие - выражение, принимающее значение true (истина) или false (ложь) - выражение1, выражение2 - выражения, значения которых могут принадлежать любому типу данных - в качестве оператора сравнения типа "равно" в условии используйте двойной знак равенства == - условный оператор возвращает значение выражения1, если условие верно, и значение выражения2 в противном случае

Закладка "Фильтры"

На закладке "Фильтры" может быть создан фильтр для задания ограничений на результаты семантического поиска.

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

img

При установке ограничения на колонку типа "Пользователь" есть возможность указать "текущего пользователя": в этом случае результат семантического поиска будет зависеть от пользователя, выполняющего запрос:

img

При установке ограничения на колонку типа "Дата" есть возможность указать текущую дату: в этом случае результат семантического поиска будет зависеть от даты выполнения запроса:

img

Обновление структуры классов семантического поиска

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

При попытке отобразить результаты поиска, в котором есть отношения/свойства, удаленные из онтологии, возникнет ошибка.

Для обновления структуры любого класса в семантическом поиске кликните по классу и в появившемся меню кликните по кнопке "Обновить структуру". В результате, в меню структуры класса будут добавлены новые отношения из онтологии (которых не было на момент создания поиска), а удаленные отношения будут помечены префиксом "(!удалён)". Также, удаленные отношения в дереве поиска будут выделены красным цветом.

img