Атрибут типа «Текст». Поиск строки в тексте с помощью N3
Введение
Текстовый атрибут может содержать неограниченное количество символов, например письмо или заявку. Чтобы найти в тексте ключевые слова, например запрещённые или обозначающие срочность, важность и т. п., можно использовать выражение на N3.
Здесь представлен пример настройки логического атрибута, который реагирует на наличие слов из реестра ключевых слов в тексте, с помощью выражения на N3.
Прикладная задача
Имеется шаблон «Заявки». Если в комментарии клиент пишет слово «срочно», «важно» или подобное слово, указывающее на важность заявки, то такую заявку необходимо отметить флажком «Важная заявка» с помощью логического атрибута.
Поиск слова в значении текстового атрибута
- Создайте шаблон «Реестр слов» с текстовыми атрибутами «Код» и «Слово».
- Создайте шаблон «Заявки».
- Создайте текстовый атрибут «Комментарий».
-
Создайте логический атрибут «Важная заявка»:
- Вычислять автоматически: флажок установлен
- Вычисляемое выражение: N3
# Импортируем функции для работы с записями и строками
@prefix object: <http://comindware.com/ontology/object#>.
@prefix cmwstring: <http://comindware.com/logics/string#>.
{
# Находим атрибут Kommentariy (Комментарий) в шаблоне Zayavki (Заявки)
# и помещаем его в переменную KommentariyAttribute
("Zayavki" "Kommentariy") object:findProperty ?KommentariyAttribute.
# Помещаем строку из атрибута «Комментарий»
# текущей заявки ?item в переменную ?text
?item ?KommentariyAttribute ?text.
# Преобразуем комментарий в нижний регистр и помещаем в ?textLowerCase
?text cmwstring:toLower ?textLowerCase.
# Помещаем значение атрибута Kod (Код) в переменную ?KodAttribute
("Reestrslov" "Kod") object:findProperty ?KodAttribute.
# Находим все записи в реестре слов с кодом urgent
?urgentKeywords ?KodAttribute "urgent".
("Reestrslov" "Slovo") object:findProperty ?SlovoAttribute.
# Присваиваем переменной ?keywords массив объектов
# с заполненными значениями атрибута «Слово»
?urgentKeywords ?SlovoAttribute ?keywords.
# Начинаем цикл по ?keywords
# Преобразуем ключевое слово в нижний регистр
?keywords cmwstring:toLower ?keywordLowerCase.
# Проверяем, содержит ли ?textLowerCase ключевое слово
# из ?urgentKeywords
?textLowerCase cmwstring:contains ?keywordLowerCase.
# Если строка была найдена в переменной ?textLowerCase,
# то значение вычисляемого атрибута сменится на true
true -> ?value.
}
-
Поместите атрибуты на форму и сохраните. У атрибута «Важная заявка» установите представление в виде флажка.
Тестирование
-
В реестре слов создайте записи с ключевыми словами, обозначающими важную заявку, например:
Код Слово urgent срочн urgent важн urgent скор urgent АСАП urgent ASAP urgent important -
Создайте новую заявку.
- В комментарии укажите любой текст и напишите слово «Срочно!», «ВАЖНО», «скорее» или любое слово с кодом urgent из реестра слов.
- Сохраните запись.
- В поле «Важная заявка» будет установлен флажок.
- Удалите из комментария все слова с кодом urgent.
- Сохраните запись.
- В поле «Важная заявка» флажок будет снят.
- Поэкспериментируйте с регистром и формами слов из реестра, чтобы понять, как работает выражение на N3.
Связанные статьи
Эта статья была полезна 1 чел.