How to define Property requirements in an unknown/unstated PropertySet
The Property facet specifies the Property Set and Name are both required parameters - which initially makes sense to avoid ambiguity etc. However it's relatively common to find EIR specifications where the name of Property is specified but the PropertySet is not explicitly defined. For instance this UK BIM Framework template does not state the Pset, just the Property. E.g. "Building [GrossFloorArea]" is requiring a property named of 'GrossFloorArea' on all IfcBuildings.
How is it intended this kind of use case should be defined in IDS?
You might think you can create a Regex Constraint using a wildcard like this:
<specification ifcVersion="IFC2X3" name="DOOR [AcousticRating]" description="All Doors should have an Acoustic Rating" maxOccurs="unbounded">
<applicability>
<entity>
<name>
<simpleValue>IFCDOOR</simpleValue>
</name>
</entity>
</applicability>
<requirements>
<property measure="IfcLabel" minOccurs="1" maxOccurs="1">
<propertySet>
<xs:restriction>
<xs:pattern value=".*" />
</xs:restriction>
</propertySet>
<name>
<ids:simpleValue>AcousticRating</ids:simpleValue>
</name>
</property>
[snip]
... but if the element has multiple related PSets and the required property is only in one of them, verification will fail if we're correctly implementing for this test case https://github.com/buildingSMART/IDS/blob/master/Documentation/testcases/property/fail-all_matching_property_sets_must_satisfy_requirements_2_3.ids (which basically says the property must be in all matching PSets)
So the question is, how can a user define a requirement where they don't yet know / don't care what PropertySet a property is provided in.
Possible answers:
- Is the property/fail-all_matching_property_sets_must_satisfy_requirements_2_3.ids test (and _3_3.ids) even correct / appropriate?
- Would it be appropriate to specify the property cardinality as
minOccurs="1" maxOccurs="unbounded"? - Is there a case to make PropertySet not required?
- Do we have to special-case this wildcard scenario to enable this use case (what we've currently done)