04_Язык IFCQL

Version 9.3 by Bimit Administrator on 17.04.2026, 10:34

IFCQL - внедрение языка в BIMIT

Общее описание

IFCQL - это язык запросов к объектной модели здания, представленной в формате IFC

Формат представления логического выражения соответствует подмножеству спецификации JPQL (язык запросов к объектной базе данных)

https://openjpa.apache.org/builds/3.2.2/apache-openjpa/docs/index.html#jpa_langref_cond

Семантика операндов максимально приближена к формату IDS

Имена переменных и их значения

имена переменных могут содержать символы А-Я, а-я, A-Z, a-z, _,-,(,),#, $, ‘,’, ‘ ‘, [,],|, ,\

имена переменных (и их частей) в строке выражения должны быть взяты в символ двойные кавычки (при наличии в них символа пробела, точки, слеша скобок, или одинарной кавычки ), например:

property."Размеры"."Ширина ступени (в мм. или ‘ ) / ширина марша" > 200.23

Если внутри имени содержится двойная кавычка, то ее необходимо маскировать левым слешем - \”

значения переменных могут содержать символы А-Я, а-я, A-Z, a-z, _,-,(,),#, $, ‘,’, ‘ ‘,  \ [,],|, ;, δ,Ø

значения переменных в строке выражения должны быть взяты в символ двойные кавычки, если переменная строковая:

"200 (мм.)"

Если внутри имени содержится двойная кавычка, то ее необходимо маскировать левым слешем - \”

Операторы выражения

Оператор

Действие

+

сложение

-

вычитание

/

деление

*

умножение

=

равенство

>=

больше или равно

<=

меньше или равно

>

больше

<

меньше

!=

не равно

not like

не содержит

like

содержит часть

and

логическое “И”

or 

логическое “ИЛИ”

not null

имеет значение

is null

не имеет значение

in

состоит в множестве

||

конкатенация

Операнды выражения

Операнд

Описание

Пример

Примечание

entity

IFC класс

 

entity = ”ifcWall”

 

classification

Классификация элемента

classification = ”Uniclass.01_02”

 classification in (”BIMIT Проверки”.0-1,Uniclass.01_03)

 

в данной итерации разработки оператор in не применим 

attribute

Атрибут элемента IFC

attribute.Width = 200

 

property

Свойство 

property.Огнестойкость.Тип = 1

 

material

Элемент содержит материал

material = ”Бетон 25”

 

()

группировка в операнд

  

geom

обращение к параметрам геометрии

geom.TotalSurfaceArea

geom.TotalShapeVolume

geom.SurfaceAreaAlongX 

geom.SurfaceAreaAlongY

geom.SurfaceAreaAlongZ

geom.BoundingBoxSizeAlongX

geom.BoundingBoxSizeAlongY

geom.BoundingBoxSizeAlongZ

geom.LargestFaceArea

 

model

обращение к модели

model = ”КР”

 

floor

этаж

аналог

partOf(IFCRELNESTS, IFCBUILDINGSTORE).attribute.name=”Этаж 1”

 

layer

слой

аналог

partOf(IFCRELNESTS, IFCBUILDLAYER).attribute.name=”слой 1”

 

group

Группировка

group = “1 группа”

 

identification

Идентификация

identification.PropIfcId

identification.PropId

identification.PropName

 

 

Пример IFCQL

Параметр

Выбор сравнения

Пример ifcql

Модель 

 

model is any

Равно

model = "АР-АР"

Не равно

model != "КР"

Содержит

model like "АР"

Не содержит

model not like "КР"

Этаж

 

Равно

floor = 'Этаж 2'

Не равно

floor != 'Этаж 3'

Содержит

floor like '2'

Не содержит

floor not like '3'

IFC-тип

 

Равно

entity = 'IfcWindow'

Не равно

entity != 'IfcWindow'

Содержит

entity like 'window'

Не содержит

entity not like 'pile'

Зона

 

Равно

zone = '318'

Не равно

zone != 1111

Содержит

zone like 31

Не содержит

zone not like 4

Слои

 

Равно

layer = 'A-GLAZ-____-OTLN'

Не равно

