04_Язык IFCQL

Редактировал(а) Bimit Administrator 10.06.2025, 15:18

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

 

Пример по IDS

entity in(’ifcWall’ ,’ifcWallStandartCase”) and floor = ”Этаж 1” and property.Qto_WallBaseQuantities.Height > 2000

(property.Qto_WallBaseQuantities.Height * property.Qto_WallBaseQuantities.WIdth) / 1000

entity in(’ifcWall’ ,’ifcWallStandartCase”) and floor = ”Этаж 1” and property.Qto_WallBaseQuantities.Height > 2000 having ancestor(ifcBuilding).attrubute. > 0