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

I want to check the following items for architectural and civil elements (wall, column, window, floor).
- Project-specific ID: alphanumeric (10 digits)
- Classification code (10-digit numbers in a sequence of 5 separated by underscores)
- Lifecycle stage (one of Planning, Design, Construction, or Maintenance is entered)

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>Basic information check for architectural and civil elements</ids:title>
  </ids:info>
  <ids:specifications>
    <ids:specification name="Basic information check for architectural and civil elements" ifcVersion="IFC4X3_ADD2">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <xs:restriction base="xs:string">
              <xs:enumeration value="IFCWALL"/>
              <xs:enumeration value="IFCCOLUMN"/>
              <xs:enumeration value="IFCWINDOW"/>
              <xs:enumeration value="IFCSLAB"/>
            </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>Project-specific ID</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^[A-Za-z0-9]{10}$"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <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>Classification code</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^\d{10}(?:_\d{10}){4}$"/>
            </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>Lifecycle stage</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Planning"/>
              <xs:enumeration value="Design"/>
              <xs:enumeration value="Construction"/>
              <xs:enumeration value="Maintenance"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>
</ids:ids>

user: Add a ceiling.
Also, create a separate Specification for each target element.

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>Basic information check for architectural and civil elements</ids:title>
  </ids:info>
  <ids:specifications>
    <ids:specification name="Basic information check for architectural and civil elements (Wall)" ifcVersion="IFC4X3_ADD2">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCWALL</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>Project-specific ID</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^[A-Za-z0-9]{10}$"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <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>Classification code</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^\d{10}(?:_\d{10}){4}$"/>
            </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>Lifecycle stage</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Planning"/>
              <xs:enumeration value="Design"/>
              <xs:enumeration value="Construction"/>
              <xs:enumeration value="Maintenance"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
    <ids:specification name="Basic information check for architectural and civil elements (Column)" ifcVersion="IFC4X3_ADD2">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCCOLUMN</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>Project-specific ID</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^[A-Za-z0-9]{10}$"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <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>Classification code</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^\d{10}(?:_\d{10}){4}$"/>
            </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>Lifecycle stage</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Planning"/>
              <xs:enumeration value="Design"/>
              <xs:enumeration value="Construction"/>
              <xs:enumeration value="Maintenance"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
    <ids:specification name="Basic information check for architectural and civil elements (Window)" ifcVersion="IFC4X3_ADD2">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCWINDOW</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>Project-specific ID</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^[A-Za-z0-9]{10}$"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <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>Classification code</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^\d{10}(?:_\d{10}){4}$"/>
            </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>Lifecycle stage</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Planning"/>
              <xs:enumeration value="Design"/>
              <xs:enumeration value="Construction"/>
              <xs:enumeration value="Maintenance"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
    <ids:specification name="Basic information check for architectural and civil elements (Floor)" ifcVersion="IFC4X3_ADD2">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCSLAB</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>Project-specific ID</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^[A-Za-z0-9]{10}$"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <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>Classification code</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^\d{10}(?:_\d{10}){4}$"/>
            </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>Lifecycle stage</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Planning"/>
              <xs:enumeration value="Design"/>
              <xs:enumeration value="Construction"/>
              <xs:enumeration value="Maintenance"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
    <ids:specification name="Basic information check for architectural and civil elements (Ceiling)" ifcVersion="IFC4X3_ADD2">
      <ids:applicability minOccurs="0" maxOccurs="unbounded">
        <ids:entity>
          <ids:name>
            <ids:simpleValue>IFCCOVERING</ids:simpleValue>
          </ids:name>
          <ids:predefinedType>
            <ids:simpleValue>CEILING</ids:simpleValue>
          </ids:predefinedType>
        </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>Project-specific ID</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^[A-Za-z0-9]{10}$"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
        <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>Classification code</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:pattern value="^\d{10}(?:_\d{10}){4}$"/>
            </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>Lifecycle stage</ids:simpleValue>
          </ids:baseName>
          <ids:value>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Planning"/>
              <xs:enumeration value="Design"/>
              <xs:enumeration value="Construction"/>
              <xs:enumeration value="Maintenance"/>
            </xs:restriction>
          </ids:value>
        </ids:property>
      </ids:requirements>
    </ids:specification>
  </ids:specifications>
</ids:ids>