user: IDS Version: IFC4X3_ADD2
filename: row-0050.ids

I want to check whether the air handling unit filter replacement is properly done twice a year.
 Check items:
- Is the equipment management ID entered?
- Is the installation location name entered?
- Is the filter replacement cycle set to 6 months?
- Are 2 or more number of replacements performed in the past 1 year?  

Please provide an IDS that displays an error for air handling unit filters that do not clear all items.

assistant: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ids:ids xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://standards.buildingsmart.org/IDS http://standards.buildingsmart.org/IDS/1.0/ids.xsd" xmlns:ids="http://standards.buildingsmart.org/IDS">
  <!--edit with ONESTRUCTION Inc.-->
  <ids:info>
    <ids:title>Air handling unit filter replacement management check</ids:title>
    <ids:description>Requirements definition to confirm whether air handling unit filter replacement is carried out twice a year</ids:description>
  </ids:info>
  <ids:specifications>
    <ids:specification name="Confirmation of filter replacement twice a year" ifcVersion="IFC4 IFC4X3_ADD2">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCFILTER</ids:simpleValue>
          </ids:name>
        </ids:entity>
      </ids:applicability>
      <ids:requirements>
        <ids:property cardinality="required" dataType="IFCIDENTIFIER">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Equipment management ID</ids:simpleValue>
          </ids:baseName>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCLABEL">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Installation location name</ids:simpleValue>
          </ids:baseName>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCDURATION">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Filter replacement cycle</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <ids:simpleValue>P6M</ids:simpleValue>
          </ids:value>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCCOUNTMEASURE">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Number of replacements performed</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:integer">
              <xs:minInclusive value="2"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>
</ids:ids>

user: The IFC version is only IFC4X3_ADD2
For "Are 2 or more replacement execution dates recorded in the past 1 year?", check it as optional.
For "Is the equipment management ID entered?", I want to use a regular expression and also specify that numbers are included.

assistant: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ids:ids xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://standards.buildingsmart.org/IDS http://standards.buildingsmart.org/IDS/1.0/ids.xsd" xmlns:ids="http://standards.buildingsmart.org/IDS">
  <!--edit with ONESTRUCTION Inc.-->
  <ids:info>
    <ids:title>Air handling unit filter replacement management check</ids:title>
    <ids:description>Requirements definition to confirm whether air handling unit filter replacement is carried out twice a year</ids:description>
  </ids:info>
  <ids:specifications>
    <ids:specification name="Confirmation of air handling unit filter replacement twice a year" ifcVersion="IFC4X3_ADD2">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCFILTER</ids:simpleValue>
          </ids:name>
        </ids:entity>
      </ids:applicability>
      <ids:requirements>
        <ids:property cardinality="required" dataType="IFCIDENTIFIER">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Equipment management ID</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="[0-9]+"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCLABEL">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Installation location name</ids:simpleValue>
          </ids:baseName>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCDURATION">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Filter replacement cycle</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <ids:simpleValue>P6M</ids:simpleValue>
          </ids:value>
        </ids:property>
        <ids:property cardinality="optional" dataType="IFCCOUNTMEASURE">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Number of replacements performed</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:integer">
              <xs:minInclusive value="2"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>
</ids:ids>