If you want to have your terms standardized when using openBIM then using bSDD is the recommended way to do it. But how do you actually go ahead and implement support for bSDD in your software? I then assume you already know the API and how to get information from bSDD itself. This documents covers how information from bSDD is incorporated into a IFC BIM. How to store and exchange the information. In Norway there is a technical specification explaining how this is done but It’s only covering IFC 2×3 and is also a bit outdated with regards to naming. I have therefore created a simple figure and some explanation for how this should be done for both IFC 4 and IFC 2×3. The listings is using names from IFC 4 but with additional information about changes from IFC 2×3 below in the explanation. If you have implemented or intend to implement support for bSDD in your software then please let us know.
(1) – IfcClassificaton
Is used to represent the bSDD library in an Ifc file. There should be one and only one instance with Name “bSDD”.
|Source||IfcLabel||URL or name (1)|
|Edition||IfcLabel||Language id. (2)|
|EditionDate||IfcDate||Optional date for last update (3)|
|Description||IfcText||buildingSMART Data Dictionary|
|ReferenceTokens||IfcIdentifier(list)||Not used (6)|
- Mandatory: For IFC 4 use “bSDD”, for IFC 2×3 use “http://bsdd.buildingsmart.org/” as there is no dedicated location attribute.
- Optional: When used it should be used to tell the language code of the concept names stored on IfcClassificationReference.Name. For example “en-GB” for British English, “en” for International English and “nb-NO” for Norsk Bokmål.
- Optional: The date when the information was last retrived from bSDD. Please note: the type has changed from IFcCalendarDate in IFC 2×3
- Mandatory. Use “bSDD” for both IFC 2×3 and IFC 4
- Mandatory for IFC 4. Please note: this attribute is new in IFC 4.
- Used to indicate the facets in classification systems. Not relevant for bSDD. Please note: this attribute is new in IFC 4.
(2) – IfcClassificationReference
The classification reference is where you store the actual classification. There should be one and only one classification reference for each classification used.
|Location||IfcURIReference||Url to concept (1)|
|Identification||IfcIdentifier||The bSDD GUID (2)|
|Name||IfcLabel||The concept name (3)|
|ReferencedSource||IfcClassification||Pointer back to the source (bSDD)|
|Description||IfcText||The concept description (4)|
|Sort||IfcIdentifier||Not used for bSDD (5)|
- Optional URL to a site where you can see the concept. For example: http://bsdd.buildingsmart.org/#concept/details/2YUUCAWJqHu000025QrE$V Please note: Type has changed from IfcLabel in IFC 2×3.
- Mandatory. The bSDD GUID of the concept. For example 2YUUCAWJqHu000025QrE$V Please note: Name has changed from ItemReference in IFC 2×3)
- Mandatory. One of the names for the given concept from bSDD. For example “Window” for the GUID above. You should also indicate the language used in IfcClassification.Edtition. If a user pics one specific name from a list of synonyms you should preserve that selection when saving the information back to the IFC file.
- Optional. The description from the concept in bSDD. Please note This attribute is new in IFC 4
- Used to sort sets of classification refrerences. Not relevant for bSDD. Please note This attribute is new in IFC 4
The inverse «HasReferences» attribute is used to rebuild the structure of a classification system inside a IFC model. It’s shown on the image but is not relevant for bSDD.
(3) – IfcRelAccociatesClassification
Used to create the actual relationship between the classification item and the objects being classified. In this case between a bSDD GUID (with language representation) and the objects in the BIM
|GlobalId||IfcGloballyUniqueId||The guid generated from the BIM tool|
|OwnerHistory||IfcOwnerHistory||Standard ifc owner history (1)|
|RelatedObjects||IfcRoot (Set)||Objects tagged (3)|
|RelatingClassification||IfcClassificationReference||The bSDD tag (4)|
- Optional: Useful to separate bSDD from other relationships.
- The pointer to the objects receiving the bSDD GUID and names
- The actually bSDD GUID with corresponding language represenation. The should be only instance of every GUID used.