Предиктивный ввод в выражениях на языке N3
Введение
Для ввода выражений на языке N3 в редакторе выражений предусмотрены предиктивный ввод и подсказки:
- При вводе символов
@
,?
,:
,^^
, префиксов, предикатов, имён объектов, функций и аргументов, а также при нажатии клавиш Ctrl+Пробел отображается список подходящих по контексту конструкций и сущностей. - При вводе имён функций и объектов отображаются подсказки с их описанием.
Примечание
Примеры выражений на языке N3 в данном разделе составлены для вычисления значений атрибутов. См. «Вычисляемые атрибуты».
Обычно (например, в выражениях, по которым вычисляются значения атрибутов), в системной переменной item
содержится ID текущей записи (входные данные), а в переменную value
помещаются выходные данные.
В выражениях, задающих фильтры (например, фильтр для таблиц), доступна только переменная item
, в которую помещается результат вычисления выражения.
Объявление префикса
- Введите символ
@
. - Отобразится список доступных префиксов.
- Выберите префикс в списке, чтобы просмотреть его описание и URI.
- Дважды нажмите префикс, например
math
, чтобы вставить его в выражение.
@prefix math: <http://www.w3.org/2000/10/swap/math#>.
Ввод заготовки конструкции на языке N3
- Введите фигурные скобки
{ }
в пустое выражение (после префиксов). - Внутри фигурных скобок нажмите клавиши Ctrl+Пробел.
- Отобразится список доступных конструкций.
-
Выберите конструкцию в списке, чтобы просмотреть её описание.
Список доступных конструкций N3 -
Дважды нажмите конструкцию в списке, чтобы вставить её заготовку в выражение.
{
if { }
then { }
else { }.
}
Ввод предиката
- В позиции предиката нажмите клавиши Ctrl+Пробел.
-
Отобразится список объявленных префиксов.
Список доступных префиксов -
Выберите префикс в списке, чтобы просмотреть его описание.
- Дважды нажмите префикс, например
task
, чтобы вставить его в выражение. - В позиции после префикса введите двоеточие
:
. -
Отобразится список функций для префикса.
Список функций для префикса -
Дважды нажмите имя функции, например
objectId
, чтобы вставить его в выражение.
@prefix cmw: <http://comindware.com/logics#>.
@prefix task: <http://comindware.com/ontology/task#>.
@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.
{
# Получаем список ID задач, связанных с текущей записью
?task task:objectId ?item.
# Получаем ID задач со статусом inProgress (Выполняется)
?task cmw:taskStatus taskStatus:inProgress.
# Возвращаем ID назначенных исполнителей задач
or {?task cmw:assignee ?value.}
or {?task cmw:possibleAssignee ?value.}.
}
Ввод имени переменной
- Введите фигурные скобки
{ }
в пустое выражение (после префиксов). - Внутри фигурных скобок введите символ
?
. Этот список также можно вызвать, нажав клавиши Ctrl+Пробел в позиции после символа?
. -
Отобразится список доступных переменных.
Список доступных переменных -
Дважды нажмите имя переменной, например
value
, чтобы вставить его в выражение.
@prefix account: <http://comindware.com/ontology/account#>.
@prefix container: <http://comindware.com/ontology/container#>.
{
# Получаем ID шаблона аккаунта Zakazchiki
?user container:alias "Zakazchiki".
# Получаем список аккаунтов из шаблона Zakazchiki
?value account:extendedBy ?user.
}
Ввод запроса ID атрибута с помощью функции object:findProperty
Функция object:findProperty
возвращает ID атрибута шаблона по заданным системным именам шаблона и атрибута. По ID атрибута можно получить его значение. При предиктивном вводе для неё формируется заготовка и для ввода аргументов отображаются списки подходящих шаблонов и атрибутов.
- Внутри фигурных скобок нажмите клавиши Ctrl+Пробел.
-
В отобразившемся списке конструкций дважды нажмите функцию
FindProperty
.Список конструкций на языке N3 -
В выражение будет вставлена заготовка функции:
( ) object:findProperty ?foundProperty
-
В позиции первого аргумента (после открывающей скобки) нажмите клавиши Ctrl+Пробел.
-
Отобразится список подходящих шаблонов в приложении.
Список шаблонов в приложении -
Дважды нажмите системное имя шаблона, например
Zayavkanaotpusk
, чтобы вставить его в выражение. - В позиции второго аргумента (через пробел после первого) нажмите клавиши Ctrl+Пробел.
-
Отобразится список атрибутов шаблона, выбранного на шаге 4.
Список атрибутов шаблона -
Дважды нажмите системное имя атрибута, например
_creationDate
, чтобы вставить его в выражение.
@prefix object: <http://comindware.com/ontology/object#>.
@prefix cmwtime: <http://comindware.com/logics/time#>.
{
# Находим атрибут _creationDate шаблона Zayavkanaotpusk
("Zayavkanaotpusk" "_creationDate") object:findProperty ?dtProperty.
# Определяем значение атрибута _creationDate
# в текущей записи шаблона Zayavkanaotpusk
?item ?dtProperty ?dmonth.
# Извлекаем номер месяца из значения атрибута _creationDate
?dmonth cmwutc:month ?value.
}
Ввод запроса списка записей шаблона по его системному имени с помощью функции object:alias
Функция object:alias
возвращает записи шаблона с заданным системным именем. При предиктивном вводе для неё формируется заготовка, отображается список подходящих шаблонов и формируется компактный запрос записей выбранного шаблона с использованием квадратных скобок.
- Внутри фигурных скобок нажмите клавиши Ctrl+Пробел.
-
В отобразившемся списке конструкций дважды нажмите функцию
ObjectAlias
.Список конструкций на языке N3 -
В выражение будет вставлена заготовка функции:
a [object:alias ].
-
В позиции перед закрывающей квадратной скобкой нажмите клавиши Ctrl+Пробел.
-
Отобразится список шаблонов в приложении.
Список шаблонов в приложении -
Дважды нажмите системное имя шаблона, например
Zayavkanaotpusk
. -
В выражение будет вставлен запрос записей выбранного шаблона:
?objectZayavkanaotpusk a [object:alias "Zayavkanaotpusk"].
-
Чтобы присвоить результат выражения значению вычисляемого атрибута, замените имя переменной
objectZayavkanaotpusk
наvalue
.
@prefix object: <http://comindware.com/ontology/object#>.
{
# Получаем список записей шаблона Zayavkanaotpusk
?value a [object:alias "Zayavkanaotpusk"].
}
@prefix object: <http://comindware.com/ontology/object#>.
{
# Получаем ID шаблона Zayavkanaotpusk
?zayavkiTemplate object:alias "Zayavkanaotpusk".
# Получаем список записей шаблона Zayavkanaotpusk
?value a ?zayavkiTemplate.
}
Ввод запроса списка записей шаблона с заданным значением атрибута с помощью функции object:findObject
Функция object:findObject
возвращает список записей шаблона по заданным системным именам приложения, шаблона и атрибута и значению атрибута. При предиктивном вводе для неё формируется заготовка и для ввода аргументов отображаются списки подходящих приложений, шаблонов и атрибутов.
- Внутри фигурных скобок нажмите клавиши Ctrl+Пробел.
-
В отобразившемся списке конструкций дважды нажмите функцию
FindObject
.Список конструкций на языке N3 -
В выражение будет вставлена заготовка функции:
( ) object:findObject ?foundObject
-
Чтобы присвоить результат выражения значению вычисляемого атрибута, замените имя переменной
foundObject
наvalue
. - В позиции первого аргумента (после открывающей скобки) нажмите клавиши Ctrl+Пробел.
-
Отобразится список подходящих шаблонов в приложении.
Список приложений -
Дважды нажмите системное имя приложения, например
Upravlenieavtoparkom
, чтобы вставить его в выражение. - В позиции второго аргумента (через пробел после первого) нажмите клавиши Ctrl+Пробел.
-
Отобразится список шаблонов в приложении, выбранном на шаге 6.
Список шаблонов в приложении -
Дважды нажмите системное имя шаблона, например
Avtomobil
, чтобы вставить его в выражение. - В позиции третьего аргумента (через пробел после второго) нажмите клавиши Ctrl+Пробел.
-
Отобразится список атрибутов шаблона, выбранного на шаге 10.
Список атрибутов шаблона -
Дважды нажмите системное имя атрибута, например
Marka
, чтобы вставить его в выражение. - В позиции четвёртого аргумента (через пробела после третьего) введите в искомое значение выбранного атрибута, например
"Лада"
.
@prefix object: <http://comindware.com/ontology/object#>.
{
# Получаем список записей шаблона Avtomobil из приложения Upravlenieavtoparkom,
# в которых атрибут Marka имеет значение «Лада»
("Upravlenieavtoparkom""Avtomobil""Marka""Лада") object:findObject ?value.
}
Ввод значений из атрибута типа «Список значений»
Если предикат определяет атрибут типа «Список значений», предиктивный ввод подсказывает значения из этого списка.
- Введите предикат, например
cmw:taskStatus
, который определяет системный атрибут типа «Список значений», содержащий статус задачи. - В позиции через пробел после предиката нажмите клавиши Ctrl+Пробел.
- В отобразившемся списке значений нажмите требуемое значение, например
taskStatus:inProgress
(активная задача), чтобы вставить его в выражение.
@prefix cmw: <http://comindware.com/logics#>.
@prefix taskStatus: <http://comindware.com/ontology/taskStatus#>.
{
?value cmw:taskStatus taskStatus:inProgress.
}
Ввод типа литерала
- Введите литерал в кавычках, например
"P1D"
(1 день в формате ISO). - После кавычек введите символы
^^
. - Нажмите клавиши Ctrl+Пробел.
- Отобразится список доступных типов литералов.
- Дважды нажмите тип литерала, например
duration
, чтобы вставить его в выражение.
@prefix session: <http://comindware.com/ontology/session#>.
@prefix cmwutc: <http://comindware.com/logics/time/utc#>.
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>.
@prefix cmwdur: <http://comindware.com/logics/time/duration#>.
{
# Текущее время в UTC
session:context session:requestTime ?nowUTC.
# Время начала текущего дня
?nowUTC cmwutc:startOfDay ?startOfTodayUTC.
# Начало следующих суток = время начала текущего дня + 1 сутки
(?startOfTodayUTC "P1D"^^xsd:duration) cmwdur:add ?value.
}
Эта статья была полезна 2 чел.