Skip to content

Conditional PartOf specifications #379

@atomczak

Description

@atomczak

Discussed in #341

Originally posted by andyward September 12, 2024
I'd like to write a specification that implements the requirement that All spaces belonging to a BuildingStorey '01' should have their space names matching '01-.*' (or the converse requirement: Spaces named like '01-.*' must be part of a BuildingStorey with Name '01' )

I'm struggling to see how I could do this in IDS1.0. I was hoping to be able to do this with the partOf facet and using RelAggregates but there's no obvious way to apply a requirement to the 'child' side of the relationship.

e.g.

<specification name="Spaces on level '01' must be named based on the level" ifcVersion="IFC2X3">
  <applicability maxOccurs="unbounded">
    <entity>
      <name>
        <simpleValue>IFCBUILDINGSTOREY</simpleValue>
      </name>
    </entity>
    <ids:attribute>
      <ids:name>
        <simpleValue>Name</simpleValue>
      </ids:name>
      <ids:value>
        <simpleValue>01</simpleValue>
      </ids:value>
    </ids:attribute>
  </applicability>
  <requirements>
    <partOf relation="IFCRELAGGREGATES">
      <entity>
        <name>
          <simpleValue>IFCSPACE</simpleValue>
        </name>
      </entity>
      <!-- and these spaces should have Name attribute matching pattern '01-.*' -->
    </partOf>
  </requirements>
</specification>

Any ideas? or is this a usecase to consider for a future IDS? I'd imagine similar use cases for things like ensuring components are in the correct IfcSystem (by classification, name etc).

Metadata

Metadata

Assignees

No one assigned

    Labels

    discuss & decideplease contributeA PR is welcome for this issue. Please target the `development` branch.schemaIssues that impact the schema file

    Type

    No type

    Projects

    Status

    Todo

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions