Skip to content

Commit

Permalink
Update property-facet.md
Browse files Browse the repository at this point in the history
relates to #110, #371
  • Loading branch information
atomczak authored Nov 7, 2024
1 parent 0571d78 commit 5d3d5f6
Showing 1 changed file with 31 additions and 18 deletions.
49 changes: 31 additions & 18 deletions Documentation/UserManual/property-facet.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,27 @@
# Property facet

IFC comes with a way to define custom data attached to objects called **Properties**.
The **Property Facet** is expected to be one of the most commonly used facets in the first version of IDS.
IFC **Properties** are the most common way to attach data to objects and the most used IDS facet.

**Properties** have a **BaseName** (such as "FireRating") grouped in into **Property Sets** that help keep them organised by similar subject matters.
A property stores the relevant **Value** provided by the user (such as "180/180/180" in Australia); when appropriate the IFC format allows the specification of relevant units of measurement.
**Properties** are identified by a name (**BaseName** in IDS), such as "FireRating", and are grouped into **Property Sets** that help keep them organised by similar subject matters. Properties also have **Values**, which are of particular types, measures and sometimes units.

buildingSMART provides standardised **Property Sets** and **Properties** to help seamless data-exchange around the world.
For example, the "FireRating" **Property** is part of the "Pset\_WallCommon" **Property Set** as defined by buildingSMART.
buildingSMART provides standardised **Property Sets** and **Properties** to help seamless data exchange. For example, the "FireRating" **Property** is part of the "Pset\_WallCommon" **Property Set**.

Users can also define their own **Properties** and **Property Sets**, which may be unique to the project, or distributed using the **Property Set** templates feature of IFC.
Naturally, it is encouraged to require **Properties** that are standardised by buildingSMART before inventing custom ones.
Users can also define their own (custom) **Properties** and **Property Sets**, which may be unique to the project or distributed using the **Property Set** templates feature of IFC. Naturally, it is encouraged to require **Properties** that are standardised by buildingSMART before inventing custom ones.

All standardised **Property Set** have a reserved name prefixed (either "Pset_" or "Qto_"); it is prohibited to use the standardised prefixes "Pset_" and "Qto_" for custom properties.

Standardised **Properties** are applicable to different entities. For example, some properties such as **LoadBearing** can be applied to walls, columns, and beams, but not furniture, ducts, or cables.
Standardised **Properties** apply to different entities. For example, some properties such as **LoadBearing** can be applied to walls, columns, and beams, but not furniture, ducts, or cables.
This is known as the **Applicable Entity**.
When specifying **Properties** in an IDS, it is important to consider which objects they can apply to.
All sorts of objects can have **Properties** applied, not only physical objects like doors, windows, and slabs, but also non-physical objects like tasks, materials, structural profile cross sections, or labour resources.

A special type of **Property** is known as a **Quantity**.
Whereas **Properties** refer to any arbitrary information about an object, **Quantities** refer specifically to calculated dimensions of the object, such as length, width, height, surface area, or net volume.
A special kind of **Property** is known as a **Quantity**. Whereas **Properties** refer to any arbitrary information about an object, **Quantities** refer specifically to calculated dimensions of the object, such as length, width, height, surface area, or net volume.
IFC makes a distinction between **Properties** and **Quantities**, but in IDS they are interchangeable, and you are allowed to specify **Quantities** just the same as a **Property** with this facet.
Just like **Properties**, **Quantities** are grouped into **Quantity Sets** and have a **Value**.

To see what **Properties** are standardised by buildingSMART, check the following lists below.
You will see a list of **Property Sets**. Clicking on a **Property Set** will bring you to its page,
which will show the **Applicable Entity** just below the page title, as well as a table of **Property Names** and expected data types for the **Values**, and have an **Applicable Entity**.
which will show the **Applicable Entity** just below the page title, as well as a table of **Property Names** and expected data types for the **Values** and have an **Applicable Entity**.

