Comindware Platform позволяет составлять выражения на языке N3 (Notation3) для выполнения запросов данных и вычисления значений.
Преимущество языка N3 заключается в скорости вычислений, что позволяет эффективно использовать все возможности графовой базы данных. Язык выражений N3 позволяет осуществлять доступ к искомым данным и их связям поатрибутивно без необходимости загрузки данных потаблично, что присуще реляционным базам данных и языку запросов SQL.
Нотация N3 представляет собой набор записей типа: «субъект» «предикат» «объект». Данная конструкция может применяться в различных вариантах, от получения данных по заданным атрибутам, до математических операций.
Выражения N3 состоят из триплетов вида субъект-предикат-объект.
Например, ?group rdf:type account:Group
— триплет, позволяющий по любому из заданных аргументов обнаружить неизвестные. Если в триплете заданы объект и предикат, ПО будет осуществлять поиск субъекта, если заданы субъект и предикат — поиск объекта и т. д. Если в выражении задан один аргумент, ПО вернёт все значения для остальных двух.
Основы построения языка выражений N3 приведены в открытой документации, размещенной по адресу https://www.w3.org/TR/rdf11-concepts/.
Синтаксические элементы
@prefix property: <http://comindware.com/ontology/user/op#>.
— объявление префикса встроенного пакета, т.е. синонима, используемого в выражении..rdf:type
— использование префикса для удобочитаемости и сокращения размеров кода.{}
— объявление тела выражения.?
— объявление переменных.?item
— входной параметр.?item
— значения ссылки (экземпляры шаблона записи, с которым связан текущий шаблон записи).?value
— выходной параметр.a
— принадлежность субъекта к объекту..
— терминатор триплета.#
— комментарий.->
— присваивание значения.()
— объявление списка.[]
— неявное использование субъекта.Полезные конструкции и встроенные функции
("templateSystemName" "attributeSystemName") object:findProperty ?p.
— возвращает в переменную ?p
атрибут по заданным системным именам шаблона и атрибута.once {}.
— выходит после первой успешной итерации.or {} or {} … or {}.
— логический оператор ИЛИ
.if {} then {} else {}.
— условный оператор.from {} select ?v -> ?vList.
— возвращает список в переменную ?vList
.?list math:sum ?sum.
— вычисляет сумму.{} assert:count ?c.
— вычисляет количество записей.({} … {}) assert:union true.
— объединяет итераторы в один.in ?item.
{
#наш код
} => { ?item attribute:value ?value. }.
субъект |
предикат |
объект не указан |
Поиск объекта по заданному предикату и субъекту. |
субъект не указан | предикат |
объект |
Поиск субъекта по заданному предикату и объекту. |
субъект |
предикат |
объект |
Проверка субъекта и объекта на полное совпадение. |
субъект не указан |
предикат |
объект не указан |
Поиск субъекта и объекта по заданному предикату. |
субъект |
предикат |
?. |
Проверка наличия значения. Здесь |
Рисунок 1. Порядок обработки запроса для поиска ID аккаунта по имени пользователя
Рисунок 2. Порядок обработки запроса для поиска ID задач по имени пользователя
ПО позволяет использовать выражения N3 при настройке следующих сущностей и функций:
Сущность |
Входные данные (контекст) |
Выходные данные |
Атрибут → Вычисляемое значение |
|
|
Форма → Фильтр на поле |
|
|
Правила для формы → Правило → Условие выполнения |
|
|
Правила для формы → Действие → Условие выполнения |
|
|
Правила для формы → Вычисляемое значение для действия |
|
|
Кнопка → Условия отображения |
|
|
Таблица → Системный фильтр |
|
|
Роль → Разрешения → Шаблон записи, аккаунта, процесса → Фильтр аккаунтов |
|
|
Роль → Разрешения → Шаблон записи, аккаунта, процесса → Условие применения |
|
|
Сценарий → Изменение значений переменных → Вычисление значения |
|
|
Сценарий → Изменение значений атрибутов → Вычисление значения |
|
|
Сценарий → Смена контекста → Вычисление набора объектов |
|
|
Сценарий → Дублирование записи → Вычисление набора объектов |
|
|
Сценарий → Проверка результата выражения → Выражение для проверки |
|
|
Сценарий → Выполнение по условиям → Условие выполнения действий |
|
|
Сценарий → Повтор по числовому счётчику → Количество итераций |
|
|
Сценарий → Повтор по количеству объектов → Вычисление набора объектов |
|
|
Функция .?
@prefix object: <http://comindware.com/ontology/object#>.
{
("currentTemplate" "Region") object:findProperty ?Region.
# Проверяем, что в текущей записи, атрибут Region содержит непустое значение
?item ?Region ?.
?item -> ?value.
}
Функция once
@prefix object: <http://comindware.com/ontology/object#>.
{
("currentTemplate" "Region") object:findProperty ?Region.
("Biznesstruktura" "Region") object:findProperty ?Region2.
once {
?item ?Region ?RegionVal.
?check ?Region2 ?RegionVal.
}.
true -> ?value.
}
Оператор if
@prefix cmw: <http://comindware.com/logics#>.
@prefix session: <http://comindware.com/ontology/session#>.
@prefix math: <http://www.w3.org/2000/10/swap/math#>.
{
session:context session:requestTime ?now. #получим текущую дату
?tasks a cmw:UserTask.
if {?tasks cmw:dueDate ?.}
then {
?tasks cmw:dueDate ?dueDateVal.
?dueDateVal math:greaterThan ?now.
?tasks -> ?value.
}
else {?tasks -> ?value.}.
}
Оператор from и функция sum
@prefix math: <http://www.w3.org/2000/10/swap/math#>.
@prefix object: <http://comindware.com/ontology/object#>.
{
("Nakladnaya" "PoziciiNakladnoy") object:findProperty ?Positions.
("PoziciiNakladnoy" "Summa") object:findProperty ?Summa.
from {
?item ?Positions ?PositionsVal.
?PositionsVal ?Summa ?SummaVal.
} select ?SummaVal -> ?SummaList.
?SummaList math:sum ?value.
}
Функция count
@prefix object: <http://comindware.com/ontology/object#>.
@prefix assert: <http://comindware.com/logics/assert#>.
{
("Nakladnaya" "PoziciiNakladnoy") object:findProperty ?Positions.
{
?item ?Positions ?PositionsVal.
} assert:count ?value.
}
Функция distinct
@prefix object: <http://comindware.com/ontology/object#>.
@prefix assert: <http://comindware.com/logics/assert#>.
{
("Nakladnaya" "PoziciiNakladnoy") object:findProperty ?Positions.
("PoziciiNakladnoy" "Nomenklatura") object:findProperty ?Items.
{
{
?item ?Positions ?PositionsVal.
?PositionsVal ?Items ?ItemsVal.
} assert:distinct ?ItemsVal.
} assert:count ?value.
}
Оператор union
@prefix assert: <http://comindware.com/logics/assert#>.
@prefix object: <http://comindware.com/ontology/object#>.
{
("Nakladnaya" "Gruzootpravitel") object:findProperty ?ShippedBy.
("Nakladnaya" "Poluchatel") object:findProperty ?Receiver.
(
{?item ?ShippedBy ?Contractor.}
{?item ?Receiver ?Contractor.}
) assert:union true.
?Contractor -> ?value.
}
Задача: вывести заявки, у которых значение атрибута Status не равно «Завершен» и дата начала уже прошла относительно текущей даты.
@prefix object: <http://comindware.com/ontology/object#>.
@prefix session: <http://comindware.com/ontology/session#>.
@prefix math: <http://www.w3.org/2000/10/swap/math#>.
{
("Proekt" "Status") object:findProperty ?StatusProp.
?Proekty ?StatusProp ?Status.
("Proekt" "Datanachala") object:findProperty ?DatanachalaProp.
?Proekty ?DatanachalaProp ?Datanachala.
session:context session:requestTime ?now.
?now math:greaterThan ?Datanachala.
?Status != "Завершен".
?value == ?Proekty.
}
Задача: при добавлении существующих записей в коллекцию отображать в списке только те проекты, у которых прошла проверка (атрибут Proverka имеет значение true
) или у которых атрибут Status имеет значение «Создан».
@prefix object: <http://comindware.com/ontology/object#>.
{
("Proekt" "Status") object:findProperty ?StatusProp.
?Proekty ?StatusProp ?Status.
("Proekt" "Proverka") object:findProperty ?ProverkaProp.
?Proekty ?ProverkaProp ?Proverka.
or {
?Proverka == true.
}
or {
?Status == "Создан".
}.
?value == ?Proekty.
}
Задача: выводить в списке на добавление только руководителей текущего пользователя (атрибут manager типа «Аккаунт») или пользователей с должностью «Менеджер» (атрибут title типа «Текст»)
@prefix cmw: <http://comindware.com/logics#>.
@prefix account: <http://comindware.com/ontology/account#>.
@prefix string: <http://www.w3.org/2000/10/swap/string#>.
{
cmw:securityContext cmw:currentUser ?currUser.
?users a account:Account.
or {
?currUser account:manager ?users. #users - руководители
}
or {
?users account:title ?title.
?title string:matches "Менеджер".
}.
?value == ?users.
}
Задача: выводить только тех заявителей, которые прикреплены к заявкам.
@prefix object: <http://comindware.com/ontology/object#>.
{
("Zayavitel" "Application") object:findProperty ?ApplicationProp.
?Zayavitel ?ApplicationProp ? .
}
Задача: выполнять действия с полем на форме при условии, что процент выполнения заявки больше 70, при этом действие не должно выполняться, если этап (атрибут Etap) выполнения равен 1.
@prefix object: <http://comindware.com/ontology/object#>.
@prefix math: <http://www.w3.org/2000/10/swap/math#>.
{
("Application" "Etap") object:findProperty ?EtapProp.
?item ?EtapProp ?Etap.
("Application" "percent") object:findProperty ?percentProp.
?item ?percentProp ?percent.
or {
?Etap == 1.
?value == false.
}
or {
?percent math:greaterThan 70.
?value == true.
}.
Задача: при выполнении вышеописанного условия, выполнять для поля «Статус» заявки следующие действия: сменить тип доступа на «Только для чтения», установить значение «Завершена» и показать предупреждение с текстом «Заявка <Название заявки (атрибут Name)> завершена».
@prefix object: <http://comindware.com/ontology/object#>.
@prefix math: <http://www.w3.org/2000/10/swap/math#>.
@prefix string: <http://www.w3.org/2000/10/swap/string#>.
@prefix output: <http://comindware.com/ontology/tableOutput#>.
{
output:result a output:Result.
("Application" "Etap") object:findProperty ?EtapProp.
?item ?EtapProp ?Etap.
("Application" "percent") object:findProperty ?percentProp.
?item ?percentProp ?percent.
?Etap != 1.
?percent math:greaterThan 70.
output:result output:typeOfAccess "Только чтения".
output:result output:value "Завершена".
("Application" "Name") object:findProperty ?NameProp.
?item ?NameProp ?Name.
("Заявка" ?Name "завершена") string:format ?warning.
output:result output:warning "Завершена".
}
Ниже представлены некоторые упрощения N3, упрощающие и ускоряющие работу.
@prefix: <#>. |
|
a/ @a |
|
[] |
указываем, что существует объект с заданными свойствам без возможности ссылаться на него |
= |
эквивалентность ( |
=> |
|
объект.свойство |
переход к свойству |
(элемент1 элемент2) |
список |
_:variable |
|
?variable |
|
В следующей таблице приведен перечень функций, которые можно использовать в выражениях N3.
\
), за которой следует буква или набор цифр. Escape-последовательность рассматривается как один символ и, следовательно, является допустимой символьной константой.
Встроенные функции N3 |
|||
---|---|---|---|
Функция |
Описание |
Использование |
Возвращает |
Математические функции |
|||
@prefix w3math: <http://www.w3.org/2000/10/swap/math#>. |
|||
w3math:quotient |
Берёт 2 аргумента в скобках, указанные в субъекте и результат деления первого на второе помещает в переменную объекта. |
(?WorkInSeconds ?WorkDaysInSeconds) w3math:quotient ?WorkSeconds. |
number |
w3math:integerQuotient |
Берёт 2 аргумента в скобках, указанные в субъекте и результат целочисленного деления первого на второе помещает в переменную объекта. |
(?WorkInSeconds ?WorkDaysInSeconds) w3math:integerQuotient ?WorkSeconds. |
number |
w3math:remainder |
Берёт 2 аргумента в скобках, указанные в субъекте и остаток от деления первого на второе помещает в переменную объекта. |
(?remainingWorkInSeconds ?remainingWorkDaysInSeconds) math:remainder ?remainingWorkSeconds. |
number |
w3math:product |
Берёт 2 аргумента в скобках, указанные в субъекте и результат их умножения помещает в переменную объекта. |
(?productingWorkInSeconds ?productingWorkDaysInSeconds w3math:product ?productingWorkSeconds. |
number |
w3math:lessThan |
Меньше чем |
?recordDate w3math:lessThan ?maxDate. |
bool |
w3math:notLessThan |
Не меньше чем |
?documentRecordsCount w3math:notLessThan 2. |
bool |
w3math:equalTo |
Равно ( |
?countWorkingDaysMounth w3math:equalTo ?countWorkingDays. |
bool |
w3math:notEqualTo |
Не равно ( |
?countWorkingDaysMounth w3math:notEqualTo ?countWorkingDays. |
bool |
w3math:greaterThan |
Больше чем ( |
?recordDate w3math:greaterThan ?minDate. |
bool |
w3math:notGreaterThan |
Не больше чем ( |
?documentRecordsCount w3math:notGreaterThan 2. |
bool |
w3math:negation |
Отрицание |
?firstNumber w3math:negation ?negationNumber. |
number |
@prefix cmwmath: <http://comindware.com/logics/math#>. |
|||
cmwmath:sum |
Берёт сумму из субъекта типа List и записывает значение в объект. |
?durationsSeconds cmwmath:sum ?durationSumSeconds. |
number |
cmwmath:difference |
Берёт разность из субъекта типа List и записывает значение в объект. |
?list cmwmath:difference ?differenceTotal. |
number |
cmwmath:min |
Берёт минимальное значение из субъекта типа List и записывает значение в объект. |
?listQueue cmwmath:min ?queueMin. |
number dateTime duration |
cmwmath:max |
Берёт максимальное значение из субъекта типа List и записывает значение в объект. |
?listQueue cmwmath:max ?queueMax. |
number dateTime duration |
cmwmath:average |
Берёт 2 аргумента в скобках, указанные в субъекте и помещает их среднее арифметическое в переменную объекта. |
(?priceFirst ?priceSecond) cmwmath:average ?priceAverage. |
number |
cmwmath:round |
Округление к ближайшему целому. |
?quotientPrice cmwmath:round ?numberRound. |
number |
cmwmath:floor |
Округление в меньшую сторону. |
?quotientPrice cmwmath:floor ?numberFloor. |
number |
cmwmath:ceil |
Округление в большую сторону. |
?quotientPrice cmwmath:ceil ?numberCeil. |
number |
Функции для работы с датами и временем |
|||
@prefix w3time: <http://www.w3.org/2000/10/swap/time#>. |
|||
w3time:inSeconds |
Конвертирует значение типа |
?durationWorkingDay w3time:inSeconds ?secondsWorkingDay. |
number |
@prefix cmwtime: <http://comindware.com/logics/time#>. |
|||
cmwtime:toDuration |
Конвертирует количество секунд в значение типа |
?secondsWorkingDay cmwtime:toDuration ?durationWorkingDay. |
duration |
cmwtime:getSpan |
Вычитает из первого значения субъекта типа |
(?dateTime1 ?dateTime2) cmwtime:getSpan ?resultTimeSpan. |
duration |
cmwtime:addDuration |
Добавляет к значению субъекта типа |
|
|
cmwtime:subDuration |
Вычитает из значения субъекта типа |
|
|
cmwtime:endOfDay |
Берёт значение из субъекта типа |
?creationDateTime cmwtime:endOfDay ?endDateTime. |
|
cmwtime:startOfDay |
Берёт значение из субъекта типа |
?creationDateTime cmwtime:startOfDay ?startDateTime. |
|
cmwtime:startOfWeek |
Берёт значение из субъекта типа |
?creationDateTime cmwtime:startOfWeek ?startDateTime. |
|
cmwtime:startOfMonth |
Берёт значение из субъекта типа |
?creationDateTime cmwtime:startOfMonth ?startDateTime. |
|
cmwtime:fromTzToTz |
Перевод значения типа |
(?someDateTime "Etc/GMT" "Europe/Moscow") cmwtime:fromTzToTz ?tzDateTime. |
|
cmwtime:timeZoneHours |
Возвращает разницу во времени UTC и местным часовым поясом |
? cmwtime:timeZoneHours ?timeZoneDifferenceInHours. |
integer |
cmwtime:isToday |
Берёт значение из субъекта типа |
?creationDate cmwtime:isToday ?today. |
bool |
cmwtime:century |
Берёт значение из субъекта типа |
?creationDate cmwtime:century ?numberCentury. |
number |
cmwtime:isoFormat |
Конвертирует значение типа |
?creationDate cmwtime:isoFormat ?isoFormatDate. |
string |
cmwtime:year |
Берёт значение из субъекта типа |
?creationDate cmwtime:year ?numberYear. |
number |
cmwtime:month |
Берёт значение из субъекта типа |
?creationDate cmwtime:month ?numberMonth. |
number |
cmwtime:day |
Берёт значение из субъекта типа |
?creationDate cmwtime:day ?numberDay. |
number |
cmwtime:hour |
Берёт значение из субъекта типа |
?creationDate cmwtime:hour ?numberHour. |
number |
cmwtime:minute |
Берёт значение из субъекта типа |
?creationDate cmwtime:minute ?numberMinute. |
number |
cmwtime:second |
Берёт значение из субъекта типа |
?creationDate cmwtime:second ?numberSecond. |
number |
cmwtime:makeDate |
Берёт значения субъекта типа число и возвращает объект типа |
|
|
cmwtime:workhours |
Возвращает дату и время на основании количества рабочих часов с определенного момента времени, с поправкой на праздники и фактические выходные дни. |
(?startWorkDateTime ?qountWorkingHours ?startWorkingDay ?durationWorkingDay (?dateNotHoliday)) cmwtime:workhours ?newDateTime. |
|
cmwtime:workdays |
Возвращает дату на основании количества рабочих дней с определенной даты, с поправкой на праздники и фактические выходные дни. |
(?startWorkDateTime ?qountWorkingHours (?firstDateNotHoliday ?secondDateNotWorking)) cmwtime:workdays ?newDateTime. |
|
cmwtime:workhoursDuration |
Возвращает продолжительность работы между двумя датами при условии, что рабочий день начинается в заданное время и имеет определенную длительность. |
(?startWorkDateTime ?endWorkDateTime ?timeStartWorkingDay ?durationWorkingDay) cmwtime:workhoursDuration ?newDuration. |
duration |
cmwtime:workdaysDuration |
Возвращает продолжительность работы между двумя датами, на основании предположения, что рабочий день начинается в 00:00 и длится 24 часа. |
(?startWorkDateTime ?endWorkDateTime) cmwtime:workdaysDuration ?newDuration. |
duration |
Функции для работы с интервалами времени |
|||
@prefix cmwduration: <http://comindware.com/logics/duration#>. |
|||
cmwduration:days |
Берёт промежуток времени и возвращает количество дней. |
?durationHoliday cmwduration:days ?countDaysOfHoliday. |
number |
cmwduration:hours |
Берёт промежуток времени и возвращает количество часов. |
?durationHoliday cmwduration:hours ?countHoursOfHoliday. |
number |
cmwduration:minutes |
Берёт промежуток времени и возвращает количество минут. |
?durationHoliday cmwduration:minutes ?countMinutesOfHoliday. |
number |
Функции для работы со строками |
|||
@prefix w3string: <http://www.w3.org/2000/10/swap/string#>. |
|||
w3string:format |
Подставляет аргументы в нумерованные заместители вида |
("{0}/{1} - {2}" ?value0 ?value1 ?value2) w3string:format ?outString. |
string |
w3string:matches |
Использует в качестве аргументов строку и регулярное выражение. Возвращает логическое значение Истина, если какая-либо часть строки или строка полностью соответствует условию, заданному регулярным выражением. В противном случае возвращает результат Ложь. |
?stringExample w3string:matches ?expression. |
bool |
w3string:notMatches |
Использует в качестве аргументов строку и регулярное выражение. Возвращает логическое значение Истина, если часть строки или строка полностью не соответствуют условию, заданному регулярным выражением. В противном случае возвращает результат Ложь. |
?stringExample w3string:notMatches ?expression. |
bool |
w3string:greaterThan |
Возвращает логическое значение Истина, если аргумент2 больше аргумента1, в противном случае возвращает результат Ложь. |
?creationDate w3string:greaterThan ?chooseDate. |
bool |
w3string:lessThan |
Возвращает логическое значение Истина, если аргумент2 меньше аргумента1, в противном случае возвращает результат Ложь. |
?creationDate w3string:lessThan ?chooseDate. |
bool |
w3string:notGreaterThan |
Возвращает логическое значение Истина, если аргумент2 НЕ больше аргумента1, в противном случае возвращает результат Ложь. |
?creationDate w3string:notGreaterThan ?chooseDate. |
bool |
w3string:notLessThan |
Возвращает логическое значение Истина, если аргумент2 НЕ меньше аргумента1, в противном случае возвращает результат Ложь. |
?creationDate w3string:notLessThan ?chooseDate. |
bool |
@prefix cmwstring: <http://comindware.com/logics/string#>. |
|||
cmwstring:join |
Объединяет строки с использованием заданного разделителя. |
("," ?newDependencyLinks) cmwstring:join ?newDependencyLinksStr. |
string |
cmwstring:replace |
Заменяет все экземпляры заданной строки в исходной строке на новое значение. |
(?text "\n" "<br>") cmwstring:replace ?html. |
string |
cmwstring:cutString |
Обрезает строку на заданную длину и добавляет в конец заданные символы. |
(?taskTitleLong 50 "...") cmwstring:cutString ?taskTitle. |
string |
cmwstring:firstCapital |
Преобразует первый символ строки в прописной. |
?youStr cmwstring:firstCapital ?youStrCapital. |
string |
cmwstring:concatenation |
Конкатенация строк. |
(?firstString ?secondString) cmwstring:concatenation ?newString. |
string |
cmwstring:length |
Возвращает количество символов в строке. |
?stringName cmwstring:length ?countSymbols. |
number |
cmwstring:substring |
Обрезает строку от заданной позиции на заданное количестве символов (опционально). |
|
string |
cmwstring:indexOf |
Возвращает номер (отсчитываемый от нуля) позиции, на которой располагается искомая строка в исходной строке. Номер позиции может отсчитываться от произвольного положения (опционально). |
|
number |
cmwstring:toUri |
Преобразует escape-последовательности в URI. |
?sequence cmwstring:toUri ?reference. |
string |
cmwstring:fromUri |
Преобразует URI в escape-последовательности. |
?reference cmwstring:fromUri ?sequence. |
string |
cmwstring:toBase64 |
Преобразует строку по стандарту кодирования Base64. |
?string cmwstring:toBase64 ?newStringBase. |
string |
cmwstring:fromBase64 |
Декодирует строку по стандарту Base64. |
?stringBase cmwstring:fromBase64 ?newString. |
string |
cmwstring:split |
Находит заданный разделитель в строке и создает список. |
("_" ?string) cmwstring:split ?newString. |
|
cmwstring:format |
Форматирует аргументы в соответствии с заданным шаблоном. Возвращает отформатированную строку. |
("{0}/{1} - {2}" ?v0 ?v1 ?v2) cmwstring:format ?outString. |
string |
@prefix cmwlogics: <http://comindware.com/logics#>. |
|||
cmwlogics:value |
Присваивает значение субъекта объекту. |
|
number
dateTime string duration reference account |
@prefix cmwentity: <http://comindware.com/ontology/entity#>. |
|||
cmwentity:like |
Сравнивает шаблон и строку. |
?pattern cmwentity:like ?sourceString. |
bool |
cmwentity:startsWith |
Проверяет, что заданная строка начинается в соответствии с шаблоном и (опционально) в соответствии с заданной опцией сравнения (StringComparison). |
|
bool |
cmwentity:endsWith |
Проверяет, что заданная строка заканчивается в соответствии с шаблоном и (опционально) в соответствии с заданной опцией сравнения (StringComparison). |
|
bool |
cmwentity:indexOf |
Возвращает индекс первого вхождения подстроки в строку. Отсчет начинается с 1. |
(?sourceString ?substring) entity:indexOf ?index. |
number |
cmwentity:toLower |
Преобразует все символы строки в строчные. |
?string entity:toLower ?stringLow. |
string |
cmwentity:toUpper |
Преобразует все символы строки в прописные. |
?string entity:toUpper ?stringUpper. |
string |
cmwentity:contains |
Проверяет вхождение значения объекта типа |
?string entity:contains ?subString. |
string |
@prefix cmwbuiltin: <http://comindware.com/ontology/image/builtin#>. |
|||
cmwbuiltin:toPlainText |
Конвертирует HTML-текст в обычный. |
?htmlText builtin:toPlainText ?plainText. |
string |
Функции для работы со списками |
|||
@prefix w3list: <http://www.w3.org/2000/10/swap/list#>. |
|||
w3list:append |
|
||
w3list:in |
bool |
||
w3list:last |
Из представленной последовательности получает последний элемент. |
?listFlowers w3list:last ?lastFlower. |
string |
w3list:member |
|||
@prefix cmwlist: <http://comindware.com/logics/list#>. |
|||
cmwlist:length |
Возвращает количество элементов последовательности. |
?listFlowers cmwlist:length ?countFlowers. |
|
cmwlist:at |
Берёт список элементов и задает индекс. Возвращает значение элемента, соответствующее индексу.
|
(?list ?index) cmwlist:at ?valueOfIndex. |
|
Функции группировки и сортировки списков |
|||
|
|||
|
Группировка |
|
|
cmwentity:sortby |
Сортировка |
|
|
@prefix cmwassert: <http://comindware.com/logics/assert#>. |
|||
cmwassert:true |
|
||
cmwassert:false |
|
||
cmwassert:or |
Оператор |
|
|
cmwassert:if |
Условный оператор |
|
|
cmwassert:count |
Выводит количество записей, удовлетворяющих условиям. |
|
|
cmwassert:union |
Объединяет итераторы в один. |
|
|
cmwassert:distinct |
Выбирает уникальные записи из связанных наборов данных. |
|
|
cmwassert:range |
|||
cmwassert:sort |
|
||
cmwassert:once |
Выходит после первой успешной итерации. |
once {}. |
|
Функции для работы с идентификаторами ресурсов |
|||
|
|||
|
Кодирует строку URL-адреса. Аналог |
|
|
|
Объединяет части предоставления списка строк пути в путь одной строкой. Аналог |
|
|
|
Получает текущую директорию нахождения проекта. |
|
|
|
|||
cmwui:toClientString |
Получает строковое представление ресурса (элемента или атрибута). |
?object cmwui:toClientString ?string. |
|
cmwui:toQName |
Преобразует строковое представление ресурса в QName. |
?object cmwui:toQName ?qName. |
|
Функции поддерживающие и корректно обрабатывающие нулевые значения |
|||
@prefix cmwnullable <http://comindware.com/ontology/entity/nullable#>. |
|||
cmwnullable:lessThan |
Меньше чем. ( Если в субъекте нулевое значение, возвращает нулевое значение. |
?recordDate cmwnullable:lessThan ?maxDate. |
|
cmwnullable:greaterThan |
Больше чем ( Если в субъекте нулевое значение, возвращает нулевое значение. |
?recordDate cmwnullable:greaterThan ?minDate. |
|
cmwnullable:notLessThan |
Не меньше ( Если в субъекте нулевое значение, возвращает нулевое значение. |
?documentRecordsCount cmwnullable:notLessThan 2. |
|
cmwnullable:notGreaterThan |
Не больше ( Если в субъекте нулевое значение, возвращает нулевое значение. |
?documentRecordsCount cmwnullable:notGreaterThan 2. |
|
cmwnullable:quotient |
Берёт 2 аргумента в скобках, указанные в субъекте и результат деления первого на второе помещает в переменную объекта. Если в субъекте нулевое значение, возвращает нулевое значение. |
(?WorkInSeconds ?WorkDaysInSeconds) cmwnullable:quotient ?WorkSeconds. |
|
cmwnullable:product |
Берёт 2 аргумента в скобках, указанные в субъекте и результат их умножения помещает в переменную объекта. Если в субъекте нулевое значение, возвращает нулевое значение. |
(?productingWorkInSeconds ?productingWorkDaysInSeconds) cmwnullable:product ?productingWorkSeconds. |
|
cmwnullable:integerQuotient |
Берёт 2 аргумента в скобках, указанные в субъекте и результат целочисленного деления первого на второе помещает в переменную объекта. Если в субъекте нулевое значение, возвращает нулевое значение. |
(?WorkInSeconds ?WorkDaysInSeconds) cmwnullable:integerQuotient ?WorkSeconds. |
|
cmwnullable:remainder |
Берёт 2 аргумента в скобках, указанные в субъекте и остаток от деления первого на второе помещает в переменную объекта. Если в субъекте нулевое значение, возвращает нулевое значение. |
(?remainingWorkInSeconds ?remainingWorkDaysInSeconds) cmwnullable:remainder ?remainingWorkSeconds. |
|
cmwnullable:sum |
Берёт сумму из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?durationsSeconds cmwnullable:sum ?durationSumSeconds. |
|
cmwnullable:difference |
Берёт разность из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?list cmwnullable:difference ?differenceTotal. |
|
cmwnullable:startOfDay |
Берёт значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?creationDateTime cmwnullable:startOfDay ?startDateTime. |
|
cmwnullable:startOfWeek |
Берёт значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?creationDateTime cmwnullable:startOfWeek ?startDateTime. |
|
cmwnullable:startOfMonth |
Берёт значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?creationDateTime cmwnullable:startOfMonth ?startDateTime. |
|
cmwnullable:startOfQuarter |
Берёт значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?creationDateTime cmwnullable:startOfQuarter ?startDateTime. |
|
cmwnullable:startOfYear |
Берёт значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?creationDateTime cmwnullable:startOfYear ?startDateTime. |
|
cmwnullable:endOfDay |
Берёт значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?creationDateTime cmwnullable:endOfDay ?endDateTime. |
|
cmwnullable:endOfWeek |
Берёт значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?creationDateTime cmwnullable:endOfWeek ?endDateTime. |
|
cmwnullable:endOfMonth |
Берёт значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?creationDateTime cmwnullable:endOfMonth ?endDateTime. |
|
cmwnullable:endOfQuarter |
Берёт значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?creationDateTime cmwnullable:endOfQuarter ?endDateTime. |
|
cmwnullable:endOfYear |
Берёт значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?creationDateTime cmwnullable:endOfYear ?endDateTime. |
|
cmwnullable:inSeconds |
Конвертирует значение длительности в количество секунд. Если в субъекте нулевое значение, возвращает нулевое значение. |
?durationWorkingDay cmwnullable:inSeconds ?secondsWorkingDay. |
|
cmwnullable:min |
Берёт минимальное значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?listQueue cmwnullable:min ?queueMin. |
|
cmwnullable:max |
Берёт максимальное значение из субъекта типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?listQueue cmwnullable:max ?queueMax. |
|
cmwnullable:average |
Берёт 2 аргумента в скобках, указанные в субъекте и помещает их среднее арифметическое в переменную объекта. Если в субъекте нулевое значение, возвращает нулевое значение. |
(?priceFirst ?priceSecond) cmwnullable:average ?priceAverage. |
|
cmwnullable:toDuration |
Конвертирует количество секунд в значение типа Если в субъекте нулевое значение, возвращает нулевое значение. |
?secondsWorkingDay cmwnullable:toDuration ?durationWorkingDay. |
|
cmwnullable:round |
Округление к ближайшему целому. Если в субъекте нулевое значение, возвращает нулевое значение. |
?quotientPrice cmwnullable:round ?numberRound. |
|
cmwnullable:floor |
Округление в меньшую сторону. Если в субъекте нулевое значение, возвращает нулевое значение. |
?quotientPrice cmwnullable:floor ?numberFloor. |
|
cmwnullable:ceiling |
Округление в большую сторону. Если в субъекте нулевое значение, возвращает нулевое значение. |
?quotientPrice cmwnullable:ceiling ?numberCeil. |
|
cmwnullable:format |
Форматирует аргументы в соответствии с заданным шаблоном. Возвращает отформатированную строку. Если в субъекте нулевое значение, возвращает нулевое значение. |
("{0}/{1} - {2}" ?v0 ?v1 ?v2) cmwnullable:format ?outString. |
|
Функции для работы с изображениями |
|||
|
|||
cmwbuiltin:isSupportedImage |
Проверяет формат файла на соответствие одному из допустимых форматов: . |
|
|
cmwbuiltin:dimensions |
По |
?streamId builtin:dimensions ?dimensions. |
|
Специальные функции для работы с аккаунтами и группами |
|||
@prefix cmwlogics: <http://comindware.com/logics#>. |
|||
cmwlogics:currentUser |
Предикат, получающий аккаунт текущего пользователя. |
cmwlogics:securityContext cmwlogics:currentUser ?userVal. |
|
cmwlogics:securityContext |
Субъект, определяющий контекст персонального пространства. |
cmwlogics:securityContext cmwlogics:currentUser ?userVal. |
|
@prefix cmwaccount: <http://comindware.com/ontology/account#>. |
|||
cmwaccount:Group |
Определяет тип переменной Группа. |
?group rdf:type cmwaccount:Group. |
|
cmwaccount:groupName |
Предикат для получения наименования группы. |
?group cmwaccount:groupName ?groupName. |
|
|
Предикат для определения принадлежности аккаунта к системной роли «Системные администраторы» |
|
|
|
Предикат, для получения полного имени аккаунта |
|
|
|
Предикат для получения Ф. И. О. аккаунта. |
|
|
|
Предикат для получения аккаунта руководителя, указанного для аккаунта. |
|
|
|
Предикат для получения адреса эл. почты аккаунта. |
|
|
|
Предикат для получения номера телефона аккаунта. |
|
|
|
Предикат для получения идентификатора аккаунта в мессенджере. |
|
|
|
Предикат для получения статуса аккаунта: |
|
|
|
Предикат для получения идентификатора аккаунта в Skype. |
|
|
|
Предикат для получения имени пользователя (логина) аккаунта. |
|
|
|
Предикат для получения состояния аккаунта: |
|
|
|
Предикат для получения даты последней авторизации аккаунта. |
|
|
|
Предикат для получения кода языка отображения веб-сайта для аккаунта. |
|
|
|
Предикат для получения Active Directory Security ID аккаунта. |
|
|
|
Предикат для получения параметров уведомлений аккаунта |
|
|
|
Предикат для получения пароля к аккаунту. |
|
|
|
Предикат для получения изображения профиля аккаунта. |
|
|
|
Предикат для получения увеличенного изображения профиля аккаунта. |
|
|
|
Предикат для получения наименования должности аккаунта. |
|
|
|
Предикат для получения наименования отдела аккаунта. |
|
|
|
Предикат для получения наименования офиса аккаунта. |
|
|
|
Предикат для получения списка групп, в которых состоит аккаунт. |
|
|
|
Предикат для получения способа аутентификации аккаунта. |
|
|
|
Предикат для получения аккаунта заместителя, назначенного аккаунту. |
|
|
|
Предикат для получения даты начала замещения аккаунта. |
|
|
|
Предикат для получения даты окончания замещения аккаунта. |
|
|
|
Предикат для получения дня рождения аккаунта. |
|
|
|
Предикат для получения ID персонального календаря аккаунта. |
|
|
|
Предикат для получения URI персонального календаря аккаунта. |
|
|
|
Предикат для получения статуса включения аккаунта в организационную структуру: |
|
|
|
Предикат для получения серверного часового пояса аккаунта. |
|
|
Специальные функции |
|||
@prefix cmwobject: <http://comindware.com/ontology/object#>. |
|||
cmwobject:findProperty |
Возвращает ID атрибута в переменную в объекте по заданным паре код шаблона записи и код атрибута в скобках субъекта. |
("ship_request" "client_code_SAP") cmwobject:findProperty ?cp. |
|
@prefix cmwcontext: <http://comindware.com/logics/session/context#>. |
|||
cmwcontext:time |
Возвращает текущее время сеанса. |
|
|
cmwcontext:timeZoneOffset |
Возвращает смещение часового пояса сеанса. |
|
|
cmwcontext:origin |
Возвращает объект, по которому был запущен сценарий. |
||
cmwcontext:variable |
Возвращает переменную в контексте. |
|
Номер Статьи: 4852
Размещено: Tue, Aug 8, 2023
Последнее обновление: Wed, Mar 19, 2025
Online URL: https://kb.comindware.ru/article/napisanie-vyrazhenij-na-yazyke-n3-4852.html