Skip to content

Ten principles for a future IFC

Léon van Berlo edited this page Aug 20, 2020 · 3 revisions

1. Follows contemporary approaches and standards

Use the technology that developers and end-users are already familiar with.

Example: Consider more standard hexadecimal encoding as opposed to the bespoke GlobalId base64 encoding

Example: Consider glTF as a standardized representation of triangulated geometry

Example: Consider UTF8 as the representation for internationalized character sets

2. Favors simplicity over complexity

Complexity and additional indirections have often been added for versatility, upwards compatibility or efficiency, but simplicity should be the foremost concern without a significant loss of expressiveness.

Example from schema:

ENTITY IfcStyledItem
    Item : OPTIONAL IfcRepresentationItem;
    Styles : SET [1:?] OF IfcStyleAssignmentSelect;
    Name : OPTIONAL IfcLabel;
END_ENTITY;
    
ENTITY IfcPresentationStyleAssignment;
    Styles : SET [1:?] OF IfcPresentationStyleSelect;
END_ENTITY;

TYPE IfcPresentationStyleSelect = SELECT
    (IfcCurveStyle
    ,IfcFillAreaStyle
    ,IfcNullStyle
    ,IfcSurfaceStyle
    ,IfcTextStyle);
END_TYPE;

ENTITY IfcSurfaceStyle
    Side : IfcSurfaceSide;
    Styles : SET [1:5] OF IfcSurfaceStyleElementSelect;
END_ENTITY;

TYPE IfcSurfaceStyleElementSelect = SELECT
    (IfcExternallyDefinedSurfaceStyle
    ,IfcSurfaceStyleLighting
    ,IfcSurfaceStyleRefraction
    ,IfcSurfaceStyleShading
    ,IfcSurfaceStyleWithTextures);
END_TYPE;

ENTITY IfcSurfaceStyleShading
    SurfaceColour : IfcColourRgb;
    Transparency : OPTIONAL IfcNormalisedRatioMeasure;
END_ENTITY;

Explanation: There are a lot of indirections in the styled item association, i.e. to colour an element. While understandable from the point of view of (a) assigning styles to wide variety of items, rendering surfaces, hatches, line styles and (b) inheritance of other step resources, the current approach impacts simplicity.

Example from schema:

TYPE IfcPropertySetDefinitionSet = SET [1:?] OF IfcPropertySetDefinition;
END_TYPE;

Explanation: This entity was added to associate multiple property sets to elements in the same relationship for performance reasons. Yet, to enforce backwards compatibility a SELECT had to be constructed to also allow the previous singular association.

3. Has no single-purpose resources

Single purpose resources (analogous to the parts 4x, 5x in STEP) increase implementation effort without adding enough value. Single-purpose definitions should be prevented or eliminated when there are viable more versatile alternatives.

Example: IfcRevolvedAreaSolidTapered

Explanation: Geometrical entity specifically for tapered elbow flow segments

4. Strives for interoperability and has no competing modeling paradigms

Multiple ways of modeling the same situtation hinders interoperability and increases implementation effort.

Example: IfcMaterialLayerSet and element decomposition are both used for compound material layers.

Example: IfcBooleanResult and IfcOpeningElement both are used to model voids.

5. Appropriateness

Appropriate modeling constructs are used to implement data modeling principles.

Example of violation from schema:

Quote:

The differences between the 1st and 2nd level space boundaries is identified by:

    - 1st level:
        * SELF\IfcRoot.Name = "1stLevel"
        * SELF\IfcRootDescription = NIL
    - 2nd level:
        * SELF\IfcRoot.Name = "2ndLevel"
        * SELF\IfcRootDescription = "2a", or "2b"

Explanation: The name and description attributes of the space boundary relationships typify an specialization. While understandable to enforce upwards compatibility these kind of implicit semantics should be avoided and subtypes should have been used instead (as is the case now).

6. Versatility

Modeling constructs are to be limited to a well-supported subset of concepts supported in programming languages (Java, C++, C#, Python), schema languages (OWL, XSD, JsonSchema), data formats (SPFF, XML, RDF, JSON, HDF5).

Question: What does this imply for "algebraic sum types" (SELECT) it seems rather well supported in all formats (maybe least in HDF5)

Question: What does this imply for ordered aggregates (LIST/ARRAY) it seems rather well supported in all formats (although not as efficient in RDF)

7. Clarity

Using clear attribute and entity names will prevent confusion. Do not depend on extensive documentation necessary for an initial understanding.

8. A reduced implementation effort for (a) authoring (b) processing

A reduced amount of entities and geometric resources without loss of expressiveness will result in less implementation effort especially for related domains such as urban planning, facility management, geospatial systems.

9. Harmonious and consistent

Consistency reduces implementation effort and confusion.

Example: IfcConnectedFaceSet.CfsFaces (SET) IfcPolygonalFaceSet.Faces (LIST)

Explanation: In the example above two attributes with more or less identical meaning and intention have both a different name CfsFaces vs just Faces and a different type (ordered vs unordered aggregate), there is likely no valid reason for this distinction.

10. Modularity

No one standard can/should rule all use-cases. IFC should have a clear focus and scope. Although use-cases cán be supported is does not mean they should be when there are alternative standards available. Modularity helps in pairings with other standards and reduces implementation effort when only relevant modules need to be implemented. This means that extensive relationships between distinct modules need to be minimized.