You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There are several cases in IFC (11 specifically in IFC4x3 by my count) of schema attributes that declare LISTS of LISTS. Most of these relate to geometry and share a similar flavor:
ControlPointsList : LIST [2:?] OF LIST [2:?] OF IfcCartesianPoint; on IfcBSplineSurface
CoordList : LIST [1:?] OF LIST [2:2] OF IfcLengthMeasure; on IfcCartesianPointList2D
CoordList : LIST [1:?] OF LIST [3:3] OF IfcLengthMeasure; on IfcCartesianPointList3D
ColourList : LIST [1:?] OF LIST [3:3] OF IfcNormalisedRatioMeasure; on IfcColourRgbList
InnerCoordIndices : LIST [1:?] OF LIST [3:?] OF UNIQUE IfcPositiveInteger; on IfcIndexedPolygonalFaceWithVoids
TexCoordIndex : OPTIONAL LIST [1:?] OF LIST [3:3] OF IfcPositiveInteger; on IfcIndexedTriangleTextureMap
WeightsData : LIST [2:?] OF LIST [2:?] OF IfcReal; on IfcRationalBSplineSurfaceWithKnots
InnerTexCoordIndices : LIST [1:?] OF LIST [3:?] OF UNIQUE IfcPositiveInteger; on IfcTextureCoordinateIndicesWithVoids
TexCoordsList : LIST [1:?] OF LIST [2:2] OF IfcParameterValue; on IfcTextureVertexList
OPTIONAL LIST [1:?] OF LIST [3:3] OF IfcParameterValue; on IfcTriangulatedFaceSet
CoordIndex : LIST [1:?] OF LIST [3:3] OF IfcPositiveInteger; on IfcTriangulatedFaceSet
Despite IFC providing a deep and comprehensive type system, these nested LISTs seem to strip away semantic intent. Two concrete examples:
Despite IFC defining a dedicated IfcCartesianPoint entity, whose members are IfcLengthMeasure, we're instead redeclaring a similar definition as LIST [2:2] OF IfcLengthMeasure in IfcCartesianPointList2D. Why not define IfcCartesianPointList2D in terms of a LIST OF [1:?] IfcCartesianPoint2D?
Despite IFC defining a dedicated IfcColourRgb entity, whose members are IfcNormalisedRatioMeasure, we're instead redeclaring a similar definition as LIST [3:3] OF IfcNormalisedRatioMeasure; in IfcColourRgbList. Why not define IfcColourRgbList as LIST [1:?] OF IfcColourRgb?
The other examples are similar, and removal of the nested lists increases model cohesion.
By removing all occurrences of nested lists, all multi-valued attributes become single-level lists or sets, which simplifies encoding and transformation across technology backends.
Is this a proposal to 'add', 'remove' of 'change' entities in the schema (pick one): change
What do we win: consistency, cohesion, simplified integration patterns.
What do we lose: Software vendors would need to update their processing code for these types. Increase in file size.
Schema impact: Likely introduction of several new TYPEs, and removal of all nested LISTS.
Instance model impact: All nested lists replaced with single-level lists or sets of ENTITY or TYPE instances.
Backwards compatible: No.
Automatic migration possible: Yes.
Additional implications:
Note that not all points need to be satisfied!
Backwards compatibility and file size are not concerns.
The text was updated successfully, but these errors were encountered:
Description of the proposal:
There are several cases in IFC (11 specifically in IFC4x3 by my count) of schema attributes that declare LISTS of LISTS. Most of these relate to geometry and share a similar flavor:
ControlPointsList : LIST [2:?] OF LIST [2:?] OF IfcCartesianPoint;
onIfcBSplineSurface
CoordList : LIST [1:?] OF LIST [2:2] OF IfcLengthMeasure;
onIfcCartesianPointList2D
CoordList : LIST [1:?] OF LIST [3:3] OF IfcLengthMeasure;
onIfcCartesianPointList3D
ColourList : LIST [1:?] OF LIST [3:3] OF IfcNormalisedRatioMeasure;
onIfcColourRgbList
InnerCoordIndices : LIST [1:?] OF LIST [3:?] OF UNIQUE IfcPositiveInteger;
onIfcIndexedPolygonalFaceWithVoids
TexCoordIndex : OPTIONAL LIST [1:?] OF LIST [3:3] OF IfcPositiveInteger;
onIfcIndexedTriangleTextureMap
WeightsData : LIST [2:?] OF LIST [2:?] OF IfcReal;
onIfcRationalBSplineSurfaceWithKnots
InnerTexCoordIndices : LIST [1:?] OF LIST [3:?] OF UNIQUE IfcPositiveInteger;
onIfcTextureCoordinateIndicesWithVoids
TexCoordsList : LIST [1:?] OF LIST [2:2] OF IfcParameterValue;
onIfcTextureVertexList
OPTIONAL LIST [1:?] OF LIST [3:3] OF IfcParameterValue;
onIfcTriangulatedFaceSet
CoordIndex : LIST [1:?] OF LIST [3:3] OF IfcPositiveInteger;
onIfcTriangulatedFaceSet
Despite IFC providing a deep and comprehensive type system, these nested LISTs seem to strip away semantic intent. Two concrete examples:
IfcCartesianPoint
entity, whose members areIfcLengthMeasure
, we're instead redeclaring a similar definition asLIST [2:2] OF IfcLengthMeasure
inIfcCartesianPointList2D
. Why not defineIfcCartesianPointList2D
in terms of aLIST OF [1:?] IfcCartesianPoint2D
?IfcColourRgb
entity, whose members areIfcNormalisedRatioMeasure
, we're instead redeclaring a similar definition asLIST [3:3] OF IfcNormalisedRatioMeasure;
inIfcColourRgbList
. Why not defineIfcColourRgbList
asLIST [1:?] OF IfcColourRgb
?The other examples are similar, and removal of the nested lists increases model cohesion.
Describe how it contributes to the objectives (https://github.com/buildingSMART/NextGen-IFC/wiki/Towards-a-technology-independent-IFC):
By removing all occurrences of nested lists, all multi-valued attributes become single-level lists or sets, which simplifies encoding and transformation across technology backends.
Is this a proposal to 'add', 'remove' of 'change' entities in the schema (pick one): change
What do we win: consistency, cohesion, simplified integration patterns.
What do we lose: Software vendors would need to update their processing code for these types. Increase in file size.
Schema impact: Likely introduction of several new TYPEs, and removal of all nested LISTS.
Instance model impact: All nested lists replaced with single-level lists or sets of ENTITY or TYPE instances.
Backwards compatible: No.
Automatic migration possible: Yes.
Additional implications:
Note that not all points need to be satisfied!
Backwards compatibility and file size are not concerns.
The text was updated successfully, but these errors were encountered: