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

To confirm quantity takeoff for paving work in a road improvement project, please create an IDS that checks paving information.
The targets are the roadway and sidewalk paving elements in the BIM/CIM model.
As a prerequisite for linkage to the quantity-estimation system, we want to confirm that area and thickness information by paving type has been entered without omissions.

[Check items]
- Paving type: One of the following must be entered
  - Dense-graded asphalt pavement
  - Drainage pavement
  - Interlocking block pavement
- Paving area [㎡]: A value is entered, and it is 0.1㎡ or more  
- Paving thickness [m]: A value is entered, and it is within the range of 0.03 m or more and 0.4 m or less

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>Road improvement_Paving work_Before quantity-estimation linkage_Paving information check</ids:title>
    <ids:version>1.0.0</ids:version>
  </ids:info>
  <ids:specifications>
    <ids:specification name="Paving element_Paving information check" ifcVersion="IFC4X3_ADD2" description="Make paving type, area, and thickness (cm) required, and check the range (IFC2X3)">
      <ids:applicability minOccurs="1" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCPAVEMENT</ids:simpleValue>
          </ids:name>
        </ids:entity>
      </ids:applicability>
      <ids:requirements>
        <ids:property dataType="IFCLABEL">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Paving type</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Dense-graded asphalt pavement"/>
              <xs:enumeration value="Drainage pavement"/>
              <xs:enumeration value="Interlocking block pavement"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCAREAMEASURE">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Paving area</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:double">
              <xs:minInclusive value="0.1"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCLENGTHMEASURE">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Paving thickness</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:double">
              <xs:minInclusive value="0.03"/>
              <xs:maxInclusive value="0.4"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>
</ids:ids>

user: Because paving elements other than roadway/sidewalk are also included, please target only elements whose Applicability Name includes "Roadway" or "Sidewalk".

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>Road improvement_Paving work_Before quantity-estimation linkage_Paving information check</ids:title>
    <ids:version>1.0.0</ids:version>
  </ids:info>
  <ids:specifications>
    <ids:specification name="Paving element_Paving information check" ifcVersion="IFC4X3_ADD2" description="Make paving type, area, and thickness (cm) required, and check the range (IFC2X3)">
      <ids:applicability minOccurs="1" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCPAVEMENT</ids:simpleValue>
          </ids:name>
        </ids:entity>
        <ids:attribute>
          <ids:name>
            <ids:simpleValue>Name</ids:simpleValue>
          </ids:name>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Roadway"/>
              <xs:enumeration value="Sidewalk"/>
            </xs:restriction>
          </ids:value>
        </ids:attribute>
      </ids:applicability>
      <ids:requirements>
        <ids:property dataType="IFCLABEL">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Paving type</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Dense-graded asphalt pavement"/>
              <xs:enumeration value="Drainage pavement"/>
              <xs:enumeration value="Interlocking block pavement"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCAREAMEASURE">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Paving area</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:double">
              <xs:minInclusive value="0.1"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCLENGTHMEASURE">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Paving thickness</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:double">
              <xs:minInclusive value="0.03"/>
              <xs:maxInclusive value="0.4"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>
</ids:ids>

user: Fine-tune it so that Roadway and Sidewalk are specified using a regular expression.

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>Road improvement_Paving work_Before quantity-estimation linkage_Paving information check</ids:title>
    <ids:version>1.0.0</ids:version>
  </ids:info>
  <ids:specifications>
    <ids:specification name="Paving element_Paving information check" ifcVersion="IFC4X3_ADD2" description="Make paving type, area, and thickness (cm) required, and check the range (IFC2X3)">
      <ids:applicability minOccurs="1" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCPAVEMENT</ids:simpleValue>
          </ids:name>
        </ids:entity>
        <ids:attribute>
          <ids:name>
            <ids:simpleValue>Name</ids:simpleValue>
          </ids:name>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="(Roadway|Sidewalk)"/>
            </xs:restriction>
          </ids:value>
        </ids:attribute>
      </ids:applicability>
      <ids:requirements>
        <ids:property dataType="IFCLABEL">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Paving type</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Dense-graded asphalt pavement"/>
              <xs:enumeration value="Drainage pavement"/>
              <xs:enumeration value="Interlocking block pavement"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCAREAMEASURE">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Paving area</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:double">
              <xs:minInclusive value="0.1"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <ids:property cardinality="required" dataType="IFCLENGTHMEASURE">
          <ids:propertySet>
            <xs:restriction base="xs:string">
              <xs:pattern value="^(?!(Pset_|Qto_)).+"/>
            </xs:restriction>
          </ids:propertySet>
          <ids:baseName>
            <ids:simpleValue>Paving thickness</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:double">
              <xs:minInclusive value="0.03"/>
              <xs:maxInclusive value="0.4"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>
</ids:ids>