建筑生命周期内,运维成本可能数倍于建造成本。有效建筑运维管理以准确详尽的运维信息为基础,是一种高效智能的信息化管理。然而,目前建筑行业普遍存在的信息孤岛、低效的手动操作方式以及运维数据的非数字化等问题已成为实现有效建筑运维管理的主要阻碍。

      建筑信息模型(BIM)是“一个新兴的设计、施工和运维管理方法,该方法采用数字化形式表达建设过程,并基于这种数据模型实现建筑信息交互”。BIM技术在建筑运维领域内的应用,可实现协调、一致和可量化的运维管理。然而,BIM数据与运维管理系统间的交互是一个低效的易于出错的过程。同时,BIM数据存储技术标准———IFC标准缺少语义,限制了BIM数据的智能应用。

      本体作为共享概念模型的明确的形式化规范说明,表达了领域内若干概念之间的内在关系。本体可以提供共同的术语和形式化的语义,能够进行一致性检查,实现异质数据的集成和不同应用间的互操作,并可实现领域本体的复用和推理。更重要的是,本体技术可提供一种机器可理解的数据语义,是语义网对事物的描述基础。建立建筑运维的本体化描述,对实现运维的网络化、智能化管理具有重要作用。

      本文实现了基于BIM与本体技术的建筑运维管理的语义描述与智能推理,为建筑运维管理的语义网实现提供了重要基础,对BIM技术、本体语义网技术的发展及建筑运维的智能化、网络化管理起重要促进作用。
 
1  建筑运维管理架构
      基于BIM和本体的智能应用框架如图1所示。网络本体语言OWL(WebOntologyLanguage)知识库通过构建建筑本体与其他领域本体的关联,按建筑本体TBox提供的信息结构,从BIM模型中提取建筑信息,建立建筑本体的ABox。语义网规则语言SWRL(SematicWebRuleLanguage)规则引擎桥用于OWL知识库和规则引擎的交互,实现规则推理和OWL知识检索。框架中本体管理系统用于创建、编辑本体。推理机可执行异质监测、TBox计算等任务,以确保本体的一致性。

      图1框架的实现需要依靠RevitAPI、OWLAPI[10]和SWRLAPI三个应用程序编程接口。OWLAPI的实体和类的表述以及公理的接口层级和名称与OWL结构标准直接对应。这种规定允许开发者在一个合适的抽象水平上工作,从复杂的本体语法描述中脱离出来。同时,OWLAPI提供了推理机接口,允许推理功能独立于本体知识库运行,减轻了本体的负担与复杂度。
     SWRLAPI采用规则引擎实现了OWL知识库、SWRL规则和第三方规则引擎之间的交互。逻辑以规则的形式独立于OWL知识库被推理和处置。另外,SWRLAPI支持built-ins实现用户定义的用于规则中的判断,同时SWRLAPI提供了built-ins桥和一系列built-ins库,这对于拓展SWRL非常有利。另外SWRLAPI采用SWQRL实现OWL知识库的检索。SQWRL采用标准SWRLbuilt-in机制,作为一个built-in库执行,规则推理与本体检索采用统一的方式执行。
      这样,用户从底层的语法、语义、逻辑的数据操作中脱离出来,专注于ABox、SWRL规则和SQWRL查询等应用层面上的工作,提升了应用框架的适用性,对于拓展本体技术的推广具有重要意义。同时,BIM技术也被融入应用框架,随着语义网技术的发展,建筑信息将不再是存储在专业图纸中的专业信息,而是可以被Web访问,被机器引擎自动处理的有效信息。建筑信息将与其他信息一起构成语义丰富、相互关联的知识库,建筑信息的应用潜力将是不可估量的。
 
2  程序结构
      实现图1应用框架的程序结构如图2所示。程序采用RevitAPI技术,基于Revit软件(BIM系统)采用C#程序语言实现。系统主要由五部分组成。BIM系统提供建筑运维信息,图形化展示运维结果;数据库主要用于存储建筑运维数据和本体推理结果;建筑运维管理本体是包含了个体和SWRL规则库的OWL知识库,是建筑运维智能管理和网络管理的核心。

     上述三部分通过BIM数据处理程序和本体处理程序实现数据交互。BIM数据处理程序一方面可按照建筑运维管理本体对建筑数据的结构约束,从BIM模型中自动提取数据并存储至数据库。另一方面,该程序可自动读取数据库中存储的本体推理结果,实现运维管理所需的图形展示功能。另外,建筑运维管理功能的流程控制也通过该程序实现。本体处理程序采用Java技术建立,可实现对本体的创建、更新以及对规则和查询的建立和执行。另外,该程序可将推理结果存储至数据库,以便BIM处理程序调用。
 