- [IFC4X3_ADD2 Property and Quantity Sets](http://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/annex-b3.html)
- [IFC4 Property Sets](https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/link/alphabeticalorder-property-sets.htm)
Expand All @@ -37,9 +32,27 @@ Note that IFC2X3 only has buildingSMART standardised properties, not quantities.

Instead of checking the documentation, your IDS authoring software may help you to shortlist valid **Property Sets**.

### Supported types of properties

There are various types of properties in IFC. The IDS allows specifying simple [single values](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPropertySingleValue.htm), [bounded values](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPropertyBoundedValue.htm), [lists](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPropertyListValue.htm), [tables](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPropertyTableValue.htm), and [enumerations](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPropertyEnumeratedValue.htm), while [~~complex properties~~](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcComplexProperty.htm) and [~~reference values~~](https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/lexical/IfcPropertyReferenceValue.htm) are not supported by IDS.

The interpretation of a list, table, bounded and enumerated property type requirement is that an IDS check should pass if any matching value of that property is present in IFC.
If an IDS value is specified as a range (with min/maxInc/Exclusive restriction), then all IFC values should be within that range.
For example, if an IDS specifies the value to be >2 and <5

| Lower Bound | Upper Bound | Expected Result |
| ------------| ---------- | -----------|
|3 | 4 | ✔️ |
| | 4 ||
|3 | ||
|2 | 3 ||
|4 | 6 ||

### Property data types

In IDS facets, **Properties** may have a data type that constrains the expected format in which the property will be stored (e.g. text value, a boolean, or a number).
If it is a number, the value will be unit-less, such as a count of a value and the unit dependent on the measure associated with teh specified `dataType`.
Our [unit documentation](units.md) provides the list of acceptable measures and the SI unit used for their expression. For more information consult the IFC documentation at the following links:
If it is a number, the value will be unit-less, such as a count of a value and the unit dependent on the measure associated with the specified `dataType`.
Our [unit documentation](units.md) provides the list of acceptable measures and the SI unit used for their expression. For more information, consult the IFC documentation at the following links:

- [IFC4X3_ADD2 data types](http://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/annex-b2.html)
- [IFC4 data types](https://standards.buildingsmart.org/IFC/RELEASE/IFC4/ADD2_TC1/HTML/link/alphabeticalorder-defined-types.htm)
Expand All @@ -63,9 +76,9 @@ For convenience, a short list of common data types are listed here:
| IFCDURATION | A time duration, such as 3 months, 1 week, 4 days, or 1 hour. |

IDS currently specifies all measure-based values based on SI units. You can see the full list of units specified for each data type in the [IDS units table](units.md).
Note that although you can use a data type to request a particular measurement (e.g. an IFCLENGTHMEASURE), you cannot use IDS to request that the length is measured with a particular unit (e.g. meters, inches, or millimeters).
Note that although you can use a data type to request a particular measurement (e.g. an IFCLENGTHMEASURE), you cannot use IDS to request that the length is measured with a particular unit (e.g. meters, inches, or millimetres).

Properties are critical providing supplementary information to objects in a model.
Properties are critical in providing supplementary information to objects in a model.

It is encouraged to follow buildingSMART standardised **Properties** wherever possible to ensure that data is highly structured and can be predictably retrieved.

Expand All @@ -76,8 +89,8 @@ It is encouraged to follow buildingSMART standardised **Properties** wherever po
| **Property Set** | ✔️ | ✔️ | Any custom or buildingSMART standardised property set name. Standardised names must begin with "Pset_" or "Qto_" and can be found in the IFC documentation. | The object has the specified property set. |
| **Base Name** | ✔️ | ✔️ | Any text property name. Standardised buildingSMART property names can be found in the buildingSMART documentation. | The property must exist in the specified property set and have a non-empty value. |
| **Data Type** || ✔️ | A valid data type compatible with the referenced schema version, expressed in UPPERCASE. | The value must use the specified data type. The units specified in the IDS use the [IDS units table](units.md), though the project may use any unit, so project values will have to be converted to the SI unit before comparison. User Interfaces are permitted to display any unit that the developers or the users prefer. |
| **Value** || ✔️ | Any value appropriate to the data type of the property. If not specified, any non-empty value is allowed. The value of measures types will be stored according to the unit defined in the [IDS units table](units.md) | The value of the property must match, see [DataType documentation](DataTypes.md#xml-base-types) for more information. |
| **URI** ||| Uniform Resource Identifier of the property. The resource should include a name and a definition, and preferably comply with ISO 23386. | One source of valid URIs is [the bSDD](https://search.bsdd.buildingsmart.org/). An example URI for a "Fire Rating": [https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/FireRating](https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/FireRating). |
| **Value** || ✔️ | Any value appropriate to the data type of the property. If not specified, any non-empty value is allowed. The value of measures types will be stored according to the unit defined in the [IDS units table](units.md) | The value of the property must match; see [DataType documentation](../ImplementersDocumentation/DataTypes.md#xml-base-types) for more information. |
| **URI** ||| Uniform Resource Identifier of the property. The resource should include a name and a definition and preferably comply with ISO 23386. | One source of valid URIs is [the bSDD](https://search.bsdd.buildingsmart.org/). An example URI for a "Fire Rating": [https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/FireRating](https://identifier.buildingsmart.org/uri/buildingsmart/ifc/4.3/prop/FireRating). |

## Examples

Expand Down

0 comments on commit 5d3d5f6

Please sign in to comment.