user: IDS Version: IFC4
filename: row-0042.ids

I want to check the IFC under the following conditions.
[Check target]
Target equipment: IfcUnitaryEquipment, IfcAirToAirHeatRecovery, IfcFan, IfcCoil, IfcChiller, IfcBoiler, IfcPump  

[Mandatory requirements]
Both of the following two items must be satisfied: 
1. Equipment management number (Property name: Equipment management number): Must not be blank (a value must exist)
2. Periodic inspection interval (Property name: Periodic inspection interval (months)): Must be 6 months

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>Check equipment management number and periodic inspection interval for HVAC-related equipment</ids:title>
  </ids:info>
  <ids:specifications>
    <ids:specification name="HVAC-related equipment_Equipment management number-Periodic inspection interval" ifcVersion="IFC4">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <xs:restriction base="xs:string">
              <xs:enumeration value="IFCUNITARYEQUIPMENT"/>
              <xs:enumeration value="IFCAIRTOAIRHEATRECOVERY"/>
              <xs:enumeration value="IFCFAN"/>
              <xs:enumeration value="IFCCOIL"/>
              <xs:enumeration value="IFCCHILLER"/>
              <xs:enumeration value="IFCBOILER"/>
              <xs:enumeration value="IFCPUMP"/>
            </xs:restriction>
          </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 number</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>Periodic inspection interval</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <ids:simpleValue>P6M</ids:simpleValue>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>
</ids:ids>

user: Create requirements for each equipment element. With that, even if IFCFAN exists but IFCCHILLER does not, it cannot be detected. Create a Specification for each Entity.

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>Check equipment management number and periodic inspection interval for HVAC-related equipment</ids:title>
  </ids:info>
  <ids:specifications>
    <ids:specification name="HVAC-related equipment_Equipment management number-Periodic inspection interval-IFCUNITARYEQUIPMENT" ifcVersion="IFC4">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCUNITARYEQUIPMENT</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 number</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>Periodic inspection interval</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <ids:simpleValue>P6M</ids:simpleValue>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
    <ids:specification name="HVAC-related equipment_Equipment management number-Periodic inspection interval-IFCAIRTOAIRHEATRECOVERY" ifcVersion="IFC4">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCAIRTOAIRHEATRECOVERY</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 number</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>Periodic inspection interval</ids:simpleValue>
          </ids:baseName>
        </ids:property>
      </ids:requirements>
    </ids:specification>
    <ids:specification name="HVAC-related equipment_Equipment management number-Periodic inspection interval-IFCFAN" ifcVersion="IFC4">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCFAN</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 number</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>Periodic inspection interval</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <ids:simpleValue>P6M</ids:simpleValue>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
    <ids:specification name="HVAC-related equipment_Equipment management number-Periodic inspection interval-IFCCOIL" ifcVersion="IFC4">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCCOIL</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 number</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>Periodic inspection interval</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <ids:simpleValue>P6M</ids:simpleValue>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
    <ids:specification name="HVAC-related equipment_Equipment management number-Periodic inspection interval-IFCCHILLER" ifcVersion="IFC4">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCCHILLER</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 number</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>Periodic inspection interval</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <ids:simpleValue>P6M</ids:simpleValue>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
    <ids:specification name="HVAC-related equipment_Equipment management number-Periodic inspection interval-IFCBOILER" ifcVersion="IFC4">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCBOILER</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 number</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>Periodic inspection interval</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <ids:simpleValue>P6M</ids:simpleValue>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
    <ids:specification name="HVAC-related equipment_Equipment management number-Periodic inspection interval" ifcVersion="IFC4">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCPUMP</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 number</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>Periodic inspection interval</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <ids:simpleValue>P6M</ids:simpleValue>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>
</ids:ids>