5.1 IfcKernel(核心)
5.1.1 架构定义
IfcKernel 模式定义了规范中最抽象的部分或核心部分。它捕获了一般构造,这些构造基本上基于它们在对象模型普遍理解中的不同语义含义,如对象、属性和关系。然后,这些被专门化为非 AEC/FM 特定构造,如产品、流程、控制和资源,它们构成了模式架构下一层——核心扩展层的主要入口点。
IfcKernel 还规定了基本属性和关系,如空间中产品的相对位置、时间中流程的顺序,或一般的分组和嵌套机制。它还通过提供以下内容为规范的可扩展性奠定了基础:
- 代理定义;
- 类型对象定义;
- 属性集定义;
- 属性集模板定义。
5.1.1.1 根定义
模式架构资源层之外定义的每个实体都直接或间接继承自 IfcRoot 实体。IfcRoot 提供了以下基本功能:
- 标识 - 分配全局唯一标识符(GUID)
- 可选的所有权和更改信息
- 可选的名称和描述属性
IFC 模型中有三种基本实体类型,它们都派生自 IfcRoot。它们构成了实体层次结构中的第一级专业化。
- 对象定义是抽象超类型 IfcObjectDefinition,代表 IFC 模型中所有具有语义意义的事物(或项)。
- 关系是所有事物(或项)之间关系(被视为实体之间的对象化关系)的泛化。
- 属性定义是可分配给对象定义的所有特性的泛化。
5.1.1.2 对象定义
对象定义是抽象超类型 IfcObjectDefinition,代表物理上可触及的项目(如墙、梁或覆盖层)、物理上存在的项目(如空间)或概念性项目(如网格或虚拟边界)。它还代表流程(如工作任务)、控制(如成本项)、资源(如劳动力资源)或参与设计过程的参与者。
对象定义被专门化为对象实例(IfcObject),表示空间、时间或其他表示上下文中的任何单个对象;对象类型(IfcTypeObject),表示作为类型的通用定义或对于所有对象实例相同的条目;以及基本项目或库上下文(IfcContext)。
对象和对象类型通过它们所参与的关系获取信息。这包括与属性信息的定义关系,或与分配基础对象类型给对象的类型化关系。
5.1.1.3 关系定义
关系主要被定义为对象化关系 IfcRelationship。对象化关系处理对象之间的关系。这允许将特定于关系的信息直接保留在关系对象上,并将关系语义与对象属性解耦。
引入对象化关系也允许开发独立的关系语义子类型树。
5.1.1.4 属性定义
属性定义 IfcPropertyDefinition 是所有对象特性的泛化。它被多个对象实例共享,反映了对象类型的特定信息,但如果它仅分配给单个对象实例,它也可以表示项目上下文中实际对象的状态信息。
属性定义通过关系的概念应用于对象。
5.1.1.5 对象实体子类型树
IFC 模型中有六种基本实体类型,它们都派生自 IfcObject。
- 产品 - 用于并入项目的物理对象(制造、供应或创建)。它们可能是物理上存在的或有形的。产品可以通过形状表示来定义,并在坐标空间中有位置。
- 流程 - 在项目中发生的旨在获取、建造或维护对象的动作。流程按时间顺序排列。
- 控制 - 控制或约束其他对象的概念。控制可以被视为应用于必须满足的对象(如网格、虚拟边界)的指南、规范、法规、约束或其他要求。
- 资源 - 描述对象主要在流程中使用的概念。
- 参与者 - 在其整个生命周期中参与项目的个人代理。
- 分组 - 对象的任意集合。
5.1.1.6 关系实体子类型树
IFC 模型中有六种基本关系类型,它们都派生自 IfcRelationship。关系可以分配一个非正式的目的描述符,该描述符表示应用此关系的特定目的。
- 分配 - 是对象实例之间“链接”关系的泛化及其各种子类型。链接表示一个对象(客户端)应用其他对象(供应商)的服务,或者一个对象可以导航到其他对象的特定关联。
- 关联 - 指向外部信息源(最显著的是分类、库或文档),并将其与对象或属性定义相关联。
- 分解 - 定义了元素被组合或分解的一般概念。分解关系表示整体/部分层次结构,能够从整体(组合)导航到部分,反之亦然。
- 定义 - 使用类型定义或属性集定义(视为部分类型信息)来定义对象实例的属性。这是一种特定的——实例关系。
- 连接性 - 处理对象之间的连接。
- 声明 - 处理对象定义和属性定义以及声明上下文之间的链接。
5.1.1.7 属性定义实体子类型树
有两种基本的属性定义类型概念,它们都派生自 IfcPropertyDefinition。
- 属性和属性集模板 - 定义属性集和单个属性的语法和数据类型。
- 属性集实例 - 定义可附加到对象实例的可共享和可扩展的属性集。属性集被视为部分类型信息,因为它在实例对象之间建立了共享属性信息的子集。
5.1.2 Types
- IfcComplexPropertyTemplateTypeEnum
- IfcDefinitionSelect
- IfcProcessSelect
- IfcProductSelect
- IfcPropertySetDefinitionSelect
- IfcPropertySetDefinitionSet
- IfcPropertySetTemplateTypeEnum
- IfcResourceSelect
- IfcSimplePropertyTemplateTypeEnum
- IfcStrippedOptional
5.1.3 Entities
- IfcActor
- IfcComplexPropertyTemplate
- IfcContext
- IfcControl
- IfcGroup
- IfcObject
- IfcObjectDefinition
- IfcPreDefinedPropertySet
- IfcProcess
- IfcProduct
- IfcProject
- IfcProjectLibrary
- IfcPropertyDefinition
- IfcPropertySet
- IfcPropertySetDefinition
- IfcPropertySetTemplate
- IfcPropertyTemplate
- IfcPropertyTemplateDefinition
- IfcQuantitySet
- IfcRelAggregates
- IfcRelAssigns
- IfcRelAssignsToActor
- IfcRelAssignsToControl
- IfcRelAssignsToGroup
- IfcRelAssignsToGroupByFactor
- IfcRelAssignsToProcess
- IfcRelAssignsToProduct
- IfcRelAssignsToResource
- IfcRelAssociates
- IfcRelAssociatesClassification
- IfcRelAssociatesDocument
- IfcRelAssociatesLibrary
- IfcRelConnects
- IfcRelDeclares
- IfcRelDecomposes
- IfcRelDefines
- IfcRelDefinesByObject
- IfcRelDefinesByProperties
- IfcRelDefinesByTemplate
- IfcRelDefinesByType
- IfcRelNests
- IfcRelationship
- IfcResource
- IfcRoot
- IfcSimplePropertyTemplate
- IfcTypeObject
- IfcTypeProcess
- IfcTypeProduct
- IfcTypeResource
5.1.4 Property Sets
5.1.5 Quantity Sets
5.1.6 Functions
- IfcUniqueDefinitionNames
- IfcUniquePropertyName
- IfcUniquePropertySetNames
- IfcUniquePropertyTemplateNames