04_Язык IFCQL
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 (мм.)"
Если внутри имени содержится двойная кавычка, то ее необходимо маскировать левым слешем - \”
Операторы выражения
Операнды выражения
| |||
Пример по 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