Настройка семантического поиска
Семантический поиск позволяет извлекать и представлять в табличной форме информацию из базы фактов (ABox) и базы знаний (TBox).
Создание и редактирование семантического поиска
Для создания нового семантического поиска перейдите в раздел Семантический поиск главного бокового меню системы и кликните по кнопке Создать поиск. В появившейся карточке укажите название нового семантического поиска и кликните по иконке Открыть семантический поиск для перехода в режим редактирования поиска.
Редактирование семантического поиска начинается с выбора корневого класса. Окно выбора корневого класса появляется автоматически при первом открытии поиска в режиме редактирования или при клике по иконке :mdi-magnify: (Выбрать новый корневой класс):

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

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

Внимание
Для отображения в результатах поиска наименований экземпляров корневого класса необходимо в разделе Свойства корневого класса выбрать свойство, чье название совпадает с названием корневого класса.
Элементы дерева семантического поиска
Все элементы дерева семантического поиска имеют форму прямоугольника со скругленными углами. Цвет заливки прямоугольника указывает на тип элемента:
- Зеленый - корневой класс семантического поиска
- Желтый - класс
- Голубой - отношение или свойство
- Белый - скалярный тип данных (Строка, Целое число, Дата и т.п.)

Результаты семантического поиска
Для отображения результатов семантического поиска необходимо кликнуть по иконке Отобразить результат на панели инструментов семантического поиска.
Результат семантического поиска будет отображен в табличном виде. Каждая колонка таблицы соответствует отношению/свойству из дерева семантического поиска.
Рассмотрим построение семантического поиска и отображение его результатов на примере следующей онтологии:
Предположим, мы хотим найти и отобразить всех людей, а также:
- отцов людей
- вес отцов людей
- жён отцов людей
Этапы построения дерева семантического поиска:
- В качестве корневого класса семантического поиска выберем класс хх Люди
- В меню класса хх Люди в разделе Свойства выберем свойство хх Люди для отображения в результатах поиска названий экземпляра класса хх Люди (овал оранжевого цвета на картинке ниже)
- В меню класса хх Люди в разделе Отношения выберем отношение хх имеет отца (овал красного цвета). Видно, что отцом человека является мужчина, т.к. диапазоном отношения хх имеет отца является класс хх Мужчина
- В меню класса хх Мужчина выберем свойство хх имеет вес (овал голубого цвета) - это вес мужчины, являющегося отцом человека
- В меню класса хх Мужчина выберем отношение хх имеет жену (овал зеленого цвета) - это жена мужчины, являющегося отцом человека

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

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

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

Панель настроек семантического поиска
Для открытия панели настроек семантического поиска кликните по иконке Открыть панель настроек семантического поиска на панели инструментов семантического поиска.
Закладка "Колонки"
На закладке "Колонки" настраивается отображение и дополнительные параметры колонок табличного представления результатов семантического поиска.
| Поле | Описание |
|---|---|
| Оригинальное название | Название отношения, как оно указано в онтологии. Если не указано значение в поле "Новое название", то именно это название будет отображаться в заголовке колонки с результатами поиска |
| Новое название | Переопределение заголовка колонки для отображения в результатах семантического поиска |
| Код | Код колонки должен состоять из латинских букв без пробелов, допускаются символы подчеркивания. Код колонки имеет смысл указывать только в том случае, если в семантическом поиске используются расчетные колонки |
| Порядок | Число, указывающее на порядок колонки в результатах поиска. Чем меньше число, тем ближе к началу (левому краю) таблицы находится колонка |
| Сортировка | Порядковый номер (число) в сортируемой последовательности задает правила сортировки результатов семантического поиска. При единственном сортируемом поле значение не важно, для нескольких сортируемых полей важно только их соотношение (например, если в передаваемом запросе есть три отношения 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в противном случае
Закладка "Фильтры"
На закладке "Фильтры" может быть создан фильтр для задания ограничений на результаты семантического поиска.
Фильтр позволяет задать любое количество ограничений на любую не расчетную колонку семантического поиска. Все созданные ограничения по умолчанию работают в логике "И", но с помощью дополнительных узлов "И" и "ИЛИ" можно определить произвольную логику работы фильтра.

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

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

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