Атрибут типа «Текст». Поиск строки в тексте с помощью 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,# то значение вычисляемого атрибута сменится на truetrue -> ?value.} -
Поместите атрибуты на форму и сохраните. У атрибута «Важная заявка» установите представление в виде флажка.
Тестирование
-
В реестре слов создайте записи с ключевыми словами, обозначающими важную заявку, например:
Код Слово urgent срочн urgent важн urgent скор urgent АСАП urgent ASAP urgent important -
Создайте новую заявку.
- В комментарии укажите любой текст и напишите слово «Срочно!», «ВАЖНО», «скорее» или любое слово с кодом urgent из реестра слов.
- Сохраните запись.
- В поле «Важная заявка» будет установлен флажок.
- Удалите из комментария все слова с кодом urgent.
- Сохраните запись.
- В поле «Важная заявка» флажок будет снят.
- Поэкспериментируйте с регистром и формами слов из реестра, чтобы понять, как работает выражение на N3.
Связанные статьи
Эта статья была полезна 1 чел.