Перейти к содержанию

Статья для предыдущей поддерживаемой версии ПО — 4.7!

Текущая рекомендованная версия — Comindware Platform 5.0. См. документацию к версии 5.0.

Атрибут типа «Текст». Поиск строки в тексте с помощью N3

Введение

Текстовый атрибут может содержать неограниченное количество символов, например письмо или заявку. Чтобы найти в тексте ключевые слова, например запрещённые или обозначающие срочность, важность и т. п., можно использовать выражение на N3.

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

Прикладная задача

Имеется шаблон «Заявки». Если в комментарии клиент пишет слово «срочно», «важно» или подобное слово, указывающее на важность заявки, то такую заявку необходимо отметить флажком «Важная заявка» с помощью логического атрибута.

Поиск слова в значении текстового атрибута

  1. Создайте шаблон «Реестр слов» с текстовыми атрибутами «Код» и «Слово».
  2. Создайте шаблон «Заявки».
  3. Создайте текстовый атрибут «Комментарий».
  4. Создайте логический атрибут «Важная заявка»:

    • Вычислять автоматически: флажок установлен
    • Вычисляемое выражение: 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.
    }
  5. Поместите атрибуты на форму и сохраните. У атрибута «Важная заявка» установите представление в виде флажка.

Тестирование

  1. В реестре слов создайте записи с ключевыми словами, обозначающими важную заявку, например:

    Код Слово
    urgent срочн
    urgent важн
    urgent скор
    urgent АСАП
    urgent ASAP
    urgent important
  2. Создайте новую заявку.

  3. В комментарии укажите любой текст и напишите слово «Срочно!», «ВАЖНО», «скорее» или любое слово с кодом urgent из реестра слов.
  4. Сохраните запись.
  5. В поле «Важная заявка» будет установлен флажок.
  6. Удалите из комментария все слова с кодом urgent.
  7. Сохраните запись.
  8. В поле «Важная заявка» флажок будет снят.
  9. Поэкспериментируйте с регистром и формами слов из реестра, чтобы понять, как работает выражение на N3.

Связанные статьи

Атрибут типа «Текст»

Написание выражений на языке N3

К началу