一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

多计算单元综合的BIM模型检查方法及装置与流程

2022-02-20 22:49:30 来源:中国专利 TAG:

多计算单元综合的bim模型检查方法及装置
技术领域
1.本发明涉及建筑技术领域,具体而言,涉及一种多计算单元综合的bim模型检查方法及装置。


背景技术:

2.bim(building information model,建筑信息模型)是以三维模型为基础的面向建筑信息应用的技术,能够有效应用于建筑与基础设施的规划、设计、建造、管理等阶段,是建筑、工程和施工阶段最具发展力的技术之一。在bim技术推广落地过程中,实现基于bim模型的建筑规范审查,对于促进bim行业进步和发展具有重要作用。
3.相关技术中,可以使用建筑规范审查工具bimchecker对bim模型进行审查,以确定bim模型对应的建筑是否符合规范。bimchecker工具进行模型检查的基本流程图如图1所示,整体而言可以简要分为以下3个步骤:(1)将revit模型(或者autocad模型,ifc模型等)转化为用于检查的ttl模型(the terse rdf triple language);(2)将用户根据建筑规范条款编写的snl(structural natural language,建筑规范描述语言)规则转化为模型检查使用的sparql查询语句;(3)使用sparql查询对ttl模型进行检查,并将查询结果作为检查结果输出。
4.bimchecker工具开发了由程序直接进行几何计算判断构件是否符合规范的几何计算单元,需要调用几何计算单元的条款称为计算性规则。bimchecker工具现有计算性规则框架将snl规则划分为不同区域,并通过对不同区域进行交集和/或并集计算来获取检查结果。该计算性规则框架在条款具有单个计算性规则时能正常运行,但是随着bimchecker工具在多地的应用,现有框架在处理同时包含多个计算性规则的条款时,出现了“不能正确输出所需结果”和“多种构件消元缺失”的问题。


技术实现要素:

