Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to define Property requirements in an unknown/unstated PropertySet #189

Open
andyward opened this issue Sep 11, 2023 · 0 comments
Open

Comments

@andyward
Copy link
Contributor

andyward commented Sep 11, 2023

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:

  1. Is the property/fail-all_matching_property_sets_must_satisfy_requirements_2_3.ids test (and _3_3.ids) even correct / appropriate?
  2. Would it be appropriate to specify the property cardinality as minOccurs="1" maxOccurs="unbounded"?
  3. Is there a case to make PropertySet not required?
  4. Do we have to special-case this wildcard scenario to enable this use case (what we've currently done)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants