Data structure of bSDD
Table of contents
Data model
The bSDD is a service to facilitate the distribution of data dictionaries (read below about what those are) published by independent organisations. The diagram below shows the simplified data model behind the bSDD:
See our example demonstrating the usage of the above concepts: bSDD data example:
We also have a demonstration dictionary: “Fruit and vegetables”.
π’ Read about the latest technical updates in the dedicated forum topic: https://forums.buildingsmart.org/t/bsdd-tech-updates/4889
JSON format
You can deliver data for the buildingSMART Data Dictionary in the JSON file following our standard, which we explain in this document. You can also find the JSON and Excel templates in /Model/Import Model.
Click on the link to get the list of allowed codes for countries, languages, units, reference documents and ifc class.
If you think there are reference documents missing, please let us know.
If you are unfamiliar with JSON, we recommend reading Introduction to JSON. Please note that JSON is a format meant for computer systems to exchange data. If you have your dictionary data in a computer system, then it’s best to let the system create the JSON for you.
List of fields
NB Default values will only be applied if a field is not specified. If you specify a field value of “null”, the default will not be applied. Note that “null” is not allowed for all fields.
Dictionary
Data dictionary
– ‘a centralized repository of information about data such as meaning, relationships to other data, origin usage and format.‘ [ISO23386]. ‘database that contains metadata‘ [ISO12006-3]. Each Dictionary
(previously domain
) consists of Classes
(previously classifications
) and Properties
, which could be related to each other or with other Dictionaries
. Each Dictionary
object contains general metadata about it, as listed in the table below.
Field | DataType | Requ- ired? | Trans- latable? | Description |
---|---|---|---|---|
OrganizationCode | Text | β | The organisation’s code received when registering in bSDD. If your organisation doesn’t have a code yet, request one at bSDD User Helpdesk. The code should be preferably short, as it will appear in all the URI links. See section Code format explaining allowed characters. This code can’t start with a digit. Example code: “ifc”. | |
DictionaryCode | Text | β | Code of the dictionary, preferably short, E.g. “ifc”. See section Code format | |
DictionaryName | Text | β * | Name of the dictionary. *If the dictionary exists, supplying this name is not necessary. | |
DictionaryVersion | Text | β | Version of the dictionary data. Allowed format: up to three dot-separated numbers, e.g.: 1.0.1. Allowed: “12”, “10.1”, “1.2.3”. Not allowed: “1.2.3.4”, “Beta”, “2×3”. We recommend following Semantic Versioning approach. | |
LanguageIsoCode | Text | β | ISO language code: indicates the language of the data. If you want to deliver data in multiple languages, use a JSON file per language. See reference list languages. * E.g. “de-DE” | |
LanguageOnly | Boolean | β | true if JSON contains only language-specific information, no otherwise * | |
UseOwnUri | Boolean | β | Default: false. Use your own URIs for globally unique identification of Classes and Properties. If you don’t use your own URI a URI starting with “https://identifier.buildingsmart.org” will be assigned to each Class and Property |
|
DictionaryUri | Text | β * | Required if UseOwnUri = true. Supply the globally unique that’s the first part of all Classes and Properties uris, e.g. “urn:mycompany:mydictionary” or “https://mycompany.com/mydictionary” | |
License | Text | Name of the license to the content. We suggest choosing from Creative Commons or OSI Approved Licenses. E.g. “MIT” or “CC BY 4.0”. Also, a helpful resource is ChooseALicense.com. | ||
LicenseUrl | Text | Url to a web page with the full license text | ||
ChangeRequestEmailAddress | Text | Single email address for receiving change requests from users. By providing the email address, you consent to us forwarding requests from users and exposing the address through the API. You have the right to withdraw the information by contacting us. | ||
ModelVersion | Text | Version number of the input JSON template. | ||
MoreInfoUrl | Text | Url to a web page with more info about the dictionary | ||
QualityAssuranceProcedure | Text | Name or short description of the quality assurance procedure used for the dictionary, e.g. “ETIM international”, “AFNOR NF XP P07-150 (PPBIM)”, “bSI process”, “UN GHS 2015”, “UN CPC 1.1”, “Private”, “Unknown” | ||
QualityAssuranceProcedureUrl | Text | Url to a web page with more detailed info on the quality assurance procedure, e.g. “https://www.buildingsmart.org/about/bsi-process” | ||
ReleaseDate | DateTime | Date of release of the version, See Date Time format. | ||
Status | Text | Possible version statuses: Preview , Active , Inactive . When uploading a new version, it should always be in Preview . You can then activate or deactivate content via the API or Management Portal. Read more: the lifecycle of the bSDD content |
||
Classes | List of Class | β | List of objects of type Class . See section Class |
|
Properties | List of Property | β | List of objects of type Property . See section Property |
* For delivering data in additional languages, it is sufficient to fill the Dictionary
type fields, all Code
fields and the fields marked with Translatable?
= “Yes” of the other types. Ensure that the OrganizationCode
, DictionaryCode
and DictionaryVersion
are exactly the same and if the data is for adding a language to an existing Dictionary
, set the field LanguageOnly
to true.
Class
Class
– ‘description of a set of objects that share the same characteristics.‘ [ISO23386]. A Class
can be any object (examples: “wall”, “window”) or abstract concept (examples: “time”, “room”) or process (examples: “installation”, “disassembly”).
Field | DataType | Requ- ired? | Trans- latable? | Description |
---|---|---|---|---|
Code | Text | β | Unique identification within the dictionary of the class E.g. “ifc-00123-01”. See section Code format. | |
Name | Text | β | β | Name of the Class, E.g. “IfcCurtainWall” |
ClassType | Text | β * | Must be one of: Class , Material , GroupOfProperties , AlternativeUse . Read more about class types. If not specified, the Class type will be used by default. The types ReferenceDocument , ComposedProperty and Dictionary were deprecated and can not be used on upload but may be present in API results for the duration of transition time. |
|
Definition | Text | β | Definition of the Class , explaining the semantic meaning. A required field according to the ISO. Supports double square bracket links. |
|
Description | Text | β | Additional field for supplementary explanation. Please only use it if the Definition comes from a standard and requires further explanation. | |
ParentClassCode | Text | Reference to the parent Class . The ID in this field MUST exist in the data delivered. E.g. “ifc-00123-00”. See section How to define relations? |
||
RelatedIfcEntityNamesList | List of text | Codes of IFC classes to use as a representation of this Class . For example: [‘IfcWall’]. See bSDD API ifc classs. See section How to define relations? |
||
Synonyms | List of text | β | List of alternative names of this class for easier finding. | |
ActivationDateUtc | DateTime | See Date Time format. | ||
ReferenceCode | Text | Reference code can have dictionary-specific usage. If null, then the value of Code is used to fill the field. To make ReferenceCode empty, use empty string “”. |
||
CountriesOfUse | List of text | List of country ISO codes this Class is being used. See reference list countries. |
||
CountryOfOrigin | Text | ISO Country Code of the country of origin of this Class . See reference list countries. |
||
CreatorLanguageIsoCode | Text | Language ISO code of the creator. See reference list languages. | ||
DeActivationDateUtc | DateTime | See Date Time format. | ||
DeprecationExplanation | Text | β | Only fill for deprecated definitions. | |
DocumentReference | Text | Reference to document with the full or official definition of the Class . See reference list reference documents. |
||
OwnedUri | Text | If you specified UseOwnUri = true at the dictionary level, you must supply the URI that globally uniquely identifies the Class |
||
ReplacedObjectCodes | List of text | List of Class Codes this Class replaces | ||
ReplacingObjectCodes | List of text | List of Class Codes this class is replaced by | ||
RevisionDateUtc | DateTime | See Date Time format. | ||
RevisionNumber | Integer | |||
Status | Text | Status of the Class : Active (default) or Inactive |
||
SubdivisionsOfUse | List of text | β | List of geographical regions of use E.g. “US-MT” | |
Uid | Text | Unique identification (ID), in case the URI is not enough. | ||
VersionDateUtc | DateTime | By default takes the date of import. See Date Time format. | ||
VersionNumber | Integer | |||
VisualRepresentationUri | Text | β | ||
ClassProperties | List of ClassProperty | See section ClassProperty | ||
ClassRelations | List of ClassRelation | See section ClassRelation |
Note: Since the release of November 2023, Materials are not treated separately anymore. A Material
is now simply a Class
of type Material
.
Property
Property
– ‘an inherent or acquired feature of an item [Class
]. Example: Thermal efficiency, heat flow, (…), colour.‘ [ISO23386]. The assignment of Properties
to Classes
is handled through the interim ClassProperty object.
Field | DataType | Requ- ired? | Trans- latable? | Description |
---|---|---|---|---|
Code | Text | β | Unique identification within the dictionary of the property E.g. “ifc-99088-01”. See section Code format | |
Name | Text | β | β | Name of the Property E.g. “IsExternal” |
Definition | Text | β | Definition of the Property , explaining the semantic meaning. A required field according to the ISO. Supports double square bracket links. |
|
Description | Text | β | Additional field for supplementary explanation. Please only use it if the Definition comes from a standard and requires further explanation. | |
DataType | Text | β | The datatype the property is expressed in. Must be one of: Boolean , Character , Integer , Real , String , Time |
|
Units | List of text | The units represent a scale that enables a value to be measured (ISO 80000 or ISO 4217, or ISO 8601). List of values. See reference list (JSON) units. We are working on supporting the QUDT vocabulary. If you would like to import using QUDT units or want to have the QUDT units in the API output, please let us know. | ||
Example | Text | β | Example value of the Property |
|
ActivationDateUtc | DateTime | See Date Time format. | ||
ConnectedPropertyCodes | List of text | List of codes of one or more connected properties. Can also be full URI instead of code, in case it is a property of another dictionary. See assembling properties | ||
CountriesOfUse | List of text | List of country ISO codes this Property is being used. See reference list countries. |
||
CountryOfOrigin | Text | ISO Country Code of the country of origin of this Property . See reference list countries. |
||
CreatorLanguageIsoCode | Text | Language ISO code of the creator. See reference list (JSON)languages | ||
DeActivationDateUtc | DateTime | See Date Time format. | ||
DeprecationExplanation | Text | β | ||
Dimension | Text | In case of a physical quantity, specify dimension according to International_System_of_Quantities, as defined in ISO 80000-1. The order is: length , mass , time , electric current , thermodynamic temperature , amount of substance , and luminous intensity . For example, speed (m/s) would be denoted as “1 0 -1 0 0 0 0”. More examples in IDS docs |
||
DimensionLength | Integer | The Length dimension; either use the field Dimension to specify all parts or specify all parts separately |
||
DimensionMass | Integer | The Mass dimension; either use the field Dimension to specify all parts or specify all parts separately |
||
DimensionTime | Integer | The Time dimension; either use the field Dimension to specify all parts or specify all parts separately |
||
DimensionElectricCurrent | Integer | The ElectricCurrent dimension; either use the field Dimension to specify all parts or specify all parts separately |
||
DimensionThermodynamicTemperature | Integer | The ThermodynamicTemperature dimension; either use the field Dimension to specify all parts or specify all parts separately |
||
DimensionAmountOfSubstance | Integer | The AmountOfSubstance dimension; either use the field Dimension to specify all parts or specify all parts separately |
||
DimensionLuminousIntensity | Integer | The LuminousIntensity dimension; either use the field Dimension to specify all parts or specify all parts separately |
||
DocumentReference | Text | Reference to document with the full or official definition of the Property . See reference list (JSON) reference documents. |
||
DynamicParameterPropertyCodes | List of text | List of codes of properties which are parameters of the function for a dynamic property. See assembling properties. | ||
IsDynamic | Boolean | Default: false . If this is a dynamic property, the value is dependent on the parameters provided in the field DynamicParameterPropertyCodes . See assembling properties. |
||
MaxExclusive | Real | Maximum allowed value, exclusive – do not fill both inclusive and exclusive values | ||
MaxInclusive | Real | Maximum allowed value, inclusive – do not fill both inclusive and exclusive values | ||
MinExclusive | Real | Minimum allowed value, exclusive | ||
MinInclusive | Real | Minimum allowed value, inclusive | ||
MethodOfMeasurement | Text | β | E.g. “Thermal transmittance according to ISO 10077-1” | |
OwnedUri | Text | If you specified UseOwnUri = true at the dictionary level, you must supply the URI that globally uniquely identifies the Property |
||
Pattern | Text | An XML Schema regular expression to limit allowed values | ||
PhysicalQuantity | Text | β | Name of the physical quantity of the property, E.g. “without” or “mass” | |
PropertyValueKind | Text | Must be one of: Single (one value; this is the default), Range (two values), List (multiple values), Complex (neither single/range/list, for example an object like IfcActor or an aggregation of connected properties – see assembling properties), ComplexList (list of complex values). |
||
ReplacedObjectCodes | List of text | List of Property Codes this Property replaces |
||
ReplacingObjectCodes | List of text | List of Property Codes this Property is replaced by |
||
RevisionDateUtc | DateTime | See Date Time format. | ||
RevisionNumber | Integer | |||
Status | Text | Status of the Property: Active (default) or Inactive |
||
SubdivisionsOfUse | List of text | β | List of geographical regions of use E.g. “US-MT” | |
TextFormat | Text | Pair for text type (encoding, number of characters) The encoding is set according to “Name of encoding standard” of IANA, RFC 2978, E.g. “(UTF-8,32)” | ||
Uid | Text | Unique identification (ID), in case the URI is not enough. | ||
VersionDateUtc | DateTime | By default takes the date of import. See Date Time format. | ||
VersionNumber | Integer | |||
VisualRepresentationUri | Text | β | ||
PropertyRelations | List of PropertyRelation | β | List of related properties. See section PropertyRelation | |
AllowedValues | List of AllowedValue | β | List of allowed values for the property. Note: do not use this one for properties of type boolean. See section AllowedValue. |
ClassProperty
Interim object to assign a Property
to a Class
it should describe. Each Class
can have multiple properties, and each Property
can be part of many Classes
, but one ClassProperty
is always a pair of one Class
and one Property
.
Through ClassProperty
, one can further specify a ‘Property’ by defining its unit, property set it should be stored in, and value restrictions when applied to that particular Class
. For example, a general ‘Temperature’ can be expressed in Celcius or Fahrenheit and can be any negative or positive value, but when applied to an indoor space, it might be restricted to a range of 5-40 degrees Celcius.
Field | DataType | Requ- ired? | Trans- latable? | Description |
---|---|---|---|---|
Code | Text | Unique identification code of the ClassProperty . See section Code format. When left empty on import, bSDD will generate a random GUID. |
||
PropertyCode | Text | β * | Reference to the Property if it is in the same Dictionary . Not required if you fill in the PropertyUri |
|
PropertyUri | Text | β * | Reference to the Property if it is in a different Dictionary , e.g. https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/ClearWidth Not required if you fill the PropertyCode |
|
Description | Text | β | You can supply the property description specific to the class. If left out, the ‘common’ description of the property will be shown where applicable | |
PropertySet | Text | Code validation will be applied. Name of the “property set” where the property should be placed during IFC export. The prefix ‘Pset_’ is only reserved for the official IFC. See assembling properties. | ||
Unit | Text | See reference list (json) units. | ||
PredefinedValue | Text | Predefined value for this Property . E.g. value for property “IsLoadBearing” can be “true” for class “IfcWall” |
||
IsRequired | Boolean | Indicates if this is a required Property of the Class |
||
IsWritable | Boolean | Indicates if the value of this Property of the Class can be changed |
||
MaxExclusive | Real | Maximum allowed value, exclusive. Overrides the value defined for the Property . Do not fill both ‘inclusive’ and ‘exclusive’ values. |
||
MaxInclusive | Real | Maximum allowed value, inclusive. Overrides the value defined for the Property . Do not fill both ‘inclusive’ and ‘exclusive’ values. |
||
MinExclusive | Real | Minimum allowed value, exclusive. Overrides the value defined for the Property . Do not fill both ‘inclusive’ and ‘exclusive’ values. |
||
MinInclusive | Real | Minimum allowed value, inclusive. Overrides the value defined for the Property . Do not fill both ‘inclusive’ and ‘exclusive’ values. |
||
Pattern | Text | An XML Schema regular expression to limit allowed values. Overrides the pattern defined for the Property | ||
OwnedUri | Text | If you specified UseOwnUri = true at the dictionary level, you must supply the URI that globally uniquely identifies the ClassProperty |
||
PropertyType | Text | Type of the Property for the Class : Property (default) or Dependency |
||
SortNumber | Integer | Sort number of this Property within the Class |
||
Symbol | Text | |||
AllowedValues | List of AllowedValue | β | List of allowed values for the ClassProperty . Overrides the values defined for the Property . Do not use this one for properties of type boolean. See section AllowedValue |
|
~~ExternalPropertyUri~~ | ~~Text~~ | DEPRECATED – Use PropertyUri instead |
* One of those is required.
AllowedValue
Optional value enumerations that can be listed for Properties
and ClassProperties
. For example, a ‘Fire Rating’ could only have a few allowed values: REI30, REI60, REI90 or REI120.
Field | DataType | Requ- ired? | Trans- latable? | Description |
---|---|---|---|---|
Code | Text | β | Code is a unique identification of the value (max 20 characters). It is required and, in most cases is the same as the value. It is needed to enable translations of Values or their Descriptions. See section Code format | |
Value | Text | β | β | One of the Values the property can have, e.g. “Green” in case the Property is something like “Color” |
Description | Text | β | A description of the value | |
Uri* | Text | * To be deprecated in the new model version, as it overlaps with the OwnedUri. | ||
SortNumber | Integer | SortNumber of the Value in the list of Values of the Property it belongs to |
||
OwnedUri | Text | If you specified UseOwnUri = true at the dictionary level, you can supply the URI that globally uniquely identifies the AllowedValue |
Note: adding translations of the AllowedValue
is not supported yet
ClassRelation
Classes
can be linked by relations. There are various types of relations, allowing for the definition of hierarchy, composition, similarity or reference. See section How to define relations?
Field | DataType | Requ- ired? | Trans- latable? | Description |
---|---|---|---|---|
RelationType | Text | β | One of: HasMaterial , HasReference , IsEqualTo , IsSimilarTo , IsParentOf , IsChildOf , HasPart , IsPartOf . Read more about Relation types. |
|
RelatedClassUri | Text | β | Full URI of the related Class . It can be to same or a different Dictionary . Example: https://identifier.buildingsmart.org/uri/etim/etim/8.0/class/EC002987 |
|
RelatedClassName | Text | |||
Fraction | Real | Only applicable to HasMaterial relation. Optional provision of a fraction of the total amount (e.g. volume or weight) that applies to the Class owning the relations. The sum of Fractions per class/relationtype must be 1. Similar to Fraction in IfcMaterialConstituent |
||
OwnedUri | Text | If you specified UseOwnUri = true at the dictionary level, you must supply the URI that globally uniquely identifies the ClassRelation |
PropertyRelation
Analogous to ClassRelations
but between Properties
.
Field | DataType | Required? | Translatable? | Description |
---|---|---|---|---|
RelatedPropertyName | Text | Name of the related Property . |
||
RelatedPropertyUri | Text | β | Full URI of the related Property . It can be to same or a different Dictionary . |
|
RelationType | Text | β | One of: HasReference , IsEqualTo , IsSimilarTo , ~~IsParentOf, IsChildOf, HasPart~~. Read more about Relation types. |
|
OwnedUri | Text | If you specified UseOwnUri = true at the dictionary level, you must supply the URI that globally uniquely identifies the PropertyRelation |
Additional explanations
Code format
(from April 2024) All codes support diacritics, whitespace, dots, dashes, underscores and numbers. Not allowed are special characters: "#%/:{}[]|;<>?~
(and `). Codes are not case-sensitive.
Some examples of valid codes are: “bs-agri”, “apple”, “Γ©ΓΔ
_- ΠιηΊ…ΕΌΕΊ”.
Codes need to be unique within the same data dictionary and are used to generate URIs!
Class types
Each class must have a specific type. Below is the explanation of what each type means, according to ISO 12006-3:
* Class
– description of a set of objects that share the same characteristics [ISO12006-3,3.7]. This is the most common type in bSDD. (e.g. wall, space)
* GroupOfProperties
– collection enabling the properties to be prearranged or organized [ISO12006-3,3.14]. For example, ‘environmental properties’. See assembling properties.
* Material
– a physical substance that things can be made from (e.g. steel, glass)
* AlternativeUse
– type to be used if no other type fits the needs.[ISO12006-3,3.1].
* Be aware that most software implementations disregard this class type, as it is not straightforward to interpret.
* DEPRECATED ~~ReferenceDocument – a publication that is consulted to find specific information, particularly in a technical or scientific dictionary. [ISO12006-3,3.18]. A reference document can be associated with any data present in a data dictionary.~~
* In bSDD we have a global list of reference documents, which includes the most common standards that can be used as reference. This is to avoid having duplicate references with different naming. If you don’t find the reference you are looking for, and think it should be added to the list – let us know: CONTACT FORM.
* DEPRECATED ~~ComposedProperty – (…) corresponding to a feature needing multiple properties to be defined. [ISO12006-3,3.8].~~
* ~~Example: To describe the characteristic “concrete facing quality”, it is mandatory to describe 3 properties: concrete planarity, concrete hue, and concrete texture.~~
* Use GroupOfProperties
instead.
Defining relations
ParentClassCode
– Class
es within the same dictionary can be organized in a tree-like hierarchy structure. For example: βIfcCurtainWallβ is a more
specific class of βIfcWallβ. In bSDD terminology, we say that βIfcWallβ is a parent of βIfcCurtainWallβ. To define such specialization relation, use the ParentClassCode
attribute on the child object.
ClassRelation
and PropertyRelation
– use those to link your concepts with each other. Relations allow us to define parent-child links also with other dictionaries. Apart from specialization, you can also define other types of relations, such as decomposition (HasPart
type, see the list of possible types: Relation types).
RelatedIfcEntityNamesList
– IFC is a top-level schema (foundation classes) used for exchanging information between software. Because of that, the bSDD provides a special way to relate your class to IFC. Use RelatedIfcEntityNamesList
to show which entities from IFC you are referring to or extending. For example, βSignaling LED diodeβ relates to βIfcLampβ from IFC. RelatedIfcEntityNamesList
can be used by bSDD-related tools to filter the list of possible classes to a particular IFC category.
Relation types
Properties
and Classes
can be related to each other. Each relation must have a specific type to allow software to interpret it. Below is an explanation of what each type means:
* IsEqualTo
– if two concepts are unequivocal and have the same name, code, definition and description. Classes also need to share the same class properties. It is quite rare for concepts to be equal. An example of usage is when a concept doesn’t have an official translation, but someone defines a new dictionary with that concept in a new language and wants to say it is exactly the same as the original. (We always recommend proposing translations and improvements to the original data dictionaries instead of building duplicate ones).
* IsSimilarTo
– if two concepts are almost equal but differ by name, code, definition, description or set of class properties. This is a very common relationship type. Used, for example, to say that ‘IfcWall’ is a similar concept to ‘Wall System’ from CCI. The downside of such a relation is that it doesn’t inform on the level of similarity β is it slightly differing by the wording of the definition, or is the difference huge?
* HasReference
– if two concepts relate to each other, but other relation types do not apply. For example, “wall lamp” (or “sconce”) is referencing a wall, even though those are different concepts and there is no hierarchy between them.
* DEPRECATED ~~IsSynonymOf – if two concepts are unequivocal but have a different name.~~
Only applicable to classes (not properties):
* IsChildOf
– specialisation relation. The equivalent of the “subtype” relationship [ISO12006-3, F3.1]. For example: “Electrical motor” and a “Combustion motor” are children (subtypes) of the generic concept “Motor”.
* IsParentOf
– the opposite relation to IsChildOf
.
* HasPart
– composition relation. For example, an electric motor can be composed of elements such as stators, rotors, etc. [ISO12006-3, F3.2].
* IsPartOf
– reverse of HasPart
.
* HasMaterial
– a class that can be associated with a particular material. For example: “Steel Beam” could be related to the material “Steel”.
DateTime format
The date-time format according to the ISO 8601 series should be used: YYYY-MM-DDThh:mm:ssTZD
. Import allows both: 2023-05-10
, 2023-05-10T15:10:12Z
and 2023-05-10T15:10:12+02:00
.
Property inheritance
-
Parent
Class
β childClass
The childClass
does not inherit properties from the parentClass
. If authors want child classes to also have properties of parent classes, they should specify them intentionally in import files.
For example, the IfcWall is a parent class of IfcWallStandardCase. While IfcWall has the property AcousticRating, the IfcWallStandardCase doesn’t. -
Property
βClassProperty
ClassProperty
is an instantiation of generalProperty
for a particularClass
. The attributes of a property, such asAllowedValue
and min/max restrictions, are by default passed toClassProperty
. The values of theClassProperty
can be modified without influencing the originProperty
.
For example, the Height has an upper limit of 100 cm. When applied to the “Apple” class, the Apple-Height has a lower limit – 25cm.
Latest version
In bSDD, all resources get a unique identifier – URI. The URI, among other information, contains codes of the organisation, the dictionary and the version number, for example …/uri/bs-agri/fruitvegs/1.0.0/class/fruit
If you want to reference specific resources but are not sure of the version or want to always point to the most recent version, we implemented the “latest” feature. Now, it is possible to use “latest” instead of a version number, and bSDD will resolve the link to the latest active or preview version containing that resource:
…/uri/bs-agri/fruitvegs/latest/class/fruit.
Try it out:
https://search.bsdd.buildingsmart.org/uri/bs-agri/fruitvegs/latest/class/fruit
β οΈ The “latest” points to the most recent resource, meaning that it will change once a new version is present. Use with caution as it is not an immutable URI, and the content can change. For contractual agreements, we suggest using specific version numbers.
Assembling properties
Groups of Properties (use Class
.ClassType
:GroupOfProperties
) “collection enabling the properties to be prearranged or organized” [ISO12006-3,3.14]. In bSDD, implemented as a Type of Class meant to group multiple Properties.
Use Group of Properties to organize properties in a data dictionary.
Example: ‘Global Warming Potential‘ class from ‘LCA indicators and modules‘ groups four properties: ‘…total‘, ‘…biogenic‘, ‘…fossil fuels‘ and ‘…land use…‘.
Sets of properties (use ClassProperty
.PropertySet
) – a concept from the IFC standard for grouping properties. In bSDD represented as a text field defined for Class Property, telling in which set this Class Property should appear when serialised to IFC data.
* A Property Set, as defined in ISO 16739-1, is a group of properties, but a group of properties is not necessarily a Property Set.
* A property can be a member of several groups of properties. A class property cannot be a member of several Property Sets.
* The prefix ‘Pset_’ is only reserved for the official IFC.
Use Property Set to define where to place a property in an IFC dataset.
Example: A property ‘Concrete Cover’ of ‘IfcWall’ is located in property set: ‘Pset_ConcreteElementGeneral’.
Connected properties (use Property
.ConnectedPropertyCodes
) “List of properties connected to the current property. The connection can be a specialization or a dependency.” [ISO12006-3, 5.3.29]
Use Connected Properties if the value of one property depends on the value of another property.
Example: _The property ‘Global Warming Potential – total’ (GWP) should be defined for each phase of the life cycle of a product. Defining the property separately for each phase (GWP_A1, GWP_A2, …) is not desired. Instead, it is connected to another property – ‘information module (PHASE)‘, taking 18 possible values (A1, A2, C3…). To interpret the meaning of GWP value, one should look at pairs of values: {GWP=1.0, PHASE=A1}, {GWP=15.0, PHASE=A3}, etc. _
β οΈ This feature comes from the ISO standard but is rarely supported by software implementation. The IFC also doesn’t support multiple properties with the same name under one property set. Consider avoiding Connected Properties to make the data dictionary more accessible.
Dynamic properties (use Property
.IsDynamic
and .DynamicParameterPropertyCodes
) “properties which are parameters of the function for a dynamic property” [ISO23386, 5.3.29]. In other words, the value of a dynamic property is dependent on the values of properties specified in DynamicParameterPropertyCodes
. There is no field in bSDD to define the exact equation of the formula in a machine-interpretable form.
Use Dynamic Properties to tell which other properties influence the value of the particular property.
Example: The ‘Area’ of a wall depends on its ‘Height’ and ‘Length’, following the formula: A = H * L.
β οΈ This feature comes from the ISO standard but is rarely supported by software implementation. Consider avoiding Dynamic Properties to make the data dictionary more accessible.
Restricting property values
π§ TO BE DEVELOPED π§
AllowedValues
…
Min/MaxInc/Exclusive
…
Pattern
…
Identifying bSDD resources
π§ TO BE DEVELOPED π§
URI
… Can be generated by bSDD or external.
Code
… See section Code format.
UID
(GUID)…
Specifying units
π§ TO BE DEVELOPED π§
Unit(s)
…
Dimension
…
PhysicalQuantity
…
Double square bracket links
It is possible to reference other resources from the same dictionary using double square brackets, and the platform will replace the brackets with hyperlinks pointing to that resource. In cases where the same code exists for both class and property, the hyperlink will point to the class. If the code is not found, the square brackets are omitted. The API returns the definition with square brackets.
Notifications
2023-07 – Important notification:
As we’re continuously improving bSDD, we’ve updated all identifiers: the dash between dictionary code and dictionary version has been replaced by a slash, e.g.:
https://identifier.buildingsmart.org/uri/bs-agri/fruitvegs-1.0.0/class/apple will now be https://identifier.buildingsmart.org/uri/bs-agri/fruitvegs/1.0.0/class/appleWe will support supplying and retrieving data using the dash between dictionary code and version for (at least) 4 months. But please do note that only identifiers in the new format are returned by the bSDD APIs.
2022-08 – Important notification:
The bSDD is in the process of moving from identifiers (aka “URI”) starting with “http://identifier.buildingsmart.org” to “https://identifier.buildingsmart.org” (“http” to “https”). This is to ease the use of these identifiers as hyperlinks as well.
Support for using the old “http” identifiers will be deprecated soon!
π’ Read more about the latest tech updates in the dedicated forum topic: https://forums.buildingsmart.org/t/bsdd-tech-updates/4889
Imported from MarkDown source file