layer != 'glaz'

Содержит

layer like 'glaz'

Не содержит

layer not like 'door'

Атрибут

Равно

property."IFC_0_Идентификация_Несколько категорий"."8. Категория" = 'Окна'

Не равно

property."IFC_0_Идентификация_Несколько категорий"."8. Категория" != 'Дверь'

Больше

property.OverallWidth > 590

Меньше

property.OverallWidth < 3000

Больше или равно

property.OverallWidth >= 600

Меньше или равно

property.OverallWidth <=2740

Содержит

property.OverallWidth like 0 or property.OverallWidth like 5

Не содержит

property.OverallWidth not like "string"

Имеет значение

property.OverallWidth not null

Не имеет значения

property."IFC_0_Идентификация_Несколько категорий"."Атрибут" is null

Значение из набора

property.OverallWidth in ("2740", "2220", "1960", "1180", "1000", "975", "600")

Строка

typeOf(property."IFC_0_Идентификация_Несколько категорий"."1. Семейство и типоразмер", string)

Число

typeOf(property.OverallWidth, double, mm)

Диапазон

typeOf(property.OverallWidth, range, 600, 3000)

Классификатор

 

classification = "Классификатор/1-1"

Геометрия

 

Равно

geom.TotalSurfaceArea = 11.5888045433455

Не равно

geom.TotalSurfaceArea != 9999

Больше

geom.TotalSurfaceArea > 1

Меньше

geom.TotalSurfaceArea < 42

Больше или равно

geom.TotalSurfaceArea >= 1.3808

Меньше или равно

geom.TotalSurfaceArea <= 42

Содержит

geom.TotalSurfaceArea not null

Не содержит

geom.TotalSurfaceArea is null

Идентификация

 

 

Идентификатор элемента IFC

Равно

identification.propIfcId = '1frPR7$Cv8DvigHLricagB'

Не равно

identification.propIfcId != '1frPR7$Cv8DvigHLricagB'

Содержит

identification.propIfcId like 'cagB'

Не содержит

identification.propIfcId not like 'true'

Элемент из набора

identification.propIfcId in ("1iEabr5VfAtezMZlBWDYPn", "1iEabr5VfAtezMZlBWDYyZ", "1iEabr5VfAtezMZlBWDYPs")

Идентификатор элемента ревизии

Равно

identification.propId = "8cab2777-d21e-4544-b4e8-d1dfaf63292e"

Не равно

identification.propId != "857b6c89-8141-4c30-9735-94f679eac2a2"

Содержит

identification.propId like "292e"

Не содержит

identification.PropId not like "true"

Название элемента

Равно

identification.propName = "Воздуховод прямоугольного сечения:ADSK_Без огнезащиты_Врезки_ГОСТ 14918-80:1636934"

Не равно

identification.propName != "Воздуховод"

Содержит

identification.propName like "Воздуховод"

Не содержит

identification.propName not like "Дверь"

Группировка

Равно

group = "Окна"

Не равно

group != "Окна"

Содержит

group like "Окна"

Не содержит

group not like "Окна"

Материалы

Равно

material = "ADSK_Изоляция_Минеральная_KNAUF INSULATION ПРОФ TS 0,34" and material = "ADSK_Изоляция_Воздух"

Не равно

material != "Базовая стена:ADSK_Наружная_Кирпич640_Гляссе:612459"

Содержит

material like "Изоляция"

Не содержит

material not like "Бетон"

Система

Равно

system = "B1"

Не равно

system != "B12"

Содержит

system like "B1"

Не содержит

system not like "B12"

Дисциплины

Равно

discipline = "АР"

Не равно

discipline != "КР"

Содержит

discipline like "АР"

Не содержит

discipline not like "КР"

Комплексные примеры

Выборка: Поиск всех окон на 1 этаже.

Условие: Проверка, что их высота > 1000 мм и ширина < 800 мм

entity = "IfcWindow" and floor = "Этаж 1"

attribute.OverallHeight > 1000

and attribute.OverallWidth < 800

Пример написания формулы

((property."МОГЭ_Геометрические параметры".Периметр / 100) / (100 / 3)) + 2 > 5.62