3  建筑运维本体
      本质上,建筑运维本体提供一个信息结构,能准确完备地描述建筑运维的信息需求。如表1所示,建筑运维的信息包括几何信息和非几何信息两类。本研究以DogOnt本体为基础,拓展了TBox,建立了建筑运维本体。一些基本的概念和关系如图3所示。其中,BuildingThing用于模拟建筑构件、设施和设备;BuildingEnvironment用于模拟建筑的空间信息;State用于模拟可控单元可以呈现的稳定状态;Functionality用于模拟可控单元的功能;NetworkComponent用于模拟网络特征;Staff用于模拟运维人员。这些基本概念又被详细分为若干子类。例如State按状态特征被划分为连续值(ContinueState)和离散值(DiscreteState)。

      基本概念通过对象属性建立关联,例如Control类中的建筑设备个体通过hasFunction与Function中的某个功能个体关联。同时概念与其特征描述通过数据属性建立关联,例如Room类中的办公室个体通过hasRoomArea与xsd:double类型的数据关联。由于本体TBox包含的概念和关系较多,限于篇幅限制,有关DogOnt本体的详细介绍参见文献。
 
4   BIM信息提取方法
      BIM模型集成了建筑生命周期内的信息,作为建筑信息数据库为不同阶段不同利益相关者提取需求信息提供了数据基础。然而,从BIM模型中提取信息是一个冗长的过程。有学者基于IFC文件和ifcXML文件建立提取程序提取需求信息。这种方法存在两个缺点:一是IFC和ifcXML文件中实体、单元、属性和数值间通过复杂的ID引用实现,为找到某个单元的相关信息需要循环遍历大量文本,信息提取效率低;二是尽管基于IFC和ifcXML文档可以获得大部分建筑单元的信息和简单的关联关系,一些复杂的关联关系和建筑空间信息是无法获取的。
     本文采用RevitAPI技术根据TBox中关于信息的要求与约束,从BIM模型中直接提取相关信息,建立个体。
4.1个体的提取
      个体信息的提取首先应建立一个RevitAPI参数到本体TBox的映射,如表2所示。
       创建逻辑的不同导致运维本体与IFC范例无法完全一致。RevitAPI中对建筑的分类细度较大。例如OST_MechanicalEquipment是水泵、压缩机等机械设备的内置类别参数,然而在运维本体内水泵和压缩机是两个类。因此,在映射中将RevitAPI参数映射至运维本体较高层级的类上,再根据具体单元的其他属性信息确定其归属。
      以Room类为例,可利用RevitAPI的Room参数获取建筑内的所有房间,再根据房间的名称确定其类的归属。如果房间名称中包含“办公”则属于Office类,如果包含“卫生间”或“厕所”则属于RestRoom类。
4.2个体属性的提取
      数据属性的提取可通过RevitAPI内置参数或共享参数直接从BIM模型中提取,前提是建立数据属性与内置参数或共享参数的映射。以房屋的数据属性为例,数据属性与RevitAPI参数间的映射关系如表3所示。
     个体间的对象属性涉及他们的空间、逻辑等无法被IFC直接表示的复杂关系。需要分别针对对象属性表示的含义,从BIM模型中提取相关信息逐个建立。同时,在本体内数据属性和对象属性还具有属性约束,在实现过程中应满足属性约束。
      从BIM模型中提取信息的程序伪码如图4所示。需要说明的是RevitAPI中给出了设施、设备族实例的Room属性,用于表示其所属的房间。但这一属性经常会因为建模、操作等原因结果为null。图4所示程序通过空间信息判断设施设备的空间属性,更具鲁棒性。

