В этой статье будет описано как с помощью языка запросов N3 можно фильтровать данные в коллекции по какому-либо параметру, определённому в текущей записи.
Для начала рассмотрим модель данных:
Шаблон записи (в нашем примере «Organizatsii»), хранящий мастер-данные, со следующими атрибутами:
Атрибут (в нашем примере «Filtrpooblasti» с типом данных «Текст»), в котором будет определен параметр для поиска записей в коллекции;
Атрибут с типом данных «Коллекция» (в нашем примере «Adresaofisov_col»), коллекция, записи в которой будут фильтроваться.
Шаблон записи (в нашем примере «Adresa»), хранящий записи в коллекции, со следующими атрибутами:
Атрибут (в нашем примере «Oblast» с типом данных «Текст»), по которому будет осуществляться фильтрация.
Далее, на конструкторе формы кликните на коллекцию и вставьте следующее выражение в «Фильтры записей: Для отображения»:
@prefix object: <http://comindware.com/ontology/object#> — в первой строке подключаем библиотеку «object» для того, чтобы в последующем можно было использовать её свойство «findProperty».
("Adresa" "Oblast") object:findProperty ?PropertyOblast. — в строках 3-5 определяем переменные-предикаты, через которые будем получать значения атрибутов. Сначала указываем системное имя шаблона записи, затем системное имя атрибута, значение которого хотим получить: ("Adresa" "Oblast"). Затем используем свойство библиотеки «object:findProperty», чтобы получить ID атрибута в какую-либо переменную, например, «PropertyOblast» (названия переменных задаются произвольно).
?item ?PropertyOblastFilter ?filter.— в 7-ой строке происходит следующее: из текущей записи («item») по свойству «PropertyOblastFilter» получаем значение в переменную «filter» (название переменной также задаём произвольно).
Примечание : в языке запросов N3 присутствуют зарезервированные переменные: «item» и «value». «item» — содержит в себе ID записи, в рамках которой отрабатывает выражение (изначальный контекст). «value» — используется для вывода результата тройки.
?item ?PropertyAdresaofisov_col ?result_A.— аналогичное действие происходит и в 8-ой строке: из текущей записи получаем значение атрибута «Adresaofisov_col» в переменную «result_A». Так как этот атрибут является коллекцией, то в «result_A» у нас будет содержаться список записей в коллекции.
?result_A ?PropertyOblast ?filter.— в 9-ой строке для всего списка записей «result_A» мы получаем значения по свойству «PropertyOblast». Справа у нас уже определено значение («filter»), поэтому в списке останутся только те записи, у которых значение атрибута «Oblast» совпадает со значением в атрибуте «Filtrpooblasti».
?result_A -> ?value.— в 10-ой строке выводим результат в «value», после чего можем наблюдать отфильтрованную коллекцию.
Пример фильтрации записей в коллекции
Номер Статьи: 1907
Размещено: Thu, Aug 5, 2021
Последнее обновление: Thu, Dec 21, 2023