5.本发明提供了一种多计算单元综合的bim模型检查方法及装置,能够在针对包含多个计算性规则的条款进行查询时,避免出现“不能正确输出所需结果”和“多种构件消元缺失”的问题。具体的技术方案如下:
6.第一方面,本发明实施例提供了一种多计算单元综合的bim模型检查方法,所述方法包括:
7.在基于建筑规则描述语言snl规则生成的sparql检查语句过程中,从所述snl规则中提取多个目标构件变量,构成构件变量多元组;所述snl规则为基于snl编写的建筑规范条款,所述目标构件变量包括所述snl规则中条件部分的计算性规则涉及的构件变量以及结果部分涉及的构件变量;
8.根据所述snl规则中结果部分的规则类型进行结果标记;
9.将所述构件变量多元组添加到sparql检查语句的查询头;
10.在基于所述sparql检查语句查询建筑语义模型的过程中,针对每条计算性规则,
从所述构件变量多元组中获取当前计算性规则涉及的两个构件变量,并从所述建筑语义模型中查询所述两个构件变量对应的所有构件实体二元组以及所述构件变量多元组对应的构件实体多元组,并分别将每个构件实体二元组与所述构件实体多元组关联保存至映射列表中;所述建筑语义模型为基于建筑信息模型bim模型进行语义抽取获得的模型;
11.针对每条计算性规则,基于所述当前计算性规则对每个构件实体二元组进行计算,确定满足所述当前计算性规则的目标构件实体二元组,并从所述映射列表中查询所述目标构件实体二元组对应的目标构件实体多元组;
12.基于所述结果标记,从所述目标构件实体多元组中获取针对所述snl规则的最终查询结果。
13.可选的,根据所述snl规则中结果部分的规则类型进行结果标记,包括:
14.在所述snl规则中结果部分不包括计算性规则的情况下,将表示查询结果的目标构件变量标记为结果变量,在所述snl规则中结果部分包括计算性规则的情况下,将所述snl规则中结果部分包括的计算性规则标记为结果条款。
15.可选的,将所述snl规则中结果部分包括的计算性规则标记为结果条款包括:
16.在计算性规则信息配置文件中,将所述snl规则中结果部分包括的计算性规则标记为结果条款;所述计算性规则配置文件包括基于snl描述的计算性规则内容、计算性规则涉及的构件变量映射关系以及是否属于结果条款的标记。
17.可选的,基于所述结果标记,从所述目标构件实体多元组中获取针对所述snl规则的最终查询结果,包括:
18.若所述snl规则对应的sparql检查语句的查询头中包含结果变量标记,则从所述目标构件实体多元组中获取结果变量对应的构件实体作为最终查询结果;
19.若所述snl规则对应的计算性规则信息配置文件中包含结果条款标记,则从所述目标构件实体多元组中获取被标记为结果条款的计算性规则对应构件实体二元组作为最终查询结果。
20.可选的,分别将每个构件实体二元组与所述构件实体多元组关联保存至映射列表中,包括:
21.将构件实体二元组作为key,所述构件实体二元组对应的构件实体多元组作为value,保存至哈希表中。
22.第二方面,本发明实施例提供了一种多计算单元综合的bim模型检查装置,所述装置包括:
23.提取单元,用于在基于建筑规则描述语言snl规则生成的sparql检查语句过程中,从所述snl规则中提取多个目标构件变量,构成构件变量多元组;所述snl规则为基于snl编写的建筑规范条款,所述目标构件变量包括所述snl规则中条件部分的计算性规则涉及的构件变量以及结果部分涉及的构件变量;
24.标记单元,用于根据所述snl规则中结果部分的规则类型进行结果标记;
25.添加单元,用于将所述构件变量多元组添加到sparql检查语句的查询头;
26.第一获取单元,用于在基于所述sparql检查语句查询建筑语义模型的过程中,针对每条计算性规则,从所述构件变量多元组中获取当前计算性规则涉及的两个构件变量,并从所述建筑语义模型中查询所述两个构件变量对应的所有构件实体二元组以及所述构
件变量多元组对应的构件实体多元组;所述建筑语义模型为基于建筑信息模型bim模型进行语义抽取获得的模型;
27.保存单元,用于分别将每个构件实体二元组与所述构件实体多元组关联保存至映射列表中;
28.确定单元,用于针对每条计算性规则,基于所述当前计算性规则对每个构件实体二元组进行计算,确定满足所述当前计算性规则的目标构件实体二元组,并从所述映射列表中查询所述目标构件实体二元组对应的目标构件实体多元组;
29.第二获取单元,用于基于所述结果标记,从所述目标构件实体多元组中获取针对所述snl规则的最终查询结果。
30.可选的,所述标记单元,包括:
31.第一标记模块,用于在所述snl规则中结果部分不包括计算性规则的情况下,将表示查询结果的目标构件变量标记为结果变量;
32.第二标记模块,用于在所述snl规则中结果部分包括计算性规则的情况下,将所述snl规则中结果部分包括的计算性规则标记为结果条款。
33.可选的,所述第二标记模块,用于在计算性规则信息配置文件中,将所述snl规则中结果部分包括的计算性规则标记为结果条款;所述计算性规则配置文件包括基于snl描述的计算性规则内容、计算性规则涉及的构件变量映射关系以及是否属于结果条款的标记。
34.可选的,第二获取单元,包括:
35.第一获取模块,用于若所述snl规则对应的sparql检查语句的查询头中包含结果变量标记,则从所述目标构件实体多元组中获取结果变量对应的构件实体作为最终查询结果;
36.第二获取模块,用于若所述snl规则对应的计算性规则信息配置文件中包含结果条款标记,则从所述目标构件实体多元组中获取被标记为结果条款的计算性规则对应构件实体二元组作为最终查询结果。
37.可选的,保存单元,用于将构件实体二元组作为key,所述构件实体二元组对应的构件实体多元组作为value,保存至哈希表中。
38.第三方面,本发明实施例提供了一种存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器实现第一方面所述的方法。
39.第四方面,本发明实施例提供了一种电子设备,包括:
40.一个或多个处理器;
41.存储装置,用于存储一个或多个程序,
42.其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现第一方面所述的方法。
43.由上述内容可知,本发明实施例提供的多计算单元综合的bim模型检查方法及装置,能够在进行数据提取时,一次性提取所有必要的变量(包括snl规则中条件部分的计算性规则涉及的构件变量以及结果部分涉及的构件变量)存为一个多元组,并snl规则中结果部分的规则类型进行结果标记;然后通过sparql检查语句查询建筑语义模型,针对每条计算性规则获取其需要的所有构件实体二元组以及对应的构件实体多元组,并将两者关联保
存;再针对每条计算性规则,获取对应的构件实体二元组进行计算,确定满足当前计算性规则的目标构件实体二元组,并从预先保存的映射关系中获取该目标构件实体二元组对应的目标构件实体多元组;最后根据结果标记,从标构件实体多元组中获取针对所述snl规则的最终查询结果。由此可知,由于本发明实施例预先提取了所有必要变量构成多元组,并根据规则类型进行了标记,随后针对不同的计算性规则从多元组中提取必要的变量输入几何计算单元,每次计算结束后根据返回值和标记从原多元组保留相应的数据,在最后输出时输出必要的结果,所以每次都可以根据预先进行的结果标记进行正确输出所需结果,且整个流程是针对每个计算性规则独立进行计算,不存在构件消元现象。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
44.本发明实施例的创新点包括但不限于以下内容:
45.1、通过一种新型的计算性规则框架,“提取所有必要构件变量,构成构件变量多元组”——》“根据规则类型对构件变量或者计算性规则进行结果标记”——》“构建包含构件实体二元组和构件实体多元组的映射列表”——》“针对每个实体二元组进行计算性规则计算,获取满足条件的目标实体二元组”——》“从映射列表中查询目标构件实体二元组对应的目标构件实体多元组”——》“根据结果标记,从目标构件实体多元组中获取最终查询结果”,能够避免出现“不能正确输出所需结果”和“多种构件消元缺失”的问题。其中,在snl规则中结果部分不包括计算性规则时,在sparql检查语句的查询头中,将表示查询结果的目标构件变量标记为结果变量;在snl规则中结果部分包括计算性规则时,在计算性规则信息配置文件中标记该计算性规则为结果条款。这种标记方式可以便于最后根据标记输出结果。
46.2、通过将将构件实体二元组作为key,构件实体二元组对应的构件实体多元组作为value,保存至哈希表中,可以减少数据量,节省存储空间。
附图说明
47.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例。对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
48.图1为现有技术提供的一种基于bimchecker工具对建筑模型检查的流程示意图;
49.图2为本发明实施例提供的一种多计算单元综合的bim模型检查方法的流程示意图;
50.图3为本发明实施例提供的一种基于计算性规则的模型检查方法的示例图;
51.图4为本发明实施例提供的一种bimchecker工具的系统架构图;
52.图5为本发明实施例提供的一种用于存储计算性规则数据的类图;
53.图6为本发明实施例提供的一种基于计算性规则的模型检查时序图;
54.图7为现有技术提供的一种计算性规则框架的模型检查结果的示意图;
55.图8为本发明实施例提供的一种计算性规则框架的模型检查结果的示意图;
56.图9为本发明实施例提供的一种出错构件在模型中位置的示例图;
57.图10为本发明实施例提供的一种多计算单元综合的bim模型检查装置的组成框
图。
具体实施方式
58.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
59.需要说明的是,本发明实施例及附图中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含的一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
60.snl从结构上主要可以分为简单句、复合句和条件句。
61.简单句=(前缀名词短语(后缀名词短语((《且》|《或》)后缀名词短语)*)|(前缀名词动词短语((《且》|《或》)动词短语)*))
62.复合句=简单句(《并且》简单句)*
63.条件句=《if》(复合条件句|存在一个条件句)
64.《then》(复合条件句|存在一个条件句)
65.示例性的,若条款原文为“建筑高度大于100m的民用建筑,其楼板的耐火极限不应低于2.00h”,那么用snl表达可以参见文本一:
66.文本一
[0067][0068]
上述示例是基于snl的普通规则样例,下述文本二条件部分(即如果部分)涉及计算性规则(“墙between区域a-区域b”),文本三结果部分涉及计算性规则(“外窗的外窗c-外窗d最小正交水平距离》=1000”),从样例可观察到snl易于理解,基本上能够按照汉语的语序顺畅阅读。
[0069]
文本二
[0070][0071]
文本三
[0072][0073]
在bimchecker工具中,针对多种构件几何关系的计算需求,已经设计并实现了大量计算性规则几何计算单元,每个计算性规则模块处理一种实际的检查需求。计算性规则模块通过直接输入构件的id编号直接从原始模型信息中获取构件的几何信息,计算后输出结果构件对。上述的计算性规则模块可以针对具体的检查需求进行检查并给出结果,但是因为snl本身的灵活性,一个条款可能不止一条计算性规则,同时计算性规则的位置既可以处于“如果”之中,也可以处于“那么”之中,所以单独的计算性规则无法独立发挥作用,需要一个计算性框架综合sparql查询与计算性规则检查结果。基于此,现有技术提出了一套计算性规则框架,其基本原理如下所示。
[0074]
将计算性规则抽象表示为s
if
,s
ifcomp
,s
then
,s
thencomp
四部分,snl可以表示为如下像是:如果s
if
并且s
ifcomp
那么s
then
并且s
thencomp
,转化为逻辑形式,则可以表示为以下形式:
[0075][0076]
基于以上逻辑计算的结果,分别通过sparql计算s
if
以及的结果,将对应构件输入到s
ifcomp
和的两个计算性规则,计算获得的构件对几何通过取交集计算和取并集计算,获得最终检查结果。
[0077]
将ttl模型输入两个sparql,分别获得查询结果,这里的查询结果分别为两个计算性规则的elementid组成的id对。随后,将部分的sparql查询结果输入s
ifcomp
,获得查询结果,结果为lista;将s
if
部分sparql查询结果输入s
ifcomp
,结果为listb;将s
if
部分sparql查询结果输入结果为listc。现在计算性规则框架中的算式变为如下形式:lista∨(listb∧listc)。将和对应的构件对取交集,再与取并集,最终结果作为计算性规则的查询结果。
[0078]
然而,上述计算性规则框架存在如下问题:
[0079]
问题一:无法正确输出所需结果
[0080]
计算性规则框架在计算sparql之后将满足条件的构件对输入到计算单元当中,输出的构件对集合为输入构件对集合的子集。当计算性规则只存在于“如果”中时,因为计算
性规则的要求,它必须要查询“如果”中的计算性规则需要的构件对并输入到几何计算单元中,输出的则是通过几何计算单元查询的构件对,而不是“那么”中所查询的构件对象。
[0081]
问题二:消元设计缺陷导致的审查结果错误
[0082]
计算性规则框架基于构件的id对消元,但是如果计算性规则框架涉及多组不同类型构件时,会发生消元错误。
[0083]
为了解决上述问题,本发明提供了一种多计算单元综合的bim模型检查方法及装置。本发明实施例所提供的方法,可以应用于任一具有计算能力的电子设备,该电子设备可以为终端或者服务器。在一种实现中,实现该方法的功能软件可以以单独的客户端软件的形式存在,也可以以目前相关的客户端软件的插件的形式存在,这都是可以的。
[0084]
下面对本发明实施例进行详细说明。
[0085]
图2为本发明实施例提供的多计算单元综合的bim模型检查方法的一种流程示意图。该方法可以包括如下步骤:
[0086]
s100:在基于snl规则生成的sparql检查语句过程中,从所述snl规则中提取多个目标构件变量,构成构件变量多元组。
[0087]
所述snl规则为基于snl编写的建筑规范条款,所述目标构件变量包括所述snl规则中条件部分的计算性规则涉及的构件变量以及结果部分涉及的构件变量。
[0088]
以上述文本二为例,从snl规则中提取目标构件变量时,文本二的条件部分涉及计算性规则的snl片段为“墙between区域a-区域b”,涉及的构件变量为“墙”、“区域a”和“区域b”,结果snl片段为“墙的耐火极限》=2.0”,涉及的构件变量为“墙”。综合以上信息,该snl规则涉及3个目标构件变量“墙”、“区域a”和“区域b”,可以构成构件变量多元组(墙,区域a,区域b)。同理,文本三的构件变量多元组为(房间a,房间b,外窗c,外窗d)。
[0089]
s110:根据所述snl规则中结果部分的规则类型进行结果标记。
[0090]
在实际应用中,snl规则中结果部分涉及的规则类型不同时,需要输出的结果来源是不同的。在所述snl规则中结果部分不包括计算性规则的情况下,将表示查询结果的目标构件变量标记为结果变量,例如添加“aim”标记,在所述snl规则中结果部分包括计算性规则的情况下,将所述snl规则中结果部分包括的计算性规则标记为结果条款。
[0091]
在非计算性的部分整理为sparql的同时,计算性规则部分也需要进行统一整理。每一个计算性规则都针对特定的构件进行检查,需要记录其涉及的变量名,将这些信息全部整理到一起,获得计算性规则信息配置文件,以便后续根据计算性规则信息配置文件进行查询、计算等操作。因此,在对计算性规则进行标记时,可以在计算性规则信息配置文件中,将所述snl规则中结果部分包括的计算性规则标记为结果条款;所述计算性规则配置文件包括基于snl描述的计算性规则内容、计算性规则涉及的构件变量映射关系以及是否属于结果条款的标记。
[0092]
例如计算性规则配置文件部分内容可以如下:
[0093][0094]
s120:将所述构件变量多元组添加到sparql检查语句的查询头。
[0095]
为了在sparql查询结果中保留上述多元组,除了需要作为查询结果的变量以外,其它的部分和现有的sparql生成方式保持一致,所以其它部分不需要变化,只需要修改select部分。以文本二和文本三所述的snl为例,其用于生成的sparql查询头部分别文本四和文本五所示。文本二中需要保留的构件变量是(墙,区域a,区域b),其中需要输出的查询结果为墙,因此在文本二中将其标记为aim变量,获得文本四。文本三中需要保留的构件变量是(房间a,房间b,外窗c,外窗d),需要输出的查询结果是(外窗c,外窗d)组成的二元组,因为被查询的部分为“那么外窗的外窗c-外窗d最小正交水平距离》=1000”,所以需要标记这个计算性规则为“结果条款”。
[0096]
文本四
[0097][0098]
文本五
[0099][0100]
s130:在基于所述sparql检查语句查询建筑语义模型的过程中,针对每条计算性规则,从所述构件变量多元组中获取当前计算性规则涉及的两个构件变量,并从所述建筑语义模型中查询所述两个构件变量对应的所有构件实体二元组以及所述构件变量多元组对应的构件实体多元组,并分别将每个构件实体二元组与所述构件实体多元组关联保存至映射列表中。
[0101]
所述建筑语义模型为基于建筑信息模型bim模型进行语义抽取获得的模型,例如ttl模型。利用生成的sparql对模型进行查询,将获取大量多元组,而计算性规则的几何计算单元所要求的输入均为检查所需要的变量多元组,因此,需要将多元组中需要的二元组拆分下来输入到计算性规则中,经过计算性规则计算得到符合条款的二元组之后在原数据集中筛选出对应的多元组。每个计算性规则单元的输入变量都是二元组的组合,为了将输入的二元组与相关的多元组保持对应关系,需要在输入计算性规则单元前保存这一关系。为了节省存储空间,可以将构件实体二元组作为key,所述构件实体二元组对应的构件实体多元组作为value,保存至哈希表中。
[0102]
s140:针对每条计算性规则,基于所述当前计算性规则对每个构件实体二元组进行计算,确定满足所述当前计算性规则的目标构件实体二元组,并从所述映射列表中查询所述目标构件实体二元组对应的目标构件实体多元组。
[0103]
示例性的,如图3所示,对于文本四所示的计算性规则,通过目标构件变量提取获得(a,b,c,d)组成的四元组。首先计算第一个计算性规则时只需要变量(a,b)组成的二元组,将所有的四元组取出(a,b)两个元素,构成(a,b)对(a,b,c,d)这样的二元组对四元组的映射,随后以(a,b)为key,(a,b,c,d)为value,将数据加入哈希表。将所有的(a,b)二元组输入几何计算单元。在几何计算单元计算了符合条件的二元组之后,再从哈希表中读取以对应的多元组。例如,如果(a,b)二元组在几何计算单元中通过检查,则将其对应的所有多元组纳入结果集合进行后续计算,没有通过检查的二元组所对应的多元组因为没有被纳入后续计算而自动被删除。随后,因为第二个计算性规则需要(c,d)组成的二元组作为输入,继续使用相同的方式获得计算结果。
[0104]
接下来对以上算法进行时间复杂度分析。前处理阶段每个有效二元组加入哈希表的时间复杂度为o(1),总时间复杂度为o(n),后处理阶段从哈希表中取出的数据时每次查询的时间复杂度为o(1),总数据量不大于n,总时间复杂度为o(n)。因此,除去计算性规则模块本身的用时,框架整理输入数据和统计结果的时间复杂度为o(n),能够在线性时间复杂度以内完成计算。
[0105]
s150:基于所述结果标记,从所述目标构件实体多元组中获取针对所述snl规则的最终查询结果。
[0106]
具体的,若所述snl规则对应的sparql检查语句的查询头中包含结果变量标记,则说明snl规则结果部分不涉及计算性规则,可以从所述目标构件实体多元组中获取结果变量对应的构件实体作为最终查询结果。例如,在文本四中提到其所需要查询的多元组为(?a,?b,?aim),变量?aim为待查询的墙,因此在查询获得多元组之后将变量aim所对应的值从多元组中取出,整理为结果集合输出作为最终查询结果。
[0107]
若所述snl规则对应的计算性规则信息配置文件中包含结果条款标记,则说明snl规则结果部分涉及计算性规则,可以从所述目标构件实体多元组中获取被标记为结果条款的计算性规则对应构件实体二元组作为最终查询结果,即直接将最后一次计算的结果作为最终结果输出到错误列表中即可。例如,文本三中的snl,在之前的步骤中整理了计算性规则所有必要的信息(详见计算性规则配置文件),可以注意到这里标记了第二个计算性规则为结果计算性规则,这个计算性规则需要的二元组为(c,d),因此本发明实施例从所有的多元组中取出(c,d)二元组作为结果集合输出。
[0108]
本发明实施例提供的多计算单元综合的bim模型检查方法,能够在进行数据提取时,一次性提取所有必要的变量(包括snl规则中条件部分的计算性规则涉及的构件变量以及结果部分涉及的构件变量)存为一个多元组,并snl规则中结果部分的规则类型进行结果标记;然后通过sparql检查语句查询建筑语义模型,针对每条计算性规则获取其需要的所有构件实体二元组以及对应的构件实体多元组,并将两者关联保存;再针对每条计算性规则,获取对应的构件实体二元组进行计算,确定满足当前计算性规则的目标构件实体二元组,并从预先保存的映射关系中获取该目标构件实体二元组对应的目标构件实体多元组;最后根据结果标记,从标构件实体多元组中获取针对所述snl规则的最终查询结果。由此可知,由于本发明实施例预先提取了所有必要变量构成多元组,并根据规则类型进行了标记,随后针对不同的计算性规则从多元组中提取必要的变量输入几何计算单元,每次计算结束后根据返回值和标记从原多元组保留相应的数据,在最后输出时输出必要的结果,所以每
次都可以根据预先进行的结果标记进行正确输出所需结果,且整个流程是针对每个计算性规则独立进行计算,不存在构件消元现象。
[0109]
基于上述方法实施例,本发明的另一个实施例提供了一种bimchecker工具的系统,如图4所示,该系统包括revit模型解析模块、snl文件解析模块、ttl模型生成模块、sparql查询生成模块、计算性规则框架模块、几何计算单元模块以及sparql查询引擎模块。
[0110]
revit模型解析模块为单独制作的revit插件,基于revit提供的.net api解析revit模型,将整个模型的信息存储为json文件,用于后续检查工作使用。
[0111]
snl文件解析模块,用于查询的snl语句以及相关规则原文等信息以xml的形式存储于独立的snl文件中,该模块将相关信息从snl文件解析出来存储到内存中,以供后续工作使用。
[0112]
ttl模型生成模块基于revit模型解析获得的json文件,将其信息提取转化为ttl语义模型。
[0113]
sparql查询生成模块基于snl文件提供的snl语言,将其转化为用于模型检查的sparql语言。
[0114]
计算性规则框架模块负责对计算性规则相关的snl进行处理,生成计算性规则专用的sparql,将查询结果输入到各个对应的几何计算单元中计算,汇总计算结果。即该模块主要用于执行上述方法。
[0115]
几何计算单元模块针对不同的计算性规则需求,准备了多种独立的几何计算函数计算相关几何问题。
[0116]
sparql查询引擎模块在ttl模型和sparql查询都准备好以后,在该模块中进行最终的sparql查询,本发明实施例使用jena提供的arq引擎进行sparql查询。
[0117]
下面介绍计算性规则框架模块的系统架构与实现细节。图5展示了用于存储计算性规则数据的类图,其中,compsimple类记录单个计算性规则所需要的信息,成员变量output变量标记该计算性规则是否是一个结果规则,成员变量compvars记录该计算性规则涉及的构件以及对应的sparql变量名组成的(构件,变量名)对。multiplecompsparqlstruct记录整个snl所有计算性规则的相关信息,其中成员变量sparql记录计算性规则的原始sparql,成员变量compsimples记录每一个计算性规则的相关信息,成员变量varmap记录sparql获取的多元组中每一个变量对应的构件与sparql变量名组成的(构件,变量名)对。这些信息将用于计算性规则的检查过程。
[0118]
整个计算性规则的检查过程时序图如图6所示,检查首先通过函数snl2multiplecompsparql从solvecomputationalrule函数获取snl内计算性规则所需的sparql以及snl内所有的计算性规则信息,返回类型为multiplecompsparqlstruct。随后,调用querysparql函数进行sparql查询,该函数会在进行sparql重排序之后返回查询结果多元组。随后,循环遍历所有计算性规则的compsimple信息,从多元组中获取待查询二元组,输入该计算性规则对应的几何计算单元函数compfunc,函数返回通过检查的二元组后再恢复为待查询的多元组。在每一个计算性规则都执行了对应的检查之后,基于结果类型是否为计算性规则,从留下的多元组中取出相应的数据返回输出,获得检查结果。
[0119]
下面以实际案例对基于新的计算性规则框架进行模型检查的效果进行说明:
[0120]
(一)案例模型
[0121]
本发明实施例用于测试的模型相关信息如表1所示,因为度量模型体量可以基于模型体积,也可以基于模型中各种实体与关系等数据的数量,此处一并列出。表中的信息基于实际检查时提取的ttl信息。
[0122]
表1
[0123]
模型名称模型大小实体(个)属性(条)关系(条)某别墅模型9.2mb2543121595某创业大厦模型124mb72925818225279某中学项目建筑42.8mb64613997821266
[0124]
(二)计算性规则框架测试
[0125]
本发明实施例通过一个案例说明在实际项目中计算性规则框架的应用。使用《建筑设计防火规范》对某中学项目建筑模型进行检查。以《建筑设计防火规范》8.1.7条为例,基于该条款编制的snl如文本六所示。
[0126]
文本六
[0127][0128]
分别使用新的计算性规则框架与原计算性规则框架进行测试,结果如图7和图8所示,可见,旧计算性规则输出了房间组成的构件对,而不是待检查的墙构件。而新的计算性规则正确地获取了墙作为检查结果。从模型找到出错点如图9所示,分别检查两个房间和中间的墙的id,正好是图7和图8所查询到的3个id,说明计算性规则正确地处理了旧计算性规则框架产生的结果类型错误问题。
[0129]
相应于上述方法实施例,本发明实施例提供了一种多计算单元综合的bim模型检查装置,如图10所示,所述装置可以包括:
[0130]
提取单元20,用于在基于建筑规则描述语言snl规则生成的sparql检查语句过程中,从所述snl规则中提取多个目标构件变量,构成构件变量多元组;所述snl规则为基于snl编写的建筑规范条款,所述目标构件变量包括所述snl规则中条件部分的计算性规则涉及的构件变量以及结果部分涉及的构件变量;
[0131]
标记单元22,用于根据所述snl规则中结果部分的规则类型进行结果标记;
[0132]
添加单元24,用于将所述构件变量多元组添加到sparql检查语句的查询头;
[0133]
第一获取单元26,用于在基于所述sparql检查语句查询建筑语义模型的过程中,针对每条计算性规则,从所述构件变量多元组中获取当前计算性规则涉及的两个构件变量,并从所述建筑语义模型中查询所述两个构件变量对应的所有构件实体二元组以及所述构件变量多元组对应的构件实体多元组;所述建筑语义模型为基于建筑信息模型bim模型进行语义抽取获得的模型;
[0134]
保存单元28,用于分别将每个构件实体二元组与所述构件实体多元组关联保存至映射列表中;
[0135]
确定单元210,用于针对每条计算性规则,基于所述当前计算性规则对每个构件实体二元组进行计算,确定满足所述当前计算性规则的目标构件实体二元组,并从所述映射列表中查询所述目标构件实体二元组对应的目标构件实体多元组;
[0136]
第二获取单元212,用于基于所述结果标记,从所述目标构件实体多元组中获取针对所述snl规则的最终查询结果。
[0137]
可选的,所述标记单元22,包括:
[0138]
第一标记模块,用于在所述snl规则中结果部分不包括计算性规则的情况下,将表示查询结果的目标构件变量标记为结果变量;
[0139]
第二标记模块,用于在所述snl规则中结果部分包括计算性规则的情况下,将所述snl规则中结果部分包括的计算性规则标记为结果条款。
[0140]
可选的,所述第二标记模块,用于在计算性规则信息配置文件中,将所述snl规则中结果部分包括的计算性规则标记为结果条款;所述计算性规则配置文件包括基于snl描述的计算性规则内容、计算性规则涉及的构件变量映射关系以及是否属于结果条款的标记。
[0141]
可选的,第二获取单元212,包括:
[0142]
第一获取模块,用于若所述snl规则对应的sparql检查语句的查询头中包含结果变量标记,则从所述目标构件实体多元组中获取结果变量对应的构件实体作为最终查询结果;
[0143]
第二获取模块,用于若所述snl规则对应的计算性规则信息配置文件中包含结果条款标记,则从所述目标构件实体多元组中获取被标记为结果条款的计算性规则对应构件实体二元组作为最终查询结果。
[0144]
可选的,保存单元28,用于将构件实体二元组作为key,所述构件实体二元组对应的构件实体多元组作为value,保存至哈希表中。
[0145]
本发明实施例提供的多计算单元综合的bim模型检查装置,能够在进行数据提取时,一次性提取所有必要的变量(包括snl规则中条件部分的计算性规则涉及的构件变量以及结果部分涉及的构件变量)存为一个多元组,并snl规则中结果部分的规则类型进行结果标记;然后通过sparql检查语句查询建筑语义模型,针对每条计算性规则获取其需要的所有构件实体二元组以及对应的构件实体多元组,并将两者关联保存;再针对每条计算性规则,获取对应的构件实体二元组进行计算,确定满足当前计算性规则的目标构件实体二元组,并从预先保存的映射关系中获取该目标构件实体二元组对应的目标构件实体多元组;最后根据结果标记,从标构件实体多元组中获取针对所述snl规则的最终查询结果。由此可知,由于本发明实施例预先提取了所有必要变量构成多元组,并根据规则类型进行了标记,随后针对不同的计算性规则从多元组中提取必要的变量输入几何计算单元,每次计算结束后根据返回值和标记从原多元组保留相应的数据,在最后输出时输出必要的结果,所以每次都可以根据预先进行的结果标记进行正确输出所需结果,且整个流程是针对每个计算性规则独立进行计算,不存在构件消元现象。
[0146]
基于上述方法实施例,本发明的另一个实施例还提供了一种存储介质,其上存储
有可执行指令,该指令被处理器执行时使处理器实现如上所述的方法。
[0147]
基于上述方法实施例,本发明的另一个实施例还提供了一种电子设备,包括:
[0148]
一个或多个处理器;
[0149]
存储装置,用于存储一个或多个程序,
[0150]
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
[0151]
上述系统、装置实施例与方法实施例相对应,与该方法实施例具有同样的技术效果,具体说明参见方法实施例。装置实施例是基于方法实施例得到的,具体的说明可以参见方法实施例部分,此处不再赘述。本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
[0152]
本领域普通技术人员可以理解:实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
[0153]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献