4.3本体个体、规则和检索的建立
      本研究中,本体个体、规则和检索的建立采用本体处理程序实现。本体处理程序中采用OWLAPI提供的在一定抽象水平上的接口实现个体声明、类声明和属性声明。个体是类的实例,应遵循类的层级和属性约束,因此,这些声明应该是遵循TBox中关于类的描述,是一种定制的方法。另外,本体技术遵循开放世界假设———没有显式说明的信息就是未知,在个体信息更新过程中,应满足TBox关于属性的存在性约束和基数约束。对于具有唯一对象的属性的更新,应删除旧的声明再建立新的声明。
      规则和检索的建立采用SWRL语言实现。SWRL语法包含两个主要部分,前提(antecedent)和结果(consequent),这两部分用符号“→”相连。“前提”和“结果”都是元素(atom)的集合体,各元素间采用“^”相连。SWRL提供了7种类型的元素:类元素,个体属性元素,数据值属性元素,区别个体元素,相同个体元素,built-in元素和数据取值范围元素。每个元素中的变量以“?”开头附以字母表示。一个类元素由本体内一个类的名称和该类的一个个体或变量组合而成。一个个体属性元素由一个对象属性和两个变量表示的个体组成。相似的,一个数值属性元素由一个数值属性和两个变量组成,第一个变量表示OWL个体,第二个变量表示数据属性或值。区分个体元素和相同个体元素用于区分两个变量是否为同一个个体。built-in元素是SWRL提供的最先进的特征,它能够提供更复杂的谓语描述,包括数学计算。
 
5  应用案例
       选择一个实际项目———未来立方的空间(图5)为例验证本文提出的研究方法。该项目建筑面积658.18m2,建筑高度10.2m。采用9m×9m×9m的空间布局,空间内部功能分区采用模块化技术实现,可根据需求自由转换。

        采用SWRL规则语言建立一个推理规则:如果房间c的租期还有1个月到期,则对房间c进行预警。推理规则的SWRL描述如下:
Rule1:abox:dpaa(?c,hasTenancyEndTime,?t)^
temporal:duration(?d,“now”,?t,“Months”)^
swrlb:lessThan(?d,2)→hasWarning(?c,“Y”)
       BIM数据处理程序提供规则和检索语句界面,当规则被要求执行时,BIM数据处理程序会根据TBox提取空间信息,并将空间信息存储至数据库。之后程序会调用封装了本体处理程序的JAR,建立ABox(图6)。随后规则将被SWRL规则桥导入至规则引擎,dpaa、duration和lessThan三个库内的build-ins将通过SWRLbuilt-in引擎桥导入至规则引擎。规则引擎进行语义推理,推理得出的新的断言将通过SWRL规则引擎桥插入OWL本体。

        规则引擎将找到满足条件的房间,并遵循开放世界假设给这些房间增加一个断言(chasWarning“Y”)。因此在增加断言之前,这些房间原有的hasWarning属性应被删除。
        查找这些房间的查询语句可描述为:
Q1:abox:dpaa(?c,hasTenancyEndTime,?t)^
temporal:duration(?d,“now”,?t,“Months”)
^swrlb:lessThan(?d,2)→swrlb:select(?c)
       这些房间的数据将被存储至数据库,BIM处理程序将从数据库中读取结果信息,并将满足条件的房间的“续租预警”属性更新为ture,并打开各房间在BIM软件中对应的平面视图与三维视图,实现推理结果的直观展示。
       实际项目中没有房间到期,为验证方法有效性做如下调整:F1N005的租期调整为1年,开始时间和结束时间分别为2016-03-01和2017-03-01。执行推理结果如图7所示。可以看出,在OWL本体中,F1N005的hasTenancyStartTime、hasTenancyEndTime、hasWaring属性对应数据分别为2016-03-01、2017-03-01和Y。在Revit软件中,对应房间的视图已经打开,属性也已修改。

       为进一步验证个体信息提取方法,按图4的流程,以Revit单元内置ID为主键,提取了房屋内消防、机械、电力、空调等设备信息。截取信息片段如图8所示,以房间2376343为例,设备分布如图9所示。可以看出,本文方法可以有效利用空间关系,处理对象属性公理的构建。
       另外,SQWRL可以实现对OWL本体的查询,找出运维管理所需的信息。示例检索及检索结果如表4所示。可以看出,采用SQWRL尤其是built-in机制的引入可以简便地检索OWL本体信息。
 
6  结束语
      本文建立了基于BIM和本体技术的建筑运维管理框架,采用RevitAPI、OWLAPI和SWRLAPI技术在该框架下建立了一个建筑运维管理系统,采用一个实际案例验证了本文提出方法的有效性。本文提出的系统框架有效集成了BIM信息,在客户端上还可实现基于BIM的运维管理。个体数据的提取和创建算法可将TBox作为ABox的信息结构,实现信息在OWL知识库的集成。同时在该框架下规则引擎也可方便地被使用。
      本文方法为建筑运维管理的语义网实现提供重要基础,对推动BIM、本体与语义网技术的应用及对建筑运维管理的网络化、智能化应用有重要意义。