Construction Schema

Alias: constr

Version: 1.0.4

Base schema for the Construction domain.

This schema contains classes that are used to model real-world entities from the construction perspective. Supported workflows:

  • project breakdown into the construction work areas;
  • construction modeling - splitting up design data into smaller pieces suitable for construction;
  • classification - cost codes assignment to the constructible components;
  • quantity takeoff - work steps quantities calculation.

Project breakdown into construction work areas

Construction work areas are used throughout the entire construction project lifecycle: estimation, planning and sequencing, progress reporting and tracking. By breaking a project down into construction work areas some design elements may cross work area boundaries and as a result such elements are split into multiple pieces.

Asset

Picture 1. Project breakdown into construction work areas

A portion of a design element that got split because it crossed the construction work area boundary is modeled as WorkAreaDetailingElement (Portion 'X' and Portion 'Y' in the example above). This element may or may not be suitable for construction. In cases when engineer decides that it is too big or requires different means and methods assigned, then it will be split further during construction modeling step.

Construction modeling

During construction modeling step some design elements are split into smaller pieces suitable for construction. Such a sliced portion of a real-world object is modeled as ConstructionDetailingElement (Portion 'X1', Portion 'X2', Portion 'S' and Portion 'Z' in the example below).

Asset

Picture 2. Construction modeling sample

Note, that ConstructionDetailingElement does not cross the boundaries of WorkAreaDetailingElement.

If a real-world physical object crosses multiple construction work areas and different means and methods need to be assigned to its different parts (for example, bottom and top) then separate ConstructionDetailingElement instances representing each part will be created in each construction work area:

Asset

Picture 3. Construction modeling

Data organization in the repository

ConstructionWorkArea and WorkAreaDetailingElement instances are placed in a separate SpatialLocationModel under their own PhysicalPartition:

Asset

Picture 4. Construction work areas persistence

This data becomes a common input for all estimations in the project, regardless of who estimates: it can be multiple teams from the same organization estimating the same scope, or it can be multiple sub-contractors estimating work in the same or different construction work areas and etc.

The estimation data are split into PhysicalModel and SpatialLocationModel models under PhysicalPartition and ConstructionInformationPartition partitions respectively. In the bidding phase when multiple estimation teams (from the same organization or from multiple organizations when contractors are invited) are doing quantity takeoff, each team's data will be organized under a separate Subject.

Asset

Picture 5. Estimation data partitioning

The picture below illustrates the data persistence of the construction quantity takeoff results taking as an example construction modeling sample from Picture 2. It covers all 5 possible use cases:

  1. Design element ("P-3") falls within the boundaries of a construction work area ("B") and is estimated as a whole.
  2. Design element ("P-2") falls within the boundaries of a construction work area ("B") and is split into the smaller pieces ("Portion S" and "Portion Z") modeled as ConstructionDetailingElement. Each of them is classified and estimated separately.
  3. Design element ("P-1") crosses construction work area boundaries and one of its portions ("Portion Y") is suitable for construction. Such a portion is estimated as a whole.
  4. Design element ("P-1") crosses construction work area boundaries and one of its portions ("Portion X") is not suitable for construction. Such a portion is split further into the smaller pieces ("Portion X1" and "Portion X2") modeled as ConstructionDetailingElement. Each of them is classified and estimated separately.
  5. Non-modeled element ("Manhole 102") is included in the estimation and related to the appropriate construction work area ("B"). This element does not yet have a graphical representation.

Asset

Picture 6. Data persistence sample

Table of contents

Entity Classes

ConstructionDetailingElement (Construction Detailing Element) EntityClass

Identifies a portion of real-world physical object that is suitable for construction.

Base Class: BisCore:SpatialLocationElement

Properties

Name Description Type Extended Type
SlopedArea Total sloped area. double
SurfaceArea Total surface area. double
Volume Volume of the element. double
StationRange Well-known location of the element defined by the station range. struct
LengthOfSlice Length of an element produced by slice operation. double
Inherited properties
Name Description Type Extended Type
Model The bis:Model that contains this bis:Element. navigation
LastMod The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. dateTime
CodeSpec The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeScope The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeValue The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. string
UserLabel An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). string
Parent The parent bis:Element that owns this bis:Element. navigation
FederationGuid The GUID used to federate this bis:Element across repositories. binary BeGuid
JsonProperties A string property that users and/or applications can use to persist ad hoc JSON values. string Json
Category The bis:SpatialCategory used to categorize this bis:GeometricElement3d navigation
InSpatialIndex If true, this element will have an entry in the Spatial Index. boolean
Origin The placement origin of this bis:Element. point3d
Yaw The Yaw angle (in degrees) of the orientation of this bis:Element. double
Pitch The Pitch angle (in degrees) of the orientation of this bis:Element. double
Roll The Roll angle (in degrees) of the orientation of this bis:Element. double
BBoxLow The 'low' point of the element-aligned bounding box of this bis:Element. point3d
BBoxHigh The 'high' point of the element-aligned bounding box of this bis:Element. point3d
GeometryStream Binary stream used to persist the geometry of this bis:Element. binary GeometryStream
TypeDefinition Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. navigation

ConstructionInformationModel (Construction Information Model) EntityClass

A container for persisting constr:ConstructionItem instances.

Base Class: BisCore:InformationModel

Inherited properties
Name Description Type Extended Type
ParentModel The parent bis:Model contains the bis:Element that this bis:Model is sub-modeling. navigation
ModeledElement The bis:Element that this bis:Model is sub-modeling. This bis:Model models the same Entity as the sub-Modeled bis:Element, but at a finer granularity. navigation
IsPrivate If IsPrivate is true then this bis:Model should not appear in lists shown to the user. boolean
IsTemplate If IsTemplate is true then this bis:Model is used as a template for creating new instances. boolean
JsonProperties A string property that users and/or applications can use to persist ad hoc JSON values. string Json
LastMod The last time any element in this Model was modified. dateTime

ConstructionInformationPartition (Construction Information Partition) Sealed EntityClass

A constr:ConstructionInformationPartition element indicates that there is a construction modeling perspective within the overall information hierarchy. A constr:ConstructionInformationPartition is always parented to a bis:Subject and broken down by a constr:ConstructionInformationModel.

Base Class: BisCore:InformationPartitionElement

Inherited properties
Name Description Type Extended Type
Model The bis:Model that contains this bis:Element. navigation
LastMod The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. dateTime
CodeSpec The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeScope The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeValue The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. string
UserLabel An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). string
Parent The parent bis:Element that owns this bis:Element. navigation
FederationGuid The GUID used to federate this bis:Element across repositories. binary BeGuid
JsonProperties A string property that users and/or applications can use to persist ad hoc JSON values. string Json
Description A human-readable string describing the intent behind the partition. string

ConstructionItem (Construction Item) Sealed EntityClass

Defines a constructible component which may or may not be modeled in the 3D model.

Base Class: BisCore:InformationRecordElement

Inherited properties
Name Description Type Extended Type
Model The bis:Model that contains this bis:Element. navigation
LastMod The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. dateTime
CodeSpec The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeScope The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeValue The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. string
UserLabel An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). string
Parent The parent bis:Element that owns this bis:Element. navigation
FederationGuid The GUID used to federate this bis:Element across repositories. binary BeGuid
JsonProperties A string property that users and/or applications can use to persist ad hoc JSON values. string Json

ConstructionItem defines a constructible component which may or may not be modeled in the 3D model.

Often design models lack details and aren't mature enough to take off accurate quantities for a construction project. But these non-modeled elements still need to be taken into account for cost estimation and work planning later. Examples of such non-modeled elements: manholes, traffic signs…

When a constructible component is modeled in the 3D model, ConstructionItem refers to one or multiple (i.e. prefabricated component which is installed as a whole) geometric elements.

ConstructionQuantity (Construction Quantity) Sealed EntityClass

The aspect used to store construction quantity data for constr:ConstructionItem elements.

Base Class: BisCore:ElementMultiAspect

Properties

Name Description Type Extended Type
CostCodeId The Id of the Cost Code in Construction QTO service. string
WorkStepCode Work Step Code for which the value is calculated. string
Quantity Calculated quantity value. double
QuantityUnitName The fully qualified unit name (if it exists) used to persist the quantity value. string
QuantityUnitLabel The unit display label to use when showing the quantity value. string
JsonProperties A string property that users and/or applications can use to persist ad hoc JSON values. string Json
Inherited properties
Name Description Type Extended Type
Element The bis:Element that owns this bis:ElementMultiAspect. navigation

ConstructionWorkArea (Construction Work Area) EntityClass

Represents geographically identifiable area which encompasses all disciplines that will execute work within that area.

Base Class: BisCore:SpatialLocationElement

Inherited properties
Name Description Type Extended Type
Model The bis:Model that contains this bis:Element. navigation
LastMod The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. dateTime
CodeSpec The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeScope The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeValue The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. string
UserLabel An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). string
Parent The parent bis:Element that owns this bis:Element. navigation
FederationGuid The GUID used to federate this bis:Element across repositories. binary BeGuid
JsonProperties A string property that users and/or applications can use to persist ad hoc JSON values. string Json
Category The bis:SpatialCategory used to categorize this bis:GeometricElement3d navigation
InSpatialIndex If true, this element will have an entry in the Spatial Index. boolean
Origin The placement origin of this bis:Element. point3d
Yaw The Yaw angle (in degrees) of the orientation of this bis:Element. double
Pitch The Pitch angle (in degrees) of the orientation of this bis:Element. double
Roll The Roll angle (in degrees) of the orientation of this bis:Element. double
BBoxLow The 'low' point of the element-aligned bounding box of this bis:Element. point3d
BBoxHigh The 'high' point of the element-aligned bounding box of this bis:Element. point3d
GeometryStream Binary stream used to persist the geometry of this bis:Element. binary GeometryStream
TypeDefinition Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. navigation

CostCode (Cost Code) Sealed EntityClass

The aspect used to store Cost Code assignments to constr:ConstructionItem elements.

Base Class: BisCore:ElementMultiAspect

Properties

Name Description Type Extended Type
CodeId The Id of the Cost Code in Construction QTO service. string
Inherited properties
Name Description Type Extended Type
Element The bis:Element that owns this bis:ElementMultiAspect. navigation

GenericConstructionObject (Construction Object) Sealed EntityClass

Represents a generic object used during construction

Base Class: BisCore:PhysicalElement

Inherited properties
Name Description Type Extended Type
Model The bis:Model that contains this bis:Element. navigation
LastMod The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. dateTime
CodeSpec The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeScope The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeValue The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. string
UserLabel An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). string
Parent The parent bis:Element that owns this bis:Element. navigation
FederationGuid The GUID used to federate this bis:Element across repositories. binary BeGuid
JsonProperties A string property that users and/or applications can use to persist ad hoc JSON values. string Json
Category The bis:SpatialCategory used to categorize this bis:GeometricElement3d navigation
InSpatialIndex If true, this element will have an entry in the Spatial Index. boolean
Origin The placement origin of this bis:Element. point3d
Yaw The Yaw angle (in degrees) of the orientation of this bis:Element. double
Pitch The Pitch angle (in degrees) of the orientation of this bis:Element. double
Roll The Roll angle (in degrees) of the orientation of this bis:Element. double
BBoxLow The 'low' point of the element-aligned bounding box of this bis:Element. point3d
BBoxHigh The 'high' point of the element-aligned bounding box of this bis:Element. point3d
GeometryStream Binary stream used to persist the geometry of this bis:Element. binary GeometryStream
TypeDefinition Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. navigation
PhysicalMaterial Indicates the bis:PhysicalMaterial of which the bis:PhysicalElement is made. navigation

WorkAreaDetailingElement (Work Area Detailing Element) EntityClass

Identifies a portion of real-world physical object that got split because it crossed construction work area boundary.

Base Class: Construction:ConstructionDetailingElement

Inherited properties
Name Description Type Extended Type
Model The bis:Model that contains this bis:Element. navigation
LastMod The last modified time of the bis:Element. This is maintained by the core framework and should not be set directly by applications. dateTime
CodeSpec The CodeSpec property identifies the bis:CodeSpec used to generate and validate the code value for this bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeScope The CodeScope property identifies the bis:Element that provides the uniqueness scope for the code value. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. navigation
CodeValue The CodeValue property stores a human-readable real-world identifier of the Entity represented by the bis:Element. The combination of CodeSpec, CodeScope, and CodeValue properties must be unique for each bis:Element instance. string
UserLabel An optional friendly name given by the user (as opposed to the formal name stored in the CodeValue property). string
Parent The parent bis:Element that owns this bis:Element. navigation
FederationGuid The GUID used to federate this bis:Element across repositories. binary BeGuid
JsonProperties A string property that users and/or applications can use to persist ad hoc JSON values. string Json
Category The bis:SpatialCategory used to categorize this bis:GeometricElement3d navigation
InSpatialIndex If true, this element will have an entry in the Spatial Index. boolean
Origin The placement origin of this bis:Element. point3d
Yaw The Yaw angle (in degrees) of the orientation of this bis:Element. double
Pitch The Pitch angle (in degrees) of the orientation of this bis:Element. double
Roll The Roll angle (in degrees) of the orientation of this bis:Element. double
BBoxLow The 'low' point of the element-aligned bounding box of this bis:Element. point3d
BBoxHigh The 'high' point of the element-aligned bounding box of this bis:Element. point3d
GeometryStream Binary stream used to persist the geometry of this bis:Element. binary GeometryStream
TypeDefinition Points to an instance of some specialization of TypeDefinition, which holds property values that vary per-type rather than per-instance of this Element. navigation
SlopedArea Total sloped area. double
SurfaceArea Total surface area. double
Volume Volume of the element. double
StationRange Well-known location of the element defined by the station range. struct
LengthOfSlice Length of an element produced by slice operation. double

StationRange (Station Range) StructClass

Struct to define a station range.

Properties

Name Description Label Category Read Only Priority
StartStation Station start point. Start Station false 0
EndStation Station end point. End Station false 0

Relationship Classes

ConstructionDetailingElementSplitsGeometricElement3d Sealed RelationshipClass

Relationship enabling splitup of bis:GeometricElement3d elements into the smaller pieces.

Base Class: BisCore:ElementRefersToElements

Strength: Referencing

Strength Direction: Forward

Used to relate ConstructionDetailingElement instances to the source geometry element. Even though the source geometry can be any element of a class bis:GeometricElement3d, the application layer will control what elements are eligible for splitting. For instance, it doesn't make any sense to split geometric elements like bis:TextAnnotation3d and similar.

In the case (see Picture 8) when design element ("P-1") crosses construction work area boundaries and one of its portions ("Portion X", modeled as WorkAreaDetailingElement) is split further into smaller pieces suitable for construction ("Portion X1" and "Portion X2, modeled as ConstructionDetailingElement) in addition to the relationship between ConstructionDetailingElement and WorkAreaDetailingElement a relationship between ConstructionDetailingElement and "original" design element is created (see Picture 7). Conceptually these ConstructionDetailingElement instances each represent a portion of the original design element, the difference is the way in which these portions were created.

Asset

Picture 7. Relationships between design element and its sliced portions

Asset

*Picture 8. Sample of splitting a design element for multiple purposes

Source

Is Polymorphic: true

Role Label: is portion of

Multiplicity: (0..*)

Constraint Classes:

Target

Is Polymorphic: true

Role Label: is split into

Multiplicity: (0..2)

Constraint Classes:

ConstructionItemConstructsGeometricElement3d Sealed RelationshipClass

Relates constr:ConstructionItem to the real world entities (or their split up pieces modeled as constr:ConstructionDetailingElement elements) it constructs.

Base Class: BisCore:ElementRefersToElements

Strength: Referencing

Strength Direction: Forward

Source

Is Polymorphic: false

Role Label: constructs

Multiplicity: (0..*)

Constraint Classes:

Target

Is Polymorphic: true

Role Label: is constructed by

Multiplicity: (0..*)

Constraint Classes:

ConstructionItemOwnsConstuctionQuantities Sealed RelationshipClass

Defines aspect's ownership.

Base Class: BisCore:ElementOwnsMultiAspects

Strength: Embedding

Strength Direction: Forward

Source

Is Polymorphic: false

Role Label: owns

Multiplicity: (1..1)

Constraint Classes:

Target

Is Polymorphic: false

Role Label: is owned by

Multiplicity: (0..*)

Constraint Classes:

ConstructionItemOwnsCostCodes Sealed RelationshipClass

Defines aspect's ownership.

Base Class: BisCore:ElementOwnsMultiAspects

Strength: Embedding

Strength Direction: Forward

Source

Is Polymorphic: false

Role Label: owns

Multiplicity: (1..1)

Constraint Classes:

Target

Is Polymorphic: false

Role Label: is owned by

Multiplicity: (0..*)

Constraint Classes:

ElementBelongsToConstructionWorkArea Sealed RelationshipClass

Relates a bis:Element to the constr:ConstructionWorkArea that it belongs to.

Base Class: BisCore:ElementRefersToElements

Strength: Referencing

Strength Direction: Forward

Source

Is Polymorphic: true

Role Label: belongs to

Multiplicity: (0..*)

Constraint Classes:

Target

Is Polymorphic: false

Role Label: is referenced

Multiplicity: (0..1)

Constraint Classes:

Kind Of Quantities

AREA (Area) KindOfQuantity

Relative Error: 0.0001

Persistence Unit: SQ_M

Presentation Formats

LENGTH (Length) KindOfQuantity

Relative Error: 0.0001

Persistence Unit: M

Presentation Formats

STATION (Station) KindOfQuantity

Relative Error: 0.0001

Persistence Unit: M

Presentation Formats

VOLUME (Volume) KindOfQuantity

Relative Error: 0.0001

Persistence Unit: CUB_M

Presentation Formats

Last Updated: 12 February, 2024