Skip to content

Empty string and cardinality of requirements #403

@manuel-furia

Description

@manuel-furia

Hi,

a customer was confused about components with an empty string IFCLABEL property passing the following ids check:

<ids:specifications>
    <ids:specification name="Specification 1" ifcVersion="IFC4">
      <ids:applicability minOccurs="1" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCWALL</ids:simpleValue>
          </ids:name>
        </ids:entity>
      </ids:applicability>
      <ids:requirements>
        <ids:property cardinality="required" dataType="IFCLABEL">
          <ids:propertySet>
            <ids:simpleValue>Pset_Name</ids:simpleValue>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Foo</ids:simpleValue>
          </ids:baseName>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>

From the customer's point of view, there is no difference between the property having null value or empty string, since in both cases the required data is not there so the check should fail.
The example in the "Cardinality of Requirements" section of the ids documentation states, for the "required" cardinality, that "Matching entities have a ePset_SpaceOMA/TravelDirection property of type IFCLABEL and non null value".

In the current spec, should IFCLABEL('') be considered non-null? If it is, does it make sense from the user's point of view? Most non-developers would not know/care about the distinction between null and empty string, and authoring tools could be producing either when the value of a property is deleted.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions