xsd

BACnet MVD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ifc="http://www.buildingsmart-tech.org/ifc/IFC4/Add2TC1" targetNamespace="http://www.buildingsmart-tech.org/ifc/IFC4/Add2TC1" elementFormDefault="qualified" attributeFormDefault="unqualified" >
<!-- created with IFCDOC 11.8 at buildingsmart-tech.org -->
<!--
Copyright by:
buildingSMART International Limited, 1996-2017
Any technical documentation made available by buildingSMART International Limited
is the copyrighted work of buildingSMART International Limited and is owned by the
buildingSMART International Limited. It may be photocopied, used in software development,
or translated into another computer language without prior written consent from
buildingSMART International Limited provided that full attribution is given.
Prior written consent is required if changes are made to the technical specification.
This material is delivered to you as is and buildingSMART International Limited makes
no warranty of any kind with regard to it, including, but not limited to, the implied
warranties as to its accuracy or fitness for a particular purpose. Any use of the
technical documentation or the information contained therein is at the risk of the user.
Documentation may include technical or other inaccuracies or typographical errors.
buildingSMART International Limited shall not be liable for errors contained therein or
for incidental consequential damages in connection with the furnishing, performance or use
of the material. The information contained in this document is subject to change without notice.
-->
<!-- root element declaration (for SCHEMA definitions) -->
<xs:element name="uos" type="ifc:uos" abstract="true"/>
<xs:simpleType name="Seq-anyURI">
<xs:list itemType="xs:anyURI"/>
</xs:simpleType>
<xs:complexType name="uos" abstract="true">
<xs:sequence>
<xs:element name="header" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
<xs:element name="time_stamp" type="xs:dateTime" minOccurs="0"/>
<xs:element name="author" type="xs:string" minOccurs="0"/>
<xs:element name="organization" type="xs:string" minOccurs="0"/>
<xs:element name="preprocessor_version" type="xs:string" minOccurs="0"/>
<xs:element name="originating_system" type="xs:string" minOccurs="0"/>
<xs:element name="authorization" type="xs:string" minOccurs="0"/>
<xs:element name="documentation" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="optional"/>
<xs:attribute name="express" type="ifc:Seq-anyURI" use="optional"/>
<xs:attribute name="configuration" type="ifc:Seq-anyURI" use="optional"/>
</xs:complexType>
<xs:element name="ifcXML" type="ifc:ifcXML" substitutionGroup="ifc:uos"/>
<xs:complexType name="ifcXML">
<xs:complexContent>
<xs:extension base="ifc:uos">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="ifc:Entity"/>
</xs:choice>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- element and complex type declarations (for ENTITY definitions) -->
<xs:element name="IfcActionRequest" type="ifc:IfcActionRequest" substitutionGroup="ifc:IfcControl" nillable="true"/>
<xs:complexType name="IfcActionRequest">
<xs:complexContent>
<xs:extension base="ifc:IfcControl">
<xs:attribute name="PredefinedType" type="ifc:IfcActionRequestTypeEnum" use="optional"/>
<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcActor" type="ifc:IfcActor" substitutionGroup="ifc:IfcObject" nillable="true"/>
<xs:complexType name="IfcActor">
<xs:complexContent>
<xs:extension base="ifc:IfcObject">
<xs:sequence>
<xs:element name="TheActor">
<xs:complexType>
<xs:group ref="ifc:IfcActorSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcActorRole" type="ifc:IfcActorRole" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcActorRole">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Role" type="ifc:IfcRoleEnum" use="optional"/>
<xs:attribute name="UserDefinedRole" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcActuator" type="ifc:IfcActuator" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
<xs:complexType name="IfcActuator">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElement">
<xs:attribute name="PredefinedType" type="ifc:IfcActuatorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcActuatorType" type="ifc:IfcActuatorType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
<xs:complexType name="IfcActuatorType">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcActuatorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAddress" type="ifc:IfcAddress" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcAddress" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Purpose" type="ifc:IfcAddressTypeEnum" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="UserDefinedPurpose" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAdvancedBrep" type="ifc:IfcAdvancedBrep" substitutionGroup="ifc:IfcManifoldSolidBrep" nillable="true"/>
<xs:complexType name="IfcAdvancedBrep">
<xs:complexContent>
<xs:extension base="ifc:IfcManifoldSolidBrep"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAdvancedBrepWithVoids" type="ifc:IfcAdvancedBrepWithVoids" substitutionGroup="ifc:IfcAdvancedBrep" nillable="true"/>
<xs:complexType name="IfcAdvancedBrepWithVoids">
<xs:complexContent>
<xs:extension base="ifc:IfcAdvancedBrep">
<xs:sequence>
<xs:element name="Voids">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcClosedShell" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcClosedShell"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAdvancedFace" type="ifc:IfcAdvancedFace" substitutionGroup="ifc:IfcFaceSurface" nillable="true"/>
<xs:complexType name="IfcAdvancedFace">
<xs:complexContent>
<xs:extension base="ifc:IfcFaceSurface"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAirTerminal" type="ifc:IfcAirTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcAirTerminal">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcAirTerminalTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAirTerminalBox" type="ifc:IfcAirTerminalBox" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
<xs:complexType name="IfcAirTerminalBox">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowController">
<xs:attribute name="PredefinedType" type="ifc:IfcAirTerminalBoxTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAirTerminalBoxType" type="ifc:IfcAirTerminalBoxType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
<xs:complexType name="IfcAirTerminalBoxType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowControllerType">
<xs:attribute name="PredefinedType" type="ifc:IfcAirTerminalBoxTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAirTerminalType" type="ifc:IfcAirTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcAirTerminalType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcAirTerminalTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAirToAirHeatRecovery" type="ifc:IfcAirToAirHeatRecovery" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcAirToAirHeatRecovery">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcAirToAirHeatRecoveryTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAirToAirHeatRecoveryType" type="ifc:IfcAirToAirHeatRecoveryType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcAirToAirHeatRecoveryType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcAirToAirHeatRecoveryTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAlarm" type="ifc:IfcAlarm" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
<xs:complexType name="IfcAlarm">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElement">
<xs:attribute name="PredefinedType" type="ifc:IfcAlarmTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAlarmType" type="ifc:IfcAlarmType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
<xs:complexType name="IfcAlarmType">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcAlarmTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAnnotation" type="ifc:IfcAnnotation" substitutionGroup="ifc:IfcProduct" nillable="true"/>
<xs:complexType name="IfcAnnotation">
<xs:complexContent>
<xs:extension base="ifc:IfcProduct"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAnnotationFillArea" type="ifc:IfcAnnotationFillArea" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcAnnotationFillArea">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="OuterBoundary" type="ifc:IfcCurve" nillable="true"/>
<xs:element name="InnerBoundaries" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCurve" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCurve"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcApplication" type="ifc:IfcApplication" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcApplication">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="ApplicationDeveloper" type="ifc:IfcOrganization" nillable="true"/>
</xs:sequence>
<xs:attribute name="Version" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="ApplicationFullName" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="ApplicationIdentifier" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAppliedValue" type="ifc:IfcAppliedValue" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcAppliedValue">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="AppliedValue" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcAppliedValueSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="UnitBasis" type="ifc:IfcMeasureWithUnit" nillable="true" minOccurs="0"/>
<xs:element name="Components" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcAppliedValue" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAppliedValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="ApplicableDate" type="ifc:IfcDate" use="optional"/>
<xs:attribute name="FixedUntilDate" type="ifc:IfcDate" use="optional"/>
<xs:attribute name="Category" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Condition" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="ArithmeticOperator" type="ifc:IfcArithmeticOperatorEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcApproval" type="ifc:IfcApproval" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcApproval">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="RequestingApproval" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcActorSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="GivingApproval" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcActorSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Identifier" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="TimeOfApproval" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Level" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Qualifier" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcApprovalRelationship" type="ifc:IfcApprovalRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
<xs:complexType name="IfcApprovalRelationship">
<xs:complexContent>
<xs:extension base="ifc:IfcResourceLevelRelationship">
<xs:sequence>
<xs:element name="RelatingApproval" type="ifc:IfcApproval" nillable="true"/>
<xs:element name="RelatedApprovals">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcApproval" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcApproval"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcArbitraryClosedProfileDef" type="ifc:IfcArbitraryClosedProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
<xs:complexType name="IfcArbitraryClosedProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcProfileDef">
<xs:sequence>
<xs:element name="OuterCurve" type="ifc:IfcCurve" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcArbitraryOpenProfileDef" type="ifc:IfcArbitraryOpenProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
<xs:complexType name="IfcArbitraryOpenProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcProfileDef">
<xs:sequence>
<xs:element name="Curve" type="ifc:IfcBoundedCurve" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcArbitraryProfileDefWithVoids" type="ifc:IfcArbitraryProfileDefWithVoids" substitutionGroup="ifc:IfcArbitraryClosedProfileDef" nillable="true"/>
<xs:complexType name="IfcArbitraryProfileDefWithVoids">
<xs:complexContent>
<xs:extension base="ifc:IfcArbitraryClosedProfileDef">
<xs:sequence>
<xs:element name="InnerCurves">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCurve" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCurve"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAsset" type="ifc:IfcAsset" substitutionGroup="ifc:IfcGroup" nillable="true"/>
<xs:complexType name="IfcAsset">
<xs:complexContent>
<xs:extension base="ifc:IfcGroup">
<xs:sequence>
<xs:element name="OriginalValue" type="ifc:IfcCostValue" nillable="true" minOccurs="0"/>
<xs:element name="CurrentValue" type="ifc:IfcCostValue" nillable="true" minOccurs="0"/>
<xs:element name="TotalReplacementCost" type="ifc:IfcCostValue" nillable="true" minOccurs="0"/>
<xs:element name="Owner" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcActorSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="User" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcActorSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="ResponsiblePerson" type="ifc:IfcPerson" nillable="true" minOccurs="0"/>
<xs:element name="DepreciatedValue" type="ifc:IfcCostValue" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="IncorporationDate" type="ifc:IfcDate" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAsymmetricIShapeProfileDef" type="ifc:IfcAsymmetricIShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcAsymmetricIShapeProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="BottomFlangeWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="OverallDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="WebThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="BottomFlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="BottomFlangeFilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="TopFlangeWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="TopFlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="TopFlangeFilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="BottomFlangeEdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="BottomFlangeSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
<xs:attribute name="TopFlangeEdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="TopFlangeSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAudioVisualAppliance" type="ifc:IfcAudioVisualAppliance" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcAudioVisualAppliance">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcAudioVisualApplianceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAudioVisualApplianceType" type="ifc:IfcAudioVisualApplianceType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcAudioVisualApplianceType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcAudioVisualApplianceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAxis1Placement" type="ifc:IfcAxis1Placement" substitutionGroup="ifc:IfcPlacement" nillable="true"/>
<xs:complexType name="IfcAxis1Placement">
<xs:complexContent>
<xs:extension base="ifc:IfcPlacement">
<xs:sequence>
<xs:element name="Axis" type="ifc:IfcDirection" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAxis2Placement2D" type="ifc:IfcAxis2Placement2D" substitutionGroup="ifc:IfcPlacement" nillable="true"/>
<xs:complexType name="IfcAxis2Placement2D">
<xs:complexContent>
<xs:extension base="ifc:IfcPlacement">
<xs:sequence>
<xs:element name="RefDirection" type="ifc:IfcDirection" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcAxis2Placement3D" type="ifc:IfcAxis2Placement3D" substitutionGroup="ifc:IfcPlacement" nillable="true"/>
<xs:complexType name="IfcAxis2Placement3D">
<xs:complexContent>
<xs:extension base="ifc:IfcPlacement">
<xs:sequence>
<xs:element name="Axis" type="ifc:IfcDirection" nillable="true" minOccurs="0"/>
<xs:element name="RefDirection" type="ifc:IfcDirection" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBSplineCurve" type="ifc:IfcBSplineCurve" abstract="true" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
<xs:complexType name="IfcBSplineCurve" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedCurve">
<xs:sequence>
<xs:element name="ControlPointsList">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCartesianPoint" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCartesianPoint"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Degree" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="CurveForm" type="ifc:IfcBSplineCurveForm" use="optional"/>
<xs:attribute name="ClosedCurve" type="ifc:IfcLogical" use="optional"/>
<xs:attribute name="SelfIntersect" type="ifc:IfcLogical" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBSplineCurveWithKnots" type="ifc:IfcBSplineCurveWithKnots" substitutionGroup="ifc:IfcBSplineCurve" nillable="true"/>
<xs:complexType name="IfcBSplineCurveWithKnots">
<xs:complexContent>
<xs:extension base="ifc:IfcBSplineCurve">
<xs:attribute name="KnotMultiplicities" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcInteger"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Knots" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcParameterValue"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="KnotSpec" type="ifc:IfcKnotType" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBSplineSurface" type="ifc:IfcBSplineSurface" abstract="true" substitutionGroup="ifc:IfcBoundedSurface" nillable="true"/>
<xs:complexType name="IfcBSplineSurface" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedSurface">
<xs:sequence>
<xs:element name="ControlPointsList">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCartesianPoint" minOccurs="4" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCartesianPoint"/>
<xs:attribute ref="ifc:cType" fixed="list list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="UDegree" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="VDegree" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="SurfaceForm" type="ifc:IfcBSplineSurfaceForm" use="optional"/>
<xs:attribute name="UClosed" type="ifc:IfcLogical" use="optional"/>
<xs:attribute name="VClosed" type="ifc:IfcLogical" use="optional"/>
<xs:attribute name="SelfIntersect" type="ifc:IfcLogical" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBSplineSurfaceWithKnots" type="ifc:IfcBSplineSurfaceWithKnots" substitutionGroup="ifc:IfcBSplineSurface" nillable="true"/>
<xs:complexType name="IfcBSplineSurfaceWithKnots">
<xs:complexContent>
<xs:extension base="ifc:IfcBSplineSurface">
<xs:attribute name="UMultiplicities" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcInteger"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="VMultiplicities" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcInteger"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="UKnots" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcParameterValue"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="VKnots" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcParameterValue"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="KnotSpec" type="ifc:IfcKnotType" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBeam" type="ifc:IfcBeam" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcBeam">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcBeamTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBeamStandardCase" type="ifc:IfcBeamStandardCase" substitutionGroup="ifc:IfcBeam" nillable="true"/>
<xs:complexType name="IfcBeamStandardCase">
<xs:complexContent>
<xs:extension base="ifc:IfcBeam"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBeamType" type="ifc:IfcBeamType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcBeamType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcBeamTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBlobTexture" type="ifc:IfcBlobTexture" substitutionGroup="ifc:IfcSurfaceTexture" nillable="true"/>
<xs:complexType name="IfcBlobTexture">
<xs:complexContent>
<xs:extension base="ifc:IfcSurfaceTexture">
<xs:sequence>
<xs:element name="RasterCode" type="ifc:IfcBinary"/>
</xs:sequence>
<xs:attribute name="RasterFormat" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBlock" type="ifc:IfcBlock" substitutionGroup="ifc:IfcCsgPrimitive3D" nillable="true"/>
<xs:complexType name="IfcBlock">
<xs:complexContent>
<xs:extension base="ifc:IfcCsgPrimitive3D">
<xs:attribute name="XLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="YLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="ZLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoiler" type="ifc:IfcBoiler" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcBoiler">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcBoilerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoilerType" type="ifc:IfcBoilerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcBoilerType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcBoilerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBooleanClippingResult" type="ifc:IfcBooleanClippingResult" substitutionGroup="ifc:IfcBooleanResult" nillable="true"/>
<xs:complexType name="IfcBooleanClippingResult">
<xs:complexContent>
<xs:extension base="ifc:IfcBooleanResult"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBooleanResult" type="ifc:IfcBooleanResult" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcBooleanResult">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="FirstOperand">
<xs:complexType>
<xs:group ref="ifc:IfcBooleanOperand"/>
</xs:complexType>
</xs:element>
<xs:element name="SecondOperand">
<xs:complexType>
<xs:group ref="ifc:IfcBooleanOperand"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Operator" type="ifc:IfcBooleanOperator" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoundaryCondition" type="ifc:IfcBoundaryCondition" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcBoundaryCondition" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoundaryCurve" type="ifc:IfcBoundaryCurve" substitutionGroup="ifc:IfcCompositeCurveOnSurface" nillable="true"/>
<xs:complexType name="IfcBoundaryCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcCompositeCurveOnSurface"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoundaryEdgeCondition" type="ifc:IfcBoundaryEdgeCondition" substitutionGroup="ifc:IfcBoundaryCondition" nillable="true"/>
<xs:complexType name="IfcBoundaryEdgeCondition">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundaryCondition">
<xs:sequence>
<xs:element name="TranslationalStiffnessByLengthX" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcModulusOfTranslationalSubgradeReactionSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="TranslationalStiffnessByLengthY" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcModulusOfTranslationalSubgradeReactionSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="TranslationalStiffnessByLengthZ" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcModulusOfTranslationalSubgradeReactionSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="RotationalStiffnessByLengthX" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcModulusOfRotationalSubgradeReactionSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="RotationalStiffnessByLengthY" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcModulusOfRotationalSubgradeReactionSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="RotationalStiffnessByLengthZ" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcModulusOfRotationalSubgradeReactionSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoundaryFaceCondition" type="ifc:IfcBoundaryFaceCondition" substitutionGroup="ifc:IfcBoundaryCondition" nillable="true"/>
<xs:complexType name="IfcBoundaryFaceCondition">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundaryCondition">
<xs:sequence>
<xs:element name="TranslationalStiffnessByAreaX" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcModulusOfSubgradeReactionSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="TranslationalStiffnessByAreaY" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcModulusOfSubgradeReactionSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="TranslationalStiffnessByAreaZ" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcModulusOfSubgradeReactionSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoundaryNodeCondition" type="ifc:IfcBoundaryNodeCondition" substitutionGroup="ifc:IfcBoundaryCondition" nillable="true"/>
<xs:complexType name="IfcBoundaryNodeCondition">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundaryCondition">
<xs:sequence>
<xs:element name="TranslationalStiffnessX" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcTranslationalStiffnessSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="TranslationalStiffnessY" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcTranslationalStiffnessSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="TranslationalStiffnessZ" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcTranslationalStiffnessSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="RotationalStiffnessX" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcRotationalStiffnessSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="RotationalStiffnessY" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcRotationalStiffnessSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="RotationalStiffnessZ" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcRotationalStiffnessSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoundaryNodeConditionWarping" type="ifc:IfcBoundaryNodeConditionWarping" substitutionGroup="ifc:IfcBoundaryNodeCondition" nillable="true"/>
<xs:complexType name="IfcBoundaryNodeConditionWarping">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundaryNodeCondition">
<xs:sequence>
<xs:element name="WarpingStiffness" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcWarpingStiffnessSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoundedCurve" type="ifc:IfcBoundedCurve" abstract="true" substitutionGroup="ifc:IfcCurve" nillable="true"/>
<xs:complexType name="IfcBoundedCurve" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcCurve"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoundedSurface" type="ifc:IfcBoundedSurface" abstract="true" substitutionGroup="ifc:IfcSurface" nillable="true"/>
<xs:complexType name="IfcBoundedSurface" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcSurface"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoundingBox" type="ifc:IfcBoundingBox" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcBoundingBox">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="Corner" type="ifc:IfcCartesianPoint" nillable="true"/>
</xs:sequence>
<xs:attribute name="XDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="YDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="ZDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBoxedHalfSpace" type="ifc:IfcBoxedHalfSpace" substitutionGroup="ifc:IfcHalfSpaceSolid" nillable="true"/>
<xs:complexType name="IfcBoxedHalfSpace">
<xs:complexContent>
<xs:extension base="ifc:IfcHalfSpaceSolid">
<xs:sequence>
<xs:element name="Enclosure" type="ifc:IfcBoundingBox" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBuilding" type="ifc:IfcBuilding" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
<xs:complexType name="IfcBuilding">
<xs:complexContent>
<xs:extension base="ifc:IfcSpatialStructureElement">
<xs:sequence>
<xs:element name="BuildingAddress" type="ifc:IfcPostalAddress" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="ElevationOfRefHeight" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="ElevationOfTerrain" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBuildingElement" type="ifc:IfcBuildingElement" abstract="true" substitutionGroup="ifc:IfcElement" nillable="true"/>
<xs:complexType name="IfcBuildingElement" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBuildingElementPart" type="ifc:IfcBuildingElementPart" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
<xs:complexType name="IfcBuildingElementPart">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponent">
<xs:attribute name="PredefinedType" type="ifc:IfcBuildingElementPartTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBuildingElementPartType" type="ifc:IfcBuildingElementPartType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
<xs:complexType name="IfcBuildingElementPartType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponentType">
<xs:attribute name="PredefinedType" type="ifc:IfcBuildingElementPartTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBuildingElementProxy" type="ifc:IfcBuildingElementProxy" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcBuildingElementProxy">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcBuildingElementProxyTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBuildingElementProxyType" type="ifc:IfcBuildingElementProxyType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcBuildingElementProxyType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcBuildingElementProxyTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBuildingElementType" type="ifc:IfcBuildingElementType" abstract="true" substitutionGroup="ifc:IfcElementType" nillable="true"/>
<xs:complexType name="IfcBuildingElementType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBuildingStorey" type="ifc:IfcBuildingStorey" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
<xs:complexType name="IfcBuildingStorey">
<xs:complexContent>
<xs:extension base="ifc:IfcSpatialStructureElement">
<xs:attribute name="Elevation" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBuildingSystem" type="ifc:IfcBuildingSystem" substitutionGroup="ifc:IfcSystem" nillable="true"/>
<xs:complexType name="IfcBuildingSystem">
<xs:complexContent>
<xs:extension base="ifc:IfcSystem">
<xs:attribute name="PredefinedType" type="ifc:IfcBuildingSystemTypeEnum" use="optional"/>
<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBurner" type="ifc:IfcBurner" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcBurner">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcBurnerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcBurnerType" type="ifc:IfcBurnerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcBurnerType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcBurnerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCShapeProfileDef" type="ifc:IfcCShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcCShapeProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="Width" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="WallThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="Girth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="InternalFilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCableCarrierFitting" type="ifc:IfcCableCarrierFitting" substitutionGroup="ifc:IfcFlowFitting" nillable="true"/>
<xs:complexType name="IfcCableCarrierFitting">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowFitting">
<xs:attribute name="PredefinedType" type="ifc:IfcCableCarrierFittingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCableCarrierFittingType" type="ifc:IfcCableCarrierFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
<xs:complexType name="IfcCableCarrierFittingType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowFittingType">
<xs:attribute name="PredefinedType" type="ifc:IfcCableCarrierFittingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCableCarrierSegment" type="ifc:IfcCableCarrierSegment" substitutionGroup="ifc:IfcFlowSegment" nillable="true"/>
<xs:complexType name="IfcCableCarrierSegment">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowSegment">
<xs:attribute name="PredefinedType" type="ifc:IfcCableCarrierSegmentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCableCarrierSegmentType" type="ifc:IfcCableCarrierSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
<xs:complexType name="IfcCableCarrierSegmentType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowSegmentType">
<xs:attribute name="PredefinedType" type="ifc:IfcCableCarrierSegmentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCableFitting" type="ifc:IfcCableFitting" substitutionGroup="ifc:IfcFlowFitting" nillable="true"/>
<xs:complexType name="IfcCableFitting">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowFitting">
<xs:attribute name="PredefinedType" type="ifc:IfcCableFittingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCableFittingType" type="ifc:IfcCableFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
<xs:complexType name="IfcCableFittingType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowFittingType">
<xs:attribute name="PredefinedType" type="ifc:IfcCableFittingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCableSegment" type="ifc:IfcCableSegment" substitutionGroup="ifc:IfcFlowSegment" nillable="true"/>
<xs:complexType name="IfcCableSegment">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowSegment">
<xs:attribute name="PredefinedType" type="ifc:IfcCableSegmentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCableSegmentType" type="ifc:IfcCableSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
<xs:complexType name="IfcCableSegmentType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowSegmentType">
<xs:attribute name="PredefinedType" type="ifc:IfcCableSegmentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCartesianPoint" type="ifc:IfcCartesianPoint" substitutionGroup="ifc:IfcPoint" nillable="true"/>
<xs:complexType name="IfcCartesianPoint">
<xs:complexContent>
<xs:extension base="ifc:IfcPoint">
<xs:attribute name="Coordinates" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCartesianPointList" type="ifc:IfcCartesianPointList" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcCartesianPointList" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCartesianPointList2D" type="ifc:IfcCartesianPointList2D" substitutionGroup="ifc:IfcCartesianPointList" nillable="true"/>
<xs:complexType name="IfcCartesianPointList2D">
<xs:complexContent>
<xs:extension base="ifc:IfcCartesianPointList">
<xs:attribute name="CoordList" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCartesianPointList3D" type="ifc:IfcCartesianPointList3D" substitutionGroup="ifc:IfcCartesianPointList" nillable="true"/>
<xs:complexType name="IfcCartesianPointList3D">
<xs:complexContent>
<xs:extension base="ifc:IfcCartesianPointList">
<xs:attribute name="CoordList" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCartesianTransformationOperator" type="ifc:IfcCartesianTransformationOperator" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcCartesianTransformationOperator" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="Axis1" type="ifc:IfcDirection" nillable="true" minOccurs="0"/>
<xs:element name="Axis2" type="ifc:IfcDirection" nillable="true" minOccurs="0"/>
<xs:element name="LocalOrigin" type="ifc:IfcCartesianPoint" nillable="true"/>
</xs:sequence>
<xs:attribute name="Scale" type="ifc:IfcReal" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCartesianTransformationOperator2D" type="ifc:IfcCartesianTransformationOperator2D" substitutionGroup="ifc:IfcCartesianTransformationOperator" nillable="true"/>
<xs:complexType name="IfcCartesianTransformationOperator2D">
<xs:complexContent>
<xs:extension base="ifc:IfcCartesianTransformationOperator"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCartesianTransformationOperator2DnonUniform" type="ifc:IfcCartesianTransformationOperator2DnonUniform" substitutionGroup="ifc:IfcCartesianTransformationOperator2D" nillable="true"/>
<xs:complexType name="IfcCartesianTransformationOperator2DnonUniform">
<xs:complexContent>
<xs:extension base="ifc:IfcCartesianTransformationOperator2D">
<xs:attribute name="Scale2" type="ifc:IfcReal" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCartesianTransformationOperator3D" type="ifc:IfcCartesianTransformationOperator3D" substitutionGroup="ifc:IfcCartesianTransformationOperator" nillable="true"/>
<xs:complexType name="IfcCartesianTransformationOperator3D">
<xs:complexContent>
<xs:extension base="ifc:IfcCartesianTransformationOperator">
<xs:sequence>
<xs:element name="Axis3" type="ifc:IfcDirection" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCartesianTransformationOperator3DnonUniform" type="ifc:IfcCartesianTransformationOperator3DnonUniform" substitutionGroup="ifc:IfcCartesianTransformationOperator3D" nillable="true"/>
<xs:complexType name="IfcCartesianTransformationOperator3DnonUniform">
<xs:complexContent>
<xs:extension base="ifc:IfcCartesianTransformationOperator3D">
<xs:attribute name="Scale2" type="ifc:IfcReal" use="optional"/>
<xs:attribute name="Scale3" type="ifc:IfcReal" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCenterLineProfileDef" type="ifc:IfcCenterLineProfileDef" substitutionGroup="ifc:IfcArbitraryOpenProfileDef" nillable="true"/>
<xs:complexType name="IfcCenterLineProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcArbitraryOpenProfileDef">
<xs:attribute name="Thickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcChiller" type="ifc:IfcChiller" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcChiller">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcChillerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcChillerType" type="ifc:IfcChillerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcChillerType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcChillerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcChimney" type="ifc:IfcChimney" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcChimney">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcChimneyTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcChimneyType" type="ifc:IfcChimneyType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcChimneyType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcChimneyTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCircle" type="ifc:IfcCircle" substitutionGroup="ifc:IfcConic" nillable="true"/>
<xs:complexType name="IfcCircle">
<xs:complexContent>
<xs:extension base="ifc:IfcConic">
<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCircleHollowProfileDef" type="ifc:IfcCircleHollowProfileDef" substitutionGroup="ifc:IfcCircleProfileDef" nillable="true"/>
<xs:complexType name="IfcCircleHollowProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcCircleProfileDef">
<xs:attribute name="WallThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCircleProfileDef" type="ifc:IfcCircleProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcCircleProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCivilElement" type="ifc:IfcCivilElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
<xs:complexType name="IfcCivilElement">
<xs:complexContent>
<xs:extension base="ifc:IfcElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCivilElementType" type="ifc:IfcCivilElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
<xs:complexType name="IfcCivilElementType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcClassification" type="ifc:IfcClassification" substitutionGroup="ifc:IfcExternalInformation" nillable="true"/>
<xs:complexType name="IfcClassification">
<xs:complexContent>
<xs:extension base="ifc:IfcExternalInformation">
<xs:sequence>
<xs:element name="ReferenceTokens" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcIdentifier-wrapper" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcIdentifier-wrapper"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="HasReferences" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcClassificationReference" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcClassificationReference"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Source" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Edition" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="EditionDate" type="ifc:IfcDate" use="optional"/>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Location" type="ifc:IfcURIReference" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcClassificationReference" type="ifc:IfcClassificationReference" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
<xs:complexType name="IfcClassificationReference">
<xs:complexContent>
<xs:extension base="ifc:IfcExternalReference">
<xs:sequence>
<xs:element name="HasReferences" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcClassificationReference" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcClassificationReference"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Sort" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcClosedShell" type="ifc:IfcClosedShell" substitutionGroup="ifc:IfcConnectedFaceSet" nillable="true"/>
<xs:complexType name="IfcClosedShell">
<xs:complexContent>
<xs:extension base="ifc:IfcConnectedFaceSet"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCoil" type="ifc:IfcCoil" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcCoil">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcCoilTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCoilType" type="ifc:IfcCoilType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcCoilType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcCoilTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcColourRgb" type="ifc:IfcColourRgb" substitutionGroup="ifc:IfcColourSpecification" nillable="true"/>
<xs:complexType name="IfcColourRgb">
<xs:complexContent>
<xs:extension base="ifc:IfcColourSpecification">
<xs:attribute name="Red" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="Green" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="Blue" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcColourRgbList" type="ifc:IfcColourRgbList" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcColourRgbList">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:attribute name="ColourList" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcNormalisedRatioMeasure"/>
</xs:simpleType>
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcColourSpecification" type="ifc:IfcColourSpecification" abstract="true" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcColourSpecification" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcColumn" type="ifc:IfcColumn" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcColumn">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcColumnTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcColumnStandardCase" type="ifc:IfcColumnStandardCase" substitutionGroup="ifc:IfcColumn" nillable="true"/>
<xs:complexType name="IfcColumnStandardCase">
<xs:complexContent>
<xs:extension base="ifc:IfcColumn"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcColumnType" type="ifc:IfcColumnType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcColumnType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcColumnTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCommunicationsAppliance" type="ifc:IfcCommunicationsAppliance" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcCommunicationsAppliance">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcCommunicationsApplianceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCommunicationsApplianceType" type="ifc:IfcCommunicationsApplianceType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcCommunicationsApplianceType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcCommunicationsApplianceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcComplexProperty" type="ifc:IfcComplexProperty" substitutionGroup="ifc:IfcProperty" nillable="true"/>
<xs:complexType name="IfcComplexProperty">
<xs:complexContent>
<xs:extension base="ifc:IfcProperty">
<xs:sequence>
<xs:element name="HasProperties">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProperty"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="UsageName" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcComplexPropertyTemplate" type="ifc:IfcComplexPropertyTemplate" substitutionGroup="ifc:IfcPropertyTemplate" nillable="true"/>
<xs:complexType name="IfcComplexPropertyTemplate">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertyTemplate">
<xs:sequence>
<xs:element name="HasPropertyTemplates" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPropertyTemplate" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPropertyTemplate"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="UsageName" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="TemplateType" type="ifc:IfcComplexPropertyTemplateTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCompositeCurve" type="ifc:IfcCompositeCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
<xs:complexType name="IfcCompositeCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedCurve">
<xs:sequence>
<xs:element name="Segments">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCompositeCurveSegment" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCompositeCurveSegment"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="SelfIntersect" type="ifc:IfcLogical" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCompositeCurveOnSurface" type="ifc:IfcCompositeCurveOnSurface" substitutionGroup="ifc:IfcCompositeCurve" nillable="true"/>
<xs:complexType name="IfcCompositeCurveOnSurface">
<xs:complexContent>
<xs:extension base="ifc:IfcCompositeCurve"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCompositeCurveSegment" type="ifc:IfcCompositeCurveSegment" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcCompositeCurveSegment">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="ParentCurve" type="ifc:IfcCurve" nillable="true"/>
</xs:sequence>
<xs:attribute name="Transition" type="ifc:IfcTransitionCode" use="optional"/>
<xs:attribute name="SameSense" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCompositeProfileDef" type="ifc:IfcCompositeProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
<xs:complexType name="IfcCompositeProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcProfileDef">
<xs:sequence>
<xs:element name="Profiles">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcProfileDef" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProfileDef"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Label" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCompressor" type="ifc:IfcCompressor" substitutionGroup="ifc:IfcFlowMovingDevice" nillable="true"/>
<xs:complexType name="IfcCompressor">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowMovingDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcCompressorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCompressorType" type="ifc:IfcCompressorType" substitutionGroup="ifc:IfcFlowMovingDeviceType" nillable="true"/>
<xs:complexType name="IfcCompressorType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowMovingDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcCompressorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCondenser" type="ifc:IfcCondenser" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcCondenser">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcCondenserTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCondenserType" type="ifc:IfcCondenserType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcCondenserType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcCondenserTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConic" type="ifc:IfcConic" abstract="true" substitutionGroup="ifc:IfcCurve" nillable="true"/>
<xs:complexType name="IfcConic" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcCurve">
<xs:sequence>
<xs:element name="Position">
<xs:complexType>
<xs:group ref="ifc:IfcAxis2Placement"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConnectedFaceSet" type="ifc:IfcConnectedFaceSet" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
<xs:complexType name="IfcConnectedFaceSet">
<xs:complexContent>
<xs:extension base="ifc:IfcTopologicalRepresentationItem">
<xs:sequence>
<xs:element name="CfsFaces">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcFace" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcFace"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConnectionCurveGeometry" type="ifc:IfcConnectionCurveGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
<xs:complexType name="IfcConnectionCurveGeometry">
<xs:complexContent>
<xs:extension base="ifc:IfcConnectionGeometry">
<xs:sequence>
<xs:element name="CurveOnRelatingElement">
<xs:complexType>
<xs:group ref="ifc:IfcCurveOrEdgeCurve"/>
</xs:complexType>
</xs:element>
<xs:element name="CurveOnRelatedElement" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcCurveOrEdgeCurve"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConnectionGeometry" type="ifc:IfcConnectionGeometry" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcConnectionGeometry" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConnectionPointEccentricity" type="ifc:IfcConnectionPointEccentricity" substitutionGroup="ifc:IfcConnectionPointGeometry" nillable="true"/>
<xs:complexType name="IfcConnectionPointEccentricity">
<xs:complexContent>
<xs:extension base="ifc:IfcConnectionPointGeometry">
<xs:attribute name="EccentricityInX" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="EccentricityInY" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="EccentricityInZ" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConnectionPointGeometry" type="ifc:IfcConnectionPointGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
<xs:complexType name="IfcConnectionPointGeometry">
<xs:complexContent>
<xs:extension base="ifc:IfcConnectionGeometry">
<xs:sequence>
<xs:element name="PointOnRelatingElement">
<xs:complexType>
<xs:group ref="ifc:IfcPointOrVertexPoint"/>
</xs:complexType>
</xs:element>
<xs:element name="PointOnRelatedElement" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcPointOrVertexPoint"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConnectionSurfaceGeometry" type="ifc:IfcConnectionSurfaceGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
<xs:complexType name="IfcConnectionSurfaceGeometry">
<xs:complexContent>
<xs:extension base="ifc:IfcConnectionGeometry">
<xs:sequence>
<xs:element name="SurfaceOnRelatingElement">
<xs:complexType>
<xs:group ref="ifc:IfcSurfaceOrFaceSurface"/>
</xs:complexType>
</xs:element>
<xs:element name="SurfaceOnRelatedElement" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcSurfaceOrFaceSurface"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConnectionVolumeGeometry" type="ifc:IfcConnectionVolumeGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
<xs:complexType name="IfcConnectionVolumeGeometry">
<xs:complexContent>
<xs:extension base="ifc:IfcConnectionGeometry">
<xs:sequence>
<xs:element name="VolumeOnRelatingElement">
<xs:complexType>
<xs:group ref="ifc:IfcSolidOrShell"/>
</xs:complexType>
</xs:element>
<xs:element name="VolumeOnRelatedElement" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcSolidOrShell"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConstraint" type="ifc:IfcConstraint" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcConstraint" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="CreatingActor" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcActorSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="ConstraintGrade" type="ifc:IfcConstraintEnum" use="optional"/>
<xs:attribute name="ConstraintSource" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="CreationTime" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="UserDefinedGrade" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConstructionEquipmentResource" type="ifc:IfcConstructionEquipmentResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
<xs:complexType name="IfcConstructionEquipmentResource">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResource">
<xs:attribute name="PredefinedType" type="ifc:IfcConstructionEquipmentResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConstructionEquipmentResourceType" type="ifc:IfcConstructionEquipmentResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
<xs:complexType name="IfcConstructionEquipmentResourceType">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResourceType">
<xs:attribute name="PredefinedType" type="ifc:IfcConstructionEquipmentResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConstructionMaterialResource" type="ifc:IfcConstructionMaterialResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
<xs:complexType name="IfcConstructionMaterialResource">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResource">
<xs:attribute name="PredefinedType" type="ifc:IfcConstructionMaterialResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConstructionMaterialResourceType" type="ifc:IfcConstructionMaterialResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
<xs:complexType name="IfcConstructionMaterialResourceType">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResourceType">
<xs:attribute name="PredefinedType" type="ifc:IfcConstructionMaterialResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConstructionProductResource" type="ifc:IfcConstructionProductResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
<xs:complexType name="IfcConstructionProductResource">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResource">
<xs:attribute name="PredefinedType" type="ifc:IfcConstructionProductResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConstructionProductResourceType" type="ifc:IfcConstructionProductResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
<xs:complexType name="IfcConstructionProductResourceType">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResourceType">
<xs:attribute name="PredefinedType" type="ifc:IfcConstructionProductResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConstructionResource" type="ifc:IfcConstructionResource" abstract="true" substitutionGroup="ifc:IfcResource" nillable="true"/>
<xs:complexType name="IfcConstructionResource" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcResource">
<xs:sequence>
<xs:element name="Usage" type="ifc:IfcResourceTime" nillable="true" minOccurs="0"/>
<xs:element name="BaseCosts" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcAppliedValue" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAppliedValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="BaseQuantity" type="ifc:IfcPhysicalQuantity" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConstructionResourceType" type="ifc:IfcConstructionResourceType" abstract="true" substitutionGroup="ifc:IfcTypeResource" nillable="true"/>
<xs:complexType name="IfcConstructionResourceType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeResource">
<xs:sequence>
<xs:element name="BaseCosts" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcAppliedValue" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAppliedValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="BaseQuantity" type="ifc:IfcPhysicalQuantity" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcContext" type="ifc:IfcContext" abstract="true" substitutionGroup="ifc:IfcObjectDefinition" nillable="true"/>
<xs:complexType name="IfcContext" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcObjectDefinition">
<xs:sequence>
<xs:element name="RepresentationContexts" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRepresentationContext" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRepresentationContext"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="UnitsInContext" type="ifc:IfcUnitAssignment" nillable="true" minOccurs="0"/>
<xs:element name="IsDefinedBy" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRelDefinesByProperties" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelDefinesByProperties"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Declares" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRelDeclares" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelDeclares"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ObjectType" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Phase" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcContextDependentUnit" type="ifc:IfcContextDependentUnit" substitutionGroup="ifc:IfcNamedUnit" nillable="true"/>
<xs:complexType name="IfcContextDependentUnit">
<xs:complexContent>
<xs:extension base="ifc:IfcNamedUnit">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcControl" type="ifc:IfcControl" abstract="true" substitutionGroup="ifc:IfcObject" nillable="true"/>
<xs:complexType name="IfcControl" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcObject">
<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcController" type="ifc:IfcController" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
<xs:complexType name="IfcController">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElement">
<xs:attribute name="PredefinedType" type="ifc:IfcControllerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcControllerType" type="ifc:IfcControllerType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
<xs:complexType name="IfcControllerType">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcControllerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConversionBasedUnit" type="ifc:IfcConversionBasedUnit" substitutionGroup="ifc:IfcNamedUnit" nillable="true"/>
<xs:complexType name="IfcConversionBasedUnit">
<xs:complexContent>
<xs:extension base="ifc:IfcNamedUnit">
<xs:sequence>
<xs:element name="ConversionFactor" type="ifc:IfcMeasureWithUnit" nillable="true"/>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcConversionBasedUnitWithOffset" type="ifc:IfcConversionBasedUnitWithOffset" substitutionGroup="ifc:IfcConversionBasedUnit" nillable="true"/>
<xs:complexType name="IfcConversionBasedUnitWithOffset">
<xs:complexContent>
<xs:extension base="ifc:IfcConversionBasedUnit">
<xs:attribute name="ConversionOffset" type="ifc:IfcReal" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCooledBeam" type="ifc:IfcCooledBeam" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcCooledBeam">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcCooledBeamTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCooledBeamType" type="ifc:IfcCooledBeamType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcCooledBeamType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcCooledBeamTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCoolingTower" type="ifc:IfcCoolingTower" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcCoolingTower">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcCoolingTowerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCoolingTowerType" type="ifc:IfcCoolingTowerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcCoolingTowerType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcCoolingTowerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCoordinateOperation" type="ifc:IfcCoordinateOperation" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcCoordinateOperation" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="TargetCRS" type="ifc:IfcCoordinateReferenceSystem" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCoordinateReferenceSystem" type="ifc:IfcCoordinateReferenceSystem" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcCoordinateReferenceSystem" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="GeodeticDatum" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="VerticalDatum" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCostItem" type="ifc:IfcCostItem" substitutionGroup="ifc:IfcControl" nillable="true"/>
<xs:complexType name="IfcCostItem">
<xs:complexContent>
<xs:extension base="ifc:IfcControl">
<xs:sequence>
<xs:element name="CostValues" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCostValue" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCostValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="CostQuantities" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPhysicalQuantity" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPhysicalQuantity"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="PredefinedType" type="ifc:IfcCostItemTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCostSchedule" type="ifc:IfcCostSchedule" substitutionGroup="ifc:IfcControl" nillable="true"/>
<xs:complexType name="IfcCostSchedule">
<xs:complexContent>
<xs:extension base="ifc:IfcControl">
<xs:attribute name="PredefinedType" type="ifc:IfcCostScheduleTypeEnum" use="optional"/>
<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="SubmittedOn" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="UpdateDate" type="ifc:IfcDateTime" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCostValue" type="ifc:IfcCostValue" substitutionGroup="ifc:IfcAppliedValue" nillable="true"/>
<xs:complexType name="IfcCostValue">
<xs:complexContent>
<xs:extension base="ifc:IfcAppliedValue"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCovering" type="ifc:IfcCovering" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcCovering">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcCoveringTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCoveringType" type="ifc:IfcCoveringType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcCoveringType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcCoveringTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCrewResource" type="ifc:IfcCrewResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
<xs:complexType name="IfcCrewResource">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResource">
<xs:attribute name="PredefinedType" type="ifc:IfcCrewResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCrewResourceType" type="ifc:IfcCrewResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
<xs:complexType name="IfcCrewResourceType">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResourceType">
<xs:attribute name="PredefinedType" type="ifc:IfcCrewResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCsgPrimitive3D" type="ifc:IfcCsgPrimitive3D" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcCsgPrimitive3D" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="Position" type="ifc:IfcAxis2Placement3D" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCsgSolid" type="ifc:IfcCsgSolid" substitutionGroup="ifc:IfcSolidModel" nillable="true"/>
<xs:complexType name="IfcCsgSolid">
<xs:complexContent>
<xs:extension base="ifc:IfcSolidModel">
<xs:sequence>
<xs:element name="TreeRootExpression">
<xs:complexType>
<xs:group ref="ifc:IfcCsgSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCurrencyRelationship" type="ifc:IfcCurrencyRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
<xs:complexType name="IfcCurrencyRelationship">
<xs:complexContent>
<xs:extension base="ifc:IfcResourceLevelRelationship">
<xs:sequence>
<xs:element name="RelatingMonetaryUnit" type="ifc:IfcMonetaryUnit" nillable="true"/>
<xs:element name="RelatedMonetaryUnit" type="ifc:IfcMonetaryUnit" nillable="true"/>
<xs:element name="RateSource" type="ifc:IfcLibraryInformation" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="ExchangeRate" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
<xs:attribute name="RateDateTime" type="ifc:IfcDateTime" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCurtainWall" type="ifc:IfcCurtainWall" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcCurtainWall">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcCurtainWallTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCurtainWallType" type="ifc:IfcCurtainWallType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcCurtainWallType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcCurtainWallTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCurve" type="ifc:IfcCurve" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcCurve" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCurveBoundedPlane" type="ifc:IfcCurveBoundedPlane" substitutionGroup="ifc:IfcBoundedSurface" nillable="true"/>
<xs:complexType name="IfcCurveBoundedPlane">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedSurface">
<xs:sequence>
<xs:element name="BasisSurface" type="ifc:IfcPlane" nillable="true"/>
<xs:element name="OuterBoundary" type="ifc:IfcCurve" nillable="true"/>
<xs:element name="InnerBoundaries">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCurve" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCurve"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCurveBoundedSurface" type="ifc:IfcCurveBoundedSurface" substitutionGroup="ifc:IfcBoundedSurface" nillable="true"/>
<xs:complexType name="IfcCurveBoundedSurface">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedSurface">
<xs:sequence>
<xs:element name="BasisSurface" type="ifc:IfcSurface" nillable="true"/>
<xs:element name="Boundaries">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcBoundaryCurve" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcBoundaryCurve"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ImplicitOuter" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCurveStyle" type="ifc:IfcCurveStyle" substitutionGroup="ifc:IfcPresentationStyle" nillable="true"/>
<xs:complexType name="IfcCurveStyle">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationStyle">
<xs:sequence>
<xs:element name="CurveFont" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcCurveFontOrScaledCurveFontSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="CurveWidth" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcSizeSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="CurveColour" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcColour"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ModelOrDraughting" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCurveStyleFont" type="ifc:IfcCurveStyleFont" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcCurveStyleFont">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:sequence>
<xs:element name="PatternList">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCurveStyleFontPattern" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCurveStyleFontPattern"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCurveStyleFontAndScaling" type="ifc:IfcCurveStyleFontAndScaling" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcCurveStyleFontAndScaling">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:sequence>
<xs:element name="CurveFont">
<xs:complexType>
<xs:group ref="ifc:IfcCurveStyleFontSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="CurveFontScaling" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCurveStyleFontPattern" type="ifc:IfcCurveStyleFontPattern" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcCurveStyleFontPattern">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:attribute name="VisibleSegmentLength" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="InvisibleSegmentLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcCylindricalSurface" type="ifc:IfcCylindricalSurface" substitutionGroup="ifc:IfcElementarySurface" nillable="true"/>
<xs:complexType name="IfcCylindricalSurface">
<xs:complexContent>
<xs:extension base="ifc:IfcElementarySurface">
<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDamper" type="ifc:IfcDamper" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
<xs:complexType name="IfcDamper">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowController">
<xs:attribute name="PredefinedType" type="ifc:IfcDamperTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDamperType" type="ifc:IfcDamperType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
<xs:complexType name="IfcDamperType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowControllerType">
<xs:attribute name="PredefinedType" type="ifc:IfcDamperTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDerivedProfileDef" type="ifc:IfcDerivedProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
<xs:complexType name="IfcDerivedProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcProfileDef">
<xs:sequence>
<xs:element name="ParentProfile" type="ifc:IfcProfileDef" nillable="true"/>
<xs:element name="Operator" type="ifc:IfcCartesianTransformationOperator2D" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Label" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDerivedUnit" type="ifc:IfcDerivedUnit" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcDerivedUnit">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Elements">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcDerivedUnitElement" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDerivedUnitElement"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="UnitType" type="ifc:IfcDerivedUnitEnum" use="optional"/>
<xs:attribute name="UserDefinedType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDerivedUnitElement" type="ifc:IfcDerivedUnitElement" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcDerivedUnitElement">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Unit" type="ifc:IfcNamedUnit" nillable="true"/>
</xs:sequence>
<xs:attribute name="Exponent" type="xs:long" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDimensionalExponents" type="ifc:IfcDimensionalExponents" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcDimensionalExponents">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="LengthExponent" type="xs:long" use="optional"/>
<xs:attribute name="MassExponent" type="xs:long" use="optional"/>
<xs:attribute name="TimeExponent" type="xs:long" use="optional"/>
<xs:attribute name="ElectricCurrentExponent" type="xs:long" use="optional"/>
<xs:attribute name="ThermodynamicTemperatureExponent" type="xs:long" use="optional"/>
<xs:attribute name="AmountOfSubstanceExponent" type="xs:long" use="optional"/>
<xs:attribute name="LuminousIntensityExponent" type="xs:long" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDirection" type="ifc:IfcDirection" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcDirection">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:attribute name="DirectionRatios" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcReal"/>
</xs:simpleType>
<xs:minLength value="2"/>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDiscreteAccessory" type="ifc:IfcDiscreteAccessory" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
<xs:complexType name="IfcDiscreteAccessory">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponent">
<xs:attribute name="PredefinedType" type="ifc:IfcDiscreteAccessoryTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDiscreteAccessoryType" type="ifc:IfcDiscreteAccessoryType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
<xs:complexType name="IfcDiscreteAccessoryType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponentType">
<xs:attribute name="PredefinedType" type="ifc:IfcDiscreteAccessoryTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionChamberElement" type="ifc:IfcDistributionChamberElement" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
<xs:complexType name="IfcDistributionChamberElement">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElement">
<xs:attribute name="PredefinedType" type="ifc:IfcDistributionChamberElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionChamberElementType" type="ifc:IfcDistributionChamberElementType" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
<xs:complexType name="IfcDistributionChamberElementType">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcDistributionChamberElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionCircuit" type="ifc:IfcDistributionCircuit" substitutionGroup="ifc:IfcDistributionSystem" nillable="true"/>
<xs:complexType name="IfcDistributionCircuit">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionSystem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionControlElement" type="ifc:IfcDistributionControlElement" substitutionGroup="ifc:IfcDistributionElement" nillable="true"/>
<xs:complexType name="IfcDistributionControlElement">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionControlElementType" type="ifc:IfcDistributionControlElementType" abstract="true" substitutionGroup="ifc:IfcDistributionElementType" nillable="true"/>
<xs:complexType name="IfcDistributionControlElementType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionElement" type="ifc:IfcDistributionElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
<xs:complexType name="IfcDistributionElement">
<xs:complexContent>
<xs:extension base="ifc:IfcElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionElementType" type="ifc:IfcDistributionElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
<xs:complexType name="IfcDistributionElementType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionFlowElement" type="ifc:IfcDistributionFlowElement" substitutionGroup="ifc:IfcDistributionElement" nillable="true"/>
<xs:complexType name="IfcDistributionFlowElement">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionFlowElementType" type="ifc:IfcDistributionFlowElementType" abstract="true" substitutionGroup="ifc:IfcDistributionElementType" nillable="true"/>
<xs:complexType name="IfcDistributionFlowElementType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionPort" type="ifc:IfcDistributionPort" substitutionGroup="ifc:IfcPort" nillable="true"/>
<xs:complexType name="IfcDistributionPort">
<xs:complexContent>
<xs:extension base="ifc:IfcPort">
<xs:attribute name="FlowDirection" type="ifc:IfcFlowDirectionEnum" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcDistributionPortTypeEnum" use="optional"/>
<xs:attribute name="SystemType" type="ifc:IfcDistributionSystemEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDistributionSystem" type="ifc:IfcDistributionSystem" substitutionGroup="ifc:IfcSystem" nillable="true"/>
<xs:complexType name="IfcDistributionSystem">
<xs:complexContent>
<xs:extension base="ifc:IfcSystem">
<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcDistributionSystemEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDocumentInformation" type="ifc:IfcDocumentInformation" substitutionGroup="ifc:IfcExternalInformation" nillable="true"/>
<xs:complexType name="IfcDocumentInformation">
<xs:complexContent>
<xs:extension base="ifc:IfcExternalInformation">
<xs:sequence>
<xs:element name="DocumentOwner" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcActorSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="Editors" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcActorSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcActorSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Location" type="ifc:IfcURIReference" use="optional"/>
<xs:attribute name="Purpose" type="ifc:IfcText" use="optional"/>
<xs:attribute name="IntendedUse" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Scope" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Revision" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="CreationTime" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="LastRevisionTime" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="ElectronicFormat" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="ValidFrom" type="ifc:IfcDate" use="optional"/>
<xs:attribute name="ValidUntil" type="ifc:IfcDate" use="optional"/>
<xs:attribute name="Confidentiality" type="ifc:IfcDocumentConfidentialityEnum" use="optional"/>
<xs:attribute name="Status" type="ifc:IfcDocumentStatusEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDocumentInformationRelationship" type="ifc:IfcDocumentInformationRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
<xs:complexType name="IfcDocumentInformationRelationship">
<xs:complexContent>
<xs:extension base="ifc:IfcResourceLevelRelationship">
<xs:sequence>
<xs:element name="RelatingDocument" type="ifc:IfcDocumentInformation" nillable="true"/>
<xs:element name="RelatedDocuments">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcDocumentInformation" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDocumentInformation"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="RelationshipType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDocumentReference" type="ifc:IfcDocumentReference" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
<xs:complexType name="IfcDocumentReference">
<xs:complexContent>
<xs:extension base="ifc:IfcExternalReference">
<xs:sequence>
<xs:element name="ReferencedDocument" type="ifc:IfcDocumentInformation" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDoor" type="ifc:IfcDoor" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcDoor">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="OverallHeight" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="OverallWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcDoorTypeEnum" use="optional"/>
<xs:attribute name="OperationType" type="ifc:IfcDoorTypeOperationEnum" use="optional"/>
<xs:attribute name="UserDefinedOperationType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDoorLiningProperties" type="ifc:IfcDoorLiningProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
<xs:complexType name="IfcDoorLiningProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedPropertySet">
<xs:sequence>
<xs:element name="ShapeAspectStyle" type="ifc:IfcShapeAspect" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="LiningDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="LiningThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="ThresholdDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="ThresholdThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="TransomThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="TransomOffset" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="LiningOffset" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="ThresholdOffset" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="CasingThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="CasingDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="LiningToPanelOffsetX" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="LiningToPanelOffsetY" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDoorPanelProperties" type="ifc:IfcDoorPanelProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
<xs:complexType name="IfcDoorPanelProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedPropertySet">
<xs:sequence>
<xs:element name="ShapeAspectStyle" type="ifc:IfcShapeAspect" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="PanelDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="PanelOperation" type="ifc:IfcDoorPanelOperationEnum" use="optional"/>
<xs:attribute name="PanelWidth" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="PanelPosition" type="ifc:IfcDoorPanelPositionEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDoorStandardCase" type="ifc:IfcDoorStandardCase" substitutionGroup="ifc:IfcDoor" nillable="true"/>
<xs:complexType name="IfcDoorStandardCase">
<xs:complexContent>
<xs:extension base="ifc:IfcDoor"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDoorStyle" type="ifc:IfcDoorStyle" substitutionGroup="ifc:IfcTypeProduct" nillable="true"/>
<xs:complexType name="IfcDoorStyle">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeProduct">
<xs:attribute name="OperationType" type="ifc:IfcDoorStyleOperationEnum" use="optional"/>
<xs:attribute name="ConstructionType" type="ifc:IfcDoorStyleConstructionEnum" use="optional"/>
<xs:attribute name="ParameterTakesPrecedence" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="Sizeable" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDoorType" type="ifc:IfcDoorType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcDoorType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcDoorTypeEnum" use="optional"/>
<xs:attribute name="OperationType" type="ifc:IfcDoorTypeOperationEnum" use="optional"/>
<xs:attribute name="ParameterTakesPrecedence" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="UserDefinedOperationType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDraughtingPreDefinedColour" type="ifc:IfcDraughtingPreDefinedColour" substitutionGroup="ifc:IfcPreDefinedColour" nillable="true"/>
<xs:complexType name="IfcDraughtingPreDefinedColour">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedColour"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDraughtingPreDefinedCurveFont" type="ifc:IfcDraughtingPreDefinedCurveFont" substitutionGroup="ifc:IfcPreDefinedCurveFont" nillable="true"/>
<xs:complexType name="IfcDraughtingPreDefinedCurveFont">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedCurveFont"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDuctFitting" type="ifc:IfcDuctFitting" substitutionGroup="ifc:IfcFlowFitting" nillable="true"/>
<xs:complexType name="IfcDuctFitting">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowFitting">
<xs:attribute name="PredefinedType" type="ifc:IfcDuctFittingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDuctFittingType" type="ifc:IfcDuctFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
<xs:complexType name="IfcDuctFittingType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowFittingType">
<xs:attribute name="PredefinedType" type="ifc:IfcDuctFittingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDuctSegment" type="ifc:IfcDuctSegment" substitutionGroup="ifc:IfcFlowSegment" nillable="true"/>
<xs:complexType name="IfcDuctSegment">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowSegment">
<xs:attribute name="PredefinedType" type="ifc:IfcDuctSegmentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDuctSegmentType" type="ifc:IfcDuctSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
<xs:complexType name="IfcDuctSegmentType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowSegmentType">
<xs:attribute name="PredefinedType" type="ifc:IfcDuctSegmentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDuctSilencer" type="ifc:IfcDuctSilencer" substitutionGroup="ifc:IfcFlowTreatmentDevice" nillable="true"/>
<xs:complexType name="IfcDuctSilencer">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTreatmentDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcDuctSilencerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcDuctSilencerType" type="ifc:IfcDuctSilencerType" substitutionGroup="ifc:IfcFlowTreatmentDeviceType" nillable="true"/>
<xs:complexType name="IfcDuctSilencerType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTreatmentDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcDuctSilencerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEdge" type="ifc:IfcEdge" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
<xs:complexType name="IfcEdge">
<xs:complexContent>
<xs:extension base="ifc:IfcTopologicalRepresentationItem">
<xs:sequence>
<xs:element name="EdgeStart" type="ifc:IfcVertex" nillable="true" minOccurs="0"/>
<xs:element name="EdgeEnd" type="ifc:IfcVertex" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEdgeCurve" type="ifc:IfcEdgeCurve" substitutionGroup="ifc:IfcEdge" nillable="true"/>
<xs:complexType name="IfcEdgeCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcEdge">
<xs:sequence>
<xs:element name="EdgeGeometry" type="ifc:IfcCurve" nillable="true"/>
</xs:sequence>
<xs:attribute name="SameSense" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEdgeLoop" type="ifc:IfcEdgeLoop" substitutionGroup="ifc:IfcLoop" nillable="true"/>
<xs:complexType name="IfcEdgeLoop">
<xs:complexContent>
<xs:extension base="ifc:IfcLoop">
<xs:sequence>
<xs:element name="EdgeList">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcOrientedEdge" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcOrientedEdge"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricAppliance" type="ifc:IfcElectricAppliance" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcElectricAppliance">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricApplianceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricApplianceType" type="ifc:IfcElectricApplianceType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcElectricApplianceType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricApplianceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricDistributionBoard" type="ifc:IfcElectricDistributionBoard" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
<xs:complexType name="IfcElectricDistributionBoard">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowController">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricDistributionBoardTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricDistributionBoardType" type="ifc:IfcElectricDistributionBoardType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
<xs:complexType name="IfcElectricDistributionBoardType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowControllerType">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricDistributionBoardTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricFlowStorageDevice" type="ifc:IfcElectricFlowStorageDevice" substitutionGroup="ifc:IfcFlowStorageDevice" nillable="true"/>
<xs:complexType name="IfcElectricFlowStorageDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowStorageDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricFlowStorageDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricFlowStorageDeviceType" type="ifc:IfcElectricFlowStorageDeviceType" substitutionGroup="ifc:IfcFlowStorageDeviceType" nillable="true"/>
<xs:complexType name="IfcElectricFlowStorageDeviceType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowStorageDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricFlowStorageDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricGenerator" type="ifc:IfcElectricGenerator" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcElectricGenerator">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricGeneratorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricGeneratorType" type="ifc:IfcElectricGeneratorType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcElectricGeneratorType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricGeneratorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricMotor" type="ifc:IfcElectricMotor" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcElectricMotor">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricMotorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricMotorType" type="ifc:IfcElectricMotorType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcElectricMotorType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricMotorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricTimeControl" type="ifc:IfcElectricTimeControl" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
<xs:complexType name="IfcElectricTimeControl">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowController">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricTimeControlTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElectricTimeControlType" type="ifc:IfcElectricTimeControlType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
<xs:complexType name="IfcElectricTimeControlType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowControllerType">
<xs:attribute name="PredefinedType" type="ifc:IfcElectricTimeControlTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElement" type="ifc:IfcElement" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
<xs:complexType name="IfcElement" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcProduct">
<xs:sequence>
<xs:element name="HasProjections" type="ifc:IfcRelProjectsElement" nillable="true" minOccurs="0" maxOccurs="1"/>
<xs:element name="HasOpenings" type="ifc:IfcRelVoidsElement" nillable="true" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="Tag" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElementAssembly" type="ifc:IfcElementAssembly" substitutionGroup="ifc:IfcElement" nillable="true"/>
<xs:complexType name="IfcElementAssembly">
<xs:complexContent>
<xs:extension base="ifc:IfcElement">
<xs:attribute name="AssemblyPlace" type="ifc:IfcAssemblyPlaceEnum" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcElementAssemblyTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElementAssemblyType" type="ifc:IfcElementAssemblyType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
<xs:complexType name="IfcElementAssemblyType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcElementAssemblyTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElementComponent" type="ifc:IfcElementComponent" abstract="true" substitutionGroup="ifc:IfcElement" nillable="true"/>
<xs:complexType name="IfcElementComponent" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElementComponentType" type="ifc:IfcElementComponentType" abstract="true" substitutionGroup="ifc:IfcElementType" nillable="true"/>
<xs:complexType name="IfcElementComponentType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElementQuantity" type="ifc:IfcElementQuantity" substitutionGroup="ifc:IfcQuantitySet" nillable="true"/>
<xs:complexType name="IfcElementQuantity">
<xs:complexContent>
<xs:extension base="ifc:IfcQuantitySet">
<xs:sequence>
<xs:element name="Quantities">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPhysicalQuantity" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPhysicalQuantity"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="MethodOfMeasurement" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElementType" type="ifc:IfcElementType" abstract="true" substitutionGroup="ifc:IfcTypeProduct" nillable="true"/>
<xs:complexType name="IfcElementType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeProduct">
<xs:attribute name="ElementType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcElementarySurface" type="ifc:IfcElementarySurface" abstract="true" substitutionGroup="ifc:IfcSurface" nillable="true"/>
<xs:complexType name="IfcElementarySurface" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcSurface">
<xs:sequence>
<xs:element name="Position" type="ifc:IfcAxis2Placement3D" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEllipse" type="ifc:IfcEllipse" substitutionGroup="ifc:IfcConic" nillable="true"/>
<xs:complexType name="IfcEllipse">
<xs:complexContent>
<xs:extension base="ifc:IfcConic">
<xs:attribute name="SemiAxis1" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="SemiAxis2" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEllipseProfileDef" type="ifc:IfcEllipseProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcEllipseProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="SemiAxis1" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="SemiAxis2" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEnergyConversionDevice" type="ifc:IfcEnergyConversionDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
<xs:complexType name="IfcEnergyConversionDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEnergyConversionDeviceType" type="ifc:IfcEnergyConversionDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
<xs:complexType name="IfcEnergyConversionDeviceType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEngine" type="ifc:IfcEngine" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcEngine">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcEngineTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEngineType" type="ifc:IfcEngineType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcEngineType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcEngineTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEvaporativeCooler" type="ifc:IfcEvaporativeCooler" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcEvaporativeCooler">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcEvaporativeCoolerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEvaporativeCoolerType" type="ifc:IfcEvaporativeCoolerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcEvaporativeCoolerType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcEvaporativeCoolerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEvaporator" type="ifc:IfcEvaporator" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcEvaporator">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcEvaporatorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEvaporatorType" type="ifc:IfcEvaporatorType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcEvaporatorType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcEvaporatorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEvent" type="ifc:IfcEvent" substitutionGroup="ifc:IfcProcess" nillable="true"/>
<xs:complexType name="IfcEvent">
<xs:complexContent>
<xs:extension base="ifc:IfcProcess">
<xs:sequence>
<xs:element name="EventOccurenceTime" type="ifc:IfcEventTime" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="PredefinedType" type="ifc:IfcEventTypeEnum" use="optional"/>
<xs:attribute name="EventTriggerType" type="ifc:IfcEventTriggerTypeEnum" use="optional"/>
<xs:attribute name="UserDefinedEventTriggerType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEventTime" type="ifc:IfcEventTime" substitutionGroup="ifc:IfcSchedulingTime" nillable="true"/>
<xs:complexType name="IfcEventTime">
<xs:complexContent>
<xs:extension base="ifc:IfcSchedulingTime">
<xs:attribute name="ActualDate" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="EarlyDate" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="LateDate" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="ScheduleDate" type="ifc:IfcDateTime" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcEventType" type="ifc:IfcEventType" substitutionGroup="ifc:IfcTypeProcess" nillable="true"/>
<xs:complexType name="IfcEventType">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeProcess">
<xs:attribute name="PredefinedType" type="ifc:IfcEventTypeEnum" use="optional"/>
<xs:attribute name="EventTriggerType" type="ifc:IfcEventTriggerTypeEnum" use="optional"/>
<xs:attribute name="UserDefinedEventTriggerType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExtendedProperties" type="ifc:IfcExtendedProperties" abstract="true" substitutionGroup="ifc:IfcPropertyAbstraction" nillable="true"/>
<xs:complexType name="IfcExtendedProperties" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertyAbstraction">
<xs:sequence>
<xs:element name="Properties">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProperty"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExternalInformation" type="ifc:IfcExternalInformation" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcExternalInformation" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExternalReference" type="ifc:IfcExternalReference" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcExternalReference" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Location" type="ifc:IfcURIReference" use="optional"/>
<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExternalReferenceRelationship" type="ifc:IfcExternalReferenceRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
<xs:complexType name="IfcExternalReferenceRelationship">
<xs:complexContent>
<xs:extension base="ifc:IfcResourceLevelRelationship">
<xs:sequence>
<xs:element name="RelatingReference" type="ifc:IfcExternalReference" nillable="true"/>
<xs:element name="RelatedResourceObjects">
<xs:complexType>
<xs:group ref="ifc:IfcResourceObjectSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcResourceObjectSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExternalSpatialElement" type="ifc:IfcExternalSpatialElement" substitutionGroup="ifc:IfcExternalSpatialStructureElement" nillable="true"/>
<xs:complexType name="IfcExternalSpatialElement">
<xs:complexContent>
<xs:extension base="ifc:IfcExternalSpatialStructureElement">
<xs:attribute name="PredefinedType" type="ifc:IfcExternalSpatialElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExternalSpatialStructureElement" type="ifc:IfcExternalSpatialStructureElement" abstract="true" substitutionGroup="ifc:IfcSpatialElement" nillable="true"/>
<xs:complexType name="IfcExternalSpatialStructureElement" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcSpatialElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExternallyDefinedHatchStyle" type="ifc:IfcExternallyDefinedHatchStyle" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
<xs:complexType name="IfcExternallyDefinedHatchStyle">
<xs:complexContent>
<xs:extension base="ifc:IfcExternalReference"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExternallyDefinedSurfaceStyle" type="ifc:IfcExternallyDefinedSurfaceStyle" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
<xs:complexType name="IfcExternallyDefinedSurfaceStyle">
<xs:complexContent>
<xs:extension base="ifc:IfcExternalReference"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExternallyDefinedTextFont" type="ifc:IfcExternallyDefinedTextFont" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
<xs:complexType name="IfcExternallyDefinedTextFont">
<xs:complexContent>
<xs:extension base="ifc:IfcExternalReference"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExtrudedAreaSolid" type="ifc:IfcExtrudedAreaSolid" substitutionGroup="ifc:IfcSweptAreaSolid" nillable="true"/>
<xs:complexType name="IfcExtrudedAreaSolid">
<xs:complexContent>
<xs:extension base="ifc:IfcSweptAreaSolid">
<xs:sequence>
<xs:element name="ExtrudedDirection" type="ifc:IfcDirection" nillable="true"/>
</xs:sequence>
<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcExtrudedAreaSolidTapered" type="ifc:IfcExtrudedAreaSolidTapered" substitutionGroup="ifc:IfcExtrudedAreaSolid" nillable="true"/>
<xs:complexType name="IfcExtrudedAreaSolidTapered">
<xs:complexContent>
<xs:extension base="ifc:IfcExtrudedAreaSolid">
<xs:sequence>
<xs:element name="EndSweptArea" type="ifc:IfcProfileDef" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFace" type="ifc:IfcFace" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
<xs:complexType name="IfcFace">
<xs:complexContent>
<xs:extension base="ifc:IfcTopologicalRepresentationItem">
<xs:sequence>
<xs:element name="Bounds">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcFaceBound" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcFaceBound"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFaceBasedSurfaceModel" type="ifc:IfcFaceBasedSurfaceModel" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcFaceBasedSurfaceModel">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="FbsmFaces">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcConnectedFaceSet" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcConnectedFaceSet"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFaceBound" type="ifc:IfcFaceBound" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
<xs:complexType name="IfcFaceBound">
<xs:complexContent>
<xs:extension base="ifc:IfcTopologicalRepresentationItem">
<xs:sequence>
<xs:element name="Bound" type="ifc:IfcLoop" nillable="true"/>
</xs:sequence>
<xs:attribute name="Orientation" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFaceOuterBound" type="ifc:IfcFaceOuterBound" substitutionGroup="ifc:IfcFaceBound" nillable="true"/>
<xs:complexType name="IfcFaceOuterBound">
<xs:complexContent>
<xs:extension base="ifc:IfcFaceBound"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFaceSurface" type="ifc:IfcFaceSurface" substitutionGroup="ifc:IfcFace" nillable="true"/>
<xs:complexType name="IfcFaceSurface">
<xs:complexContent>
<xs:extension base="ifc:IfcFace">
<xs:sequence>
<xs:element name="FaceSurface" type="ifc:IfcSurface" nillable="true"/>
</xs:sequence>
<xs:attribute name="SameSense" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFacetedBrep" type="ifc:IfcFacetedBrep" substitutionGroup="ifc:IfcManifoldSolidBrep" nillable="true"/>
<xs:complexType name="IfcFacetedBrep">
<xs:complexContent>
<xs:extension base="ifc:IfcManifoldSolidBrep"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFacetedBrepWithVoids" type="ifc:IfcFacetedBrepWithVoids" substitutionGroup="ifc:IfcFacetedBrep" nillable="true"/>
<xs:complexType name="IfcFacetedBrepWithVoids">
<xs:complexContent>
<xs:extension base="ifc:IfcFacetedBrep">
<xs:sequence>
<xs:element name="Voids">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcClosedShell" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcClosedShell"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFailureConnectionCondition" type="ifc:IfcFailureConnectionCondition" substitutionGroup="ifc:IfcStructuralConnectionCondition" nillable="true"/>
<xs:complexType name="IfcFailureConnectionCondition">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralConnectionCondition">
<xs:attribute name="TensionFailureX" type="ifc:IfcForceMeasure" use="optional"/>
<xs:attribute name="TensionFailureY" type="ifc:IfcForceMeasure" use="optional"/>
<xs:attribute name="TensionFailureZ" type="ifc:IfcForceMeasure" use="optional"/>
<xs:attribute name="CompressionFailureX" type="ifc:IfcForceMeasure" use="optional"/>
<xs:attribute name="CompressionFailureY" type="ifc:IfcForceMeasure" use="optional"/>
<xs:attribute name="CompressionFailureZ" type="ifc:IfcForceMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFan" type="ifc:IfcFan" substitutionGroup="ifc:IfcFlowMovingDevice" nillable="true"/>
<xs:complexType name="IfcFan">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowMovingDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcFanTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFanType" type="ifc:IfcFanType" substitutionGroup="ifc:IfcFlowMovingDeviceType" nillable="true"/>
<xs:complexType name="IfcFanType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowMovingDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcFanTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFastener" type="ifc:IfcFastener" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
<xs:complexType name="IfcFastener">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponent">
<xs:attribute name="PredefinedType" type="ifc:IfcFastenerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFastenerType" type="ifc:IfcFastenerType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
<xs:complexType name="IfcFastenerType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponentType">
<xs:attribute name="PredefinedType" type="ifc:IfcFastenerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFeatureElement" type="ifc:IfcFeatureElement" abstract="true" substitutionGroup="ifc:IfcElement" nillable="true"/>
<xs:complexType name="IfcFeatureElement" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFeatureElementAddition" type="ifc:IfcFeatureElementAddition" abstract="true" substitutionGroup="ifc:IfcFeatureElement" nillable="true"/>
<xs:complexType name="IfcFeatureElementAddition" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcFeatureElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFeatureElementSubtraction" type="ifc:IfcFeatureElementSubtraction" abstract="true" substitutionGroup="ifc:IfcFeatureElement" nillable="true"/>
<xs:complexType name="IfcFeatureElementSubtraction" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcFeatureElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFillAreaStyle" type="ifc:IfcFillAreaStyle" substitutionGroup="ifc:IfcPresentationStyle" nillable="true"/>
<xs:complexType name="IfcFillAreaStyle">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationStyle">
<xs:sequence>
<xs:element name="FillStyles">
<xs:complexType>
<xs:group ref="ifc:IfcFillStyleSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcFillStyleSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ModelorDraughting" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFillAreaStyleHatching" type="ifc:IfcFillAreaStyleHatching" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcFillAreaStyleHatching">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="HatchLineAppearance" type="ifc:IfcCurveStyle" nillable="true"/>
<xs:element name="StartOfNextHatchLine">
<xs:complexType>
<xs:group ref="ifc:IfcHatchLineDistanceSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="PointOfReferenceHatchLine" type="ifc:IfcCartesianPoint" nillable="true" minOccurs="0"/>
<xs:element name="PatternStart" type="ifc:IfcCartesianPoint" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="HatchLineAngle" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFillAreaStyleTiles" type="ifc:IfcFillAreaStyleTiles" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcFillAreaStyleTiles">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="TilingPattern">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcVector" minOccurs="2" maxOccurs="2"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcVector"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Tiles">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcStyledItem" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcStyledItem"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TilingScale" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFilter" type="ifc:IfcFilter" substitutionGroup="ifc:IfcFlowTreatmentDevice" nillable="true"/>
<xs:complexType name="IfcFilter">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTreatmentDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcFilterTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFilterType" type="ifc:IfcFilterType" substitutionGroup="ifc:IfcFlowTreatmentDeviceType" nillable="true"/>
<xs:complexType name="IfcFilterType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTreatmentDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcFilterTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFireSuppressionTerminal" type="ifc:IfcFireSuppressionTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcFireSuppressionTerminal">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcFireSuppressionTerminalTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFireSuppressionTerminalType" type="ifc:IfcFireSuppressionTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcFireSuppressionTerminalType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcFireSuppressionTerminalTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFixedReferenceSweptAreaSolid" type="ifc:IfcFixedReferenceSweptAreaSolid" substitutionGroup="ifc:IfcSweptAreaSolid" nillable="true"/>
<xs:complexType name="IfcFixedReferenceSweptAreaSolid">
<xs:complexContent>
<xs:extension base="ifc:IfcSweptAreaSolid">
<xs:sequence>
<xs:element name="Directrix" type="ifc:IfcCurve" nillable="true"/>
<xs:element name="FixedReference" type="ifc:IfcDirection" nillable="true"/>
</xs:sequence>
<xs:attribute name="StartParam" type="ifc:IfcParameterValue" use="optional"/>
<xs:attribute name="EndParam" type="ifc:IfcParameterValue" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowController" type="ifc:IfcFlowController" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
<xs:complexType name="IfcFlowController">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowControllerType" type="ifc:IfcFlowControllerType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
<xs:complexType name="IfcFlowControllerType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowFitting" type="ifc:IfcFlowFitting" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
<xs:complexType name="IfcFlowFitting">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowFittingType" type="ifc:IfcFlowFittingType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
<xs:complexType name="IfcFlowFittingType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowInstrument" type="ifc:IfcFlowInstrument" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
<xs:complexType name="IfcFlowInstrument">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElement">
<xs:attribute name="PredefinedType" type="ifc:IfcFlowInstrumentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowInstrumentType" type="ifc:IfcFlowInstrumentType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
<xs:complexType name="IfcFlowInstrumentType">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcFlowInstrumentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowMeter" type="ifc:IfcFlowMeter" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
<xs:complexType name="IfcFlowMeter">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowController">
<xs:attribute name="PredefinedType" type="ifc:IfcFlowMeterTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowMeterType" type="ifc:IfcFlowMeterType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
<xs:complexType name="IfcFlowMeterType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowControllerType">
<xs:attribute name="PredefinedType" type="ifc:IfcFlowMeterTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowMovingDevice" type="ifc:IfcFlowMovingDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
<xs:complexType name="IfcFlowMovingDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowMovingDeviceType" type="ifc:IfcFlowMovingDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
<xs:complexType name="IfcFlowMovingDeviceType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowSegment" type="ifc:IfcFlowSegment" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
<xs:complexType name="IfcFlowSegment">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowSegmentType" type="ifc:IfcFlowSegmentType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
<xs:complexType name="IfcFlowSegmentType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowStorageDevice" type="ifc:IfcFlowStorageDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
<xs:complexType name="IfcFlowStorageDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowStorageDeviceType" type="ifc:IfcFlowStorageDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
<xs:complexType name="IfcFlowStorageDeviceType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowTerminal" type="ifc:IfcFlowTerminal" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
<xs:complexType name="IfcFlowTerminal">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowTerminalType" type="ifc:IfcFlowTerminalType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
<xs:complexType name="IfcFlowTerminalType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowTreatmentDevice" type="ifc:IfcFlowTreatmentDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
<xs:complexType name="IfcFlowTreatmentDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFlowTreatmentDeviceType" type="ifc:IfcFlowTreatmentDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
<xs:complexType name="IfcFlowTreatmentDeviceType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionFlowElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFooting" type="ifc:IfcFooting" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcFooting">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcFootingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFootingType" type="ifc:IfcFootingType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcFootingType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcFootingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFurnishingElement" type="ifc:IfcFurnishingElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
<xs:complexType name="IfcFurnishingElement">
<xs:complexContent>
<xs:extension base="ifc:IfcElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFurnishingElementType" type="ifc:IfcFurnishingElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
<xs:complexType name="IfcFurnishingElementType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFurniture" type="ifc:IfcFurniture" substitutionGroup="ifc:IfcFurnishingElement" nillable="true"/>
<xs:complexType name="IfcFurniture">
<xs:complexContent>
<xs:extension base="ifc:IfcFurnishingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcFurnitureTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcFurnitureType" type="ifc:IfcFurnitureType" substitutionGroup="ifc:IfcFurnishingElementType" nillable="true"/>
<xs:complexType name="IfcFurnitureType">
<xs:complexContent>
<xs:extension base="ifc:IfcFurnishingElementType">
<xs:attribute name="AssemblyPlace" type="ifc:IfcAssemblyPlaceEnum" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcFurnitureTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGeographicElement" type="ifc:IfcGeographicElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
<xs:complexType name="IfcGeographicElement">
<xs:complexContent>
<xs:extension base="ifc:IfcElement">
<xs:attribute name="PredefinedType" type="ifc:IfcGeographicElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGeographicElementType" type="ifc:IfcGeographicElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
<xs:complexType name="IfcGeographicElementType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcGeographicElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGeometricCurveSet" type="ifc:IfcGeometricCurveSet" substitutionGroup="ifc:IfcGeometricSet" nillable="true"/>
<xs:complexType name="IfcGeometricCurveSet">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricSet"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGeometricRepresentationContext" type="ifc:IfcGeometricRepresentationContext" substitutionGroup="ifc:IfcRepresentationContext" nillable="true"/>
<xs:complexType name="IfcGeometricRepresentationContext">
<xs:complexContent>
<xs:extension base="ifc:IfcRepresentationContext">
<xs:sequence>
<xs:element name="WorldCoordinateSystem" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcAxis2Placement"/>
</xs:complexType>
</xs:element>
<xs:element name="TrueNorth" type="ifc:IfcDirection" nillable="true" minOccurs="0"/>
<xs:element name="HasSubContexts" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcGeometricRepresentationSubContext" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGeometricRepresentationSubContext"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="HasCoordinateOperation" type="ifc:IfcCoordinateOperation" nillable="true" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="CoordinateSpaceDimension" type="ifc:IfcDimensionCount" use="optional"/>
<xs:attribute name="Precision" type="ifc:IfcReal" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGeometricRepresentationItem" type="ifc:IfcGeometricRepresentationItem" abstract="true" substitutionGroup="ifc:IfcRepresentationItem" nillable="true"/>
<xs:complexType name="IfcGeometricRepresentationItem" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRepresentationItem"/>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="IfcGeometricRepresentationSubContext-temp" abstract="true">
<xs:complexContent>
<xs:restriction base="ifc:IfcGeometricRepresentationContext">
<xs:sequence/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGeometricRepresentationSubContext" type="ifc:IfcGeometricRepresentationSubContext" substitutionGroup="ifc:IfcGeometricRepresentationContext" nillable="true"/>
<xs:complexType name="IfcGeometricRepresentationSubContext">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationSubContext-temp">
<xs:attribute name="TargetScale" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
<xs:attribute name="TargetView" type="ifc:IfcGeometricProjectionEnum" use="optional"/>
<xs:attribute name="UserDefinedTargetView" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGeometricSet" type="ifc:IfcGeometricSet" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcGeometricSet">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="Elements">
<xs:complexType>
<xs:group ref="ifc:IfcGeometricSetSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGeometricSetSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGrid" type="ifc:IfcGrid" substitutionGroup="ifc:IfcProduct" nillable="true"/>
<xs:complexType name="IfcGrid">
<xs:complexContent>
<xs:extension base="ifc:IfcProduct">
<xs:sequence>
<xs:element name="UAxes">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcGridAxis" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGridAxis"/>
<xs:attribute ref="ifc:cType" fixed="list-unique"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="VAxes">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcGridAxis" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGridAxis"/>
<xs:attribute ref="ifc:cType" fixed="list-unique"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="WAxes" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcGridAxis" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGridAxis"/>
<xs:attribute ref="ifc:cType" fixed="list-unique"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="PredefinedType" type="ifc:IfcGridTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGridAxis" type="ifc:IfcGridAxis" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcGridAxis">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="AxisCurve" type="ifc:IfcCurve" nillable="true"/>
</xs:sequence>
<xs:attribute name="AxisTag" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="SameSense" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGridPlacement" type="ifc:IfcGridPlacement" substitutionGroup="ifc:IfcObjectPlacement" nillable="true"/>
<xs:complexType name="IfcGridPlacement">
<xs:complexContent>
<xs:extension base="ifc:IfcObjectPlacement">
<xs:sequence>
<xs:element name="PlacementLocation" type="ifc:IfcVirtualGridIntersection" nillable="true"/>
<xs:element name="PlacementRefDirection" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcGridPlacementDirectionSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcGroup" type="ifc:IfcGroup" substitutionGroup="ifc:IfcObject" nillable="true"/>
<xs:complexType name="IfcGroup">
<xs:complexContent>
<xs:extension base="ifc:IfcObject"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcHalfSpaceSolid" type="ifc:IfcHalfSpaceSolid" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcHalfSpaceSolid">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="BaseSurface" type="ifc:IfcSurface" nillable="true"/>
</xs:sequence>
<xs:attribute name="AgreementFlag" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcHeatExchanger" type="ifc:IfcHeatExchanger" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcHeatExchanger">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcHeatExchangerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcHeatExchangerType" type="ifc:IfcHeatExchangerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcHeatExchangerType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcHeatExchangerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcHumidifier" type="ifc:IfcHumidifier" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcHumidifier">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcHumidifierTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcHumidifierType" type="ifc:IfcHumidifierType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcHumidifierType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcHumidifierTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcIShapeProfileDef" type="ifc:IfcIShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcIShapeProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="OverallWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="OverallDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="WebThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="FlangeEdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="FlangeSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcImageTexture" type="ifc:IfcImageTexture" substitutionGroup="ifc:IfcSurfaceTexture" nillable="true"/>
<xs:complexType name="IfcImageTexture">
<xs:complexContent>
<xs:extension base="ifc:IfcSurfaceTexture">
<xs:attribute name="URLReference" type="ifc:IfcURIReference" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcIndexedColourMap" type="ifc:IfcIndexedColourMap" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcIndexedColourMap">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:sequence>
<xs:element name="Colours" type="ifc:IfcColourRgbList" nillable="true"/>
</xs:sequence>
<xs:attribute name="Opacity" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="ColourIndex" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcPositiveInteger"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcIndexedPolyCurve" type="ifc:IfcIndexedPolyCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
<xs:complexType name="IfcIndexedPolyCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedCurve">
<xs:sequence>
<xs:element name="Points" type="ifc:IfcCartesianPointList" nillable="true"/>
<xs:element name="Segments" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcSegmentIndexSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSegmentIndexSelect"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="SelfIntersect" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcIndexedPolygonalFace" type="ifc:IfcIndexedPolygonalFace" substitutionGroup="ifc:IfcTessellatedItem" nillable="true"/>
<xs:complexType name="IfcIndexedPolygonalFace">
<xs:complexContent>
<xs:extension base="ifc:IfcTessellatedItem">
<xs:attribute name="CoordIndex" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcPositiveInteger"/>
</xs:simpleType>
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcIndexedPolygonalFaceWithVoids" type="ifc:IfcIndexedPolygonalFaceWithVoids" substitutionGroup="ifc:IfcIndexedPolygonalFace" nillable="true"/>
<xs:complexType name="IfcIndexedPolygonalFaceWithVoids">
<xs:complexContent>
<xs:extension base="ifc:IfcIndexedPolygonalFace">
<xs:sequence>
<xs:element name="InnerCoordIndices" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Seq-IfcPositiveInteger-wrapper" type="ifc:Seq-IfcPositiveInteger" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcIndexedTextureMap" type="ifc:IfcIndexedTextureMap" abstract="true" substitutionGroup="ifc:IfcTextureCoordinate" nillable="true"/>
<xs:complexType name="IfcIndexedTextureMap" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcTextureCoordinate">
<xs:sequence>
<xs:element name="TexCoords" type="ifc:IfcTextureVertexList" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcIndexedTriangleTextureMap" type="ifc:IfcIndexedTriangleTextureMap" substitutionGroup="ifc:IfcIndexedTextureMap" nillable="true"/>
<xs:complexType name="IfcIndexedTriangleTextureMap">
<xs:complexContent>
<xs:extension base="ifc:IfcIndexedTextureMap">
<xs:attribute name="TexCoordIndex" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcPositiveInteger"/>
</xs:simpleType>
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcInterceptor" type="ifc:IfcInterceptor" substitutionGroup="ifc:IfcFlowTreatmentDevice" nillable="true"/>
<xs:complexType name="IfcInterceptor">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTreatmentDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcInterceptorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcInterceptorType" type="ifc:IfcInterceptorType" substitutionGroup="ifc:IfcFlowTreatmentDeviceType" nillable="true"/>
<xs:complexType name="IfcInterceptorType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTreatmentDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcInterceptorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcIntersectionCurve" type="ifc:IfcIntersectionCurve" substitutionGroup="ifc:IfcSurfaceCurve" nillable="true"/>
<xs:complexType name="IfcIntersectionCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcSurfaceCurve"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcInventory" type="ifc:IfcInventory" substitutionGroup="ifc:IfcGroup" nillable="true"/>
<xs:complexType name="IfcInventory">
<xs:complexContent>
<xs:extension base="ifc:IfcGroup">
<xs:sequence>
<xs:element name="Jurisdiction" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcActorSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="ResponsiblePersons" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPerson" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPerson"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="CurrentValue" type="ifc:IfcCostValue" nillable="true" minOccurs="0"/>
<xs:element name="OriginalValue" type="ifc:IfcCostValue" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="PredefinedType" type="ifc:IfcInventoryTypeEnum" use="optional"/>
<xs:attribute name="LastUpdateDate" type="ifc:IfcDate" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcIrregularTimeSeries" type="ifc:IfcIrregularTimeSeries" substitutionGroup="ifc:IfcTimeSeries" nillable="true"/>
<xs:complexType name="IfcIrregularTimeSeries">
<xs:complexContent>
<xs:extension base="ifc:IfcTimeSeries">
<xs:sequence>
<xs:element name="Values">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcIrregularTimeSeriesValue" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcIrregularTimeSeriesValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcIrregularTimeSeriesValue" type="ifc:IfcIrregularTimeSeriesValue" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcIrregularTimeSeriesValue">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="ListValues">
<xs:complexType>
<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TimeStamp" type="ifc:IfcDateTime" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcJunctionBox" type="ifc:IfcJunctionBox" substitutionGroup="ifc:IfcFlowFitting" nillable="true"/>
<xs:complexType name="IfcJunctionBox">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowFitting">
<xs:attribute name="PredefinedType" type="ifc:IfcJunctionBoxTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcJunctionBoxType" type="ifc:IfcJunctionBoxType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
<xs:complexType name="IfcJunctionBoxType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowFittingType">
<xs:attribute name="PredefinedType" type="ifc:IfcJunctionBoxTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLShapeProfileDef" type="ifc:IfcLShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcLShapeProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="Width" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="Thickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="EdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="LegSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLaborResource" type="ifc:IfcLaborResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
<xs:complexType name="IfcLaborResource">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResource">
<xs:attribute name="PredefinedType" type="ifc:IfcLaborResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLaborResourceType" type="ifc:IfcLaborResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
<xs:complexType name="IfcLaborResourceType">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResourceType">
<xs:attribute name="PredefinedType" type="ifc:IfcLaborResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLagTime" type="ifc:IfcLagTime" substitutionGroup="ifc:IfcSchedulingTime" nillable="true"/>
<xs:complexType name="IfcLagTime">
<xs:complexContent>
<xs:extension base="ifc:IfcSchedulingTime">
<xs:sequence>
<xs:element name="LagValue">
<xs:complexType>
<xs:group ref="ifc:IfcTimeOrRatioSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="DurationType" type="ifc:IfcTaskDurationEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLamp" type="ifc:IfcLamp" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcLamp">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcLampTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLampType" type="ifc:IfcLampType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcLampType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcLampTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLibraryInformation" type="ifc:IfcLibraryInformation" substitutionGroup="ifc:IfcExternalInformation" nillable="true"/>
<xs:complexType name="IfcLibraryInformation">
<xs:complexContent>
<xs:extension base="ifc:IfcExternalInformation">
<xs:sequence>
<xs:element name="Publisher" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcActorSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Version" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="VersionDate" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="Location" type="ifc:IfcURIReference" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLibraryReference" type="ifc:IfcLibraryReference" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
<xs:complexType name="IfcLibraryReference">
<xs:complexContent>
<xs:extension base="ifc:IfcExternalReference">
<xs:sequence>
<xs:element name="ReferencedLibrary" type="ifc:IfcLibraryInformation" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Language" type="ifc:IfcLanguageId" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLightDistributionData" type="ifc:IfcLightDistributionData" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcLightDistributionData">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="MainPlaneAngle" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
<xs:attribute name="SecondaryPlaneAngle" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcPlaneAngleMeasure"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="LuminousIntensity" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLuminousIntensityDistributionMeasure"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLightFixture" type="ifc:IfcLightFixture" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcLightFixture">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcLightFixtureTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLightFixtureType" type="ifc:IfcLightFixtureType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcLightFixtureType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcLightFixtureTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLightIntensityDistribution" type="ifc:IfcLightIntensityDistribution" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcLightIntensityDistribution">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="DistributionData">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcLightDistributionData" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcLightDistributionData"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="LightDistributionCurve" type="ifc:IfcLightDistributionCurveEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLightSource" type="ifc:IfcLightSource" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcLightSource" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="LightColour" type="ifc:IfcColourRgb" nillable="true"/>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="AmbientIntensity" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="Intensity" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLightSourceAmbient" type="ifc:IfcLightSourceAmbient" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
<xs:complexType name="IfcLightSourceAmbient">
<xs:complexContent>
<xs:extension base="ifc:IfcLightSource"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLightSourceDirectional" type="ifc:IfcLightSourceDirectional" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
<xs:complexType name="IfcLightSourceDirectional">
<xs:complexContent>
<xs:extension base="ifc:IfcLightSource">
<xs:sequence>
<xs:element name="Orientation" type="ifc:IfcDirection" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLightSourceGoniometric" type="ifc:IfcLightSourceGoniometric" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
<xs:complexType name="IfcLightSourceGoniometric">
<xs:complexContent>
<xs:extension base="ifc:IfcLightSource">
<xs:sequence>
<xs:element name="Position" type="ifc:IfcAxis2Placement3D" nillable="true"/>
<xs:element name="ColourAppearance" type="ifc:IfcColourRgb" nillable="true" minOccurs="0"/>
<xs:element name="LightDistributionDataSource">
<xs:complexType>
<xs:group ref="ifc:IfcLightDistributionDataSourceSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ColourTemperature" type="ifc:IfcThermodynamicTemperatureMeasure" use="optional"/>
<xs:attribute name="LuminousFlux" type="ifc:IfcLuminousFluxMeasure" use="optional"/>
<xs:attribute name="LightEmissionSource" type="ifc:IfcLightEmissionSourceEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLightSourcePositional" type="ifc:IfcLightSourcePositional" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
<xs:complexType name="IfcLightSourcePositional">
<xs:complexContent>
<xs:extension base="ifc:IfcLightSource">
<xs:sequence>
<xs:element name="Position" type="ifc:IfcCartesianPoint" nillable="true"/>
</xs:sequence>
<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="ConstantAttenuation" type="ifc:IfcReal" use="optional"/>
<xs:attribute name="DistanceAttenuation" type="ifc:IfcReal" use="optional"/>
<xs:attribute name="QuadricAttenuation" type="ifc:IfcReal" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLightSourceSpot" type="ifc:IfcLightSourceSpot" substitutionGroup="ifc:IfcLightSourcePositional" nillable="true"/>
<xs:complexType name="IfcLightSourceSpot">
<xs:complexContent>
<xs:extension base="ifc:IfcLightSourcePositional">
<xs:sequence>
<xs:element name="Orientation" type="ifc:IfcDirection" nillable="true"/>
</xs:sequence>
<xs:attribute name="ConcentrationExponent" type="ifc:IfcReal" use="optional"/>
<xs:attribute name="SpreadAngle" type="ifc:IfcPositivePlaneAngleMeasure" use="optional"/>
<xs:attribute name="BeamWidthAngle" type="ifc:IfcPositivePlaneAngleMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLine" type="ifc:IfcLine" substitutionGroup="ifc:IfcCurve" nillable="true"/>
<xs:complexType name="IfcLine">
<xs:complexContent>
<xs:extension base="ifc:IfcCurve">
<xs:sequence>
<xs:element name="Pnt" type="ifc:IfcCartesianPoint" nillable="true"/>
<xs:element name="Dir" type="ifc:IfcVector" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLocalPlacement" type="ifc:IfcLocalPlacement" substitutionGroup="ifc:IfcObjectPlacement" nillable="true"/>
<xs:complexType name="IfcLocalPlacement">
<xs:complexContent>
<xs:extension base="ifc:IfcObjectPlacement">
<xs:sequence>
<xs:element name="PlacementRelTo" type="ifc:IfcObjectPlacement" nillable="true" minOccurs="0"/>
<xs:element name="RelativePlacement">
<xs:complexType>
<xs:group ref="ifc:IfcAxis2Placement"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcLoop" type="ifc:IfcLoop" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
<xs:complexType name="IfcLoop">
<xs:complexContent>
<xs:extension base="ifc:IfcTopologicalRepresentationItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcManifoldSolidBrep" type="ifc:IfcManifoldSolidBrep" abstract="true" substitutionGroup="ifc:IfcSolidModel" nillable="true"/>
<xs:complexType name="IfcManifoldSolidBrep" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcSolidModel">
<xs:sequence>
<xs:element name="Outer" type="ifc:IfcClosedShell" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMapConversion" type="ifc:IfcMapConversion" substitutionGroup="ifc:IfcCoordinateOperation" nillable="true"/>
<xs:complexType name="IfcMapConversion">
<xs:complexContent>
<xs:extension base="ifc:IfcCoordinateOperation">
<xs:attribute name="Eastings" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="Northings" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="OrthogonalHeight" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="XAxisAbscissa" type="ifc:IfcReal" use="optional"/>
<xs:attribute name="XAxisOrdinate" type="ifc:IfcReal" use="optional"/>
<xs:attribute name="Scale" type="ifc:IfcReal" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMappedItem" type="ifc:IfcMappedItem" substitutionGroup="ifc:IfcRepresentationItem" nillable="true"/>
<xs:complexType name="IfcMappedItem">
<xs:complexContent>
<xs:extension base="ifc:IfcRepresentationItem">
<xs:sequence>
<xs:element name="MappingSource" type="ifc:IfcRepresentationMap" nillable="true"/>
<xs:element name="MappingTarget" type="ifc:IfcCartesianTransformationOperator" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterial" type="ifc:IfcMaterial" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
<xs:complexType name="IfcMaterial">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialDefinition">
<xs:sequence>
<xs:element name="HasRepresentation" type="ifc:IfcMaterialDefinitionRepresentation" nillable="true" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Category" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialClassificationRelationship" type="ifc:IfcMaterialClassificationRelationship" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcMaterialClassificationRelationship">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="MaterialClassifications">
<xs:complexType>
<xs:group ref="ifc:IfcClassificationSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcClassificationSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="ClassifiedMaterial" type="ifc:IfcMaterial" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialConstituent" type="ifc:IfcMaterialConstituent" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
<xs:complexType name="IfcMaterialConstituent">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialDefinition">
<xs:sequence>
<xs:element name="Material" type="ifc:IfcMaterial" nillable="true"/>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Fraction" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="Category" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialConstituentSet" type="ifc:IfcMaterialConstituentSet" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
<xs:complexType name="IfcMaterialConstituentSet">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialDefinition">
<xs:sequence>
<xs:element name="MaterialConstituents" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcMaterialConstituent" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterialConstituent"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialDefinition" type="ifc:IfcMaterialDefinition" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcMaterialDefinition" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="HasProperties" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcMaterialProperties" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterialProperties"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialDefinitionRepresentation" type="ifc:IfcMaterialDefinitionRepresentation" substitutionGroup="ifc:IfcProductRepresentation" nillable="true"/>
<xs:complexType name="IfcMaterialDefinitionRepresentation">
<xs:complexContent>
<xs:extension base="ifc:IfcProductRepresentation"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialLayer" type="ifc:IfcMaterialLayer" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
<xs:complexType name="IfcMaterialLayer">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialDefinition">
<xs:sequence>
<xs:element name="Material" type="ifc:IfcMaterial" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="LayerThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="IsVentilated" type="ifc:IfcLogical" use="optional"/>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Category" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Priority" type="ifc:IfcInteger" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialLayerSet" type="ifc:IfcMaterialLayerSet" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
<xs:complexType name="IfcMaterialLayerSet">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialDefinition">
<xs:sequence>
<xs:element name="MaterialLayers">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcMaterialLayer" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterialLayer"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="LayerSetName" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialLayerSetUsage" type="ifc:IfcMaterialLayerSetUsage" substitutionGroup="ifc:IfcMaterialUsageDefinition" nillable="true"/>
<xs:complexType name="IfcMaterialLayerSetUsage">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialUsageDefinition">
<xs:sequence>
<xs:element name="ForLayerSet" type="ifc:IfcMaterialLayerSet" nillable="true"/>
</xs:sequence>
<xs:attribute name="LayerSetDirection" type="ifc:IfcLayerSetDirectionEnum" use="optional"/>
<xs:attribute name="DirectionSense" type="ifc:IfcDirectionSenseEnum" use="optional"/>
<xs:attribute name="OffsetFromReferenceLine" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="ReferenceExtent" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialLayerWithOffsets" type="ifc:IfcMaterialLayerWithOffsets" substitutionGroup="ifc:IfcMaterialLayer" nillable="true"/>
<xs:complexType name="IfcMaterialLayerWithOffsets">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialLayer">
<xs:attribute name="OffsetDirection" type="ifc:IfcLayerSetDirectionEnum" use="optional"/>
<xs:attribute name="OffsetValues" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:minLength value="2"/>
<xs:maxLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialList" type="ifc:IfcMaterialList" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcMaterialList">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Materials">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcMaterial" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterial"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialProfile" type="ifc:IfcMaterialProfile" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
<xs:complexType name="IfcMaterialProfile">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialDefinition">
<xs:sequence>
<xs:element name="Material" type="ifc:IfcMaterial" nillable="true" minOccurs="0"/>
<xs:element name="Profile" type="ifc:IfcProfileDef" nillable="true"/>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Priority" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="Category" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialProfileSet" type="ifc:IfcMaterialProfileSet" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
<xs:complexType name="IfcMaterialProfileSet">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialDefinition">
<xs:sequence>
<xs:element name="MaterialProfiles">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcMaterialProfile" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterialProfile"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="CompositeProfile" type="ifc:IfcCompositeProfileDef" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialProfileSetUsage" type="ifc:IfcMaterialProfileSetUsage" substitutionGroup="ifc:IfcMaterialUsageDefinition" nillable="true"/>
<xs:complexType name="IfcMaterialProfileSetUsage">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialUsageDefinition">
<xs:sequence>
<xs:element name="ForProfileSet" type="ifc:IfcMaterialProfileSet" nillable="true"/>
</xs:sequence>
<xs:attribute name="CardinalPoint" type="ifc:IfcCardinalPointReference" use="optional"/>
<xs:attribute name="ReferenceExtent" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialProfileSetUsageTapering" type="ifc:IfcMaterialProfileSetUsageTapering" substitutionGroup="ifc:IfcMaterialProfileSetUsage" nillable="true"/>
<xs:complexType name="IfcMaterialProfileSetUsageTapering">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialProfileSetUsage">
<xs:sequence>
<xs:element name="ForProfileEndSet" type="ifc:IfcMaterialProfileSet" nillable="true"/>
</xs:sequence>
<xs:attribute name="CardinalEndPoint" type="ifc:IfcCardinalPointReference" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialProfileWithOffsets" type="ifc:IfcMaterialProfileWithOffsets" substitutionGroup="ifc:IfcMaterialProfile" nillable="true"/>
<xs:complexType name="IfcMaterialProfileWithOffsets">
<xs:complexContent>
<xs:extension base="ifc:IfcMaterialProfile">
<xs:attribute name="OffsetValues" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:minLength value="2"/>
<xs:maxLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialProperties" type="ifc:IfcMaterialProperties" substitutionGroup="ifc:IfcExtendedProperties" nillable="true"/>
<xs:complexType name="IfcMaterialProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcExtendedProperties"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialRelationship" type="ifc:IfcMaterialRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
<xs:complexType name="IfcMaterialRelationship">
<xs:complexContent>
<xs:extension base="ifc:IfcResourceLevelRelationship">
<xs:sequence>
<xs:element name="RelatingMaterial" type="ifc:IfcMaterial" nillable="true"/>
<xs:element name="RelatedMaterials">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcMaterial" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterial"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Expression" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMaterialUsageDefinition" type="ifc:IfcMaterialUsageDefinition" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcMaterialUsageDefinition" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMeasureWithUnit" type="ifc:IfcMeasureWithUnit" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcMeasureWithUnit">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="ValueComponent">
<xs:complexType>
<xs:group ref="ifc:IfcValue"/>
</xs:complexType>
</xs:element>
<xs:element name="UnitComponent">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMechanicalFastener" type="ifc:IfcMechanicalFastener" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
<xs:complexType name="IfcMechanicalFastener">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponent">
<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="NominalLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcMechanicalFastenerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMechanicalFastenerType" type="ifc:IfcMechanicalFastenerType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
<xs:complexType name="IfcMechanicalFastenerType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponentType">
<xs:attribute name="PredefinedType" type="ifc:IfcMechanicalFastenerTypeEnum" use="optional"/>
<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="NominalLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMedicalDevice" type="ifc:IfcMedicalDevice" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcMedicalDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcMedicalDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMedicalDeviceType" type="ifc:IfcMedicalDeviceType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcMedicalDeviceType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcMedicalDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMember" type="ifc:IfcMember" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcMember">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcMemberTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMemberStandardCase" type="ifc:IfcMemberStandardCase" substitutionGroup="ifc:IfcMember" nillable="true"/>
<xs:complexType name="IfcMemberStandardCase">
<xs:complexContent>
<xs:extension base="ifc:IfcMember"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMemberType" type="ifc:IfcMemberType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcMemberType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcMemberTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMetric" type="ifc:IfcMetric" substitutionGroup="ifc:IfcConstraint" nillable="true"/>
<xs:complexType name="IfcMetric">
<xs:complexContent>
<xs:extension base="ifc:IfcConstraint">
<xs:sequence>
<xs:element name="DataValue" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcMetricValueSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="ReferencePath" type="ifc:IfcReference" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Benchmark" type="ifc:IfcBenchmarkEnum" use="optional"/>
<xs:attribute name="ValueSource" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="IfcMirroredProfileDef-temp" abstract="true">
<xs:complexContent>
<xs:restriction base="ifc:IfcDerivedProfileDef">
<xs:sequence>
<xs:element name="ParentProfile" type="ifc:IfcProfileDef" nillable="true"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMirroredProfileDef" type="ifc:IfcMirroredProfileDef" substitutionGroup="ifc:IfcDerivedProfileDef" nillable="true"/>
<xs:complexType name="IfcMirroredProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcMirroredProfileDef-temp"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMonetaryUnit" type="ifc:IfcMonetaryUnit" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcMonetaryUnit">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Currency" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMotorConnection" type="ifc:IfcMotorConnection" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcMotorConnection">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcMotorConnectionTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcMotorConnectionType" type="ifc:IfcMotorConnectionType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcMotorConnectionType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcMotorConnectionTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcNamedUnit" type="ifc:IfcNamedUnit" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcNamedUnit" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Dimensions" type="ifc:IfcDimensionalExponents" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="UnitType" type="ifc:IfcUnitEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcObject" type="ifc:IfcObject" abstract="true" substitutionGroup="ifc:IfcObjectDefinition" nillable="true"/>
<xs:complexType name="IfcObject" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcObjectDefinition">
<xs:sequence>
<xs:element name="IsDeclaredBy" type="ifc:IfcRelDefinesByObject" nillable="true" minOccurs="0" maxOccurs="1"/>
<xs:element name="IsTypedBy" type="ifc:IfcRelDefinesByType" nillable="true" minOccurs="0" maxOccurs="1"/>
<xs:element name="IsDefinedBy" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRelDefinesByProperties" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelDefinesByProperties"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ObjectType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcObjectDefinition" type="ifc:IfcObjectDefinition" abstract="true" substitutionGroup="ifc:IfcRoot" nillable="true"/>
<xs:complexType name="IfcObjectDefinition" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRoot">
<xs:sequence>
<xs:element name="IsNestedBy" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRelNests" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelNests"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="IsDecomposedBy" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRelAggregates" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelAggregates"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcObjectPlacement" type="ifc:IfcObjectPlacement" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcObjectPlacement" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcObjective" type="ifc:IfcObjective" substitutionGroup="ifc:IfcConstraint" nillable="true"/>
<xs:complexType name="IfcObjective">
<xs:complexContent>
<xs:extension base="ifc:IfcConstraint">
<xs:sequence>
<xs:element name="BenchmarkValues" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcConstraint" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcConstraint"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="LogicalAggregator" type="ifc:IfcLogicalOperatorEnum" use="optional"/>
<xs:attribute name="ObjectiveQualifier" type="ifc:IfcObjectiveEnum" use="optional"/>
<xs:attribute name="UserDefinedQualifier" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOccupant" type="ifc:IfcOccupant" substitutionGroup="ifc:IfcActor" nillable="true"/>
<xs:complexType name="IfcOccupant">
<xs:complexContent>
<xs:extension base="ifc:IfcActor">
<xs:attribute name="PredefinedType" type="ifc:IfcOccupantTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOffsetCurve2D" type="ifc:IfcOffsetCurve2D" substitutionGroup="ifc:IfcCurve" nillable="true"/>
<xs:complexType name="IfcOffsetCurve2D">
<xs:complexContent>
<xs:extension base="ifc:IfcCurve">
<xs:sequence>
<xs:element name="BasisCurve" type="ifc:IfcCurve" nillable="true"/>
</xs:sequence>
<xs:attribute name="Distance" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="SelfIntersect" type="ifc:IfcLogical" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOffsetCurve3D" type="ifc:IfcOffsetCurve3D" substitutionGroup="ifc:IfcCurve" nillable="true"/>
<xs:complexType name="IfcOffsetCurve3D">
<xs:complexContent>
<xs:extension base="ifc:IfcCurve">
<xs:sequence>
<xs:element name="BasisCurve" type="ifc:IfcCurve" nillable="true"/>
<xs:element name="RefDirection" type="ifc:IfcDirection" nillable="true"/>
</xs:sequence>
<xs:attribute name="Distance" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="SelfIntersect" type="ifc:IfcLogical" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOpenShell" type="ifc:IfcOpenShell" substitutionGroup="ifc:IfcConnectedFaceSet" nillable="true"/>
<xs:complexType name="IfcOpenShell">
<xs:complexContent>
<xs:extension base="ifc:IfcConnectedFaceSet"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOpeningElement" type="ifc:IfcOpeningElement" substitutionGroup="ifc:IfcFeatureElementSubtraction" nillable="true"/>
<xs:complexType name="IfcOpeningElement">
<xs:complexContent>
<xs:extension base="ifc:IfcFeatureElementSubtraction">
<xs:sequence>
<xs:element name="HasFillings" type="ifc:IfcRelFillsElement" nillable="true" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="PredefinedType" type="ifc:IfcOpeningElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOpeningStandardCase" type="ifc:IfcOpeningStandardCase" substitutionGroup="ifc:IfcOpeningElement" nillable="true"/>
<xs:complexType name="IfcOpeningStandardCase">
<xs:complexContent>
<xs:extension base="ifc:IfcOpeningElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOrganization" type="ifc:IfcOrganization" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcOrganization">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Roles" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcActorRole" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcActorRole"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Addresses" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcAddress" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAddress"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOrganizationRelationship" type="ifc:IfcOrganizationRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
<xs:complexType name="IfcOrganizationRelationship">
<xs:complexContent>
<xs:extension base="ifc:IfcResourceLevelRelationship">
<xs:sequence>
<xs:element name="RelatingOrganization" type="ifc:IfcOrganization" nillable="true"/>
<xs:element name="RelatedOrganizations">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcOrganization" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcOrganization"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="IfcOrientedEdge-temp" abstract="true">
<xs:complexContent>
<xs:restriction base="ifc:IfcEdge">
<xs:sequence/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOrientedEdge" type="ifc:IfcOrientedEdge" substitutionGroup="ifc:IfcEdge" nillable="true"/>
<xs:complexType name="IfcOrientedEdge">
<xs:complexContent>
<xs:extension base="ifc:IfcOrientedEdge-temp">
<xs:sequence>
<xs:element name="EdgeElement" type="ifc:IfcEdge" nillable="true"/>
</xs:sequence>
<xs:attribute name="Orientation" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOuterBoundaryCurve" type="ifc:IfcOuterBoundaryCurve" substitutionGroup="ifc:IfcBoundaryCurve" nillable="true"/>
<xs:complexType name="IfcOuterBoundaryCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundaryCurve"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOutlet" type="ifc:IfcOutlet" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcOutlet">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcOutletTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOutletType" type="ifc:IfcOutletType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcOutletType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcOutletTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcOwnerHistory" type="ifc:IfcOwnerHistory" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcOwnerHistory">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="OwningUser" type="ifc:IfcPersonAndOrganization" nillable="true"/>
<xs:element name="OwningApplication" type="ifc:IfcApplication" nillable="true"/>
<xs:element name="LastModifyingUser" type="ifc:IfcPersonAndOrganization" nillable="true" minOccurs="0"/>
<xs:element name="LastModifyingApplication" type="ifc:IfcApplication" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="State" type="ifc:IfcStateEnum" use="optional"/>
<xs:attribute name="ChangeAction" type="ifc:IfcChangeActionEnum" use="optional"/>
<xs:attribute name="LastModifiedDate" type="ifc:IfcTimeStamp" use="optional"/>
<xs:attribute name="CreationDate" type="ifc:IfcTimeStamp" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcParameterizedProfileDef" type="ifc:IfcParameterizedProfileDef" abstract="true" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
<xs:complexType name="IfcParameterizedProfileDef" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcProfileDef">
<xs:sequence>
<xs:element name="Position" type="ifc:IfcAxis2Placement2D" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPath" type="ifc:IfcPath" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
<xs:complexType name="IfcPath">
<xs:complexContent>
<xs:extension base="ifc:IfcTopologicalRepresentationItem">
<xs:sequence>
<xs:element name="EdgeList">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcOrientedEdge" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcOrientedEdge"/>
<xs:attribute ref="ifc:cType" fixed="list-unique"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPcurve" type="ifc:IfcPcurve" substitutionGroup="ifc:IfcCurve" nillable="true"/>
<xs:complexType name="IfcPcurve">
<xs:complexContent>
<xs:extension base="ifc:IfcCurve">
<xs:sequence>
<xs:element name="BasisSurface" type="ifc:IfcSurface" nillable="true"/>
<xs:element name="ReferenceCurve" type="ifc:IfcCurve" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPerformanceHistory" type="ifc:IfcPerformanceHistory" substitutionGroup="ifc:IfcControl" nillable="true"/>
<xs:complexType name="IfcPerformanceHistory">
<xs:complexContent>
<xs:extension base="ifc:IfcControl">
<xs:attribute name="LifeCyclePhase" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcPerformanceHistoryTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPermeableCoveringProperties" type="ifc:IfcPermeableCoveringProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
<xs:complexType name="IfcPermeableCoveringProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedPropertySet">
<xs:sequence>
<xs:element name="ShapeAspectStyle" type="ifc:IfcShapeAspect" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="OperationType" type="ifc:IfcPermeableCoveringOperationEnum" use="optional"/>
<xs:attribute name="PanelPosition" type="ifc:IfcWindowPanelPositionEnum" use="optional"/>
<xs:attribute name="FrameDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FrameThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPermit" type="ifc:IfcPermit" substitutionGroup="ifc:IfcControl" nillable="true"/>
<xs:complexType name="IfcPermit">
<xs:complexContent>
<xs:extension base="ifc:IfcControl">
<xs:attribute name="PredefinedType" type="ifc:IfcPermitTypeEnum" use="optional"/>
<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPerson" type="ifc:IfcPerson" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcPerson">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Roles" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcActorRole" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcActorRole"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Addresses" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcAddress" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAddress"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="FamilyName" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="GivenName" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="MiddleNames" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLabel"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="PrefixTitles" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLabel"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SuffixTitles" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLabel"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPersonAndOrganization" type="ifc:IfcPersonAndOrganization" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcPersonAndOrganization">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="ThePerson" type="ifc:IfcPerson" nillable="true"/>
<xs:element name="TheOrganization" type="ifc:IfcOrganization" nillable="true"/>
<xs:element name="Roles" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcActorRole" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcActorRole"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPhysicalComplexQuantity" type="ifc:IfcPhysicalComplexQuantity" substitutionGroup="ifc:IfcPhysicalQuantity" nillable="true"/>
<xs:complexType name="IfcPhysicalComplexQuantity">
<xs:complexContent>
<xs:extension base="ifc:IfcPhysicalQuantity">
<xs:sequence>
<xs:element name="HasQuantities">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPhysicalQuantity" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPhysicalQuantity"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Discrimination" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Quality" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Usage" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPhysicalQuantity" type="ifc:IfcPhysicalQuantity" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcPhysicalQuantity" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPhysicalSimpleQuantity" type="ifc:IfcPhysicalSimpleQuantity" abstract="true" substitutionGroup="ifc:IfcPhysicalQuantity" nillable="true"/>
<xs:complexType name="IfcPhysicalSimpleQuantity" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPhysicalQuantity">
<xs:sequence>
<xs:element name="Unit" type="ifc:IfcNamedUnit" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPile" type="ifc:IfcPile" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcPile">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcPileTypeEnum" use="optional"/>
<xs:attribute name="ConstructionType" type="ifc:IfcPileConstructionEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPileType" type="ifc:IfcPileType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcPileType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcPileTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPipeFitting" type="ifc:IfcPipeFitting" substitutionGroup="ifc:IfcFlowFitting" nillable="true"/>
<xs:complexType name="IfcPipeFitting">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowFitting">
<xs:attribute name="PredefinedType" type="ifc:IfcPipeFittingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPipeFittingType" type="ifc:IfcPipeFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
<xs:complexType name="IfcPipeFittingType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowFittingType">
<xs:attribute name="PredefinedType" type="ifc:IfcPipeFittingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPipeSegment" type="ifc:IfcPipeSegment" substitutionGroup="ifc:IfcFlowSegment" nillable="true"/>
<xs:complexType name="IfcPipeSegment">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowSegment">
<xs:attribute name="PredefinedType" type="ifc:IfcPipeSegmentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPipeSegmentType" type="ifc:IfcPipeSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
<xs:complexType name="IfcPipeSegmentType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowSegmentType">
<xs:attribute name="PredefinedType" type="ifc:IfcPipeSegmentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPixelTexture" type="ifc:IfcPixelTexture" substitutionGroup="ifc:IfcSurfaceTexture" nillable="true"/>
<xs:complexType name="IfcPixelTexture">
<xs:complexContent>
<xs:extension base="ifc:IfcSurfaceTexture">
<xs:attribute name="Width" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="Height" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="ColourComponents" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="Pixel" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="xs:hexBinary"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPlacement" type="ifc:IfcPlacement" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcPlacement" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="Location" type="ifc:IfcCartesianPoint" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPlanarBox" type="ifc:IfcPlanarBox" substitutionGroup="ifc:IfcPlanarExtent" nillable="true"/>
<xs:complexType name="IfcPlanarBox">
<xs:complexContent>
<xs:extension base="ifc:IfcPlanarExtent">
<xs:sequence>
<xs:element name="Placement">
<xs:complexType>
<xs:group ref="ifc:IfcAxis2Placement"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPlanarExtent" type="ifc:IfcPlanarExtent" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcPlanarExtent">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:attribute name="SizeInX" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="SizeInY" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPlane" type="ifc:IfcPlane" substitutionGroup="ifc:IfcElementarySurface" nillable="true"/>
<xs:complexType name="IfcPlane">
<xs:complexContent>
<xs:extension base="ifc:IfcElementarySurface"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPlate" type="ifc:IfcPlate" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcPlate">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcPlateTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPlateStandardCase" type="ifc:IfcPlateStandardCase" substitutionGroup="ifc:IfcPlate" nillable="true"/>
<xs:complexType name="IfcPlateStandardCase">
<xs:complexContent>
<xs:extension base="ifc:IfcPlate"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPlateType" type="ifc:IfcPlateType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcPlateType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcPlateTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPoint" type="ifc:IfcPoint" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcPoint" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPointOnCurve" type="ifc:IfcPointOnCurve" substitutionGroup="ifc:IfcPoint" nillable="true"/>
<xs:complexType name="IfcPointOnCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcPoint">
<xs:sequence>
<xs:element name="BasisCurve" type="ifc:IfcCurve" nillable="true"/>
</xs:sequence>
<xs:attribute name="PointParameter" type="ifc:IfcParameterValue" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPointOnSurface" type="ifc:IfcPointOnSurface" substitutionGroup="ifc:IfcPoint" nillable="true"/>
<xs:complexType name="IfcPointOnSurface">
<xs:complexContent>
<xs:extension base="ifc:IfcPoint">
<xs:sequence>
<xs:element name="BasisSurface" type="ifc:IfcSurface" nillable="true"/>
</xs:sequence>
<xs:attribute name="PointParameterU" type="ifc:IfcParameterValue" use="optional"/>
<xs:attribute name="PointParameterV" type="ifc:IfcParameterValue" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPolyLoop" type="ifc:IfcPolyLoop" substitutionGroup="ifc:IfcLoop" nillable="true"/>
<xs:complexType name="IfcPolyLoop">
<xs:complexContent>
<xs:extension base="ifc:IfcLoop">
<xs:sequence>
<xs:element name="Polygon">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCartesianPoint" minOccurs="3" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCartesianPoint"/>
<xs:attribute ref="ifc:cType" fixed="list-unique"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPolygonalBoundedHalfSpace" type="ifc:IfcPolygonalBoundedHalfSpace" substitutionGroup="ifc:IfcHalfSpaceSolid" nillable="true"/>
<xs:complexType name="IfcPolygonalBoundedHalfSpace">
<xs:complexContent>
<xs:extension base="ifc:IfcHalfSpaceSolid">
<xs:sequence>
<xs:element name="Position" type="ifc:IfcAxis2Placement3D" nillable="true"/>
<xs:element name="PolygonalBoundary" type="ifc:IfcBoundedCurve" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPolygonalFaceSet" type="ifc:IfcPolygonalFaceSet" substitutionGroup="ifc:IfcTessellatedFaceSet" nillable="true"/>
<xs:complexType name="IfcPolygonalFaceSet">
<xs:complexContent>
<xs:extension base="ifc:IfcTessellatedFaceSet">
<xs:sequence>
<xs:element name="Faces">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcIndexedPolygonalFace" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcIndexedPolygonalFace"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Closed" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="PnIndex" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcPositiveInteger"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPolyline" type="ifc:IfcPolyline" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
<xs:complexType name="IfcPolyline">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedCurve">
<xs:sequence>
<xs:element name="Points">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCartesianPoint" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCartesianPoint"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPort" type="ifc:IfcPort" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
<xs:complexType name="IfcPort" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcProduct"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPostalAddress" type="ifc:IfcPostalAddress" substitutionGroup="ifc:IfcAddress" nillable="true"/>
<xs:complexType name="IfcPostalAddress">
<xs:complexContent>
<xs:extension base="ifc:IfcAddress">
<xs:sequence>
<xs:element name="AddressLines" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcLabel-wrapper" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcLabel-wrapper"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="InternalLocation" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="PostalBox" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Town" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Region" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="PostalCode" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Country" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPreDefinedColour" type="ifc:IfcPreDefinedColour" abstract="true" substitutionGroup="ifc:IfcPreDefinedItem" nillable="true"/>
<xs:complexType name="IfcPreDefinedColour" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPreDefinedCurveFont" type="ifc:IfcPreDefinedCurveFont" abstract="true" substitutionGroup="ifc:IfcPreDefinedItem" nillable="true"/>
<xs:complexType name="IfcPreDefinedCurveFont" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPreDefinedItem" type="ifc:IfcPreDefinedItem" abstract="true" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcPreDefinedItem" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPreDefinedProperties" type="ifc:IfcPreDefinedProperties" abstract="true" substitutionGroup="ifc:IfcPropertyAbstraction" nillable="true"/>
<xs:complexType name="IfcPreDefinedProperties" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertyAbstraction"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPreDefinedPropertySet" type="ifc:IfcPreDefinedPropertySet" abstract="true" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
<xs:complexType name="IfcPreDefinedPropertySet" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertySetDefinition"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPreDefinedTextFont" type="ifc:IfcPreDefinedTextFont" abstract="true" substitutionGroup="ifc:IfcPreDefinedItem" nillable="true"/>
<xs:complexType name="IfcPreDefinedTextFont" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPresentationItem" type="ifc:IfcPresentationItem" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcPresentationItem" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPresentationLayerAssignment" type="ifc:IfcPresentationLayerAssignment" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcPresentationLayerAssignment">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="AssignedItems">
<xs:complexType>
<xs:group ref="ifc:IfcLayeredItem" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcLayeredItem"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="Identifier" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPresentationLayerWithStyle" type="ifc:IfcPresentationLayerWithStyle" substitutionGroup="ifc:IfcPresentationLayerAssignment" nillable="true"/>
<xs:complexType name="IfcPresentationLayerWithStyle">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationLayerAssignment">
<xs:sequence>
<xs:element name="LayerStyles">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPresentationStyle" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPresentationStyle"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="LayerOn" type="ifc:IfcLogical" use="optional"/>
<xs:attribute name="LayerFrozen" type="ifc:IfcLogical" use="optional"/>
<xs:attribute name="LayerBlocked" type="ifc:IfcLogical" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPresentationStyle" type="ifc:IfcPresentationStyle" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcPresentationStyle" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPresentationStyleAssignment" type="ifc:IfcPresentationStyleAssignment" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcPresentationStyleAssignment">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Styles">
<xs:complexType>
<xs:group ref="ifc:IfcPresentationStyleSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPresentationStyleSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProcedure" type="ifc:IfcProcedure" substitutionGroup="ifc:IfcProcess" nillable="true"/>
<xs:complexType name="IfcProcedure">
<xs:complexContent>
<xs:extension base="ifc:IfcProcess">
<xs:attribute name="PredefinedType" type="ifc:IfcProcedureTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProcedureType" type="ifc:IfcProcedureType" substitutionGroup="ifc:IfcTypeProcess" nillable="true"/>
<xs:complexType name="IfcProcedureType">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeProcess">
<xs:attribute name="PredefinedType" type="ifc:IfcProcedureTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProcess" type="ifc:IfcProcess" abstract="true" substitutionGroup="ifc:IfcObject" nillable="true"/>
<xs:complexType name="IfcProcess" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcObject">
<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProduct" type="ifc:IfcProduct" abstract="true" substitutionGroup="ifc:IfcObject" nillable="true"/>
<xs:complexType name="IfcProduct" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcObject">
<xs:sequence>
<xs:element name="ObjectPlacement" type="ifc:IfcObjectPlacement" nillable="true" minOccurs="0"/>
<xs:element name="Representation" type="ifc:IfcProductRepresentation" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProductDefinitionShape" type="ifc:IfcProductDefinitionShape" substitutionGroup="ifc:IfcProductRepresentation" nillable="true"/>
<xs:complexType name="IfcProductDefinitionShape">
<xs:complexContent>
<xs:extension base="ifc:IfcProductRepresentation">
<xs:sequence>
<xs:element name="HasShapeAspects" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcShapeAspect" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcShapeAspect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProductRepresentation" type="ifc:IfcProductRepresentation" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcProductRepresentation" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Representations">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRepresentation" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRepresentation"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProfileDef" type="ifc:IfcProfileDef" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcProfileDef">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="HasProperties" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcProfileProperties" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProfileProperties"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ProfileType" type="ifc:IfcProfileTypeEnum" use="optional"/>
<xs:attribute name="ProfileName" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProfileProperties" type="ifc:IfcProfileProperties" substitutionGroup="ifc:IfcExtendedProperties" nillable="true"/>
<xs:complexType name="IfcProfileProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcExtendedProperties"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProject" type="ifc:IfcProject" substitutionGroup="ifc:IfcContext" nillable="true"/>
<xs:complexType name="IfcProject">
<xs:complexContent>
<xs:extension base="ifc:IfcContext"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProjectLibrary" type="ifc:IfcProjectLibrary" substitutionGroup="ifc:IfcContext" nillable="true"/>
<xs:complexType name="IfcProjectLibrary">
<xs:complexContent>
<xs:extension base="ifc:IfcContext"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProjectOrder" type="ifc:IfcProjectOrder" substitutionGroup="ifc:IfcControl" nillable="true"/>
<xs:complexType name="IfcProjectOrder">
<xs:complexContent>
<xs:extension base="ifc:IfcControl">
<xs:attribute name="PredefinedType" type="ifc:IfcProjectOrderTypeEnum" use="optional"/>
<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProjectedCRS" type="ifc:IfcProjectedCRS" substitutionGroup="ifc:IfcCoordinateReferenceSystem" nillable="true"/>
<xs:complexType name="IfcProjectedCRS">
<xs:complexContent>
<xs:extension base="ifc:IfcCoordinateReferenceSystem">
<xs:sequence>
<xs:element name="MapUnit" type="ifc:IfcNamedUnit" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="MapProjection" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="MapZone" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProjectionElement" type="ifc:IfcProjectionElement" substitutionGroup="ifc:IfcFeatureElementAddition" nillable="true"/>
<xs:complexType name="IfcProjectionElement">
<xs:complexContent>
<xs:extension base="ifc:IfcFeatureElementAddition">
<xs:attribute name="PredefinedType" type="ifc:IfcProjectionElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProperty" type="ifc:IfcProperty" abstract="true" substitutionGroup="ifc:IfcPropertyAbstraction" nillable="true"/>
<xs:complexType name="IfcProperty" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertyAbstraction">
<xs:attribute name="Name" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyAbstraction" type="ifc:IfcPropertyAbstraction" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcPropertyAbstraction" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyBoundedValue" type="ifc:IfcPropertyBoundedValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
<xs:complexType name="IfcPropertyBoundedValue">
<xs:complexContent>
<xs:extension base="ifc:IfcSimpleProperty">
<xs:sequence>
<xs:element name="UpperBoundValue" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcValue"/>
</xs:complexType>
</xs:element>
<xs:element name="LowerBoundValue" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcValue"/>
</xs:complexType>
</xs:element>
<xs:element name="Unit" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
<xs:element name="SetPointValue" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcValue"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyDefinition" type="ifc:IfcPropertyDefinition" abstract="true" substitutionGroup="ifc:IfcRoot" nillable="true"/>
<xs:complexType name="IfcPropertyDefinition" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRoot"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyDependencyRelationship" type="ifc:IfcPropertyDependencyRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
<xs:complexType name="IfcPropertyDependencyRelationship">
<xs:complexContent>
<xs:extension base="ifc:IfcResourceLevelRelationship">
<xs:sequence>
<xs:element name="DependingProperty" type="ifc:IfcProperty" nillable="true"/>
<xs:element name="DependantProperty" type="ifc:IfcProperty" nillable="true"/>
</xs:sequence>
<xs:attribute name="Expression" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyEnumeratedValue" type="ifc:IfcPropertyEnumeratedValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
<xs:complexType name="IfcPropertyEnumeratedValue">
<xs:complexContent>
<xs:extension base="ifc:IfcSimpleProperty">
<xs:sequence>
<xs:element name="EnumerationValues" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="EnumerationReference" type="ifc:IfcPropertyEnumeration" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyEnumeration" type="ifc:IfcPropertyEnumeration" substitutionGroup="ifc:IfcPropertyAbstraction" nillable="true"/>
<xs:complexType name="IfcPropertyEnumeration">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertyAbstraction">
<xs:sequence>
<xs:element name="EnumerationValues">
<xs:complexType>
<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
<xs:attribute ref="ifc:cType" fixed="list-unique"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Unit" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyListValue" type="ifc:IfcPropertyListValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
<xs:complexType name="IfcPropertyListValue">
<xs:complexContent>
<xs:extension base="ifc:IfcSimpleProperty">
<xs:sequence>
<xs:element name="ListValues" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Unit" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyReferenceValue" type="ifc:IfcPropertyReferenceValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
<xs:complexType name="IfcPropertyReferenceValue">
<xs:complexContent>
<xs:extension base="ifc:IfcSimpleProperty">
<xs:sequence>
<xs:element name="PropertyReference" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcObjectReferenceSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="UsageName" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertySet" type="ifc:IfcPropertySet" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
<xs:complexType name="IfcPropertySet">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertySetDefinition">
<xs:sequence>
<xs:element name="HasProperties">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProperty"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertySetDefinition" type="ifc:IfcPropertySetDefinition" abstract="true" substitutionGroup="ifc:IfcPropertyDefinition" nillable="true"/>
<xs:complexType name="IfcPropertySetDefinition" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertyDefinition"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertySetTemplate" type="ifc:IfcPropertySetTemplate" substitutionGroup="ifc:IfcPropertyTemplateDefinition" nillable="true"/>
<xs:complexType name="IfcPropertySetTemplate">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertyTemplateDefinition">
<xs:sequence>
<xs:element name="HasPropertyTemplates">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPropertyTemplate" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPropertyTemplate"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TemplateType" type="ifc:IfcPropertySetTemplateTypeEnum" use="optional"/>
<xs:attribute name="ApplicableEntity" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertySingleValue" type="ifc:IfcPropertySingleValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
<xs:complexType name="IfcPropertySingleValue">
<xs:complexContent>
<xs:extension base="ifc:IfcSimpleProperty">
<xs:sequence>
<xs:element name="NominalValue" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcValue"/>
</xs:complexType>
</xs:element>
<xs:element name="Unit" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyTableValue" type="ifc:IfcPropertyTableValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
<xs:complexType name="IfcPropertyTableValue">
<xs:complexContent>
<xs:extension base="ifc:IfcSimpleProperty">
<xs:sequence>
<xs:element name="DefiningValues" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
<xs:attribute ref="ifc:cType" fixed="list-unique"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="DefinedValues" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="DefiningUnit" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
<xs:element name="DefinedUnit" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Expression" type="ifc:IfcText" use="optional"/>
<xs:attribute name="CurveInterpolation" type="ifc:IfcCurveInterpolationEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyTemplate" type="ifc:IfcPropertyTemplate" abstract="true" substitutionGroup="ifc:IfcPropertyTemplateDefinition" nillable="true"/>
<xs:complexType name="IfcPropertyTemplate" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertyTemplateDefinition"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPropertyTemplateDefinition" type="ifc:IfcPropertyTemplateDefinition" abstract="true" substitutionGroup="ifc:IfcPropertyDefinition" nillable="true"/>
<xs:complexType name="IfcPropertyTemplateDefinition" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertyDefinition"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProtectiveDevice" type="ifc:IfcProtectiveDevice" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
<xs:complexType name="IfcProtectiveDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowController">
<xs:attribute name="PredefinedType" type="ifc:IfcProtectiveDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProtectiveDeviceTrippingUnit" type="ifc:IfcProtectiveDeviceTrippingUnit" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
<xs:complexType name="IfcProtectiveDeviceTrippingUnit">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElement">
<xs:attribute name="PredefinedType" type="ifc:IfcProtectiveDeviceTrippingUnitTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProtectiveDeviceTrippingUnitType" type="ifc:IfcProtectiveDeviceTrippingUnitType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
<xs:complexType name="IfcProtectiveDeviceTrippingUnitType">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcProtectiveDeviceTrippingUnitTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProtectiveDeviceType" type="ifc:IfcProtectiveDeviceType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
<xs:complexType name="IfcProtectiveDeviceType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowControllerType">
<xs:attribute name="PredefinedType" type="ifc:IfcProtectiveDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcProxy" type="ifc:IfcProxy" substitutionGroup="ifc:IfcProduct" nillable="true"/>
<xs:complexType name="IfcProxy">
<xs:complexContent>
<xs:extension base="ifc:IfcProduct">
<xs:attribute name="ProxyType" type="ifc:IfcObjectTypeEnum" use="optional"/>
<xs:attribute name="Tag" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPump" type="ifc:IfcPump" substitutionGroup="ifc:IfcFlowMovingDevice" nillable="true"/>
<xs:complexType name="IfcPump">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowMovingDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcPumpTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcPumpType" type="ifc:IfcPumpType" substitutionGroup="ifc:IfcFlowMovingDeviceType" nillable="true"/>
<xs:complexType name="IfcPumpType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowMovingDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcPumpTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcQuantityArea" type="ifc:IfcQuantityArea" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
<xs:complexType name="IfcQuantityArea">
<xs:complexContent>
<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
<xs:attribute name="AreaValue" type="ifc:IfcAreaMeasure" use="optional"/>
<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcQuantityCount" type="ifc:IfcQuantityCount" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
<xs:complexType name="IfcQuantityCount">
<xs:complexContent>
<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
<xs:attribute name="CountValue" type="ifc:IfcCountMeasure" use="optional"/>
<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcQuantityLength" type="ifc:IfcQuantityLength" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
<xs:complexType name="IfcQuantityLength">
<xs:complexContent>
<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
<xs:attribute name="LengthValue" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcQuantitySet" type="ifc:IfcQuantitySet" abstract="true" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
<xs:complexType name="IfcQuantitySet" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertySetDefinition"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcQuantityTime" type="ifc:IfcQuantityTime" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
<xs:complexType name="IfcQuantityTime">
<xs:complexContent>
<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
<xs:attribute name="TimeValue" type="ifc:IfcTimeMeasure" use="optional"/>
<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcQuantityVolume" type="ifc:IfcQuantityVolume" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
<xs:complexType name="IfcQuantityVolume">
<xs:complexContent>
<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
<xs:attribute name="VolumeValue" type="ifc:IfcVolumeMeasure" use="optional"/>
<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcQuantityWeight" type="ifc:IfcQuantityWeight" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
<xs:complexType name="IfcQuantityWeight">
<xs:complexContent>
<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
<xs:attribute name="WeightValue" type="ifc:IfcMassMeasure" use="optional"/>
<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRailing" type="ifc:IfcRailing" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcRailing">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcRailingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRailingType" type="ifc:IfcRailingType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcRailingType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcRailingTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRamp" type="ifc:IfcRamp" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcRamp">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcRampTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRampFlight" type="ifc:IfcRampFlight" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcRampFlight">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcRampFlightTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRampFlightType" type="ifc:IfcRampFlightType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcRampFlightType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcRampFlightTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRampType" type="ifc:IfcRampType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcRampType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcRampTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRationalBSplineCurveWithKnots" type="ifc:IfcRationalBSplineCurveWithKnots" substitutionGroup="ifc:IfcBSplineCurveWithKnots" nillable="true"/>
<xs:complexType name="IfcRationalBSplineCurveWithKnots">
<xs:complexContent>
<xs:extension base="ifc:IfcBSplineCurveWithKnots">
<xs:attribute name="WeightsData" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcReal"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRationalBSplineSurfaceWithKnots" type="ifc:IfcRationalBSplineSurfaceWithKnots" substitutionGroup="ifc:IfcBSplineSurfaceWithKnots" nillable="true"/>
<xs:complexType name="IfcRationalBSplineSurfaceWithKnots">
<xs:complexContent>
<xs:extension base="ifc:IfcBSplineSurfaceWithKnots">
<xs:sequence>
<xs:element name="WeightsData">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcReal-wrapper" minOccurs="4" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcReal-wrapper"/>
<xs:attribute ref="ifc:cType" fixed="list list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRectangleHollowProfileDef" type="ifc:IfcRectangleHollowProfileDef" substitutionGroup="ifc:IfcRectangleProfileDef" nillable="true"/>
<xs:complexType name="IfcRectangleHollowProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcRectangleProfileDef">
<xs:attribute name="WallThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="InnerFilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="OuterFilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRectangleProfileDef" type="ifc:IfcRectangleProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcRectangleProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="XDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="YDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRectangularPyramid" type="ifc:IfcRectangularPyramid" substitutionGroup="ifc:IfcCsgPrimitive3D" nillable="true"/>
<xs:complexType name="IfcRectangularPyramid">
<xs:complexContent>
<xs:extension base="ifc:IfcCsgPrimitive3D">
<xs:attribute name="XLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="YLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="Height" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRectangularTrimmedSurface" type="ifc:IfcRectangularTrimmedSurface" substitutionGroup="ifc:IfcBoundedSurface" nillable="true"/>
<xs:complexType name="IfcRectangularTrimmedSurface">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedSurface">
<xs:sequence>
<xs:element name="BasisSurface" type="ifc:IfcSurface" nillable="true"/>
</xs:sequence>
<xs:attribute name="U1" type="ifc:IfcParameterValue" use="optional"/>
<xs:attribute name="V1" type="ifc:IfcParameterValue" use="optional"/>
<xs:attribute name="U2" type="ifc:IfcParameterValue" use="optional"/>
<xs:attribute name="V2" type="ifc:IfcParameterValue" use="optional"/>
<xs:attribute name="Usense" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="Vsense" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRecurrencePattern" type="ifc:IfcRecurrencePattern" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcRecurrencePattern">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="TimePeriods" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcTimePeriod" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTimePeriod"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="RecurrenceType" type="ifc:IfcRecurrenceTypeEnum" use="optional"/>
<xs:attribute name="DayComponent" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcDayInMonthNumber"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="WeekdayComponent" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcDayInWeekNumber"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="MonthComponent" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcMonthInYearNumber"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Position" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="Interval" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="Occurrences" type="ifc:IfcInteger" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcReference" type="ifc:IfcReference" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcReference">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="InnerReference" type="ifc:IfcReference" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="TypeIdentifier" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="AttributeIdentifier" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="InstanceName" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="ListPositions" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcInteger"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRegularTimeSeries" type="ifc:IfcRegularTimeSeries" substitutionGroup="ifc:IfcTimeSeries" nillable="true"/>
<xs:complexType name="IfcRegularTimeSeries">
<xs:complexContent>
<xs:extension base="ifc:IfcTimeSeries">
<xs:sequence>
<xs:element name="Values">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcTimeSeriesValue" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTimeSeriesValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TimeStep" type="ifc:IfcTimeMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcReinforcementBarProperties" type="ifc:IfcReinforcementBarProperties" substitutionGroup="ifc:IfcPreDefinedProperties" nillable="true"/>
<xs:complexType name="IfcReinforcementBarProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedProperties">
<xs:attribute name="TotalCrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
<xs:attribute name="SteelGrade" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="BarSurface" type="ifc:IfcReinforcingBarSurfaceEnum" use="optional"/>
<xs:attribute name="EffectiveDepth" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="NominalBarDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="BarCount" type="ifc:IfcCountMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcReinforcementDefinitionProperties" type="ifc:IfcReinforcementDefinitionProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
<xs:complexType name="IfcReinforcementDefinitionProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedPropertySet">
<xs:sequence>
<xs:element name="ReinforcementSectionDefinitions">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcSectionReinforcementProperties" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSectionReinforcementProperties"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="DefinitionType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcReinforcingBar" type="ifc:IfcReinforcingBar" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
<xs:complexType name="IfcReinforcingBar">
<xs:complexContent>
<xs:extension base="ifc:IfcReinforcingElement">
<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="CrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
<xs:attribute name="BarLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcReinforcingBarTypeEnum" use="optional"/>
<xs:attribute name="BarSurface" type="ifc:IfcReinforcingBarSurfaceEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcReinforcingBarType" type="ifc:IfcReinforcingBarType" substitutionGroup="ifc:IfcReinforcingElementType" nillable="true"/>
<xs:complexType name="IfcReinforcingBarType">
<xs:complexContent>
<xs:extension base="ifc:IfcReinforcingElementType">
<xs:sequence>
<xs:element name="BendingParameters" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcBendingParameterSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcBendingParameterSelect"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="PredefinedType" type="ifc:IfcReinforcingBarTypeEnum" use="optional"/>
<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="CrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
<xs:attribute name="BarLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="BarSurface" type="ifc:IfcReinforcingBarSurfaceEnum" use="optional"/>
<xs:attribute name="BendingShapeCode" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcReinforcingElement" type="ifc:IfcReinforcingElement" abstract="true" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
<xs:complexType name="IfcReinforcingElement" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponent">
<xs:attribute name="SteelGrade" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcReinforcingElementType" type="ifc:IfcReinforcingElementType" abstract="true" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
<xs:complexType name="IfcReinforcingElementType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponentType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcReinforcingMesh" type="ifc:IfcReinforcingMesh" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
<xs:complexType name="IfcReinforcingMesh">
<xs:complexContent>
<xs:extension base="ifc:IfcReinforcingElement">
<xs:attribute name="MeshLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="MeshWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="LongitudinalBarNominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="TransverseBarNominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="LongitudinalBarCrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
<xs:attribute name="TransverseBarCrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
<xs:attribute name="LongitudinalBarSpacing" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="TransverseBarSpacing" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcReinforcingMeshTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcReinforcingMeshType" type="ifc:IfcReinforcingMeshType" substitutionGroup="ifc:IfcReinforcingElementType" nillable="true"/>
<xs:complexType name="IfcReinforcingMeshType">
<xs:complexContent>
<xs:extension base="ifc:IfcReinforcingElementType">
<xs:sequence>
<xs:element name="BendingParameters" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcBendingParameterSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcBendingParameterSelect"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="PredefinedType" type="ifc:IfcReinforcingMeshTypeEnum" use="optional"/>
<xs:attribute name="MeshLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="MeshWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="LongitudinalBarNominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="TransverseBarNominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="LongitudinalBarCrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
<xs:attribute name="TransverseBarCrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
<xs:attribute name="LongitudinalBarSpacing" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="TransverseBarSpacing" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="BendingShapeCode" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAggregates" type="ifc:IfcRelAggregates" substitutionGroup="ifc:IfcRelDecomposes" nillable="true"/>
<xs:complexType name="IfcRelAggregates">
<xs:complexContent>
<xs:extension base="ifc:IfcRelDecomposes">
<xs:sequence>
<xs:element name="RelatedObjects">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcObjectDefinition" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcObjectDefinition"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssigns" type="ifc:IfcRelAssigns" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
<xs:complexType name="IfcRelAssigns" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRelationship">
<xs:sequence>
<xs:element name="RelatedObjects">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcObjectDefinition" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcObjectDefinition"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="RelatedObjectsType" type="ifc:IfcObjectTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssignsToActor" type="ifc:IfcRelAssignsToActor" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
<xs:complexType name="IfcRelAssignsToActor">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssigns">
<xs:sequence>
<xs:element name="RelatingActor" type="ifc:IfcActor" nillable="true"/>
<xs:element name="ActingRole" type="ifc:IfcActorRole" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssignsToControl" type="ifc:IfcRelAssignsToControl" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
<xs:complexType name="IfcRelAssignsToControl">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssigns">
<xs:sequence>
<xs:element name="RelatingControl" type="ifc:IfcControl" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssignsToGroup" type="ifc:IfcRelAssignsToGroup" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
<xs:complexType name="IfcRelAssignsToGroup">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssigns">
<xs:sequence>
<xs:element name="RelatingGroup" type="ifc:IfcGroup" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssignsToGroupByFactor" type="ifc:IfcRelAssignsToGroupByFactor" substitutionGroup="ifc:IfcRelAssignsToGroup" nillable="true"/>
<xs:complexType name="IfcRelAssignsToGroupByFactor">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssignsToGroup">
<xs:attribute name="Factor" type="ifc:IfcRatioMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssignsToProcess" type="ifc:IfcRelAssignsToProcess" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
<xs:complexType name="IfcRelAssignsToProcess">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssigns">
<xs:sequence>
<xs:element name="RelatingProcess">
<xs:complexType>
<xs:group ref="ifc:IfcProcessSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="QuantityInProcess" type="ifc:IfcMeasureWithUnit" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssignsToProduct" type="ifc:IfcRelAssignsToProduct" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
<xs:complexType name="IfcRelAssignsToProduct">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssigns">
<xs:sequence>
<xs:element name="RelatingProduct">
<xs:complexType>
<xs:group ref="ifc:IfcProductSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssignsToResource" type="ifc:IfcRelAssignsToResource" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
<xs:complexType name="IfcRelAssignsToResource">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssigns">
<xs:sequence>
<xs:element name="RelatingResource">
<xs:complexType>
<xs:group ref="ifc:IfcResourceSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssociates" type="ifc:IfcRelAssociates" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
<xs:complexType name="IfcRelAssociates" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRelationship">
<xs:sequence>
<xs:element name="RelatedObjects">
<xs:complexType>
<xs:group ref="ifc:IfcDefinitionSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDefinitionSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssociatesApproval" type="ifc:IfcRelAssociatesApproval" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
<xs:complexType name="IfcRelAssociatesApproval">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssociates">
<xs:sequence>
<xs:element name="RelatingApproval" type="ifc:IfcApproval" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssociatesClassification" type="ifc:IfcRelAssociatesClassification" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
<xs:complexType name="IfcRelAssociatesClassification">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssociates">
<xs:sequence>
<xs:element name="RelatingClassification">
<xs:complexType>
<xs:group ref="ifc:IfcClassificationSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssociatesConstraint" type="ifc:IfcRelAssociatesConstraint" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
<xs:complexType name="IfcRelAssociatesConstraint">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssociates">
<xs:sequence>
<xs:element name="RelatingConstraint" type="ifc:IfcConstraint" nillable="true"/>
</xs:sequence>
<xs:attribute name="Intent" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssociatesDocument" type="ifc:IfcRelAssociatesDocument" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
<xs:complexType name="IfcRelAssociatesDocument">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssociates">
<xs:sequence>
<xs:element name="RelatingDocument">
<xs:complexType>
<xs:group ref="ifc:IfcDocumentSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssociatesLibrary" type="ifc:IfcRelAssociatesLibrary" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
<xs:complexType name="IfcRelAssociatesLibrary">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssociates">
<xs:sequence>
<xs:element name="RelatingLibrary">
<xs:complexType>
<xs:group ref="ifc:IfcLibrarySelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelAssociatesMaterial" type="ifc:IfcRelAssociatesMaterial" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
<xs:complexType name="IfcRelAssociatesMaterial">
<xs:complexContent>
<xs:extension base="ifc:IfcRelAssociates">
<xs:sequence>
<xs:element name="RelatingMaterial">
<xs:complexType>
<xs:group ref="ifc:IfcMaterialSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelConnects" type="ifc:IfcRelConnects" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
<xs:complexType name="IfcRelConnects" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRelationship"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelConnectsElements" type="ifc:IfcRelConnectsElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelConnectsElements">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="ConnectionGeometry" type="ifc:IfcConnectionGeometry" nillable="true" minOccurs="0"/>
<xs:element name="RelatingElement" type="ifc:IfcElement" nillable="true"/>
<xs:element name="RelatedElement" type="ifc:IfcElement" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelConnectsPathElements" type="ifc:IfcRelConnectsPathElements" substitutionGroup="ifc:IfcRelConnectsElements" nillable="true"/>
<xs:complexType name="IfcRelConnectsPathElements">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnectsElements">
<xs:attribute name="RelatingPriorities" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcInteger"/>
</xs:simpleType>
<xs:minLength value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="RelatedPriorities" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcInteger"/>
</xs:simpleType>
<xs:minLength value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="RelatedConnectionType" type="ifc:IfcConnectionTypeEnum" use="optional"/>
<xs:attribute name="RelatingConnectionType" type="ifc:IfcConnectionTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelConnectsPortToElement" type="ifc:IfcRelConnectsPortToElement" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelConnectsPortToElement">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatingPort" type="ifc:IfcPort" nillable="true"/>
<xs:element name="RelatedElement" type="ifc:IfcDistributionElement" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelConnectsPorts" type="ifc:IfcRelConnectsPorts" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelConnectsPorts">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatingPort" type="ifc:IfcPort" nillable="true"/>
<xs:element name="RelatedPort" type="ifc:IfcPort" nillable="true"/>
<xs:element name="RealizingElement" type="ifc:IfcElement" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelConnectsStructuralActivity" type="ifc:IfcRelConnectsStructuralActivity" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelConnectsStructuralActivity">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatingElement">
<xs:complexType>
<xs:group ref="ifc:IfcStructuralActivityAssignmentSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="RelatedStructuralActivity" type="ifc:IfcStructuralActivity" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelConnectsStructuralMember" type="ifc:IfcRelConnectsStructuralMember" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelConnectsStructuralMember">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatingStructuralMember" type="ifc:IfcStructuralMember" nillable="true"/>
<xs:element name="RelatedStructuralConnection" type="ifc:IfcStructuralConnection" nillable="true"/>
<xs:element name="AppliedCondition" type="ifc:IfcBoundaryCondition" nillable="true" minOccurs="0"/>
<xs:element name="AdditionalConditions" type="ifc:IfcStructuralConnectionCondition" nillable="true" minOccurs="0"/>
<xs:element name="ConditionCoordinateSystem" type="ifc:IfcAxis2Placement3D" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="SupportedLength" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelConnectsWithEccentricity" type="ifc:IfcRelConnectsWithEccentricity" substitutionGroup="ifc:IfcRelConnectsStructuralMember" nillable="true"/>
<xs:complexType name="IfcRelConnectsWithEccentricity">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnectsStructuralMember">
<xs:sequence>
<xs:element name="ConnectionConstraint" type="ifc:IfcConnectionGeometry" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelConnectsWithRealizingElements" type="ifc:IfcRelConnectsWithRealizingElements" substitutionGroup="ifc:IfcRelConnectsElements" nillable="true"/>
<xs:complexType name="IfcRelConnectsWithRealizingElements">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnectsElements">
<xs:sequence>
<xs:element name="RealizingElements">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcElement" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcElement"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ConnectionType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelContainedInSpatialStructure" type="ifc:IfcRelContainedInSpatialStructure" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelContainedInSpatialStructure">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatedElements">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcProduct" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProduct"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelCoversBldgElements" type="ifc:IfcRelCoversBldgElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelCoversBldgElements">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatingBuildingElement" type="ifc:IfcElement" nillable="true"/>
<xs:element name="RelatedCoverings">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCovering" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCovering"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelCoversSpaces" type="ifc:IfcRelCoversSpaces" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelCoversSpaces">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatingSpace" type="ifc:IfcSpace" nillable="true"/>
<xs:element name="RelatedCoverings">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcCovering" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCovering"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelDeclares" type="ifc:IfcRelDeclares" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
<xs:complexType name="IfcRelDeclares">
<xs:complexContent>
<xs:extension base="ifc:IfcRelationship">
<xs:sequence>
<xs:element name="RelatedDefinitions">
<xs:complexType>
<xs:group ref="ifc:IfcDefinitionSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDefinitionSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelDecomposes" type="ifc:IfcRelDecomposes" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
<xs:complexType name="IfcRelDecomposes" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRelationship"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelDefines" type="ifc:IfcRelDefines" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
<xs:complexType name="IfcRelDefines" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRelationship"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelDefinesByObject" type="ifc:IfcRelDefinesByObject" substitutionGroup="ifc:IfcRelDefines" nillable="true"/>
<xs:complexType name="IfcRelDefinesByObject">
<xs:complexContent>
<xs:extension base="ifc:IfcRelDefines">
<xs:sequence>
<xs:element name="RelatedObjects">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcObject" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcObject"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelDefinesByProperties" type="ifc:IfcRelDefinesByProperties" substitutionGroup="ifc:IfcRelDefines" nillable="true"/>
<xs:complexType name="IfcRelDefinesByProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcRelDefines">
<xs:sequence>
<xs:element name="RelatingPropertyDefinition">
<xs:complexType>
<xs:group ref="ifc:IfcPropertySetDefinitionSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelDefinesByTemplate" type="ifc:IfcRelDefinesByTemplate" substitutionGroup="ifc:IfcRelDefines" nillable="true"/>
<xs:complexType name="IfcRelDefinesByTemplate">
<xs:complexContent>
<xs:extension base="ifc:IfcRelDefines">
<xs:sequence>
<xs:element name="RelatedPropertySets">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPropertySetDefinition" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPropertySetDefinition"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="RelatingTemplate" type="ifc:IfcPropertySetTemplate" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelDefinesByType" type="ifc:IfcRelDefinesByType" substitutionGroup="ifc:IfcRelDefines" nillable="true"/>
<xs:complexType name="IfcRelDefinesByType">
<xs:complexContent>
<xs:extension base="ifc:IfcRelDefines">
<xs:sequence>
<xs:element name="RelatingType" type="ifc:IfcTypeObject" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelFillsElement" type="ifc:IfcRelFillsElement" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelFillsElement">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatedBuildingElement" type="ifc:IfcElement" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelFlowControlElements" type="ifc:IfcRelFlowControlElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelFlowControlElements">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatedControlElements">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcDistributionControlElement" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDistributionControlElement"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="RelatingFlowElement" type="ifc:IfcDistributionFlowElement" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelInterferesElements" type="ifc:IfcRelInterferesElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelInterferesElements">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatingElement" type="ifc:IfcElement" nillable="true"/>
<xs:element name="RelatedElement" type="ifc:IfcElement" nillable="true"/>
<xs:element name="InterferenceGeometry" type="ifc:IfcConnectionGeometry" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="InterferenceType" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="ImpliedOrder" type="ifc:logical" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelNests" type="ifc:IfcRelNests" substitutionGroup="ifc:IfcRelDecomposes" nillable="true"/>
<xs:complexType name="IfcRelNests">
<xs:complexContent>
<xs:extension base="ifc:IfcRelDecomposes">
<xs:sequence>
<xs:element name="RelatedObjects">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcObjectDefinition" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcObjectDefinition"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelProjectsElement" type="ifc:IfcRelProjectsElement" substitutionGroup="ifc:IfcRelDecomposes" nillable="true"/>
<xs:complexType name="IfcRelProjectsElement">
<xs:complexContent>
<xs:extension base="ifc:IfcRelDecomposes">
<xs:sequence>
<xs:element name="RelatedFeatureElement" type="ifc:IfcFeatureElementAddition" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelReferencedInSpatialStructure" type="ifc:IfcRelReferencedInSpatialStructure" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelReferencedInSpatialStructure">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatedElements">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcProduct" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProduct"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelSequence" type="ifc:IfcRelSequence" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelSequence">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatingProcess" type="ifc:IfcProcess" nillable="true"/>
<xs:element name="RelatedProcess" type="ifc:IfcProcess" nillable="true"/>
<xs:element name="TimeLag" type="ifc:IfcLagTime" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="SequenceType" type="ifc:IfcSequenceEnum" use="optional"/>
<xs:attribute name="UserDefinedSequenceType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelServicesBuildings" type="ifc:IfcRelServicesBuildings" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelServicesBuildings">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatingSystem" type="ifc:IfcSystem" nillable="true"/>
<xs:element name="RelatedBuildings">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcSpatialElement" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSpatialElement"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelSpaceBoundary" type="ifc:IfcRelSpaceBoundary" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
<xs:complexType name="IfcRelSpaceBoundary">
<xs:complexContent>
<xs:extension base="ifc:IfcRelConnects">
<xs:sequence>
<xs:element name="RelatingSpace">
<xs:complexType>
<xs:group ref="ifc:IfcSpaceBoundarySelect"/>
</xs:complexType>
</xs:element>
<xs:element name="RelatedBuildingElement" type="ifc:IfcElement" nillable="true"/>
<xs:element name="ConnectionGeometry" type="ifc:IfcConnectionGeometry" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="PhysicalOrVirtualBoundary" type="ifc:IfcPhysicalOrVirtualEnum" use="optional"/>
<xs:attribute name="InternalOrExternalBoundary" type="ifc:IfcInternalOrExternalEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelSpaceBoundary1stLevel" type="ifc:IfcRelSpaceBoundary1stLevel" substitutionGroup="ifc:IfcRelSpaceBoundary" nillable="true"/>
<xs:complexType name="IfcRelSpaceBoundary1stLevel">
<xs:complexContent>
<xs:extension base="ifc:IfcRelSpaceBoundary">
<xs:sequence>
<xs:element name="ParentBoundary" type="ifc:IfcRelSpaceBoundary1stLevel" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelSpaceBoundary2ndLevel" type="ifc:IfcRelSpaceBoundary2ndLevel" substitutionGroup="ifc:IfcRelSpaceBoundary1stLevel" nillable="true"/>
<xs:complexType name="IfcRelSpaceBoundary2ndLevel">
<xs:complexContent>
<xs:extension base="ifc:IfcRelSpaceBoundary1stLevel">
<xs:sequence>
<xs:element name="CorrespondingBoundary" type="ifc:IfcRelSpaceBoundary2ndLevel" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelVoidsElement" type="ifc:IfcRelVoidsElement" substitutionGroup="ifc:IfcRelDecomposes" nillable="true"/>
<xs:complexType name="IfcRelVoidsElement">
<xs:complexContent>
<xs:extension base="ifc:IfcRelDecomposes">
<xs:sequence>
<xs:element name="RelatedOpeningElement" type="ifc:IfcFeatureElementSubtraction" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRelationship" type="ifc:IfcRelationship" abstract="true" substitutionGroup="ifc:IfcRoot" nillable="true"/>
<xs:complexType name="IfcRelationship" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRoot"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcReparametrisedCompositeCurveSegment" type="ifc:IfcReparametrisedCompositeCurveSegment" substitutionGroup="ifc:IfcCompositeCurveSegment" nillable="true"/>
<xs:complexType name="IfcReparametrisedCompositeCurveSegment">
<xs:complexContent>
<xs:extension base="ifc:IfcCompositeCurveSegment">
<xs:attribute name="ParamLength" type="ifc:IfcParameterValue" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRepresentation" type="ifc:IfcRepresentation" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcRepresentation" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="ContextOfItems" type="ifc:IfcRepresentationContext" nillable="true"/>
<xs:element name="Items">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRepresentationItem" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRepresentationItem"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="RepresentationIdentifier" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="RepresentationType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRepresentationContext" type="ifc:IfcRepresentationContext" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcRepresentationContext" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="ContextIdentifier" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="ContextType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRepresentationItem" type="ifc:IfcRepresentationItem" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcRepresentationItem" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="StyledByItem" type="ifc:IfcStyledItem" nillable="true" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRepresentationMap" type="ifc:IfcRepresentationMap" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcRepresentationMap">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="MappingOrigin">
<xs:complexType>
<xs:group ref="ifc:IfcAxis2Placement"/>
</xs:complexType>
</xs:element>
<xs:element name="MappedRepresentation" type="ifc:IfcRepresentation" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcResource" type="ifc:IfcResource" abstract="true" substitutionGroup="ifc:IfcObject" nillable="true"/>
<xs:complexType name="IfcResource" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcObject">
<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcResourceApprovalRelationship" type="ifc:IfcResourceApprovalRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
<xs:complexType name="IfcResourceApprovalRelationship">
<xs:complexContent>
<xs:extension base="ifc:IfcResourceLevelRelationship">
<xs:sequence>
<xs:element name="RelatedResourceObjects">
<xs:complexType>
<xs:group ref="ifc:IfcResourceObjectSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcResourceObjectSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="RelatingApproval" type="ifc:IfcApproval" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcResourceConstraintRelationship" type="ifc:IfcResourceConstraintRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
<xs:complexType name="IfcResourceConstraintRelationship">
<xs:complexContent>
<xs:extension base="ifc:IfcResourceLevelRelationship">
<xs:sequence>
<xs:element name="RelatingConstraint" type="ifc:IfcConstraint" nillable="true"/>
<xs:element name="RelatedResourceObjects">
<xs:complexType>
<xs:group ref="ifc:IfcResourceObjectSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcResourceObjectSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcResourceLevelRelationship" type="ifc:IfcResourceLevelRelationship" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcResourceLevelRelationship" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcResourceTime" type="ifc:IfcResourceTime" substitutionGroup="ifc:IfcSchedulingTime" nillable="true"/>
<xs:complexType name="IfcResourceTime">
<xs:complexContent>
<xs:extension base="ifc:IfcSchedulingTime">
<xs:attribute name="ScheduleWork" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="ScheduleUsage" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
<xs:attribute name="ScheduleStart" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="ScheduleFinish" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="ScheduleContour" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="LevelingDelay" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="IsOverAllocated" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="StatusTime" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="ActualWork" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="ActualUsage" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
<xs:attribute name="ActualStart" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="ActualFinish" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="RemainingWork" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="RemainingUsage" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
<xs:attribute name="Completion" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRevolvedAreaSolid" type="ifc:IfcRevolvedAreaSolid" substitutionGroup="ifc:IfcSweptAreaSolid" nillable="true"/>
<xs:complexType name="IfcRevolvedAreaSolid">
<xs:complexContent>
<xs:extension base="ifc:IfcSweptAreaSolid">
<xs:sequence>
<xs:element name="Axis" type="ifc:IfcAxis1Placement" nillable="true"/>
</xs:sequence>
<xs:attribute name="Angle" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRevolvedAreaSolidTapered" type="ifc:IfcRevolvedAreaSolidTapered" substitutionGroup="ifc:IfcRevolvedAreaSolid" nillable="true"/>
<xs:complexType name="IfcRevolvedAreaSolidTapered">
<xs:complexContent>
<xs:extension base="ifc:IfcRevolvedAreaSolid">
<xs:sequence>
<xs:element name="EndSweptArea" type="ifc:IfcProfileDef" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRightCircularCone" type="ifc:IfcRightCircularCone" substitutionGroup="ifc:IfcCsgPrimitive3D" nillable="true"/>
<xs:complexType name="IfcRightCircularCone">
<xs:complexContent>
<xs:extension base="ifc:IfcCsgPrimitive3D">
<xs:attribute name="Height" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="BottomRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRightCircularCylinder" type="ifc:IfcRightCircularCylinder" substitutionGroup="ifc:IfcCsgPrimitive3D" nillable="true"/>
<xs:complexType name="IfcRightCircularCylinder">
<xs:complexContent>
<xs:extension base="ifc:IfcCsgPrimitive3D">
<xs:attribute name="Height" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRoof" type="ifc:IfcRoof" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcRoof">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcRoofTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRoofType" type="ifc:IfcRoofType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcRoofType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcRoofTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRoot" type="ifc:IfcRoot" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcRoot" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="OwnerHistory" type="ifc:IfcOwnerHistory" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="GlobalId" type="ifc:IfcGloballyUniqueId" use="optional"/>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcRoundedRectangleProfileDef" type="ifc:IfcRoundedRectangleProfileDef" substitutionGroup="ifc:IfcRectangleProfileDef" nillable="true"/>
<xs:complexType name="IfcRoundedRectangleProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcRectangleProfileDef">
<xs:attribute name="RoundingRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="IfcSIUnit-temp" abstract="true">
<xs:complexContent>
<xs:restriction base="ifc:IfcNamedUnit">
<xs:sequence/>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSIUnit" type="ifc:IfcSIUnit" substitutionGroup="ifc:IfcNamedUnit" nillable="true"/>
<xs:complexType name="IfcSIUnit">
<xs:complexContent>
<xs:extension base="ifc:IfcSIUnit-temp">
<xs:attribute name="Prefix" type="ifc:IfcSIPrefix" use="optional"/>
<xs:attribute name="Name" type="ifc:IfcSIUnitName" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSanitaryTerminal" type="ifc:IfcSanitaryTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcSanitaryTerminal">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcSanitaryTerminalTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSanitaryTerminalType" type="ifc:IfcSanitaryTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcSanitaryTerminalType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcSanitaryTerminalTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSchedulingTime" type="ifc:IfcSchedulingTime" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcSchedulingTime" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="DataOrigin" type="ifc:IfcDataOriginEnum" use="optional"/>
<xs:attribute name="UserDefinedDataOrigin" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSeamCurve" type="ifc:IfcSeamCurve" substitutionGroup="ifc:IfcSurfaceCurve" nillable="true"/>
<xs:complexType name="IfcSeamCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcSurfaceCurve"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSectionProperties" type="ifc:IfcSectionProperties" substitutionGroup="ifc:IfcPreDefinedProperties" nillable="true"/>
<xs:complexType name="IfcSectionProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedProperties">
<xs:sequence>
<xs:element name="StartProfile" type="ifc:IfcProfileDef" nillable="true"/>
<xs:element name="EndProfile" type="ifc:IfcProfileDef" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="SectionType" type="ifc:IfcSectionTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSectionReinforcementProperties" type="ifc:IfcSectionReinforcementProperties" substitutionGroup="ifc:IfcPreDefinedProperties" nillable="true"/>
<xs:complexType name="IfcSectionReinforcementProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedProperties">
<xs:sequence>
<xs:element name="SectionDefinition" type="ifc:IfcSectionProperties" nillable="true"/>
<xs:element name="CrossSectionReinforcementDefinitions">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcReinforcementBarProperties" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcReinforcementBarProperties"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="LongitudinalStartPosition" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="LongitudinalEndPosition" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="TransversePosition" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="ReinforcementRole" type="ifc:IfcReinforcingBarRoleEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSectionedSpine" type="ifc:IfcSectionedSpine" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcSectionedSpine">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="SpineCurve" type="ifc:IfcCompositeCurve" nillable="true"/>
<xs:element name="CrossSections">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcProfileDef" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProfileDef"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="CrossSectionPositions">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcAxis2Placement3D" minOccurs="2" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAxis2Placement3D"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSensor" type="ifc:IfcSensor" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
<xs:complexType name="IfcSensor">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElement">
<xs:attribute name="PredefinedType" type="ifc:IfcSensorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSensorType" type="ifc:IfcSensorType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
<xs:complexType name="IfcSensorType">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcSensorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcShadingDevice" type="ifc:IfcShadingDevice" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcShadingDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcShadingDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcShadingDeviceType" type="ifc:IfcShadingDeviceType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcShadingDeviceType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcShadingDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcShapeAspect" type="ifc:IfcShapeAspect" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcShapeAspect">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="ShapeRepresentations">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcShapeModel" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcShapeModel"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="ProductDefinitional" type="ifc:IfcLogical" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcShapeModel" type="ifc:IfcShapeModel" abstract="true" substitutionGroup="ifc:IfcRepresentation" nillable="true"/>
<xs:complexType name="IfcShapeModel" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRepresentation"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcShapeRepresentation" type="ifc:IfcShapeRepresentation" substitutionGroup="ifc:IfcShapeModel" nillable="true"/>
<xs:complexType name="IfcShapeRepresentation">
<xs:complexContent>
<xs:extension base="ifc:IfcShapeModel"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcShellBasedSurfaceModel" type="ifc:IfcShellBasedSurfaceModel" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcShellBasedSurfaceModel">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="SbsmBoundary">
<xs:complexType>
<xs:group ref="ifc:IfcShell" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcShell"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSimpleProperty" type="ifc:IfcSimpleProperty" abstract="true" substitutionGroup="ifc:IfcProperty" nillable="true"/>
<xs:complexType name="IfcSimpleProperty" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcProperty"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSimplePropertyTemplate" type="ifc:IfcSimplePropertyTemplate" substitutionGroup="ifc:IfcPropertyTemplate" nillable="true"/>
<xs:complexType name="IfcSimplePropertyTemplate">
<xs:complexContent>
<xs:extension base="ifc:IfcPropertyTemplate">
<xs:sequence>
<xs:element name="Enumerators" type="ifc:IfcPropertyEnumeration" nillable="true" minOccurs="0"/>
<xs:element name="PrimaryUnit" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
<xs:element name="SecondaryUnit" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TemplateType" type="ifc:IfcSimplePropertyTemplateTypeEnum" use="optional"/>
<xs:attribute name="PrimaryMeasureType" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="SecondaryMeasureType" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Expression" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="AccessState" type="ifc:IfcStateEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSite" type="ifc:IfcSite" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
<xs:complexType name="IfcSite">
<xs:complexContent>
<xs:extension base="ifc:IfcSpatialStructureElement">
<xs:sequence>
<xs:element name="SiteAddress" type="ifc:IfcPostalAddress" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="RefLatitude" type="ifc:List-IfcCompoundPlaneAngleMeasure" use="optional"/>
<xs:attribute name="RefLongitude" type="ifc:List-IfcCompoundPlaneAngleMeasure" use="optional"/>
<xs:attribute name="RefElevation" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="LandTitleNumber" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSlab" type="ifc:IfcSlab" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcSlab">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcSlabTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSlabElementedCase" type="ifc:IfcSlabElementedCase" substitutionGroup="ifc:IfcSlab" nillable="true"/>
<xs:complexType name="IfcSlabElementedCase">
<xs:complexContent>
<xs:extension base="ifc:IfcSlab"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSlabStandardCase" type="ifc:IfcSlabStandardCase" substitutionGroup="ifc:IfcSlab" nillable="true"/>
<xs:complexType name="IfcSlabStandardCase">
<xs:complexContent>
<xs:extension base="ifc:IfcSlab"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSlabType" type="ifc:IfcSlabType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcSlabType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcSlabTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSlippageConnectionCondition" type="ifc:IfcSlippageConnectionCondition" substitutionGroup="ifc:IfcStructuralConnectionCondition" nillable="true"/>
<xs:complexType name="IfcSlippageConnectionCondition">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralConnectionCondition">
<xs:attribute name="SlippageX" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="SlippageY" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="SlippageZ" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSolarDevice" type="ifc:IfcSolarDevice" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcSolarDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcSolarDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSolarDeviceType" type="ifc:IfcSolarDeviceType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcSolarDeviceType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcSolarDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSolidModel" type="ifc:IfcSolidModel" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcSolidModel" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSpace" type="ifc:IfcSpace" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
<xs:complexType name="IfcSpace">
<xs:complexContent>
<xs:extension base="ifc:IfcSpatialStructureElement">
<xs:attribute name="PredefinedType" type="ifc:IfcSpaceTypeEnum" use="optional"/>
<xs:attribute name="ElevationWithFlooring" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSpaceHeater" type="ifc:IfcSpaceHeater" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcSpaceHeater">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcSpaceHeaterTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSpaceHeaterType" type="ifc:IfcSpaceHeaterType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcSpaceHeaterType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcSpaceHeaterTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSpaceType" type="ifc:IfcSpaceType" substitutionGroup="ifc:IfcSpatialStructureElementType" nillable="true"/>
<xs:complexType name="IfcSpaceType">
<xs:complexContent>
<xs:extension base="ifc:IfcSpatialStructureElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcSpaceTypeEnum" use="optional"/>
<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSpatialElement" type="ifc:IfcSpatialElement" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
<xs:complexType name="IfcSpatialElement" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcProduct">
<xs:sequence>
<xs:element name="ContainsElements" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRelContainedInSpatialStructure" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelContainedInSpatialStructure"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="ReferencesElements" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRelReferencedInSpatialStructure" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelReferencedInSpatialStructure"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSpatialElementType" type="ifc:IfcSpatialElementType" abstract="true" substitutionGroup="ifc:IfcTypeProduct" nillable="true"/>
<xs:complexType name="IfcSpatialElementType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeProduct">
<xs:attribute name="ElementType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSpatialStructureElement" type="ifc:IfcSpatialStructureElement" abstract="true" substitutionGroup="ifc:IfcSpatialElement" nillable="true"/>
<xs:complexType name="IfcSpatialStructureElement" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcSpatialElement">
<xs:attribute name="CompositionType" type="ifc:IfcElementCompositionEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSpatialStructureElementType" type="ifc:IfcSpatialStructureElementType" abstract="true" substitutionGroup="ifc:IfcSpatialElementType" nillable="true"/>
<xs:complexType name="IfcSpatialStructureElementType" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcSpatialElementType"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSpatialZone" type="ifc:IfcSpatialZone" substitutionGroup="ifc:IfcSpatialElement" nillable="true"/>
<xs:complexType name="IfcSpatialZone">
<xs:complexContent>
<xs:extension base="ifc:IfcSpatialElement">
<xs:attribute name="PredefinedType" type="ifc:IfcSpatialZoneTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSpatialZoneType" type="ifc:IfcSpatialZoneType" substitutionGroup="ifc:IfcSpatialElementType" nillable="true"/>
<xs:complexType name="IfcSpatialZoneType">
<xs:complexContent>
<xs:extension base="ifc:IfcSpatialElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcSpatialZoneTypeEnum" use="optional"/>
<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSphere" type="ifc:IfcSphere" substitutionGroup="ifc:IfcCsgPrimitive3D" nillable="true"/>
<xs:complexType name="IfcSphere">
<xs:complexContent>
<xs:extension base="ifc:IfcCsgPrimitive3D">
<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSphericalSurface" type="ifc:IfcSphericalSurface" substitutionGroup="ifc:IfcElementarySurface" nillable="true"/>
<xs:complexType name="IfcSphericalSurface">
<xs:complexContent>
<xs:extension base="ifc:IfcElementarySurface">
<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStackTerminal" type="ifc:IfcStackTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcStackTerminal">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcStackTerminalTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStackTerminalType" type="ifc:IfcStackTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcStackTerminalType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcStackTerminalTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStair" type="ifc:IfcStair" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcStair">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcStairTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStairFlight" type="ifc:IfcStairFlight" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcStairFlight">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="NumberOfRisers" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="NumberOfTreads" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="RiserHeight" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="TreadLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcStairFlightTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStairFlightType" type="ifc:IfcStairFlightType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcStairFlightType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcStairFlightTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStairType" type="ifc:IfcStairType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcStairType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcStairTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralAction" type="ifc:IfcStructuralAction" abstract="true" substitutionGroup="ifc:IfcStructuralActivity" nillable="true"/>
<xs:complexType name="IfcStructuralAction" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralActivity">
<xs:attribute name="DestabilizingLoad" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralActivity" type="ifc:IfcStructuralActivity" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
<xs:complexType name="IfcStructuralActivity" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcProduct">
<xs:sequence>
<xs:element name="AppliedLoad" type="ifc:IfcStructuralLoad" nillable="true"/>
</xs:sequence>
<xs:attribute name="GlobalOrLocal" type="ifc:IfcGlobalOrLocalEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralAnalysisModel" type="ifc:IfcStructuralAnalysisModel" substitutionGroup="ifc:IfcSystem" nillable="true"/>
<xs:complexType name="IfcStructuralAnalysisModel">
<xs:complexContent>
<xs:extension base="ifc:IfcSystem">
<xs:sequence>
<xs:element name="OrientationOf2DPlane" type="ifc:IfcAxis2Placement3D" nillable="true" minOccurs="0"/>
<xs:element name="LoadedBy" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcStructuralLoadGroup" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcStructuralLoadGroup"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="HasResults" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcStructuralResultGroup" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcStructuralResultGroup"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="SharedPlacement" type="ifc:IfcObjectPlacement" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="PredefinedType" type="ifc:IfcAnalysisModelTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralConnection" type="ifc:IfcStructuralConnection" abstract="true" substitutionGroup="ifc:IfcStructuralItem" nillable="true"/>
<xs:complexType name="IfcStructuralConnection" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralItem">
<xs:sequence>
<xs:element name="AppliedCondition" type="ifc:IfcBoundaryCondition" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralConnectionCondition" type="ifc:IfcStructuralConnectionCondition" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcStructuralConnectionCondition" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralCurveAction" type="ifc:IfcStructuralCurveAction" substitutionGroup="ifc:IfcStructuralAction" nillable="true"/>
<xs:complexType name="IfcStructuralCurveAction">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralAction">
<xs:attribute name="ProjectedOrTrue" type="ifc:IfcProjectedOrTrueLengthEnum" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcStructuralCurveActivityTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralCurveConnection" type="ifc:IfcStructuralCurveConnection" substitutionGroup="ifc:IfcStructuralConnection" nillable="true"/>
<xs:complexType name="IfcStructuralCurveConnection">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralConnection">
<xs:sequence>
<xs:element name="Axis" type="ifc:IfcDirection" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralCurveMember" type="ifc:IfcStructuralCurveMember" substitutionGroup="ifc:IfcStructuralMember" nillable="true"/>
<xs:complexType name="IfcStructuralCurveMember">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralMember">
<xs:sequence>
<xs:element name="Axis" type="ifc:IfcDirection" nillable="true"/>
</xs:sequence>
<xs:attribute name="PredefinedType" type="ifc:IfcStructuralCurveMemberTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralCurveMemberVarying" type="ifc:IfcStructuralCurveMemberVarying" substitutionGroup="ifc:IfcStructuralCurveMember" nillable="true"/>
<xs:complexType name="IfcStructuralCurveMemberVarying">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralCurveMember"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralCurveReaction" type="ifc:IfcStructuralCurveReaction" substitutionGroup="ifc:IfcStructuralReaction" nillable="true"/>
<xs:complexType name="IfcStructuralCurveReaction">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralReaction">
<xs:attribute name="PredefinedType" type="ifc:IfcStructuralCurveActivityTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralItem" type="ifc:IfcStructuralItem" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
<xs:complexType name="IfcStructuralItem" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcProduct"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLinearAction" type="ifc:IfcStructuralLinearAction" substitutionGroup="ifc:IfcStructuralCurveAction" nillable="true"/>
<xs:complexType name="IfcStructuralLinearAction">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralCurveAction"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoad" type="ifc:IfcStructuralLoad" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcStructuralLoad" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadCase" type="ifc:IfcStructuralLoadCase" substitutionGroup="ifc:IfcStructuralLoadGroup" nillable="true"/>
<xs:complexType name="IfcStructuralLoadCase">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoadGroup">
<xs:attribute name="SelfWeightCoefficients" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcRatioMeasure"/>
</xs:simpleType>
<xs:minLength value="3"/>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadConfiguration" type="ifc:IfcStructuralLoadConfiguration" substitutionGroup="ifc:IfcStructuralLoad" nillable="true"/>
<xs:complexType name="IfcStructuralLoadConfiguration">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoad">
<xs:sequence>
<xs:element name="Values">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcStructuralLoadOrResult" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcStructuralLoadOrResult"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Locations" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcLengthMeasure-wrapper" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcLengthMeasure-wrapper"/>
<xs:attribute ref="ifc:cType" fixed="list-unique list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadGroup" type="ifc:IfcStructuralLoadGroup" substitutionGroup="ifc:IfcGroup" nillable="true"/>
<xs:complexType name="IfcStructuralLoadGroup">
<xs:complexContent>
<xs:extension base="ifc:IfcGroup">
<xs:attribute name="PredefinedType" type="ifc:IfcLoadGroupTypeEnum" use="optional"/>
<xs:attribute name="ActionType" type="ifc:IfcActionTypeEnum" use="optional"/>
<xs:attribute name="ActionSource" type="ifc:IfcActionSourceTypeEnum" use="optional"/>
<xs:attribute name="Coefficient" type="ifc:IfcRatioMeasure" use="optional"/>
<xs:attribute name="Purpose" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadLinearForce" type="ifc:IfcStructuralLoadLinearForce" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
<xs:complexType name="IfcStructuralLoadLinearForce">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoadStatic">
<xs:attribute name="LinearForceX" type="ifc:IfcLinearForceMeasure" use="optional"/>
<xs:attribute name="LinearForceY" type="ifc:IfcLinearForceMeasure" use="optional"/>
<xs:attribute name="LinearForceZ" type="ifc:IfcLinearForceMeasure" use="optional"/>
<xs:attribute name="LinearMomentX" type="ifc:IfcLinearMomentMeasure" use="optional"/>
<xs:attribute name="LinearMomentY" type="ifc:IfcLinearMomentMeasure" use="optional"/>
<xs:attribute name="LinearMomentZ" type="ifc:IfcLinearMomentMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadOrResult" type="ifc:IfcStructuralLoadOrResult" abstract="true" substitutionGroup="ifc:IfcStructuralLoad" nillable="true"/>
<xs:complexType name="IfcStructuralLoadOrResult" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoad"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadPlanarForce" type="ifc:IfcStructuralLoadPlanarForce" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
<xs:complexType name="IfcStructuralLoadPlanarForce">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoadStatic">
<xs:attribute name="PlanarForceX" type="ifc:IfcPlanarForceMeasure" use="optional"/>
<xs:attribute name="PlanarForceY" type="ifc:IfcPlanarForceMeasure" use="optional"/>
<xs:attribute name="PlanarForceZ" type="ifc:IfcPlanarForceMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadSingleDisplacement" type="ifc:IfcStructuralLoadSingleDisplacement" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
<xs:complexType name="IfcStructuralLoadSingleDisplacement">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoadStatic">
<xs:attribute name="DisplacementX" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="DisplacementY" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="DisplacementZ" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="RotationalDisplacementRX" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
<xs:attribute name="RotationalDisplacementRY" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
<xs:attribute name="RotationalDisplacementRZ" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadSingleDisplacementDistortion" type="ifc:IfcStructuralLoadSingleDisplacementDistortion" substitutionGroup="ifc:IfcStructuralLoadSingleDisplacement" nillable="true"/>
<xs:complexType name="IfcStructuralLoadSingleDisplacementDistortion">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoadSingleDisplacement">
<xs:attribute name="Distortion" type="ifc:IfcCurvatureMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadSingleForce" type="ifc:IfcStructuralLoadSingleForce" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
<xs:complexType name="IfcStructuralLoadSingleForce">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoadStatic">
<xs:attribute name="ForceX" type="ifc:IfcForceMeasure" use="optional"/>
<xs:attribute name="ForceY" type="ifc:IfcForceMeasure" use="optional"/>
<xs:attribute name="ForceZ" type="ifc:IfcForceMeasure" use="optional"/>
<xs:attribute name="MomentX" type="ifc:IfcTorqueMeasure" use="optional"/>
<xs:attribute name="MomentY" type="ifc:IfcTorqueMeasure" use="optional"/>
<xs:attribute name="MomentZ" type="ifc:IfcTorqueMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadSingleForceWarping" type="ifc:IfcStructuralLoadSingleForceWarping" substitutionGroup="ifc:IfcStructuralLoadSingleForce" nillable="true"/>
<xs:complexType name="IfcStructuralLoadSingleForceWarping">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoadSingleForce">
<xs:attribute name="WarpingMoment" type="ifc:IfcWarpingMomentMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadStatic" type="ifc:IfcStructuralLoadStatic" abstract="true" substitutionGroup="ifc:IfcStructuralLoadOrResult" nillable="true"/>
<xs:complexType name="IfcStructuralLoadStatic" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoadOrResult"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralLoadTemperature" type="ifc:IfcStructuralLoadTemperature" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
<xs:complexType name="IfcStructuralLoadTemperature">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoadStatic">
<xs:attribute name="DeltaTConstant" type="ifc:IfcThermodynamicTemperatureMeasure" use="optional"/>
<xs:attribute name="DeltaTY" type="ifc:IfcThermodynamicTemperatureMeasure" use="optional"/>
<xs:attribute name="DeltaTZ" type="ifc:IfcThermodynamicTemperatureMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralMember" type="ifc:IfcStructuralMember" abstract="true" substitutionGroup="ifc:IfcStructuralItem" nillable="true"/>
<xs:complexType name="IfcStructuralMember" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralPlanarAction" type="ifc:IfcStructuralPlanarAction" substitutionGroup="ifc:IfcStructuralSurfaceAction" nillable="true"/>
<xs:complexType name="IfcStructuralPlanarAction">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralSurfaceAction"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralPointAction" type="ifc:IfcStructuralPointAction" substitutionGroup="ifc:IfcStructuralAction" nillable="true"/>
<xs:complexType name="IfcStructuralPointAction">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralAction"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralPointConnection" type="ifc:IfcStructuralPointConnection" substitutionGroup="ifc:IfcStructuralConnection" nillable="true"/>
<xs:complexType name="IfcStructuralPointConnection">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralConnection">
<xs:sequence>
<xs:element name="ConditionCoordinateSystem" type="ifc:IfcAxis2Placement3D" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralPointReaction" type="ifc:IfcStructuralPointReaction" substitutionGroup="ifc:IfcStructuralReaction" nillable="true"/>
<xs:complexType name="IfcStructuralPointReaction">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralReaction"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralReaction" type="ifc:IfcStructuralReaction" abstract="true" substitutionGroup="ifc:IfcStructuralActivity" nillable="true"/>
<xs:complexType name="IfcStructuralReaction" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralActivity"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralResultGroup" type="ifc:IfcStructuralResultGroup" substitutionGroup="ifc:IfcGroup" nillable="true"/>
<xs:complexType name="IfcStructuralResultGroup">
<xs:complexContent>
<xs:extension base="ifc:IfcGroup">
<xs:sequence>
<xs:element name="ResultForLoadGroup" type="ifc:IfcStructuralLoadGroup" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="TheoryType" type="ifc:IfcAnalysisTheoryTypeEnum" use="optional"/>
<xs:attribute name="IsLinear" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralSurfaceAction" type="ifc:IfcStructuralSurfaceAction" substitutionGroup="ifc:IfcStructuralAction" nillable="true"/>
<xs:complexType name="IfcStructuralSurfaceAction">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralAction">
<xs:attribute name="ProjectedOrTrue" type="ifc:IfcProjectedOrTrueLengthEnum" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcStructuralSurfaceActivityTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralSurfaceConnection" type="ifc:IfcStructuralSurfaceConnection" substitutionGroup="ifc:IfcStructuralConnection" nillable="true"/>
<xs:complexType name="IfcStructuralSurfaceConnection">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralConnection"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralSurfaceMember" type="ifc:IfcStructuralSurfaceMember" substitutionGroup="ifc:IfcStructuralMember" nillable="true"/>
<xs:complexType name="IfcStructuralSurfaceMember">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralMember">
<xs:attribute name="PredefinedType" type="ifc:IfcStructuralSurfaceMemberTypeEnum" use="optional"/>
<xs:attribute name="Thickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralSurfaceMemberVarying" type="ifc:IfcStructuralSurfaceMemberVarying" substitutionGroup="ifc:IfcStructuralSurfaceMember" nillable="true"/>
<xs:complexType name="IfcStructuralSurfaceMemberVarying">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralSurfaceMember"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStructuralSurfaceReaction" type="ifc:IfcStructuralSurfaceReaction" substitutionGroup="ifc:IfcStructuralReaction" nillable="true"/>
<xs:complexType name="IfcStructuralSurfaceReaction">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralReaction">
<xs:attribute name="PredefinedType" type="ifc:IfcStructuralSurfaceActivityTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStyleModel" type="ifc:IfcStyleModel" abstract="true" substitutionGroup="ifc:IfcRepresentation" nillable="true"/>
<xs:complexType name="IfcStyleModel" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRepresentation"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStyledItem" type="ifc:IfcStyledItem" substitutionGroup="ifc:IfcRepresentationItem" nillable="true"/>
<xs:complexType name="IfcStyledItem">
<xs:complexContent>
<xs:extension base="ifc:IfcRepresentationItem">
<xs:sequence>
<xs:element name="Styles">
<xs:complexType>
<xs:group ref="ifc:IfcStyleAssignmentSelect" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcStyleAssignmentSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcStyledRepresentation" type="ifc:IfcStyledRepresentation" substitutionGroup="ifc:IfcStyleModel" nillable="true"/>
<xs:complexType name="IfcStyledRepresentation">
<xs:complexContent>
<xs:extension base="ifc:IfcStyleModel"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSubContractResource" type="ifc:IfcSubContractResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
<xs:complexType name="IfcSubContractResource">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResource">
<xs:attribute name="PredefinedType" type="ifc:IfcSubContractResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSubContractResourceType" type="ifc:IfcSubContractResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
<xs:complexType name="IfcSubContractResourceType">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResourceType">
<xs:attribute name="PredefinedType" type="ifc:IfcSubContractResourceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSubedge" type="ifc:IfcSubedge" substitutionGroup="ifc:IfcEdge" nillable="true"/>
<xs:complexType name="IfcSubedge">
<xs:complexContent>
<xs:extension base="ifc:IfcEdge">
<xs:sequence>
<xs:element name="ParentEdge" type="ifc:IfcEdge" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurface" type="ifc:IfcSurface" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcSurface" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceCurve" type="ifc:IfcSurfaceCurve" substitutionGroup="ifc:IfcCurve" nillable="true"/>
<xs:complexType name="IfcSurfaceCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcCurve">
<xs:sequence>
<xs:element name="Curve3D" type="ifc:IfcCurve" nillable="true"/>
<xs:element name="AssociatedGeometry">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPcurve" maxOccurs="2"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPcurve"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="MasterRepresentation" type="ifc:IfcPreferredSurfaceCurveRepresentation" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceCurveSweptAreaSolid" type="ifc:IfcSurfaceCurveSweptAreaSolid" substitutionGroup="ifc:IfcSweptAreaSolid" nillable="true"/>
<xs:complexType name="IfcSurfaceCurveSweptAreaSolid">
<xs:complexContent>
<xs:extension base="ifc:IfcSweptAreaSolid">
<xs:sequence>
<xs:element name="Directrix" type="ifc:IfcCurve" nillable="true"/>
<xs:element name="ReferenceSurface" type="ifc:IfcSurface" nillable="true"/>
</xs:sequence>
<xs:attribute name="StartParam" type="ifc:IfcParameterValue" use="optional"/>
<xs:attribute name="EndParam" type="ifc:IfcParameterValue" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceFeature" type="ifc:IfcSurfaceFeature" substitutionGroup="ifc:IfcFeatureElement" nillable="true"/>
<xs:complexType name="IfcSurfaceFeature">
<xs:complexContent>
<xs:extension base="ifc:IfcFeatureElement">
<xs:attribute name="PredefinedType" type="ifc:IfcSurfaceFeatureTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceOfLinearExtrusion" type="ifc:IfcSurfaceOfLinearExtrusion" substitutionGroup="ifc:IfcSweptSurface" nillable="true"/>
<xs:complexType name="IfcSurfaceOfLinearExtrusion">
<xs:complexContent>
<xs:extension base="ifc:IfcSweptSurface">
<xs:sequence>
<xs:element name="ExtrudedDirection" type="ifc:IfcDirection" nillable="true"/>
</xs:sequence>
<xs:attribute name="Depth" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceOfRevolution" type="ifc:IfcSurfaceOfRevolution" substitutionGroup="ifc:IfcSweptSurface" nillable="true"/>
<xs:complexType name="IfcSurfaceOfRevolution">
<xs:complexContent>
<xs:extension base="ifc:IfcSweptSurface">
<xs:sequence>
<xs:element name="AxisPosition" type="ifc:IfcAxis1Placement" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceReinforcementArea" type="ifc:IfcSurfaceReinforcementArea" substitutionGroup="ifc:IfcStructuralLoadOrResult" nillable="true"/>
<xs:complexType name="IfcSurfaceReinforcementArea">
<xs:complexContent>
<xs:extension base="ifc:IfcStructuralLoadOrResult">
<xs:attribute name="SurfaceReinforcement1" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:minLength value="2"/>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SurfaceReinforcement2" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:minLength value="2"/>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ShearReinforcement" type="ifc:IfcRatioMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceStyle" type="ifc:IfcSurfaceStyle" substitutionGroup="ifc:IfcPresentationStyle" nillable="true"/>
<xs:complexType name="IfcSurfaceStyle">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationStyle">
<xs:sequence>
<xs:element name="Styles">
<xs:complexType>
<xs:group ref="ifc:IfcSurfaceStyleElementSelect" maxOccurs="5"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSurfaceStyleElementSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Side" type="ifc:IfcSurfaceSide" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceStyleLighting" type="ifc:IfcSurfaceStyleLighting" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcSurfaceStyleLighting">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:sequence>
<xs:element name="DiffuseTransmissionColour" type="ifc:IfcColourRgb" nillable="true"/>
<xs:element name="DiffuseReflectionColour" type="ifc:IfcColourRgb" nillable="true"/>
<xs:element name="TransmissionColour" type="ifc:IfcColourRgb" nillable="true"/>
<xs:element name="ReflectanceColour" type="ifc:IfcColourRgb" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceStyleRefraction" type="ifc:IfcSurfaceStyleRefraction" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcSurfaceStyleRefraction">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:attribute name="RefractionIndex" type="ifc:IfcReal" use="optional"/>
<xs:attribute name="DispersionFactor" type="ifc:IfcReal" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceStyleRendering" type="ifc:IfcSurfaceStyleRendering" substitutionGroup="ifc:IfcSurfaceStyleShading" nillable="true"/>
<xs:complexType name="IfcSurfaceStyleRendering">
<xs:complexContent>
<xs:extension base="ifc:IfcSurfaceStyleShading">
<xs:sequence>
<xs:element name="DiffuseColour" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcColourOrFactor"/>
</xs:complexType>
</xs:element>
<xs:element name="TransmissionColour" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcColourOrFactor"/>
</xs:complexType>
</xs:element>
<xs:element name="DiffuseTransmissionColour" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcColourOrFactor"/>
</xs:complexType>
</xs:element>
<xs:element name="ReflectionColour" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcColourOrFactor"/>
</xs:complexType>
</xs:element>
<xs:element name="SpecularColour" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcColourOrFactor"/>
</xs:complexType>
</xs:element>
<xs:element name="SpecularHighlight" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcSpecularHighlightSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ReflectanceMethod" type="ifc:IfcReflectanceMethodEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceStyleShading" type="ifc:IfcSurfaceStyleShading" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcSurfaceStyleShading">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:sequence>
<xs:element name="SurfaceColour" type="ifc:IfcColourRgb" nillable="true"/>
</xs:sequence>
<xs:attribute name="Transparency" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceStyleWithTextures" type="ifc:IfcSurfaceStyleWithTextures" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcSurfaceStyleWithTextures">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:sequence>
<xs:element name="Textures">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcSurfaceTexture" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSurfaceTexture"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSurfaceTexture" type="ifc:IfcSurfaceTexture" abstract="true" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcSurfaceTexture" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:sequence>
<xs:element name="TextureTransform" type="ifc:IfcCartesianTransformationOperator2D" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="RepeatS" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="RepeatT" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="Mode" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="Parameter" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcIdentifier"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSweptAreaSolid" type="ifc:IfcSweptAreaSolid" abstract="true" substitutionGroup="ifc:IfcSolidModel" nillable="true"/>
<xs:complexType name="IfcSweptAreaSolid" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcSolidModel">
<xs:sequence>
<xs:element name="SweptArea" type="ifc:IfcProfileDef" nillable="true"/>
<xs:element name="Position" type="ifc:IfcAxis2Placement3D" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSweptDiskSolid" type="ifc:IfcSweptDiskSolid" substitutionGroup="ifc:IfcSolidModel" nillable="true"/>
<xs:complexType name="IfcSweptDiskSolid">
<xs:complexContent>
<xs:extension base="ifc:IfcSolidModel">
<xs:sequence>
<xs:element name="Directrix" type="ifc:IfcCurve" nillable="true"/>
</xs:sequence>
<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="InnerRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="StartParam" type="ifc:IfcParameterValue" use="optional"/>
<xs:attribute name="EndParam" type="ifc:IfcParameterValue" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSweptDiskSolidPolygonal" type="ifc:IfcSweptDiskSolidPolygonal" substitutionGroup="ifc:IfcSweptDiskSolid" nillable="true"/>
<xs:complexType name="IfcSweptDiskSolidPolygonal">
<xs:complexContent>
<xs:extension base="ifc:IfcSweptDiskSolid">
<xs:attribute name="FilletRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSweptSurface" type="ifc:IfcSweptSurface" abstract="true" substitutionGroup="ifc:IfcSurface" nillable="true"/>
<xs:complexType name="IfcSweptSurface" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcSurface">
<xs:sequence>
<xs:element name="SweptCurve" type="ifc:IfcProfileDef" nillable="true"/>
<xs:element name="Position" type="ifc:IfcAxis2Placement3D" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSwitchingDevice" type="ifc:IfcSwitchingDevice" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
<xs:complexType name="IfcSwitchingDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowController">
<xs:attribute name="PredefinedType" type="ifc:IfcSwitchingDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSwitchingDeviceType" type="ifc:IfcSwitchingDeviceType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
<xs:complexType name="IfcSwitchingDeviceType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowControllerType">
<xs:attribute name="PredefinedType" type="ifc:IfcSwitchingDeviceTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSystem" type="ifc:IfcSystem" substitutionGroup="ifc:IfcGroup" nillable="true"/>
<xs:complexType name="IfcSystem">
<xs:complexContent>
<xs:extension base="ifc:IfcGroup"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSystemFurnitureElement" type="ifc:IfcSystemFurnitureElement" substitutionGroup="ifc:IfcFurnishingElement" nillable="true"/>
<xs:complexType name="IfcSystemFurnitureElement">
<xs:complexContent>
<xs:extension base="ifc:IfcFurnishingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcSystemFurnitureElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcSystemFurnitureElementType" type="ifc:IfcSystemFurnitureElementType" substitutionGroup="ifc:IfcFurnishingElementType" nillable="true"/>
<xs:complexType name="IfcSystemFurnitureElementType">
<xs:complexContent>
<xs:extension base="ifc:IfcFurnishingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcSystemFurnitureElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTShapeProfileDef" type="ifc:IfcTShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcTShapeProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FlangeWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="WebThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="FlangeEdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="WebEdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="WebSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
<xs:attribute name="FlangeSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTable" type="ifc:IfcTable" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcTable">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Rows" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcTableRow" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTableRow"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Columns" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcTableColumn" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTableColumn"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTableColumn" type="ifc:IfcTableColumn" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcTableColumn">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Unit" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
<xs:element name="ReferencePath" type="ifc:IfcReference" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Identifier" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTableRow" type="ifc:IfcTableRow" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcTableRow">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="RowCells" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="IsHeading" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTank" type="ifc:IfcTank" substitutionGroup="ifc:IfcFlowStorageDevice" nillable="true"/>
<xs:complexType name="IfcTank">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowStorageDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcTankTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTankType" type="ifc:IfcTankType" substitutionGroup="ifc:IfcFlowStorageDeviceType" nillable="true"/>
<xs:complexType name="IfcTankType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowStorageDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcTankTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTask" type="ifc:IfcTask" substitutionGroup="ifc:IfcProcess" nillable="true"/>
<xs:complexType name="IfcTask">
<xs:complexContent>
<xs:extension base="ifc:IfcProcess">
<xs:sequence>
<xs:element name="TaskTime" type="ifc:IfcTaskTime" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="WorkMethod" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="IsMilestone" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="Priority" type="ifc:IfcInteger" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcTaskTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTaskTime" type="ifc:IfcTaskTime" substitutionGroup="ifc:IfcSchedulingTime" nillable="true"/>
<xs:complexType name="IfcTaskTime">
<xs:complexContent>
<xs:extension base="ifc:IfcSchedulingTime">
<xs:attribute name="DurationType" type="ifc:IfcTaskDurationEnum" use="optional"/>
<xs:attribute name="ScheduleDuration" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="ScheduleStart" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="ScheduleFinish" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="EarlyStart" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="EarlyFinish" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="LateStart" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="LateFinish" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="FreeFloat" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="TotalFloat" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="IsCritical" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="StatusTime" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="ActualDuration" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="ActualStart" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="ActualFinish" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="RemainingTime" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="Completion" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTaskTimeRecurring" type="ifc:IfcTaskTimeRecurring" substitutionGroup="ifc:IfcTaskTime" nillable="true"/>
<xs:complexType name="IfcTaskTimeRecurring">
<xs:complexContent>
<xs:extension base="ifc:IfcTaskTime">
<xs:sequence>
<xs:element name="Recurrence" type="ifc:IfcRecurrencePattern" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTaskType" type="ifc:IfcTaskType" substitutionGroup="ifc:IfcTypeProcess" nillable="true"/>
<xs:complexType name="IfcTaskType">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeProcess">
<xs:attribute name="PredefinedType" type="ifc:IfcTaskTypeEnum" use="optional"/>
<xs:attribute name="WorkMethod" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTelecomAddress" type="ifc:IfcTelecomAddress" substitutionGroup="ifc:IfcAddress" nillable="true"/>
<xs:complexType name="IfcTelecomAddress">
<xs:complexContent>
<xs:extension base="ifc:IfcAddress">
<xs:attribute name="TelephoneNumbers" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLabel"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="FacsimileNumbers" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLabel"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="PagerNumber" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="ElectronicMailAddresses" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLabel"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="WWWHomePageURL" type="ifc:IfcURIReference" use="optional"/>
<xs:attribute name="MessagingIDs" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcURIReference"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTendon" type="ifc:IfcTendon" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
<xs:complexType name="IfcTendon">
<xs:complexContent>
<xs:extension base="ifc:IfcReinforcingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcTendonTypeEnum" use="optional"/>
<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="CrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
<xs:attribute name="TensionForce" type="ifc:IfcForceMeasure" use="optional"/>
<xs:attribute name="PreStress" type="ifc:IfcPressureMeasure" use="optional"/>
<xs:attribute name="FrictionCoefficient" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="AnchorageSlip" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="MinCurvatureRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTendonAnchor" type="ifc:IfcTendonAnchor" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
<xs:complexType name="IfcTendonAnchor">
<xs:complexContent>
<xs:extension base="ifc:IfcReinforcingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcTendonAnchorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTendonAnchorType" type="ifc:IfcTendonAnchorType" substitutionGroup="ifc:IfcReinforcingElementType" nillable="true"/>
<xs:complexType name="IfcTendonAnchorType">
<xs:complexContent>
<xs:extension base="ifc:IfcReinforcingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcTendonAnchorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTendonType" type="ifc:IfcTendonType" substitutionGroup="ifc:IfcReinforcingElementType" nillable="true"/>
<xs:complexType name="IfcTendonType">
<xs:complexContent>
<xs:extension base="ifc:IfcReinforcingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcTendonTypeEnum" use="optional"/>
<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="CrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
<xs:attribute name="SheathDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTessellatedFaceSet" type="ifc:IfcTessellatedFaceSet" abstract="true" substitutionGroup="ifc:IfcTessellatedItem" nillable="true"/>
<xs:complexType name="IfcTessellatedFaceSet" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcTessellatedItem">
<xs:sequence>
<xs:element name="Coordinates" type="ifc:IfcCartesianPointList3D" nillable="true"/>
<xs:element name="HasColours" type="ifc:IfcIndexedColourMap" nillable="true" minOccurs="0" maxOccurs="1"/>
<xs:element name="HasTextures" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcIndexedTextureMap" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcIndexedTextureMap"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTessellatedItem" type="ifc:IfcTessellatedItem" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcTessellatedItem" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextLiteral" type="ifc:IfcTextLiteral" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcTextLiteral">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="Placement">
<xs:complexType>
<xs:group ref="ifc:IfcAxis2Placement"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Literal" type="ifc:IfcPresentableText" use="optional"/>
<xs:attribute name="Path" type="ifc:IfcTextPath" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextLiteralWithExtent" type="ifc:IfcTextLiteralWithExtent" substitutionGroup="ifc:IfcTextLiteral" nillable="true"/>
<xs:complexType name="IfcTextLiteralWithExtent">
<xs:complexContent>
<xs:extension base="ifc:IfcTextLiteral">
<xs:sequence>
<xs:element name="Extent" type="ifc:IfcPlanarExtent" nillable="true"/>
</xs:sequence>
<xs:attribute name="BoxAlignment" type="ifc:IfcBoxAlignment" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextStyle" type="ifc:IfcTextStyle" substitutionGroup="ifc:IfcPresentationStyle" nillable="true"/>
<xs:complexType name="IfcTextStyle">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationStyle">
<xs:sequence>
<xs:element name="TextCharacterAppearance" type="ifc:IfcTextStyleForDefinedFont" nillable="true" minOccurs="0"/>
<xs:element name="TextStyle" type="ifc:IfcTextStyleTextModel" nillable="true" minOccurs="0"/>
<xs:element name="TextFontStyle">
<xs:complexType>
<xs:group ref="ifc:IfcTextFontSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ModelOrDraughting" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextStyleFontModel" type="ifc:IfcTextStyleFontModel" substitutionGroup="ifc:IfcPreDefinedTextFont" nillable="true"/>
<xs:complexType name="IfcTextStyleFontModel">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedTextFont">
<xs:sequence>
<xs:element name="FontFamily">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcTextFontName-wrapper" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTextFontName-wrapper"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="FontSize">
<xs:complexType>
<xs:group ref="ifc:IfcSizeSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="FontStyle" type="ifc:IfcFontStyle" use="optional"/>
<xs:attribute name="FontVariant" type="ifc:IfcFontVariant" use="optional"/>
<xs:attribute name="FontWeight" type="ifc:IfcFontWeight" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextStyleForDefinedFont" type="ifc:IfcTextStyleForDefinedFont" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcTextStyleForDefinedFont">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:sequence>
<xs:element name="Colour">
<xs:complexType>
<xs:group ref="ifc:IfcColour"/>
</xs:complexType>
</xs:element>
<xs:element name="BackgroundColour" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcColour"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextStyleTextModel" type="ifc:IfcTextStyleTextModel" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcTextStyleTextModel">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:sequence>
<xs:element name="TextIndent" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcSizeSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="LetterSpacing" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcSizeSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="WordSpacing" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcSizeSelect"/>
</xs:complexType>
</xs:element>
<xs:element name="LineHeight" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcSizeSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TextAlign" type="ifc:IfcTextAlignment" use="optional"/>
<xs:attribute name="TextDecoration" type="ifc:IfcTextDecoration" use="optional"/>
<xs:attribute name="TextTransform" type="ifc:IfcTextTransformation" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextureCoordinate" type="ifc:IfcTextureCoordinate" abstract="true" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcTextureCoordinate" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:sequence>
<xs:element name="Maps">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcSurfaceTexture" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSurfaceTexture"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextureCoordinateGenerator" type="ifc:IfcTextureCoordinateGenerator" substitutionGroup="ifc:IfcTextureCoordinate" nillable="true"/>
<xs:complexType name="IfcTextureCoordinateGenerator">
<xs:complexContent>
<xs:extension base="ifc:IfcTextureCoordinate">
<xs:attribute name="Mode" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Parameter" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcReal"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextureMap" type="ifc:IfcTextureMap" substitutionGroup="ifc:IfcTextureCoordinate" nillable="true"/>
<xs:complexType name="IfcTextureMap">
<xs:complexContent>
<xs:extension base="ifc:IfcTextureCoordinate">
<xs:sequence>
<xs:element name="Vertices">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcTextureVertex" minOccurs="3" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTextureVertex"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="MappedTo" type="ifc:IfcFace" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextureVertex" type="ifc:IfcTextureVertex" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcTextureVertex">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:attribute name="Coordinates" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcParameterValue"/>
</xs:simpleType>
<xs:minLength value="2"/>
<xs:maxLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTextureVertexList" type="ifc:IfcTextureVertexList" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
<xs:complexType name="IfcTextureVertexList">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationItem">
<xs:attribute name="TexCoordsList" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcParameterValue"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTimePeriod" type="ifc:IfcTimePeriod" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcTimePeriod">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:attribute name="StartTime" type="ifc:IfcTime" use="optional"/>
<xs:attribute name="EndTime" type="ifc:IfcTime" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTimeSeries" type="ifc:IfcTimeSeries" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcTimeSeries" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Unit" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcUnit"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
<xs:attribute name="StartTime" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="EndTime" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="TimeSeriesDataType" type="ifc:IfcTimeSeriesDataTypeEnum" use="optional"/>
<xs:attribute name="DataOrigin" type="ifc:IfcDataOriginEnum" use="optional"/>
<xs:attribute name="UserDefinedDataOrigin" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTimeSeriesValue" type="ifc:IfcTimeSeriesValue" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcTimeSeriesValue">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="ListValues">
<xs:complexType>
<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTopologicalRepresentationItem" type="ifc:IfcTopologicalRepresentationItem" abstract="true" substitutionGroup="ifc:IfcRepresentationItem" nillable="true"/>
<xs:complexType name="IfcTopologicalRepresentationItem" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcRepresentationItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTopologyRepresentation" type="ifc:IfcTopologyRepresentation" substitutionGroup="ifc:IfcShapeModel" nillable="true"/>
<xs:complexType name="IfcTopologyRepresentation">
<xs:complexContent>
<xs:extension base="ifc:IfcShapeModel"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcToroidalSurface" type="ifc:IfcToroidalSurface" substitutionGroup="ifc:IfcElementarySurface" nillable="true"/>
<xs:complexType name="IfcToroidalSurface">
<xs:complexContent>
<xs:extension base="ifc:IfcElementarySurface">
<xs:attribute name="MajorRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="MinorRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTransformer" type="ifc:IfcTransformer" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcTransformer">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcTransformerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTransformerType" type="ifc:IfcTransformerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcTransformerType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcTransformerTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTransportElement" type="ifc:IfcTransportElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
<xs:complexType name="IfcTransportElement">
<xs:complexContent>
<xs:extension base="ifc:IfcElement">
<xs:attribute name="PredefinedType" type="ifc:IfcTransportElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTransportElementType" type="ifc:IfcTransportElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
<xs:complexType name="IfcTransportElementType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcTransportElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTrapeziumProfileDef" type="ifc:IfcTrapeziumProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcTrapeziumProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="BottomXDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="TopXDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="YDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="TopXOffset" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTriangulatedFaceSet" type="ifc:IfcTriangulatedFaceSet" substitutionGroup="ifc:IfcTessellatedFaceSet" nillable="true"/>
<xs:complexType name="IfcTriangulatedFaceSet">
<xs:complexContent>
<xs:extension base="ifc:IfcTessellatedFaceSet">
<xs:attribute name="Normals" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcParameterValue"/>
</xs:simpleType>
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Closed" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="CoordIndex" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcPositiveInteger"/>
</xs:simpleType>
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="PnIndex" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcPositiveInteger"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTrimmedCurve" type="ifc:IfcTrimmedCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
<xs:complexType name="IfcTrimmedCurve">
<xs:complexContent>
<xs:extension base="ifc:IfcBoundedCurve">
<xs:sequence>
<xs:element name="BasisCurve" type="ifc:IfcCurve" nillable="true"/>
<xs:element name="Trim1">
<xs:complexType>
<xs:group ref="ifc:IfcTrimmingSelect" maxOccurs="2"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTrimmingSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Trim2">
<xs:complexType>
<xs:group ref="ifc:IfcTrimmingSelect" maxOccurs="2"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTrimmingSelect"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="SenseAgreement" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="MasterRepresentation" type="ifc:IfcTrimmingPreference" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTubeBundle" type="ifc:IfcTubeBundle" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcTubeBundle">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcTubeBundleTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTubeBundleType" type="ifc:IfcTubeBundleType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcTubeBundleType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcTubeBundleTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTypeObject" type="ifc:IfcTypeObject" substitutionGroup="ifc:IfcObjectDefinition" nillable="true"/>
<xs:complexType name="IfcTypeObject">
<xs:complexContent>
<xs:extension base="ifc:IfcObjectDefinition">
<xs:sequence>
<xs:element name="HasPropertySets" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPropertySetDefinition" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPropertySetDefinition"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ApplicableOccurrence" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTypeProcess" type="ifc:IfcTypeProcess" abstract="true" substitutionGroup="ifc:IfcTypeObject" nillable="true"/>
<xs:complexType name="IfcTypeProcess" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeObject">
<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
<xs:attribute name="ProcessType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTypeProduct" type="ifc:IfcTypeProduct" substitutionGroup="ifc:IfcTypeObject" nillable="true"/>
<xs:complexType name="IfcTypeProduct">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeObject">
<xs:sequence>
<xs:element name="RepresentationMaps" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcRepresentationMap" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRepresentationMap"/>
<xs:attribute ref="ifc:cType" fixed="list-unique"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Tag" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcTypeResource" type="ifc:IfcTypeResource" abstract="true" substitutionGroup="ifc:IfcTypeObject" nillable="true"/>
<xs:complexType name="IfcTypeResource" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeObject">
<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
<xs:attribute name="ResourceType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcUShapeProfileDef" type="ifc:IfcUShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcUShapeProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FlangeWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="WebThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="EdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="FlangeSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcUnitAssignment" type="ifc:IfcUnitAssignment" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcUnitAssignment">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="Units">
<xs:complexType>
<xs:group ref="ifc:IfcUnit" maxOccurs="unbounded"/>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcUnit"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcUnitaryControlElement" type="ifc:IfcUnitaryControlElement" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
<xs:complexType name="IfcUnitaryControlElement">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElement">
<xs:attribute name="PredefinedType" type="ifc:IfcUnitaryControlElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcUnitaryControlElementType" type="ifc:IfcUnitaryControlElementType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
<xs:complexType name="IfcUnitaryControlElementType">
<xs:complexContent>
<xs:extension base="ifc:IfcDistributionControlElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcUnitaryControlElementTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcUnitaryEquipment" type="ifc:IfcUnitaryEquipment" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcUnitaryEquipment">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice">
<xs:attribute name="PredefinedType" type="ifc:IfcUnitaryEquipmentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcUnitaryEquipmentType" type="ifc:IfcUnitaryEquipmentType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
<xs:complexType name="IfcUnitaryEquipmentType">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDeviceType">
<xs:attribute name="PredefinedType" type="ifc:IfcUnitaryEquipmentTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcValve" type="ifc:IfcValve" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
<xs:complexType name="IfcValve">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowController">
<xs:attribute name="PredefinedType" type="ifc:IfcValveTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcValveType" type="ifc:IfcValveType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
<xs:complexType name="IfcValveType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowControllerType">
<xs:attribute name="PredefinedType" type="ifc:IfcValveTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcVector" type="ifc:IfcVector" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
<xs:complexType name="IfcVector">
<xs:complexContent>
<xs:extension base="ifc:IfcGeometricRepresentationItem">
<xs:sequence>
<xs:element name="Orientation" type="ifc:IfcDirection" nillable="true"/>
</xs:sequence>
<xs:attribute name="Magnitude" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcVertex" type="ifc:IfcVertex" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
<xs:complexType name="IfcVertex">
<xs:complexContent>
<xs:extension base="ifc:IfcTopologicalRepresentationItem"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcVertexLoop" type="ifc:IfcVertexLoop" substitutionGroup="ifc:IfcLoop" nillable="true"/>
<xs:complexType name="IfcVertexLoop">
<xs:complexContent>
<xs:extension base="ifc:IfcLoop">
<xs:sequence>
<xs:element name="LoopVertex" type="ifc:IfcVertex" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcVertexPoint" type="ifc:IfcVertexPoint" substitutionGroup="ifc:IfcVertex" nillable="true"/>
<xs:complexType name="IfcVertexPoint">
<xs:complexContent>
<xs:extension base="ifc:IfcVertex">
<xs:sequence>
<xs:element name="VertexGeometry" type="ifc:IfcPoint" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcVibrationIsolator" type="ifc:IfcVibrationIsolator" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
<xs:complexType name="IfcVibrationIsolator">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponent">
<xs:attribute name="PredefinedType" type="ifc:IfcVibrationIsolatorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcVibrationIsolatorType" type="ifc:IfcVibrationIsolatorType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
<xs:complexType name="IfcVibrationIsolatorType">
<xs:complexContent>
<xs:extension base="ifc:IfcElementComponentType">
<xs:attribute name="PredefinedType" type="ifc:IfcVibrationIsolatorTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcVirtualElement" type="ifc:IfcVirtualElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
<xs:complexType name="IfcVirtualElement">
<xs:complexContent>
<xs:extension base="ifc:IfcElement"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcVirtualGridIntersection" type="ifc:IfcVirtualGridIntersection" substitutionGroup="ifc:Entity" nillable="true"/>
<xs:complexType name="IfcVirtualGridIntersection">
<xs:complexContent>
<xs:extension base="ifc:Entity">
<xs:sequence>
<xs:element name="IntersectingAxes">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcGridAxis" minOccurs="2" maxOccurs="2"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGridAxis"/>
<xs:attribute ref="ifc:cType" fixed="list-unique"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="OffsetDistances" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:minLength value="2"/>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcVoidingFeature" type="ifc:IfcVoidingFeature" substitutionGroup="ifc:IfcFeatureElementSubtraction" nillable="true"/>
<xs:complexType name="IfcVoidingFeature">
<xs:complexContent>
<xs:extension base="ifc:IfcFeatureElementSubtraction">
<xs:attribute name="PredefinedType" type="ifc:IfcVoidingFeatureTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWall" type="ifc:IfcWall" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcWall">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="PredefinedType" type="ifc:IfcWallTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWallElementedCase" type="ifc:IfcWallElementedCase" substitutionGroup="ifc:IfcWall" nillable="true"/>
<xs:complexType name="IfcWallElementedCase">
<xs:complexContent>
<xs:extension base="ifc:IfcWall"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWallStandardCase" type="ifc:IfcWallStandardCase" substitutionGroup="ifc:IfcWall" nillable="true"/>
<xs:complexType name="IfcWallStandardCase">
<xs:complexContent>
<xs:extension base="ifc:IfcWall"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWallType" type="ifc:IfcWallType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcWallType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcWallTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWasteTerminal" type="ifc:IfcWasteTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcWasteTerminal">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal">
<xs:attribute name="PredefinedType" type="ifc:IfcWasteTerminalTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWasteTerminalType" type="ifc:IfcWasteTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
<xs:complexType name="IfcWasteTerminalType">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminalType">
<xs:attribute name="PredefinedType" type="ifc:IfcWasteTerminalTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWindow" type="ifc:IfcWindow" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcWindow">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement">
<xs:attribute name="OverallHeight" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="OverallWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="PredefinedType" type="ifc:IfcWindowTypeEnum" use="optional"/>
<xs:attribute name="PartitioningType" type="ifc:IfcWindowTypePartitioningEnum" use="optional"/>
<xs:attribute name="UserDefinedPartitioningType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWindowLiningProperties" type="ifc:IfcWindowLiningProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
<xs:complexType name="IfcWindowLiningProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedPropertySet">
<xs:sequence>
<xs:element name="ShapeAspectStyle" type="ifc:IfcShapeAspect" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="LiningDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="LiningThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="TransomThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="MullionThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="FirstTransomOffset" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="SecondTransomOffset" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="FirstMullionOffset" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="SecondMullionOffset" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
<xs:attribute name="LiningOffset" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="LiningToPanelOffsetX" type="ifc:IfcLengthMeasure" use="optional"/>
<xs:attribute name="LiningToPanelOffsetY" type="ifc:IfcLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWindowPanelProperties" type="ifc:IfcWindowPanelProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
<xs:complexType name="IfcWindowPanelProperties">
<xs:complexContent>
<xs:extension base="ifc:IfcPreDefinedPropertySet">
<xs:sequence>
<xs:element name="ShapeAspectStyle" type="ifc:IfcShapeAspect" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="OperationType" type="ifc:IfcWindowPanelOperationEnum" use="optional"/>
<xs:attribute name="PanelPosition" type="ifc:IfcWindowPanelPositionEnum" use="optional"/>
<xs:attribute name="FrameDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FrameThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWindowStandardCase" type="ifc:IfcWindowStandardCase" substitutionGroup="ifc:IfcWindow" nillable="true"/>
<xs:complexType name="IfcWindowStandardCase">
<xs:complexContent>
<xs:extension base="ifc:IfcWindow"/>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWindowStyle" type="ifc:IfcWindowStyle" substitutionGroup="ifc:IfcTypeProduct" nillable="true"/>
<xs:complexType name="IfcWindowStyle">
<xs:complexContent>
<xs:extension base="ifc:IfcTypeProduct">
<xs:attribute name="ConstructionType" type="ifc:IfcWindowStyleConstructionEnum" use="optional"/>
<xs:attribute name="OperationType" type="ifc:IfcWindowStyleOperationEnum" use="optional"/>
<xs:attribute name="ParameterTakesPrecedence" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="Sizeable" type="ifc:IfcBoolean" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWindowType" type="ifc:IfcWindowType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
<xs:complexType name="IfcWindowType">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElementType">
<xs:attribute name="PredefinedType" type="ifc:IfcWindowTypeEnum" use="optional"/>
<xs:attribute name="PartitioningType" type="ifc:IfcWindowTypePartitioningEnum" use="optional"/>
<xs:attribute name="ParameterTakesPrecedence" type="ifc:IfcBoolean" use="optional"/>
<xs:attribute name="UserDefinedPartitioningType" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWorkCalendar" type="ifc:IfcWorkCalendar" substitutionGroup="ifc:IfcControl" nillable="true"/>
<xs:complexType name="IfcWorkCalendar">
<xs:complexContent>
<xs:extension base="ifc:IfcControl">
<xs:sequence>
<xs:element name="WorkingTimes" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcWorkTime" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcWorkTime"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="ExceptionTimes" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcWorkTime" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcWorkTime"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="PredefinedType" type="ifc:IfcWorkCalendarTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWorkControl" type="ifc:IfcWorkControl" abstract="true" substitutionGroup="ifc:IfcControl" nillable="true"/>
<xs:complexType name="IfcWorkControl" abstract="true">
<xs:complexContent>
<xs:extension base="ifc:IfcControl">
<xs:sequence>
<xs:element name="Creators" nillable="true" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="ifc:IfcPerson" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPerson"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="CreationDate" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="Purpose" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Duration" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="TotalFloat" type="ifc:IfcDuration" use="optional"/>
<xs:attribute name="StartTime" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="FinishTime" type="ifc:IfcDateTime" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWorkPlan" type="ifc:IfcWorkPlan" substitutionGroup="ifc:IfcWorkControl" nillable="true"/>
<xs:complexType name="IfcWorkPlan">
<xs:complexContent>
<xs:extension base="ifc:IfcWorkControl">
<xs:attribute name="PredefinedType" type="ifc:IfcWorkPlanTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWorkSchedule" type="ifc:IfcWorkSchedule" substitutionGroup="ifc:IfcWorkControl" nillable="true"/>
<xs:complexType name="IfcWorkSchedule">
<xs:complexContent>
<xs:extension base="ifc:IfcWorkControl">
<xs:attribute name="PredefinedType" type="ifc:IfcWorkScheduleTypeEnum" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcWorkTime" type="ifc:IfcWorkTime" substitutionGroup="ifc:IfcSchedulingTime" nillable="true"/>
<xs:complexType name="IfcWorkTime">
<xs:complexContent>
<xs:extension base="ifc:IfcSchedulingTime">
<xs:sequence>
<xs:element name="RecurrencePattern" type="ifc:IfcRecurrencePattern" nillable="true" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="Start" type="ifc:IfcDate" use="optional"/>
<xs:attribute name="Finish" type="ifc:IfcDate" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcZShapeProfileDef" type="ifc:IfcZShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
<xs:complexType name="IfcZShapeProfileDef">
<xs:complexContent>
<xs:extension base="ifc:IfcParameterizedProfileDef">
<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FlangeWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="WebThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
<xs:attribute name="EdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:element name="IfcZone" type="ifc:IfcZone" substitutionGroup="ifc:IfcSystem" nillable="true"/>
<xs:complexType name="IfcZone">
<xs:complexContent>
<xs:extension base="ifc:IfcSystem">
<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- group declarations (for SELECT data type definitions) -->
<xs:group name="IfcActorSelect">
<xs:choice>
<xs:element ref="ifc:IfcOrganization"/>
<xs:element ref="ifc:IfcPerson"/>
<xs:element ref="ifc:IfcPersonAndOrganization"/>
</xs:choice>
</xs:group>
<xs:group name="IfcAppliedValueSelect">
<xs:choice>
<xs:element ref="ifc:IfcAbsorbedDoseMeasure-wrapper"/>
<xs:element ref="ifc:IfcAccelerationMeasure-wrapper"/>
<xs:element ref="ifc:IfcAmountOfSubstanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcAngularVelocityMeasure-wrapper"/>
<xs:element ref="ifc:IfcAreaDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcAreaMeasure-wrapper"/>
<xs:element ref="ifc:IfcBinary-wrapper"/>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcComplexNumber-wrapper"/>
<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcContextDependentMeasure-wrapper"/>
<xs:element ref="ifc:IfcCountMeasure-wrapper"/>
<xs:element ref="ifc:IfcCurvatureMeasure-wrapper"/>
<xs:element ref="ifc:IfcDate-wrapper"/>
<xs:element ref="ifc:IfcDateTime-wrapper"/>
<xs:element ref="ifc:IfcDescriptiveMeasure-wrapper"/>
<xs:element ref="ifc:IfcDoseEquivalentMeasure-wrapper"/>
<xs:element ref="ifc:IfcDuration-wrapper"/>
<xs:element ref="ifc:IfcDynamicViscosityMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricCapacitanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricChargeMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricConductanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricCurrentMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricResistanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricVoltageMeasure-wrapper"/>
<xs:element ref="ifc:IfcEnergyMeasure-wrapper"/>
<xs:element ref="ifc:IfcForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcFrequencyMeasure-wrapper"/>
<xs:element ref="ifc:IfcHeatFluxDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcHeatingValueMeasure-wrapper"/>
<xs:element ref="ifc:IfcIdentifier-wrapper"/>
<xs:element ref="ifc:IfcIlluminanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcInductanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcInteger-wrapper"/>
<xs:element ref="ifc:IfcIntegerCountRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcIonConcentrationMeasure-wrapper"/>
<xs:element ref="ifc:IfcIsothermalMoistureCapacityMeasure-wrapper"/>
<xs:element ref="ifc:IfcKinematicViscosityMeasure-wrapper"/>
<xs:element ref="ifc:IfcLabel-wrapper"/>
<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearMomentMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearStiffnessMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearVelocityMeasure-wrapper"/>
<xs:element ref="ifc:IfcLogical-wrapper"/>
<xs:element ref="ifc:IfcLuminousFluxMeasure-wrapper"/>
<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure-wrapper"/>
<xs:element ref="ifc:IfcLuminousIntensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMagneticFluxDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMagneticFluxMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassFlowRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassPerLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcMeasureWithUnit"/>
<xs:element ref="ifc:IfcModulusOfElasticityMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcMoistureDiffusivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMolecularWeightMeasure-wrapper"/>
<xs:element ref="ifc:IfcMomentOfInertiaMeasure-wrapper"/>
<xs:element ref="ifc:IfcMonetaryMeasure-wrapper"/>
<xs:element ref="ifc:IfcNonNegativeLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcNumericMeasure-wrapper"/>
<xs:element ref="ifc:IfcPHMeasure-wrapper"/>
<xs:element ref="ifc:IfcParameterValue-wrapper"/>
<xs:element ref="ifc:IfcPlanarForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveInteger-wrapper"/>
<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositivePlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcPowerMeasure-wrapper"/>
<xs:element ref="ifc:IfcPressureMeasure-wrapper"/>
<xs:element ref="ifc:IfcRadioActivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcReal-wrapper"/>
<xs:element ref="ifc:IfcReference"/>
<xs:element ref="ifc:IfcRotationalFrequencyMeasure-wrapper"/>
<xs:element ref="ifc:IfcRotationalMassMeasure-wrapper"/>
<xs:element ref="ifc:IfcRotationalStiffnessMeasure-wrapper"/>
<xs:element ref="ifc:IfcSectionModulusMeasure-wrapper"/>
<xs:element ref="ifc:IfcSectionalAreaIntegralMeasure-wrapper"/>
<xs:element ref="ifc:IfcShearModulusMeasure-wrapper"/>
<xs:element ref="ifc:IfcSolidAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPowerLevelMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPowerMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPressureLevelMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPressureMeasure-wrapper"/>
<xs:element ref="ifc:IfcSpecificHeatCapacityMeasure-wrapper"/>
<xs:element ref="ifc:IfcTemperatureGradientMeasure-wrapper"/>
<xs:element ref="ifc:IfcTemperatureRateOfChangeMeasure-wrapper"/>
<xs:element ref="ifc:IfcText-wrapper"/>
<xs:element ref="ifc:IfcThermalAdmittanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalConductivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalExpansionCoefficientMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalResistanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalTransmittanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermodynamicTemperatureMeasure-wrapper"/>
<xs:element ref="ifc:IfcTime-wrapper"/>
<xs:element ref="ifc:IfcTimeMeasure-wrapper"/>
<xs:element ref="ifc:IfcTimeStamp-wrapper"/>
<xs:element ref="ifc:IfcTorqueMeasure-wrapper"/>
<xs:element ref="ifc:IfcVaporPermeabilityMeasure-wrapper"/>
<xs:element ref="ifc:IfcVolumeMeasure-wrapper"/>
<xs:element ref="ifc:IfcVolumetricFlowRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcWarpingConstantMeasure-wrapper"/>
<xs:element ref="ifc:IfcWarpingMomentMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcAxis2Placement">
<xs:choice>
<xs:element ref="ifc:IfcAxis2Placement2D"/>
<xs:element ref="ifc:IfcAxis2Placement3D"/>
</xs:choice>
</xs:group>
<xs:group name="IfcBendingParameterSelect">
<xs:choice>
<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcBooleanOperand">
<xs:choice>
<xs:element ref="ifc:IfcBooleanResult"/>
<xs:element ref="ifc:IfcCsgPrimitive3D"/>
<xs:element ref="ifc:IfcHalfSpaceSolid"/>
<xs:element ref="ifc:IfcSolidModel"/>
<xs:element ref="ifc:IfcTessellatedFaceSet"/>
</xs:choice>
</xs:group>
<xs:group name="IfcClassificationReferenceSelect">
<xs:choice>
<xs:element ref="ifc:IfcClassification"/>
<xs:element ref="ifc:IfcClassificationReference"/>
</xs:choice>
</xs:group>
<xs:group name="IfcClassificationSelect">
<xs:choice>
<xs:element ref="ifc:IfcClassification"/>
<xs:element ref="ifc:IfcClassificationReference"/>
</xs:choice>
</xs:group>
<xs:group name="IfcColour">
<xs:choice>
<xs:element ref="ifc:IfcColourSpecification"/>
<xs:element ref="ifc:IfcPreDefinedColour"/>
</xs:choice>
</xs:group>
<xs:group name="IfcColourOrFactor">
<xs:choice>
<xs:element ref="ifc:IfcColourRgb"/>
<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcCoordinateReferenceSystemSelect">
<xs:choice>
<xs:element ref="ifc:IfcCoordinateReferenceSystem"/>
<xs:element ref="ifc:IfcGeometricRepresentationContext"/>
</xs:choice>
</xs:group>
<xs:group name="IfcCsgSelect">
<xs:choice>
<xs:element ref="ifc:IfcBooleanResult"/>
<xs:element ref="ifc:IfcCsgPrimitive3D"/>
</xs:choice>
</xs:group>
<xs:group name="IfcCurveFontOrScaledCurveFontSelect">
<xs:choice>
<xs:element ref="ifc:IfcCurveStyleFont"/>
<xs:element ref="ifc:IfcCurveStyleFontAndScaling"/>
<xs:element ref="ifc:IfcPreDefinedCurveFont"/>
</xs:choice>
</xs:group>
<xs:group name="IfcCurveOnSurface">
<xs:choice>
<xs:element ref="ifc:IfcCompositeCurveOnSurface"/>
<xs:element ref="ifc:IfcPcurve"/>
<xs:element ref="ifc:IfcSurfaceCurve"/>
</xs:choice>
</xs:group>
<xs:group name="IfcCurveOrEdgeCurve">
<xs:choice>
<xs:element ref="ifc:IfcBoundedCurve"/>
<xs:element ref="ifc:IfcEdgeCurve"/>
</xs:choice>
</xs:group>
<xs:group name="IfcCurveStyleFontSelect">
<xs:choice>
<xs:element ref="ifc:IfcCurveStyleFont"/>
<xs:element ref="ifc:IfcPreDefinedCurveFont"/>
</xs:choice>
</xs:group>
<xs:group name="IfcDefinitionSelect">
<xs:choice>
<xs:element ref="ifc:IfcObjectDefinition"/>
<xs:element ref="ifc:IfcPropertyDefinition"/>
</xs:choice>
</xs:group>
<xs:group name="IfcDerivedMeasureValue">
<xs:choice>
<xs:element ref="ifc:IfcAbsorbedDoseMeasure-wrapper"/>
<xs:element ref="ifc:IfcAccelerationMeasure-wrapper"/>
<xs:element ref="ifc:IfcAngularVelocityMeasure-wrapper"/>
<xs:element ref="ifc:IfcAreaDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcCurvatureMeasure-wrapper"/>
<xs:element ref="ifc:IfcDoseEquivalentMeasure-wrapper"/>
<xs:element ref="ifc:IfcDynamicViscosityMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricCapacitanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricChargeMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricConductanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricResistanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricVoltageMeasure-wrapper"/>
<xs:element ref="ifc:IfcEnergyMeasure-wrapper"/>
<xs:element ref="ifc:IfcForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcFrequencyMeasure-wrapper"/>
<xs:element ref="ifc:IfcHeatFluxDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcHeatingValueMeasure-wrapper"/>
<xs:element ref="ifc:IfcIlluminanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcInductanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcIntegerCountRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcIonConcentrationMeasure-wrapper"/>
<xs:element ref="ifc:IfcIsothermalMoistureCapacityMeasure-wrapper"/>
<xs:element ref="ifc:IfcKinematicViscosityMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearMomentMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearStiffnessMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearVelocityMeasure-wrapper"/>
<xs:element ref="ifc:IfcLuminousFluxMeasure-wrapper"/>
<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure-wrapper"/>
<xs:element ref="ifc:IfcMagneticFluxDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMagneticFluxMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassFlowRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassPerLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfElasticityMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcMoistureDiffusivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMolecularWeightMeasure-wrapper"/>
<xs:element ref="ifc:IfcMomentOfInertiaMeasure-wrapper"/>
<xs:element ref="ifc:IfcMonetaryMeasure-wrapper"/>
<xs:element ref="ifc:IfcPHMeasure-wrapper"/>
<xs:element ref="ifc:IfcPlanarForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcPowerMeasure-wrapper"/>
<xs:element ref="ifc:IfcPressureMeasure-wrapper"/>
<xs:element ref="ifc:IfcRadioActivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcRotationalFrequencyMeasure-wrapper"/>
<xs:element ref="ifc:IfcRotationalMassMeasure-wrapper"/>
<xs:element ref="ifc:IfcRotationalStiffnessMeasure-wrapper"/>
<xs:element ref="ifc:IfcSectionModulusMeasure-wrapper"/>
<xs:element ref="ifc:IfcSectionalAreaIntegralMeasure-wrapper"/>
<xs:element ref="ifc:IfcShearModulusMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPowerLevelMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPowerMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPressureLevelMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPressureMeasure-wrapper"/>
<xs:element ref="ifc:IfcSpecificHeatCapacityMeasure-wrapper"/>
<xs:element ref="ifc:IfcTemperatureGradientMeasure-wrapper"/>
<xs:element ref="ifc:IfcTemperatureRateOfChangeMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalAdmittanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalConductivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalExpansionCoefficientMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalResistanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalTransmittanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcTorqueMeasure-wrapper"/>
<xs:element ref="ifc:IfcVaporPermeabilityMeasure-wrapper"/>
<xs:element ref="ifc:IfcVolumetricFlowRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcWarpingConstantMeasure-wrapper"/>
<xs:element ref="ifc:IfcWarpingMomentMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcDocumentSelect">
<xs:choice>
<xs:element ref="ifc:IfcDocumentInformation"/>
<xs:element ref="ifc:IfcDocumentReference"/>
</xs:choice>
</xs:group>
<xs:group name="IfcFillStyleSelect">
<xs:choice>
<xs:element ref="ifc:IfcColourSpecification"/>
<xs:element ref="ifc:IfcExternallyDefinedHatchStyle"/>
<xs:element ref="ifc:IfcFillAreaStyleHatching"/>
<xs:element ref="ifc:IfcFillAreaStyleTiles"/>
<xs:element ref="ifc:IfcPreDefinedColour"/>
</xs:choice>
</xs:group>
<xs:group name="IfcGeometricSetSelect">
<xs:choice>
<xs:element ref="ifc:IfcCurve"/>
<xs:element ref="ifc:IfcPoint"/>
<xs:element ref="ifc:IfcSurface"/>
</xs:choice>
</xs:group>
<xs:group name="IfcGridPlacementDirectionSelect">
<xs:choice>
<xs:element ref="ifc:IfcDirection"/>
<xs:element ref="ifc:IfcVirtualGridIntersection"/>
</xs:choice>
</xs:group>
<xs:group name="IfcHatchLineDistanceSelect">
<xs:choice>
<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcVector"/>
</xs:choice>
</xs:group>
<xs:group name="IfcLayeredItem">
<xs:choice>
<xs:element ref="ifc:IfcRepresentation"/>
<xs:element ref="ifc:IfcRepresentationItem"/>
</xs:choice>
</xs:group>
<xs:group name="IfcLibrarySelect">
<xs:choice>
<xs:element ref="ifc:IfcLibraryInformation"/>
<xs:element ref="ifc:IfcLibraryReference"/>
</xs:choice>
</xs:group>
<xs:group name="IfcLightDistributionDataSourceSelect">
<xs:choice>
<xs:element ref="ifc:IfcExternalReference"/>
<xs:element ref="ifc:IfcLightIntensityDistribution"/>
</xs:choice>
</xs:group>
<xs:group name="IfcMaterialSelect">
<xs:choice>
<xs:element ref="ifc:IfcMaterialDefinition"/>
<xs:element ref="ifc:IfcMaterialList"/>
<xs:element ref="ifc:IfcMaterialUsageDefinition"/>
</xs:choice>
</xs:group>
<xs:group name="IfcMeasureValue">
<xs:choice>
<xs:element ref="ifc:IfcAmountOfSubstanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcAreaMeasure-wrapper"/>
<xs:element ref="ifc:IfcComplexNumber-wrapper"/>
<xs:element ref="ifc:IfcContextDependentMeasure-wrapper"/>
<xs:element ref="ifc:IfcCountMeasure-wrapper"/>
<xs:element ref="ifc:IfcDescriptiveMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricCurrentMeasure-wrapper"/>
<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcLuminousIntensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassMeasure-wrapper"/>
<xs:element ref="ifc:IfcNonNegativeLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcNumericMeasure-wrapper"/>
<xs:element ref="ifc:IfcParameterValue-wrapper"/>
<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositivePlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcSolidAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermodynamicTemperatureMeasure-wrapper"/>
<xs:element ref="ifc:IfcTimeMeasure-wrapper"/>
<xs:element ref="ifc:IfcVolumeMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcMetricValueSelect">
<xs:choice>
<xs:element ref="ifc:IfcAbsorbedDoseMeasure-wrapper"/>
<xs:element ref="ifc:IfcAccelerationMeasure-wrapper"/>
<xs:element ref="ifc:IfcAmountOfSubstanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcAngularVelocityMeasure-wrapper"/>
<xs:element ref="ifc:IfcAppliedValue"/>
<xs:element ref="ifc:IfcAreaDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcAreaMeasure-wrapper"/>
<xs:element ref="ifc:IfcBinary-wrapper"/>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcComplexNumber-wrapper"/>
<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcContextDependentMeasure-wrapper"/>
<xs:element ref="ifc:IfcCountMeasure-wrapper"/>
<xs:element ref="ifc:IfcCurvatureMeasure-wrapper"/>
<xs:element ref="ifc:IfcDate-wrapper"/>
<xs:element ref="ifc:IfcDateTime-wrapper"/>
<xs:element ref="ifc:IfcDescriptiveMeasure-wrapper"/>
<xs:element ref="ifc:IfcDoseEquivalentMeasure-wrapper"/>
<xs:element ref="ifc:IfcDuration-wrapper"/>
<xs:element ref="ifc:IfcDynamicViscosityMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricCapacitanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricChargeMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricConductanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricCurrentMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricResistanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricVoltageMeasure-wrapper"/>
<xs:element ref="ifc:IfcEnergyMeasure-wrapper"/>
<xs:element ref="ifc:IfcForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcFrequencyMeasure-wrapper"/>
<xs:element ref="ifc:IfcHeatFluxDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcHeatingValueMeasure-wrapper"/>
<xs:element ref="ifc:IfcIdentifier-wrapper"/>
<xs:element ref="ifc:IfcIlluminanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcInductanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcInteger-wrapper"/>
<xs:element ref="ifc:IfcIntegerCountRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcIonConcentrationMeasure-wrapper"/>
<xs:element ref="ifc:IfcIsothermalMoistureCapacityMeasure-wrapper"/>
<xs:element ref="ifc:IfcKinematicViscosityMeasure-wrapper"/>
<xs:element ref="ifc:IfcLabel-wrapper"/>
<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearMomentMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearStiffnessMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearVelocityMeasure-wrapper"/>
<xs:element ref="ifc:IfcLogical-wrapper"/>
<xs:element ref="ifc:IfcLuminousFluxMeasure-wrapper"/>
<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure-wrapper"/>
<xs:element ref="ifc:IfcLuminousIntensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMagneticFluxDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMagneticFluxMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassFlowRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassPerLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcMeasureWithUnit"/>
<xs:element ref="ifc:IfcModulusOfElasticityMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcMoistureDiffusivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMolecularWeightMeasure-wrapper"/>
<xs:element ref="ifc:IfcMomentOfInertiaMeasure-wrapper"/>
<xs:element ref="ifc:IfcMonetaryMeasure-wrapper"/>
<xs:element ref="ifc:IfcNonNegativeLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcNumericMeasure-wrapper"/>
<xs:element ref="ifc:IfcPHMeasure-wrapper"/>
<xs:element ref="ifc:IfcParameterValue-wrapper"/>
<xs:element ref="ifc:IfcPlanarForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveInteger-wrapper"/>
<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositivePlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcPowerMeasure-wrapper"/>
<xs:element ref="ifc:IfcPressureMeasure-wrapper"/>
<xs:element ref="ifc:IfcRadioActivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcReal-wrapper"/>
<xs:element ref="ifc:IfcReference"/>
<xs:element ref="ifc:IfcRotationalFrequencyMeasure-wrapper"/>
<xs:element ref="ifc:IfcRotationalMassMeasure-wrapper"/>
<xs:element ref="ifc:IfcRotationalStiffnessMeasure-wrapper"/>
<xs:element ref="ifc:IfcSectionModulusMeasure-wrapper"/>
<xs:element ref="ifc:IfcSectionalAreaIntegralMeasure-wrapper"/>
<xs:element ref="ifc:IfcShearModulusMeasure-wrapper"/>
<xs:element ref="ifc:IfcSolidAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPowerLevelMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPowerMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPressureLevelMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPressureMeasure-wrapper"/>
<xs:element ref="ifc:IfcSpecificHeatCapacityMeasure-wrapper"/>
<xs:element ref="ifc:IfcTable"/>
<xs:element ref="ifc:IfcTemperatureGradientMeasure-wrapper"/>
<xs:element ref="ifc:IfcTemperatureRateOfChangeMeasure-wrapper"/>
<xs:element ref="ifc:IfcText-wrapper"/>
<xs:element ref="ifc:IfcThermalAdmittanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalConductivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalExpansionCoefficientMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalResistanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalTransmittanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermodynamicTemperatureMeasure-wrapper"/>
<xs:element ref="ifc:IfcTime-wrapper"/>
<xs:element ref="ifc:IfcTimeMeasure-wrapper"/>
<xs:element ref="ifc:IfcTimeSeries"/>
<xs:element ref="ifc:IfcTimeStamp-wrapper"/>
<xs:element ref="ifc:IfcTorqueMeasure-wrapper"/>
<xs:element ref="ifc:IfcVaporPermeabilityMeasure-wrapper"/>
<xs:element ref="ifc:IfcVolumeMeasure-wrapper"/>
<xs:element ref="ifc:IfcVolumetricFlowRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcWarpingConstantMeasure-wrapper"/>
<xs:element ref="ifc:IfcWarpingMomentMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcModulusOfRotationalSubgradeReactionSelect">
<xs:choice>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcModulusOfSubgradeReactionSelect">
<xs:choice>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcModulusOfTranslationalSubgradeReactionSelect">
<xs:choice>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcObjectReferenceSelect">
<xs:choice>
<xs:element ref="ifc:IfcAddress"/>
<xs:element ref="ifc:IfcAppliedValue"/>
<xs:element ref="ifc:IfcExternalReference"/>
<xs:element ref="ifc:IfcMaterialDefinition"/>
<xs:element ref="ifc:IfcOrganization"/>
<xs:element ref="ifc:IfcPerson"/>
<xs:element ref="ifc:IfcPersonAndOrganization"/>
<xs:element ref="ifc:IfcTable"/>
<xs:element ref="ifc:IfcTimeSeries"/>
</xs:choice>
</xs:group>
<xs:group name="IfcPointOrVertexPoint">
<xs:choice>
<xs:element ref="ifc:IfcPoint"/>
<xs:element ref="ifc:IfcVertexPoint"/>
</xs:choice>
</xs:group>
<xs:group name="IfcPresentationStyleSelect">
<xs:choice>
<xs:element ref="ifc:IfcCurveStyle"/>
<xs:element ref="ifc:IfcFillAreaStyle"/>
<xs:element ref="ifc:IfcNullStyle-wrapper"/>
<xs:element ref="ifc:IfcSurfaceStyle"/>
<xs:element ref="ifc:IfcTextStyle"/>
</xs:choice>
</xs:group>
<xs:group name="IfcProcessSelect">
<xs:choice>
<xs:element ref="ifc:IfcProcess"/>
<xs:element ref="ifc:IfcTypeProcess"/>
</xs:choice>
</xs:group>
<xs:group name="IfcProductRepresentationSelect">
<xs:choice>
<xs:element ref="ifc:IfcProductDefinitionShape"/>
<xs:element ref="ifc:IfcRepresentationMap"/>
</xs:choice>
</xs:group>
<xs:group name="IfcProductSelect">
<xs:choice>
<xs:element ref="ifc:IfcProduct"/>
<xs:element ref="ifc:IfcTypeProduct"/>
</xs:choice>
</xs:group>
<xs:group name="IfcPropertySetDefinitionSelect">
<xs:choice>
<xs:element ref="ifc:IfcPropertySetDefinition"/>
<xs:element ref="ifc:IfcPropertySetDefinitionSet-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcResourceObjectSelect">
<xs:choice>
<xs:element ref="ifc:IfcActorRole"/>
<xs:element ref="ifc:IfcAppliedValue"/>
<xs:element ref="ifc:IfcApproval"/>
<xs:element ref="ifc:IfcConstraint"/>
<xs:element ref="ifc:IfcContextDependentUnit"/>
<xs:element ref="ifc:IfcConversionBasedUnit"/>
<xs:element ref="ifc:IfcExternalInformation"/>
<xs:element ref="ifc:IfcExternalReference"/>
<xs:element ref="ifc:IfcMaterialDefinition"/>
<xs:element ref="ifc:IfcOrganization"/>
<xs:element ref="ifc:IfcPerson"/>
<xs:element ref="ifc:IfcPersonAndOrganization"/>
<xs:element ref="ifc:IfcPhysicalQuantity"/>
<xs:element ref="ifc:IfcProfileDef"/>
<xs:element ref="ifc:IfcPropertyAbstraction"/>
<xs:element ref="ifc:IfcTimeSeries"/>
</xs:choice>
</xs:group>
<xs:group name="IfcResourceSelect">
<xs:choice>
<xs:element ref="ifc:IfcResource"/>
<xs:element ref="ifc:IfcTypeResource"/>
</xs:choice>
</xs:group>
<xs:group name="IfcRotationalStiffnessSelect">
<xs:choice>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcRotationalStiffnessMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcSegmentIndexSelect">
<xs:choice>
<xs:element ref="ifc:IfcArcIndex-wrapper"/>
<xs:element ref="ifc:IfcLineIndex-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcShell">
<xs:choice>
<xs:element ref="ifc:IfcClosedShell"/>
<xs:element ref="ifc:IfcOpenShell"/>
</xs:choice>
</xs:group>
<xs:group name="IfcSimpleValue">
<xs:choice>
<xs:element ref="ifc:IfcBinary-wrapper"/>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcDate-wrapper"/>
<xs:element ref="ifc:IfcDateTime-wrapper"/>
<xs:element ref="ifc:IfcDuration-wrapper"/>
<xs:element ref="ifc:IfcIdentifier-wrapper"/>
<xs:element ref="ifc:IfcInteger-wrapper"/>
<xs:element ref="ifc:IfcLabel-wrapper"/>
<xs:element ref="ifc:IfcLogical-wrapper"/>
<xs:element ref="ifc:IfcPositiveInteger-wrapper"/>
<xs:element ref="ifc:IfcReal-wrapper"/>
<xs:element ref="ifc:IfcText-wrapper"/>
<xs:element ref="ifc:IfcTime-wrapper"/>
<xs:element ref="ifc:IfcTimeStamp-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcSizeSelect">
<xs:choice>
<xs:element ref="ifc:IfcDescriptiveMeasure-wrapper"/>
<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcSolidOrShell">
<xs:choice>
<xs:element ref="ifc:IfcClosedShell"/>
<xs:element ref="ifc:IfcSolidModel"/>
</xs:choice>
</xs:group>
<xs:group name="IfcSpaceBoundarySelect">
<xs:choice>
<xs:element ref="ifc:IfcExternalSpatialElement"/>
<xs:element ref="ifc:IfcSpace"/>
</xs:choice>
</xs:group>
<xs:group name="IfcSpecularHighlightSelect">
<xs:choice>
<xs:element ref="ifc:IfcSpecularExponent-wrapper"/>
<xs:element ref="ifc:IfcSpecularRoughness-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcStructuralActivityAssignmentSelect">
<xs:choice>
<xs:element ref="ifc:IfcElement"/>
<xs:element ref="ifc:IfcStructuralItem"/>
</xs:choice>
</xs:group>
<xs:group name="IfcStyleAssignmentSelect">
<xs:choice>
<xs:element ref="ifc:IfcPresentationStyle"/>
<xs:element ref="ifc:IfcPresentationStyleAssignment"/>
</xs:choice>
</xs:group>
<xs:group name="IfcSurfaceOrFaceSurface">
<xs:choice>
<xs:element ref="ifc:IfcFaceBasedSurfaceModel"/>
<xs:element ref="ifc:IfcFaceSurface"/>
<xs:element ref="ifc:IfcSurface"/>
</xs:choice>
</xs:group>
<xs:group name="IfcSurfaceStyleElementSelect">
<xs:choice>
<xs:element ref="ifc:IfcExternallyDefinedSurfaceStyle"/>
<xs:element ref="ifc:IfcSurfaceStyleLighting"/>
<xs:element ref="ifc:IfcSurfaceStyleRefraction"/>
<xs:element ref="ifc:IfcSurfaceStyleShading"/>
<xs:element ref="ifc:IfcSurfaceStyleWithTextures"/>
</xs:choice>
</xs:group>
<xs:group name="IfcTextFontSelect">
<xs:choice>
<xs:element ref="ifc:IfcExternallyDefinedTextFont"/>
<xs:element ref="ifc:IfcPreDefinedTextFont"/>
</xs:choice>
</xs:group>
<xs:group name="IfcTimeOrRatioSelect">
<xs:choice>
<xs:element ref="ifc:IfcDuration-wrapper"/>
<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcTranslationalStiffnessSelect">
<xs:choice>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcLinearStiffnessMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcTrimmingSelect">
<xs:choice>
<xs:element ref="ifc:IfcCartesianPoint"/>
<xs:element ref="ifc:IfcParameterValue-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcUnit">
<xs:choice>
<xs:element ref="ifc:IfcDerivedUnit"/>
<xs:element ref="ifc:IfcMonetaryUnit"/>
<xs:element ref="ifc:IfcNamedUnit"/>
</xs:choice>
</xs:group>
<xs:group name="IfcValue">
<xs:choice>
<xs:element ref="ifc:IfcAbsorbedDoseMeasure-wrapper"/>
<xs:element ref="ifc:IfcAccelerationMeasure-wrapper"/>
<xs:element ref="ifc:IfcAmountOfSubstanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcAngularVelocityMeasure-wrapper"/>
<xs:element ref="ifc:IfcAreaDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcAreaMeasure-wrapper"/>
<xs:element ref="ifc:IfcBinary-wrapper"/>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcComplexNumber-wrapper"/>
<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcContextDependentMeasure-wrapper"/>
<xs:element ref="ifc:IfcCountMeasure-wrapper"/>
<xs:element ref="ifc:IfcCurvatureMeasure-wrapper"/>
<xs:element ref="ifc:IfcDate-wrapper"/>
<xs:element ref="ifc:IfcDateTime-wrapper"/>
<xs:element ref="ifc:IfcDescriptiveMeasure-wrapper"/>
<xs:element ref="ifc:IfcDoseEquivalentMeasure-wrapper"/>
<xs:element ref="ifc:IfcDuration-wrapper"/>
<xs:element ref="ifc:IfcDynamicViscosityMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricCapacitanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricChargeMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricConductanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricCurrentMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricResistanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcElectricVoltageMeasure-wrapper"/>
<xs:element ref="ifc:IfcEnergyMeasure-wrapper"/>
<xs:element ref="ifc:IfcForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcFrequencyMeasure-wrapper"/>
<xs:element ref="ifc:IfcHeatFluxDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcHeatingValueMeasure-wrapper"/>
<xs:element ref="ifc:IfcIdentifier-wrapper"/>
<xs:element ref="ifc:IfcIlluminanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcInductanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcInteger-wrapper"/>
<xs:element ref="ifc:IfcIntegerCountRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcIonConcentrationMeasure-wrapper"/>
<xs:element ref="ifc:IfcIsothermalMoistureCapacityMeasure-wrapper"/>
<xs:element ref="ifc:IfcKinematicViscosityMeasure-wrapper"/>
<xs:element ref="ifc:IfcLabel-wrapper"/>
<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearMomentMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearStiffnessMeasure-wrapper"/>
<xs:element ref="ifc:IfcLinearVelocityMeasure-wrapper"/>
<xs:element ref="ifc:IfcLogical-wrapper"/>
<xs:element ref="ifc:IfcLuminousFluxMeasure-wrapper"/>
<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure-wrapper"/>
<xs:element ref="ifc:IfcLuminousIntensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMagneticFluxDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMagneticFluxMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassDensityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassFlowRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassMeasure-wrapper"/>
<xs:element ref="ifc:IfcMassPerLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfElasticityMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure-wrapper"/>
<xs:element ref="ifc:IfcMoistureDiffusivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcMolecularWeightMeasure-wrapper"/>
<xs:element ref="ifc:IfcMomentOfInertiaMeasure-wrapper"/>
<xs:element ref="ifc:IfcMonetaryMeasure-wrapper"/>
<xs:element ref="ifc:IfcNonNegativeLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcNumericMeasure-wrapper"/>
<xs:element ref="ifc:IfcPHMeasure-wrapper"/>
<xs:element ref="ifc:IfcParameterValue-wrapper"/>
<xs:element ref="ifc:IfcPlanarForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveInteger-wrapper"/>
<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositivePlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcPowerMeasure-wrapper"/>
<xs:element ref="ifc:IfcPressureMeasure-wrapper"/>
<xs:element ref="ifc:IfcRadioActivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcReal-wrapper"/>
<xs:element ref="ifc:IfcRotationalFrequencyMeasure-wrapper"/>
<xs:element ref="ifc:IfcRotationalMassMeasure-wrapper"/>
<xs:element ref="ifc:IfcRotationalStiffnessMeasure-wrapper"/>
<xs:element ref="ifc:IfcSectionModulusMeasure-wrapper"/>
<xs:element ref="ifc:IfcSectionalAreaIntegralMeasure-wrapper"/>
<xs:element ref="ifc:IfcShearModulusMeasure-wrapper"/>
<xs:element ref="ifc:IfcSolidAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPowerLevelMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPowerMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPressureLevelMeasure-wrapper"/>
<xs:element ref="ifc:IfcSoundPressureMeasure-wrapper"/>
<xs:element ref="ifc:IfcSpecificHeatCapacityMeasure-wrapper"/>
<xs:element ref="ifc:IfcTemperatureGradientMeasure-wrapper"/>
<xs:element ref="ifc:IfcTemperatureRateOfChangeMeasure-wrapper"/>
<xs:element ref="ifc:IfcText-wrapper"/>
<xs:element ref="ifc:IfcThermalAdmittanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalConductivityMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalExpansionCoefficientMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalResistanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermalTransmittanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcThermodynamicTemperatureMeasure-wrapper"/>
<xs:element ref="ifc:IfcTime-wrapper"/>
<xs:element ref="ifc:IfcTimeMeasure-wrapper"/>
<xs:element ref="ifc:IfcTimeStamp-wrapper"/>
<xs:element ref="ifc:IfcTorqueMeasure-wrapper"/>
<xs:element ref="ifc:IfcVaporPermeabilityMeasure-wrapper"/>
<xs:element ref="ifc:IfcVolumeMeasure-wrapper"/>
<xs:element ref="ifc:IfcVolumetricFlowRateMeasure-wrapper"/>
<xs:element ref="ifc:IfcWarpingConstantMeasure-wrapper"/>
<xs:element ref="ifc:IfcWarpingMomentMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcVectorOrDirection">
<xs:choice>
<xs:element ref="ifc:IfcDirection"/>
<xs:element ref="ifc:IfcVector"/>
</xs:choice>
</xs:group>
<xs:group name="IfcWarpingStiffnessSelect">
<xs:choice>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcWarpingMomentMeasure-wrapper"/>
</xs:choice>
</xs:group>
<!-- enumeration type declarations (for ENUMERATION data type definitions) -->
<xs:simpleType name="IfcActionRequestTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="email"/>
<xs:enumeration value="fax"/>
<xs:enumeration value="phone"/>
<xs:enumeration value="post"/>
<xs:enumeration value="verbal"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcActionSourceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="dead_load_g"/>
<xs:enumeration value="completion_g1"/>
<xs:enumeration value="live_load_q"/>
<xs:enumeration value="snow_s"/>
<xs:enumeration value="wind_w"/>
<xs:enumeration value="prestressing_p"/>
<xs:enumeration value="settlement_u"/>
<xs:enumeration value="temperature_t"/>
<xs:enumeration value="earthquake_e"/>
<xs:enumeration value="fire"/>
<xs:enumeration value="impulse"/>
<xs:enumeration value="impact"/>
<xs:enumeration value="transport"/>
<xs:enumeration value="erection"/>
<xs:enumeration value="propping"/>
<xs:enumeration value="system_imperfection"/>
<xs:enumeration value="shrinkage"/>
<xs:enumeration value="creep"/>
<xs:enumeration value="lack_of_fit"/>
<xs:enumeration value="buoyancy"/>
<xs:enumeration value="ice"/>
<xs:enumeration value="current"/>
<xs:enumeration value="wave"/>
<xs:enumeration value="rain"/>
<xs:enumeration value="brakes"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcActionTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="permanent_g"/>
<xs:enumeration value="variable_q"/>
<xs:enumeration value="extraordinary_a"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcActuatorTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="electricactuator"/>
<xs:enumeration value="handoperatedactuator"/>
<xs:enumeration value="hydraulicactuator"/>
<xs:enumeration value="pneumaticactuator"/>
<xs:enumeration value="thermostaticactuator"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcAddressTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="office"/>
<xs:enumeration value="site"/>
<xs:enumeration value="home"/>
<xs:enumeration value="distributionpoint"/>
<xs:enumeration value="userdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcAirTerminalBoxTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="constantflow"/>
<xs:enumeration value="variableflowpressuredependant"/>
<xs:enumeration value="variableflowpressureindependant"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcAirTerminalTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="diffuser"/>
<xs:enumeration value="grille"/>
<xs:enumeration value="louvre"/>
<xs:enumeration value="register"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcAirToAirHeatRecoveryTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="fixedplatecounterflowexchanger"/>
<xs:enumeration value="fixedplatecrossflowexchanger"/>
<xs:enumeration value="fixedplateparallelflowexchanger"/>
<xs:enumeration value="rotarywheel"/>
<xs:enumeration value="runaroundcoilloop"/>
<xs:enumeration value="heatpipe"/>
<xs:enumeration value="twintowerenthalpyrecoveryloops"/>
<xs:enumeration value="thermosiphonsealedtubeheatexchangers"/>
<xs:enumeration value="thermosiphoncoiltypeheatexchangers"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcAlarmTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="bell"/>
<xs:enumeration value="breakglassbutton"/>
<xs:enumeration value="light"/>
<xs:enumeration value="manualpullbox"/>
<xs:enumeration value="siren"/>
<xs:enumeration value="whistle"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcAnalysisModelTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="in_plane_loading_2d"/>
<xs:enumeration value="out_plane_loading_2d"/>
<xs:enumeration value="loading_3d"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcAnalysisTheoryTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="first_order_theory"/>
<xs:enumeration value="second_order_theory"/>
<xs:enumeration value="third_order_theory"/>
<xs:enumeration value="full_nonlinear_theory"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcArithmeticOperatorEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="add"/>
<xs:enumeration value="divide"/>
<xs:enumeration value="multiply"/>
<xs:enumeration value="subtract"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcAssemblyPlaceEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="site"/>
<xs:enumeration value="factory"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcAudioVisualApplianceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="amplifier"/>
<xs:enumeration value="camera"/>
<xs:enumeration value="display"/>
<xs:enumeration value="microphone"/>
<xs:enumeration value="player"/>
<xs:enumeration value="projector"/>
<xs:enumeration value="receiver"/>
<xs:enumeration value="speaker"/>
<xs:enumeration value="switcher"/>
<xs:enumeration value="telephone"/>
<xs:enumeration value="tuner"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcBSplineCurveForm">
<xs:restriction base="xs:string">
<xs:enumeration value="polyline_form"/>
<xs:enumeration value="circular_arc"/>
<xs:enumeration value="elliptic_arc"/>
<xs:enumeration value="parabolic_arc"/>
<xs:enumeration value="hyperbolic_arc"/>
<xs:enumeration value="unspecified"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcBSplineSurfaceForm">
<xs:restriction base="xs:string">
<xs:enumeration value="plane_surf"/>
<xs:enumeration value="cylindrical_surf"/>
<xs:enumeration value="conical_surf"/>
<xs:enumeration value="spherical_surf"/>
<xs:enumeration value="toroidal_surf"/>
<xs:enumeration value="surf_of_revolution"/>
<xs:enumeration value="ruled_surf"/>
<xs:enumeration value="generalised_cone"/>
<xs:enumeration value="quadric_surf"/>
<xs:enumeration value="surf_of_linear_extrusion"/>
<xs:enumeration value="unspecified"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcBeamTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="beam"/>
<xs:enumeration value="joist"/>
<xs:enumeration value="hollowcore"/>
<xs:enumeration value="lintel"/>
<xs:enumeration value="spandrel"/>
<xs:enumeration value="t_beam"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcBenchmarkEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="greaterthan"/>
<xs:enumeration value="greaterthanorequalto"/>
<xs:enumeration value="lessthan"/>
<xs:enumeration value="lessthanorequalto"/>
<xs:enumeration value="equalto"/>
<xs:enumeration value="notequalto"/>
<xs:enumeration value="includes"/>
<xs:enumeration value="notincludes"/>
<xs:enumeration value="includedin"/>
<xs:enumeration value="notincludedin"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcBoilerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="water"/>
<xs:enumeration value="steam"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcBooleanOperator">
<xs:restriction base="xs:string">
<xs:enumeration value="union"/>
<xs:enumeration value="intersection"/>
<xs:enumeration value="difference"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcBuildingElementPartTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="insulation"/>
<xs:enumeration value="precastpanel"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcBuildingElementProxyTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="complex"/>
<xs:enumeration value="element"/>
<xs:enumeration value="partial"/>
<xs:enumeration value="provisionforvoid"/>
<xs:enumeration value="provisionforspace"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcBuildingSystemTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="fenestration"/>
<xs:enumeration value="foundation"/>
<xs:enumeration value="loadbearing"/>
<xs:enumeration value="outershell"/>
<xs:enumeration value="shading"/>
<xs:enumeration value="transport"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcBurnerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCableCarrierFittingTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="bend"/>
<xs:enumeration value="cross"/>
<xs:enumeration value="reducer"/>
<xs:enumeration value="tee"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCableCarrierSegmentTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="cableladdersegment"/>
<xs:enumeration value="cabletraysegment"/>
<xs:enumeration value="cabletrunkingsegment"/>
<xs:enumeration value="conduitsegment"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCableFittingTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="connector"/>
<xs:enumeration value="entry"/>
<xs:enumeration value="exit"/>
<xs:enumeration value="junction"/>
<xs:enumeration value="transition"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCableSegmentTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="busbarsegment"/>
<xs:enumeration value="cablesegment"/>
<xs:enumeration value="conductorsegment"/>
<xs:enumeration value="coresegment"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcChangeActionEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="nochange"/>
<xs:enumeration value="modified"/>
<xs:enumeration value="added"/>
<xs:enumeration value="deleted"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcChillerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="aircooled"/>
<xs:enumeration value="watercooled"/>
<xs:enumeration value="heatrecovery"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcChimneyTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCoilTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="dxcoolingcoil"/>
<xs:enumeration value="electricheatingcoil"/>
<xs:enumeration value="gasheatingcoil"/>
<xs:enumeration value="hydroniccoil"/>
<xs:enumeration value="steamheatingcoil"/>
<xs:enumeration value="watercoolingcoil"/>
<xs:enumeration value="waterheatingcoil"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcColumnTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="column"/>
<xs:enumeration value="pilaster"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCommunicationsApplianceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="antenna"/>
<xs:enumeration value="computer"/>
<xs:enumeration value="fax"/>
<xs:enumeration value="gateway"/>
<xs:enumeration value="modem"/>
<xs:enumeration value="networkappliance"/>
<xs:enumeration value="networkbridge"/>
<xs:enumeration value="networkhub"/>
<xs:enumeration value="printer"/>
<xs:enumeration value="repeater"/>
<xs:enumeration value="router"/>
<xs:enumeration value="scanner"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcComplexPropertyTemplateTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="p_complex"/>
<xs:enumeration value="q_complex"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCompressorTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="dynamic"/>
<xs:enumeration value="reciprocating"/>
<xs:enumeration value="rotary"/>
<xs:enumeration value="scroll"/>
<xs:enumeration value="trochoidal"/>
<xs:enumeration value="singlestage"/>
<xs:enumeration value="booster"/>
<xs:enumeration value="opentype"/>
<xs:enumeration value="hermetic"/>
<xs:enumeration value="semihermetic"/>
<xs:enumeration value="weldedshellhermetic"/>
<xs:enumeration value="rollingpiston"/>
<xs:enumeration value="rotaryvane"/>
<xs:enumeration value="singlescrew"/>
<xs:enumeration value="twinscrew"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCondenserTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="aircooled"/>
<xs:enumeration value="evaporativecooled"/>
<xs:enumeration value="watercooled"/>
<xs:enumeration value="watercooledbrazedplate"/>
<xs:enumeration value="watercooledshellcoil"/>
<xs:enumeration value="watercooledshelltube"/>
<xs:enumeration value="watercooledtubeintube"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcConnectionTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="atpath"/>
<xs:enumeration value="atstart"/>
<xs:enumeration value="atend"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcConstraintEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="hard"/>
<xs:enumeration value="soft"/>
<xs:enumeration value="advisory"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcConstructionEquipmentResourceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="demolishing"/>
<xs:enumeration value="earthmoving"/>
<xs:enumeration value="erecting"/>
<xs:enumeration value="heating"/>
<xs:enumeration value="lighting"/>
<xs:enumeration value="paving"/>
<xs:enumeration value="pumping"/>
<xs:enumeration value="transporting"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcConstructionMaterialResourceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="aggregates"/>
<xs:enumeration value="concrete"/>
<xs:enumeration value="drywall"/>
<xs:enumeration value="fuel"/>
<xs:enumeration value="gypsum"/>
<xs:enumeration value="masonry"/>
<xs:enumeration value="metal"/>
<xs:enumeration value="plastic"/>
<xs:enumeration value="wood"/>
<xs:enumeration value="notdefined"/>
<xs:enumeration value="userdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcConstructionProductResourceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="assembly"/>
<xs:enumeration value="formwork"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcControllerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="floating"/>
<xs:enumeration value="programmable"/>
<xs:enumeration value="proportional"/>
<xs:enumeration value="multiposition"/>
<xs:enumeration value="twoposition"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCooledBeamTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="active"/>
<xs:enumeration value="passive"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCoolingTowerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="naturaldraft"/>
<xs:enumeration value="mechanicalinduceddraft"/>
<xs:enumeration value="mechanicalforceddraft"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCostItemTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCostScheduleTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="budget"/>
<xs:enumeration value="costplan"/>
<xs:enumeration value="estimate"/>
<xs:enumeration value="tender"/>
<xs:enumeration value="pricedbillofquantities"/>
<xs:enumeration value="unpricedbillofquantities"/>
<xs:enumeration value="scheduleofrates"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCoveringTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="ceiling"/>
<xs:enumeration value="flooring"/>
<xs:enumeration value="cladding"/>
<xs:enumeration value="roofing"/>
<xs:enumeration value="molding"/>
<xs:enumeration value="skirtingboard"/>
<xs:enumeration value="insulation"/>
<xs:enumeration value="membrane"/>
<xs:enumeration value="sleeving"/>
<xs:enumeration value="wrapping"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCrewResourceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="office"/>
<xs:enumeration value="site"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCurtainWallTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcCurveInterpolationEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="linear"/>
<xs:enumeration value="log_linear"/>
<xs:enumeration value="log_log"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDamperTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="backdraftdamper"/>
<xs:enumeration value="balancingdamper"/>
<xs:enumeration value="blastdamper"/>
<xs:enumeration value="controldamper"/>
<xs:enumeration value="firedamper"/>
<xs:enumeration value="firesmokedamper"/>
<xs:enumeration value="fumehoodexhaust"/>
<xs:enumeration value="gravitydamper"/>
<xs:enumeration value="gravityreliefdamper"/>
<xs:enumeration value="reliefdamper"/>
<xs:enumeration value="smokedamper"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDataOriginEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="measured"/>
<xs:enumeration value="predicted"/>
<xs:enumeration value="simulated"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDerivedUnitEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="angularvelocityunit"/>
<xs:enumeration value="areadensityunit"/>
<xs:enumeration value="compoundplaneangleunit"/>
<xs:enumeration value="dynamicviscosityunit"/>
<xs:enumeration value="heatfluxdensityunit"/>
<xs:enumeration value="integercountrateunit"/>
<xs:enumeration value="isothermalmoisturecapacityunit"/>
<xs:enumeration value="kinematicviscosityunit"/>
<xs:enumeration value="linearvelocityunit"/>
<xs:enumeration value="massdensityunit"/>
<xs:enumeration value="massflowrateunit"/>
<xs:enumeration value="moisturediffusivityunit"/>
<xs:enumeration value="molecularweightunit"/>
<xs:enumeration value="specificheatcapacityunit"/>
<xs:enumeration value="thermaladmittanceunit"/>
<xs:enumeration value="thermalconductanceunit"/>
<xs:enumeration value="thermalresistanceunit"/>
<xs:enumeration value="thermaltransmittanceunit"/>
<xs:enumeration value="vaporpermeabilityunit"/>
<xs:enumeration value="volumetricflowrateunit"/>
<xs:enumeration value="rotationalfrequencyunit"/>
<xs:enumeration value="torqueunit"/>
<xs:enumeration value="momentofinertiaunit"/>
<xs:enumeration value="linearmomentunit"/>
<xs:enumeration value="linearforceunit"/>
<xs:enumeration value="planarforceunit"/>
<xs:enumeration value="modulusofelasticityunit"/>
<xs:enumeration value="shearmodulusunit"/>
<xs:enumeration value="linearstiffnessunit"/>
<xs:enumeration value="rotationalstiffnessunit"/>
<xs:enumeration value="modulusofsubgradereactionunit"/>
<xs:enumeration value="accelerationunit"/>
<xs:enumeration value="curvatureunit"/>
<xs:enumeration value="heatingvalueunit"/>
<xs:enumeration value="ionconcentrationunit"/>
<xs:enumeration value="luminousintensitydistributionunit"/>
<xs:enumeration value="massperlengthunit"/>
<xs:enumeration value="modulusoflinearsubgradereactionunit"/>
<xs:enumeration value="modulusofrotationalsubgradereactionunit"/>
<xs:enumeration value="phunit"/>
<xs:enumeration value="rotationalmassunit"/>
<xs:enumeration value="sectionareaintegralunit"/>
<xs:enumeration value="sectionmodulusunit"/>
<xs:enumeration value="soundpowerlevelunit"/>
<xs:enumeration value="soundpowerunit"/>
<xs:enumeration value="soundpressurelevelunit"/>
<xs:enumeration value="soundpressureunit"/>
<xs:enumeration value="temperaturegradientunit"/>
<xs:enumeration value="temperaturerateofchangeunit"/>
<xs:enumeration value="thermalexpansioncoefficientunit"/>
<xs:enumeration value="warpingconstantunit"/>
<xs:enumeration value="warpingmomentunit"/>
<xs:enumeration value="userdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDirectionSenseEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="positive"/>
<xs:enumeration value="negative"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDiscreteAccessoryTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="anchorplate"/>
<xs:enumeration value="bracket"/>
<xs:enumeration value="shoe"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDistributionChamberElementTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="formedduct"/>
<xs:enumeration value="inspectionchamber"/>
<xs:enumeration value="inspectionpit"/>
<xs:enumeration value="manhole"/>
<xs:enumeration value="meterchamber"/>
<xs:enumeration value="sump"/>
<xs:enumeration value="trench"/>
<xs:enumeration value="valvechamber"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDistributionPortTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="cable"/>
<xs:enumeration value="cablecarrier"/>
<xs:enumeration value="duct"/>
<xs:enumeration value="pipe"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDistributionSystemEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="airconditioning"/>
<xs:enumeration value="audiovisual"/>
<xs:enumeration value="chemical"/>
<xs:enumeration value="chilledwater"/>
<xs:enumeration value="communication"/>
<xs:enumeration value="compressedair"/>
<xs:enumeration value="condenserwater"/>
<xs:enumeration value="control"/>
<xs:enumeration value="conveying"/>
<xs:enumeration value="data"/>
<xs:enumeration value="disposal"/>
<xs:enumeration value="domesticcoldwater"/>
<xs:enumeration value="domestichotwater"/>
<xs:enumeration value="drainage"/>
<xs:enumeration value="earthing"/>
<xs:enumeration value="electrical"/>
<xs:enumeration value="electroacoustic"/>
<xs:enumeration value="exhaust"/>
<xs:enumeration value="fireprotection"/>
<xs:enumeration value="fuel"/>
<xs:enumeration value="gas"/>
<xs:enumeration value="hazardous"/>
<xs:enumeration value="heating"/>
<xs:enumeration value="lighting"/>
<xs:enumeration value="lightningprotection"/>
<xs:enumeration value="municipalsolidwaste"/>
<xs:enumeration value="oil"/>
<xs:enumeration value="operational"/>
<xs:enumeration value="powergeneration"/>
<xs:enumeration value="rainwater"/>
<xs:enumeration value="refrigeration"/>
<xs:enumeration value="security"/>
<xs:enumeration value="sewage"/>
<xs:enumeration value="signal"/>
<xs:enumeration value="stormwater"/>
<xs:enumeration value="telephone"/>
<xs:enumeration value="tv"/>
<xs:enumeration value="vacuum"/>
<xs:enumeration value="vent"/>
<xs:enumeration value="ventilation"/>
<xs:enumeration value="wastewater"/>
<xs:enumeration value="watersupply"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDocumentConfidentialityEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="public"/>
<xs:enumeration value="restricted"/>
<xs:enumeration value="confidential"/>
<xs:enumeration value="personal"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDocumentStatusEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="draft"/>
<xs:enumeration value="finaldraft"/>
<xs:enumeration value="final"/>
<xs:enumeration value="revision"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDoorPanelOperationEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="swinging"/>
<xs:enumeration value="double_acting"/>
<xs:enumeration value="sliding"/>
<xs:enumeration value="folding"/>
<xs:enumeration value="revolving"/>
<xs:enumeration value="rollingup"/>
<xs:enumeration value="fixedpanel"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDoorPanelPositionEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="left"/>
<xs:enumeration value="middle"/>
<xs:enumeration value="right"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDoorStyleConstructionEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="aluminium"/>
<xs:enumeration value="high_grade_steel"/>
<xs:enumeration value="steel"/>
<xs:enumeration value="wood"/>
<xs:enumeration value="aluminium_wood"/>
<xs:enumeration value="aluminium_plastic"/>
<xs:enumeration value="plastic"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDoorStyleOperationEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="single_swing_left"/>
<xs:enumeration value="single_swing_right"/>
<xs:enumeration value="double_door_single_swing"/>
<xs:enumeration value="double_door_single_swing_opposite_left"/>
<xs:enumeration value="double_door_single_swing_opposite_right"/>
<xs:enumeration value="double_swing_left"/>
<xs:enumeration value="double_swing_right"/>
<xs:enumeration value="double_door_double_swing"/>
<xs:enumeration value="sliding_to_left"/>
<xs:enumeration value="sliding_to_right"/>
<xs:enumeration value="double_door_sliding"/>
<xs:enumeration value="folding_to_left"/>
<xs:enumeration value="folding_to_right"/>
<xs:enumeration value="double_door_folding"/>
<xs:enumeration value="revolving"/>
<xs:enumeration value="rollingup"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDoorTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="door"/>
<xs:enumeration value="gate"/>
<xs:enumeration value="trapdoor"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDoorTypeOperationEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="single_swing_left"/>
<xs:enumeration value="single_swing_right"/>
<xs:enumeration value="double_door_single_swing"/>
<xs:enumeration value="double_door_single_swing_opposite_left"/>
<xs:enumeration value="double_door_single_swing_opposite_right"/>
<xs:enumeration value="double_swing_left"/>
<xs:enumeration value="double_swing_right"/>
<xs:enumeration value="double_door_double_swing"/>
<xs:enumeration value="sliding_to_left"/>
<xs:enumeration value="sliding_to_right"/>
<xs:enumeration value="double_door_sliding"/>
<xs:enumeration value="folding_to_left"/>
<xs:enumeration value="folding_to_right"/>
<xs:enumeration value="double_door_folding"/>
<xs:enumeration value="revolving"/>
<xs:enumeration value="rollingup"/>
<xs:enumeration value="swing_fixed_left"/>
<xs:enumeration value="swing_fixed_right"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDuctFittingTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="bend"/>
<xs:enumeration value="connector"/>
<xs:enumeration value="entry"/>
<xs:enumeration value="exit"/>
<xs:enumeration value="junction"/>
<xs:enumeration value="obstruction"/>
<xs:enumeration value="transition"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDuctSegmentTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="rigidsegment"/>
<xs:enumeration value="flexiblesegment"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcDuctSilencerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="flatoval"/>
<xs:enumeration value="rectangular"/>
<xs:enumeration value="round"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcElectricApplianceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="dishwasher"/>
<xs:enumeration value="electriccooker"/>
<xs:enumeration value="freestandingelectricheater"/>
<xs:enumeration value="freestandingfan"/>
<xs:enumeration value="freestandingwaterheater"/>
<xs:enumeration value="freestandingwatercooler"/>
<xs:enumeration value="freezer"/>
<xs:enumeration value="fridge_freezer"/>
<xs:enumeration value="handdryer"/>
<xs:enumeration value="kitchenmachine"/>
<xs:enumeration value="microwave"/>
<xs:enumeration value="photocopier"/>
<xs:enumeration value="refrigerator"/>
<xs:enumeration value="tumbledryer"/>
<xs:enumeration value="vendingmachine"/>
<xs:enumeration value="washingmachine"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcElectricDistributionBoardTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="consumerunit"/>
<xs:enumeration value="distributionboard"/>
<xs:enumeration value="motorcontrolcentre"/>
<xs:enumeration value="switchboard"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcElectricFlowStorageDeviceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="battery"/>
<xs:enumeration value="capacitorbank"/>
<xs:enumeration value="harmonicfilter"/>
<xs:enumeration value="inductorbank"/>
<xs:enumeration value="ups"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcElectricGeneratorTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="chp"/>
<xs:enumeration value="enginegenerator"/>
<xs:enumeration value="standalone"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcElectricMotorTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="dc"/>
<xs:enumeration value="induction"/>
<xs:enumeration value="polyphase"/>
<xs:enumeration value="reluctancesynchronous"/>
<xs:enumeration value="synchronous"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcElectricTimeControlTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="timeclock"/>
<xs:enumeration value="timedelay"/>
<xs:enumeration value="relay"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcElementAssemblyTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="accessory_assembly"/>
<xs:enumeration value="arch"/>
<xs:enumeration value="beam_grid"/>
<xs:enumeration value="braced_frame"/>
<xs:enumeration value="girder"/>
<xs:enumeration value="reinforcement_unit"/>
<xs:enumeration value="rigid_frame"/>
<xs:enumeration value="slab_field"/>
<xs:enumeration value="truss"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcElementCompositionEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="complex"/>
<xs:enumeration value="element"/>
<xs:enumeration value="partial"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcEngineTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="externalcombustion"/>
<xs:enumeration value="internalcombustion"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcEvaporativeCoolerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="directevaporativerandommediaaircooler"/>
<xs:enumeration value="directevaporativerigidmediaaircooler"/>
<xs:enumeration value="directevaporativeslingerspackagedaircooler"/>
<xs:enumeration value="directevaporativepackagedrotaryaircooler"/>
<xs:enumeration value="directevaporativeairwasher"/>
<xs:enumeration value="indirectevaporativepackageaircooler"/>
<xs:enumeration value="indirectevaporativewetcoil"/>
<xs:enumeration value="indirectevaporativecoolingtowerorcoilcooler"/>
<xs:enumeration value="indirectdirectcombination"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcEvaporatorTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="directexpansion"/>
<xs:enumeration value="directexpansionshellandtube"/>
<xs:enumeration value="directexpansiontubeintube"/>
<xs:enumeration value="directexpansionbrazedplate"/>
<xs:enumeration value="floodedshellandtube"/>
<xs:enumeration value="shellandcoil"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcEventTriggerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="eventrule"/>
<xs:enumeration value="eventmessage"/>
<xs:enumeration value="eventtime"/>
<xs:enumeration value="eventcomplex"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcEventTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="startevent"/>
<xs:enumeration value="endevent"/>
<xs:enumeration value="intermediateevent"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcExternalSpatialElementTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="external"/>
<xs:enumeration value="external_earth"/>
<xs:enumeration value="external_water"/>
<xs:enumeration value="external_fire"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcFanTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="centrifugalforwardcurved"/>
<xs:enumeration value="centrifugalradial"/>
<xs:enumeration value="centrifugalbackwardinclinedcurved"/>
<xs:enumeration value="centrifugalairfoil"/>
<xs:enumeration value="tubeaxial"/>
<xs:enumeration value="vaneaxial"/>
<xs:enumeration value="propelloraxial"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcFastenerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="glue"/>
<xs:enumeration value="mortar"/>
<xs:enumeration value="weld"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcFilterTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="airparticlefilter"/>
<xs:enumeration value="compressedairfilter"/>
<xs:enumeration value="odorfilter"/>
<xs:enumeration value="oilfilter"/>
<xs:enumeration value="strainer"/>
<xs:enumeration value="waterfilter"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcFireSuppressionTerminalTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="breechinginlet"/>
<xs:enumeration value="firehydrant"/>
<xs:enumeration value="hosereel"/>
<xs:enumeration value="sprinkler"/>
<xs:enumeration value="sprinklerdeflector"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcFlowDirectionEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="source"/>
<xs:enumeration value="sink"/>
<xs:enumeration value="sourceandsink"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcFlowInstrumentTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="pressuregauge"/>
<xs:enumeration value="thermometer"/>
<xs:enumeration value="ammeter"/>
<xs:enumeration value="frequencymeter"/>
<xs:enumeration value="powerfactormeter"/>
<xs:enumeration value="phaseanglemeter"/>
<xs:enumeration value="voltmeter_peak"/>
<xs:enumeration value="voltmeter_rms"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcFlowMeterTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="energymeter"/>
<xs:enumeration value="gasmeter"/>
<xs:enumeration value="oilmeter"/>
<xs:enumeration value="watermeter"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcFootingTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="caisson_foundation"/>
<xs:enumeration value="footing_beam"/>
<xs:enumeration value="pad_footing"/>
<xs:enumeration value="pile_cap"/>
<xs:enumeration value="strip_footing"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcFurnitureTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="chair"/>
<xs:enumeration value="table"/>
<xs:enumeration value="desk"/>
<xs:enumeration value="bed"/>
<xs:enumeration value="filecabinet"/>
<xs:enumeration value="shelf"/>
<xs:enumeration value="sofa"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcGeographicElementTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="terrain"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcGeometricProjectionEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="graph_view"/>
<xs:enumeration value="sketch_view"/>
<xs:enumeration value="model_view"/>
<xs:enumeration value="plan_view"/>
<xs:enumeration value="reflected_plan_view"/>
<xs:enumeration value="section_view"/>
<xs:enumeration value="elevation_view"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcGlobalOrLocalEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="global_coords"/>
<xs:enumeration value="local_coords"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcGridTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="rectangular"/>
<xs:enumeration value="radial"/>
<xs:enumeration value="triangular"/>
<xs:enumeration value="irregular"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcHeatExchangerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="plate"/>
<xs:enumeration value="shellandtube"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcHumidifierTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="steaminjection"/>
<xs:enumeration value="adiabaticairwasher"/>
<xs:enumeration value="adiabaticpan"/>
<xs:enumeration value="adiabaticwettedelement"/>
<xs:enumeration value="adiabaticatomizing"/>
<xs:enumeration value="adiabaticultrasonic"/>
<xs:enumeration value="adiabaticrigidmedia"/>
<xs:enumeration value="adiabaticcompressedairnozzle"/>
<xs:enumeration value="assistedelectric"/>
<xs:enumeration value="assistednaturalgas"/>
<xs:enumeration value="assistedpropane"/>
<xs:enumeration value="assistedbutane"/>
<xs:enumeration value="assistedsteam"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcInterceptorTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="cyclonic"/>
<xs:enumeration value="grease"/>
<xs:enumeration value="oil"/>
<xs:enumeration value="petrol"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcInternalOrExternalEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="internal"/>
<xs:enumeration value="external"/>
<xs:enumeration value="external_earth"/>
<xs:enumeration value="external_water"/>
<xs:enumeration value="external_fire"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcInventoryTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="assetinventory"/>
<xs:enumeration value="spaceinventory"/>
<xs:enumeration value="furnitureinventory"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcJunctionBoxTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="data"/>
<xs:enumeration value="power"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcKnotType">
<xs:restriction base="xs:string">
<xs:enumeration value="uniform_knots"/>
<xs:enumeration value="quasi_uniform_knots"/>
<xs:enumeration value="piecewise_bezier_knots"/>
<xs:enumeration value="unspecified"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLaborResourceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="administration"/>
<xs:enumeration value="carpentry"/>
<xs:enumeration value="cleaning"/>
<xs:enumeration value="concrete"/>
<xs:enumeration value="drywall"/>
<xs:enumeration value="electric"/>
<xs:enumeration value="finishing"/>
<xs:enumeration value="flooring"/>
<xs:enumeration value="general"/>
<xs:enumeration value="hvac"/>
<xs:enumeration value="landscaping"/>
<xs:enumeration value="masonry"/>
<xs:enumeration value="painting"/>
<xs:enumeration value="paving"/>
<xs:enumeration value="plumbing"/>
<xs:enumeration value="roofing"/>
<xs:enumeration value="sitegrading"/>
<xs:enumeration value="steelwork"/>
<xs:enumeration value="surveying"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLampTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="compactfluorescent"/>
<xs:enumeration value="fluorescent"/>
<xs:enumeration value="halogen"/>
<xs:enumeration value="highpressuremercury"/>
<xs:enumeration value="highpressuresodium"/>
<xs:enumeration value="led"/>
<xs:enumeration value="metalhalide"/>
<xs:enumeration value="oled"/>
<xs:enumeration value="tungstenfilament"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLayerSetDirectionEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="axis1"/>
<xs:enumeration value="axis2"/>
<xs:enumeration value="axis3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLightDistributionCurveEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="type_a"/>
<xs:enumeration value="type_b"/>
<xs:enumeration value="type_c"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLightEmissionSourceEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="compactfluorescent"/>
<xs:enumeration value="fluorescent"/>
<xs:enumeration value="highpressuremercury"/>
<xs:enumeration value="highpressuresodium"/>
<xs:enumeration value="lightemittingdiode"/>
<xs:enumeration value="lowpressuresodium"/>
<xs:enumeration value="lowvoltagehalogen"/>
<xs:enumeration value="mainvoltagehalogen"/>
<xs:enumeration value="metalhalide"/>
<xs:enumeration value="tungstenfilament"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLightFixtureTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="pointsource"/>
<xs:enumeration value="directionsource"/>
<xs:enumeration value="securitylighting"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLoadGroupTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="load_group"/>
<xs:enumeration value="load_case"/>
<xs:enumeration value="load_combination"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLogicalOperatorEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="logicaland"/>
<xs:enumeration value="logicalor"/>
<xs:enumeration value="logicalxor"/>
<xs:enumeration value="logicalnotand"/>
<xs:enumeration value="logicalnotor"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcMechanicalFastenerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="anchorbolt"/>
<xs:enumeration value="bolt"/>
<xs:enumeration value="dowel"/>
<xs:enumeration value="nail"/>
<xs:enumeration value="nailplate"/>
<xs:enumeration value="rivet"/>
<xs:enumeration value="screw"/>
<xs:enumeration value="shearconnector"/>
<xs:enumeration value="staple"/>
<xs:enumeration value="studshearconnector"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcMedicalDeviceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="airstation"/>
<xs:enumeration value="feedairunit"/>
<xs:enumeration value="oxygengenerator"/>
<xs:enumeration value="oxygenplant"/>
<xs:enumeration value="vacuumstation"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcMemberTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="brace"/>
<xs:enumeration value="chord"/>
<xs:enumeration value="collar"/>
<xs:enumeration value="member"/>
<xs:enumeration value="mullion"/>
<xs:enumeration value="plate"/>
<xs:enumeration value="post"/>
<xs:enumeration value="purlin"/>
<xs:enumeration value="rafter"/>
<xs:enumeration value="stringer"/>
<xs:enumeration value="strut"/>
<xs:enumeration value="stud"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcMotorConnectionTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="beltdrive"/>
<xs:enumeration value="coupling"/>
<xs:enumeration value="directdrive"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcNullStyle">
<xs:restriction base="xs:string">
<xs:enumeration value="null"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcObjectTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="product"/>
<xs:enumeration value="process"/>
<xs:enumeration value="control"/>
<xs:enumeration value="resource"/>
<xs:enumeration value="actor"/>
<xs:enumeration value="group"/>
<xs:enumeration value="project"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcObjectiveEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="codecompliance"/>
<xs:enumeration value="codewaiver"/>
<xs:enumeration value="designintent"/>
<xs:enumeration value="external"/>
<xs:enumeration value="healthandsafety"/>
<xs:enumeration value="mergeconflict"/>
<xs:enumeration value="modelview"/>
<xs:enumeration value="parameter"/>
<xs:enumeration value="requirement"/>
<xs:enumeration value="specification"/>
<xs:enumeration value="triggercondition"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcOccupantTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="assignee"/>
<xs:enumeration value="assignor"/>
<xs:enumeration value="lessee"/>
<xs:enumeration value="lessor"/>
<xs:enumeration value="lettingagent"/>
<xs:enumeration value="owner"/>
<xs:enumeration value="tenant"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcOpeningElementTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="opening"/>
<xs:enumeration value="recess"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcOutletTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="audiovisualoutlet"/>
<xs:enumeration value="communicationsoutlet"/>
<xs:enumeration value="poweroutlet"/>
<xs:enumeration value="dataoutlet"/>
<xs:enumeration value="telephoneoutlet"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPerformanceHistoryTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPermeableCoveringOperationEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="grill"/>
<xs:enumeration value="louver"/>
<xs:enumeration value="screen"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPermitTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="access"/>
<xs:enumeration value="building"/>
<xs:enumeration value="work"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPhysicalOrVirtualEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="physical"/>
<xs:enumeration value="virtual"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPileConstructionEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="cast_in_place"/>
<xs:enumeration value="composite"/>
<xs:enumeration value="precast_concrete"/>
<xs:enumeration value="prefab_steel"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPileTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="bored"/>
<xs:enumeration value="driven"/>
<xs:enumeration value="jetgrouting"/>
<xs:enumeration value="cohesion"/>
<xs:enumeration value="friction"/>
<xs:enumeration value="support"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPipeFittingTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="bend"/>
<xs:enumeration value="connector"/>
<xs:enumeration value="entry"/>
<xs:enumeration value="exit"/>
<xs:enumeration value="junction"/>
<xs:enumeration value="obstruction"/>
<xs:enumeration value="transition"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPipeSegmentTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="culvert"/>
<xs:enumeration value="flexiblesegment"/>
<xs:enumeration value="rigidsegment"/>
<xs:enumeration value="gutter"/>
<xs:enumeration value="spool"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPlateTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="curtain_panel"/>
<xs:enumeration value="sheet"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPreferredSurfaceCurveRepresentation">
<xs:restriction base="xs:string">
<xs:enumeration value="curve3d"/>
<xs:enumeration value="pcurve_s1"/>
<xs:enumeration value="pcurve_s2"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcProcedureTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="advice_caution"/>
<xs:enumeration value="advice_note"/>
<xs:enumeration value="advice_warning"/>
<xs:enumeration value="calibration"/>
<xs:enumeration value="diagnostic"/>
<xs:enumeration value="shutdown"/>
<xs:enumeration value="startup"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcProfileTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="curve"/>
<xs:enumeration value="area"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcProjectOrderTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="changeorder"/>
<xs:enumeration value="maintenanceworkorder"/>
<xs:enumeration value="moveorder"/>
<xs:enumeration value="purchaseorder"/>
<xs:enumeration value="workorder"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcProjectedOrTrueLengthEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="projected_length"/>
<xs:enumeration value="true_length"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcProjectionElementTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPropertySetTemplateTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="pset_typedrivenonly"/>
<xs:enumeration value="pset_typedrivenoverride"/>
<xs:enumeration value="pset_occurrencedriven"/>
<xs:enumeration value="pset_performancedriven"/>
<xs:enumeration value="qto_typedrivenonly"/>
<xs:enumeration value="qto_typedrivenoverride"/>
<xs:enumeration value="qto_occurrencedriven"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcProtectiveDeviceTrippingUnitTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="electronic"/>
<xs:enumeration value="electromagnetic"/>
<xs:enumeration value="residualcurrent"/>
<xs:enumeration value="thermal"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcProtectiveDeviceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="circuitbreaker"/>
<xs:enumeration value="earthleakagecircuitbreaker"/>
<xs:enumeration value="earthingswitch"/>
<xs:enumeration value="fusedisconnector"/>
<xs:enumeration value="residualcurrentcircuitbreaker"/>
<xs:enumeration value="residualcurrentswitch"/>
<xs:enumeration value="varistor"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcPumpTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="circulator"/>
<xs:enumeration value="endsuction"/>
<xs:enumeration value="splitcase"/>
<xs:enumeration value="submersiblepump"/>
<xs:enumeration value="sumppump"/>
<xs:enumeration value="verticalinline"/>
<xs:enumeration value="verticalturbine"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcRailingTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="handrail"/>
<xs:enumeration value="guardrail"/>
<xs:enumeration value="balustrade"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcRampFlightTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="straight"/>
<xs:enumeration value="spiral"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcRampTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="straight_run_ramp"/>
<xs:enumeration value="two_straight_run_ramp"/>
<xs:enumeration value="quarter_turn_ramp"/>
<xs:enumeration value="two_quarter_turn_ramp"/>
<xs:enumeration value="half_turn_ramp"/>
<xs:enumeration value="spiral_ramp"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcRecurrenceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="daily"/>
<xs:enumeration value="weekly"/>
<xs:enumeration value="monthly_by_day_of_month"/>
<xs:enumeration value="monthly_by_position"/>
<xs:enumeration value="by_day_count"/>
<xs:enumeration value="by_weekday_count"/>
<xs:enumeration value="yearly_by_day_of_month"/>
<xs:enumeration value="yearly_by_position"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcReflectanceMethodEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="blinn"/>
<xs:enumeration value="flat"/>
<xs:enumeration value="glass"/>
<xs:enumeration value="matt"/>
<xs:enumeration value="metal"/>
<xs:enumeration value="mirror"/>
<xs:enumeration value="phong"/>
<xs:enumeration value="plastic"/>
<xs:enumeration value="strauss"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcReinforcingBarRoleEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="main"/>
<xs:enumeration value="shear"/>
<xs:enumeration value="ligature"/>
<xs:enumeration value="stud"/>
<xs:enumeration value="punching"/>
<xs:enumeration value="edge"/>
<xs:enumeration value="ring"/>
<xs:enumeration value="anchoring"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcReinforcingBarSurfaceEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="plain"/>
<xs:enumeration value="textured"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcReinforcingBarTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="anchoring"/>
<xs:enumeration value="edge"/>
<xs:enumeration value="ligature"/>
<xs:enumeration value="main"/>
<xs:enumeration value="punching"/>
<xs:enumeration value="ring"/>
<xs:enumeration value="shear"/>
<xs:enumeration value="stud"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcReinforcingMeshTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcRoleEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="supplier"/>
<xs:enumeration value="manufacturer"/>
<xs:enumeration value="contractor"/>
<xs:enumeration value="subcontractor"/>
<xs:enumeration value="architect"/>
<xs:enumeration value="structuralengineer"/>
<xs:enumeration value="costengineer"/>
<xs:enumeration value="client"/>
<xs:enumeration value="buildingowner"/>
<xs:enumeration value="buildingoperator"/>
<xs:enumeration value="mechanicalengineer"/>
<xs:enumeration value="electricalengineer"/>
<xs:enumeration value="projectmanager"/>
<xs:enumeration value="facilitiesmanager"/>
<xs:enumeration value="civilengineer"/>
<xs:enumeration value="commissioningengineer"/>
<xs:enumeration value="engineer"/>
<xs:enumeration value="owner"/>
<xs:enumeration value="consultant"/>
<xs:enumeration value="constructionmanager"/>
<xs:enumeration value="fieldconstructionmanager"/>
<xs:enumeration value="reseller"/>
<xs:enumeration value="userdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcRoofTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="flat_roof"/>
<xs:enumeration value="shed_roof"/>
<xs:enumeration value="gable_roof"/>
<xs:enumeration value="hip_roof"/>
<xs:enumeration value="hipped_gable_roof"/>
<xs:enumeration value="gambrel_roof"/>
<xs:enumeration value="mansard_roof"/>
<xs:enumeration value="barrel_roof"/>
<xs:enumeration value="rainbow_roof"/>
<xs:enumeration value="butterfly_roof"/>
<xs:enumeration value="pavilion_roof"/>
<xs:enumeration value="dome_roof"/>
<xs:enumeration value="freeform"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSIPrefix">
<xs:restriction base="xs:string">
<xs:enumeration value="exa"/>
<xs:enumeration value="peta"/>
<xs:enumeration value="tera"/>
<xs:enumeration value="giga"/>
<xs:enumeration value="mega"/>
<xs:enumeration value="kilo"/>
<xs:enumeration value="hecto"/>
<xs:enumeration value="deca"/>
<xs:enumeration value="deci"/>
<xs:enumeration value="centi"/>
<xs:enumeration value="milli"/>
<xs:enumeration value="micro"/>
<xs:enumeration value="nano"/>
<xs:enumeration value="pico"/>
<xs:enumeration value="femto"/>
<xs:enumeration value="atto"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSIUnitName">
<xs:restriction base="xs:string">
<xs:enumeration value="ampere"/>
<xs:enumeration value="becquerel"/>
<xs:enumeration value="candela"/>
<xs:enumeration value="coulomb"/>
<xs:enumeration value="cubic_metre"/>
<xs:enumeration value="degree_celsius"/>
<xs:enumeration value="farad"/>
<xs:enumeration value="gram"/>
<xs:enumeration value="gray"/>
<xs:enumeration value="henry"/>
<xs:enumeration value="hertz"/>
<xs:enumeration value="joule"/>
<xs:enumeration value="kelvin"/>
<xs:enumeration value="lumen"/>
<xs:enumeration value="lux"/>
<xs:enumeration value="metre"/>
<xs:enumeration value="mole"/>
<xs:enumeration value="newton"/>
<xs:enumeration value="ohm"/>
<xs:enumeration value="pascal"/>
<xs:enumeration value="radian"/>
<xs:enumeration value="second"/>
<xs:enumeration value="siemens"/>
<xs:enumeration value="sievert"/>
<xs:enumeration value="square_metre"/>
<xs:enumeration value="steradian"/>
<xs:enumeration value="tesla"/>
<xs:enumeration value="volt"/>
<xs:enumeration value="watt"/>
<xs:enumeration value="weber"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSanitaryTerminalTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="bath"/>
<xs:enumeration value="bidet"/>
<xs:enumeration value="cistern"/>
<xs:enumeration value="shower"/>
<xs:enumeration value="sink"/>
<xs:enumeration value="sanitaryfountain"/>
<xs:enumeration value="toiletpan"/>
<xs:enumeration value="urinal"/>
<xs:enumeration value="washhandbasin"/>
<xs:enumeration value="wcseat"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSectionTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="uniform"/>
<xs:enumeration value="tapered"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSensorTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="cosensor"/>
<xs:enumeration value="co2sensor"/>
<xs:enumeration value="conductancesensor"/>
<xs:enumeration value="contactsensor"/>
<xs:enumeration value="firesensor"/>
<xs:enumeration value="flowsensor"/>
<xs:enumeration value="frostsensor"/>
<xs:enumeration value="gassensor"/>
<xs:enumeration value="heatsensor"/>
<xs:enumeration value="humiditysensor"/>
<xs:enumeration value="identifiersensor"/>
<xs:enumeration value="ionconcentrationsensor"/>
<xs:enumeration value="levelsensor"/>
<xs:enumeration value="lightsensor"/>
<xs:enumeration value="moisturesensor"/>
<xs:enumeration value="movementsensor"/>
<xs:enumeration value="phsensor"/>
<xs:enumeration value="pressuresensor"/>
<xs:enumeration value="radiationsensor"/>
<xs:enumeration value="radioactivitysensor"/>
<xs:enumeration value="smokesensor"/>
<xs:enumeration value="soundsensor"/>
<xs:enumeration value="temperaturesensor"/>
<xs:enumeration value="windsensor"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSequenceEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="start_start"/>
<xs:enumeration value="start_finish"/>
<xs:enumeration value="finish_start"/>
<xs:enumeration value="finish_finish"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcShadingDeviceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="jalousie"/>
<xs:enumeration value="shutter"/>
<xs:enumeration value="awning"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSimplePropertyTemplateTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="p_singlevalue"/>
<xs:enumeration value="p_enumeratedvalue"/>
<xs:enumeration value="p_boundedvalue"/>
<xs:enumeration value="p_listvalue"/>
<xs:enumeration value="p_tablevalue"/>
<xs:enumeration value="p_referencevalue"/>
<xs:enumeration value="q_length"/>
<xs:enumeration value="q_area"/>
<xs:enumeration value="q_volume"/>
<xs:enumeration value="q_count"/>
<xs:enumeration value="q_weight"/>
<xs:enumeration value="q_time"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSlabTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="floor"/>
<xs:enumeration value="roof"/>
<xs:enumeration value="landing"/>
<xs:enumeration value="baseslab"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSolarDeviceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="solarcollector"/>
<xs:enumeration value="solarpanel"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSpaceHeaterTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="convector"/>
<xs:enumeration value="radiator"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSpaceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="space"/>
<xs:enumeration value="parking"/>
<xs:enumeration value="gfa"/>
<xs:enumeration value="internal"/>
<xs:enumeration value="external"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSpatialZoneTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="construction"/>
<xs:enumeration value="firesafety"/>
<xs:enumeration value="lighting"/>
<xs:enumeration value="occupancy"/>
<xs:enumeration value="security"/>
<xs:enumeration value="thermal"/>
<xs:enumeration value="transport"/>
<xs:enumeration value="ventilation"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcStackTerminalTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="birdcage"/>
<xs:enumeration value="cowl"/>
<xs:enumeration value="rainwaterhopper"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcStairFlightTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="straight"/>
<xs:enumeration value="winder"/>
<xs:enumeration value="spiral"/>
<xs:enumeration value="curved"/>
<xs:enumeration value="freeform"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcStairTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="straight_run_stair"/>
<xs:enumeration value="two_straight_run_stair"/>
<xs:enumeration value="quarter_winding_stair"/>
<xs:enumeration value="quarter_turn_stair"/>
<xs:enumeration value="half_winding_stair"/>
<xs:enumeration value="half_turn_stair"/>
<xs:enumeration value="two_quarter_winding_stair"/>
<xs:enumeration value="two_quarter_turn_stair"/>
<xs:enumeration value="three_quarter_winding_stair"/>
<xs:enumeration value="three_quarter_turn_stair"/>
<xs:enumeration value="spiral_stair"/>
<xs:enumeration value="double_return_stair"/>
<xs:enumeration value="curved_run_stair"/>
<xs:enumeration value="two_curved_run_stair"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcStateEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="readwrite"/>
<xs:enumeration value="readonly"/>
<xs:enumeration value="locked"/>
<xs:enumeration value="readwritelocked"/>
<xs:enumeration value="readonlylocked"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcStructuralCurveActivityTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="const"/>
<xs:enumeration value="linear"/>
<xs:enumeration value="polygonal"/>
<xs:enumeration value="equidistant"/>
<xs:enumeration value="sinus"/>
<xs:enumeration value="parabola"/>
<xs:enumeration value="discrete"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcStructuralCurveMemberTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="rigid_joined_member"/>
<xs:enumeration value="pin_joined_member"/>
<xs:enumeration value="cable"/>
<xs:enumeration value="tension_member"/>
<xs:enumeration value="compression_member"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcStructuralSurfaceActivityTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="const"/>
<xs:enumeration value="bilinear"/>
<xs:enumeration value="discrete"/>
<xs:enumeration value="isocontour"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcStructuralSurfaceMemberTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="bending_element"/>
<xs:enumeration value="membrane_element"/>
<xs:enumeration value="shell"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSubContractResourceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="purchase"/>
<xs:enumeration value="work"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSurfaceFeatureTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="mark"/>
<xs:enumeration value="tag"/>
<xs:enumeration value="treatment"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSurfaceSide">
<xs:restriction base="xs:string">
<xs:enumeration value="positive"/>
<xs:enumeration value="negative"/>
<xs:enumeration value="both"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSwitchingDeviceTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="contactor"/>
<xs:enumeration value="dimmerswitch"/>
<xs:enumeration value="emergencystop"/>
<xs:enumeration value="keypad"/>
<xs:enumeration value="momentaryswitch"/>
<xs:enumeration value="selectorswitch"/>
<xs:enumeration value="starter"/>
<xs:enumeration value="switchdisconnector"/>
<xs:enumeration value="toggleswitch"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcSystemFurnitureElementTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="panel"/>
<xs:enumeration value="worksurface"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTankTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="basin"/>
<xs:enumeration value="breakpressure"/>
<xs:enumeration value="expansion"/>
<xs:enumeration value="feedandexpansion"/>
<xs:enumeration value="pressurevessel"/>
<xs:enumeration value="storage"/>
<xs:enumeration value="vessel"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTaskDurationEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="elapsedtime"/>
<xs:enumeration value="worktime"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTaskTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="attendance"/>
<xs:enumeration value="construction"/>
<xs:enumeration value="demolition"/>
<xs:enumeration value="dismantle"/>
<xs:enumeration value="disposal"/>
<xs:enumeration value="installation"/>
<xs:enumeration value="logistic"/>
<xs:enumeration value="maintenance"/>
<xs:enumeration value="move"/>
<xs:enumeration value="operation"/>
<xs:enumeration value="removal"/>
<xs:enumeration value="renovation"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTendonAnchorTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="coupler"/>
<xs:enumeration value="fixed_end"/>
<xs:enumeration value="tensioning_end"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTendonTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="bar"/>
<xs:enumeration value="coated"/>
<xs:enumeration value="strand"/>
<xs:enumeration value="wire"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTextPath">
<xs:restriction base="xs:string">
<xs:enumeration value="left"/>
<xs:enumeration value="right"/>
<xs:enumeration value="up"/>
<xs:enumeration value="down"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTimeSeriesDataTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="continuous"/>
<xs:enumeration value="discrete"/>
<xs:enumeration value="discretebinary"/>
<xs:enumeration value="piecewisebinary"/>
<xs:enumeration value="piecewiseconstant"/>
<xs:enumeration value="piecewisecontinuous"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTransformerTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="current"/>
<xs:enumeration value="frequency"/>
<xs:enumeration value="inverter"/>
<xs:enumeration value="rectifier"/>
<xs:enumeration value="voltage"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTransitionCode">
<xs:restriction base="xs:string">
<xs:enumeration value="discontinuous"/>
<xs:enumeration value="continuous"/>
<xs:enumeration value="contsamegradient"/>
<xs:enumeration value="contsamegradientsamecurvature"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTransportElementTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="elevator"/>
<xs:enumeration value="escalator"/>
<xs:enumeration value="movingwalkway"/>
<xs:enumeration value="craneway"/>
<xs:enumeration value="liftinggear"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTrimmingPreference">
<xs:restriction base="xs:string">
<xs:enumeration value="cartesian"/>
<xs:enumeration value="parameter"/>
<xs:enumeration value="unspecified"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcTubeBundleTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="finned"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcUnitEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="absorbeddoseunit"/>
<xs:enumeration value="amountofsubstanceunit"/>
<xs:enumeration value="areaunit"/>
<xs:enumeration value="doseequivalentunit"/>
<xs:enumeration value="electriccapacitanceunit"/>
<xs:enumeration value="electricchargeunit"/>
<xs:enumeration value="electricconductanceunit"/>
<xs:enumeration value="electriccurrentunit"/>
<xs:enumeration value="electricresistanceunit"/>
<xs:enumeration value="electricvoltageunit"/>
<xs:enumeration value="energyunit"/>
<xs:enumeration value="forceunit"/>
<xs:enumeration value="frequencyunit"/>
<xs:enumeration value="illuminanceunit"/>
<xs:enumeration value="inductanceunit"/>
<xs:enumeration value="lengthunit"/>
<xs:enumeration value="luminousfluxunit"/>
<xs:enumeration value="luminousintensityunit"/>
<xs:enumeration value="magneticfluxdensityunit"/>
<xs:enumeration value="magneticfluxunit"/>
<xs:enumeration value="massunit"/>
<xs:enumeration value="planeangleunit"/>
<xs:enumeration value="powerunit"/>
<xs:enumeration value="pressureunit"/>
<xs:enumeration value="radioactivityunit"/>
<xs:enumeration value="solidangleunit"/>
<xs:enumeration value="thermodynamictemperatureunit"/>
<xs:enumeration value="timeunit"/>
<xs:enumeration value="volumeunit"/>
<xs:enumeration value="userdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcUnitaryControlElementTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="alarmpanel"/>
<xs:enumeration value="controlpanel"/>
<xs:enumeration value="gasdetectionpanel"/>
<xs:enumeration value="indicatorpanel"/>
<xs:enumeration value="mimicpanel"/>
<xs:enumeration value="humidistat"/>
<xs:enumeration value="thermostat"/>
<xs:enumeration value="weatherstation"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcUnitaryEquipmentTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="airhandler"/>
<xs:enumeration value="airconditioningunit"/>
<xs:enumeration value="dehumidifier"/>
<xs:enumeration value="splitsystem"/>
<xs:enumeration value="rooftopunit"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcValveTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="airrelease"/>
<xs:enumeration value="antivacuum"/>
<xs:enumeration value="changeover"/>
<xs:enumeration value="check"/>
<xs:enumeration value="commissioning"/>
<xs:enumeration value="diverting"/>
<xs:enumeration value="drawoffcock"/>
<xs:enumeration value="doublecheck"/>
<xs:enumeration value="doubleregulating"/>
<xs:enumeration value="faucet"/>
<xs:enumeration value="flushing"/>
<xs:enumeration value="gascock"/>
<xs:enumeration value="gastap"/>
<xs:enumeration value="isolating"/>
<xs:enumeration value="mixing"/>
<xs:enumeration value="pressurereducing"/>
<xs:enumeration value="pressurerelief"/>
<xs:enumeration value="regulating"/>
<xs:enumeration value="safetycutoff"/>
<xs:enumeration value="steamtrap"/>
<xs:enumeration value="stopcock"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcVibrationIsolatorTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="compression"/>
<xs:enumeration value="spring"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcVoidingFeatureTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="cutout"/>
<xs:enumeration value="notch"/>
<xs:enumeration value="hole"/>
<xs:enumeration value="miter"/>
<xs:enumeration value="chamfer"/>
<xs:enumeration value="edge"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWallTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="movable"/>
<xs:enumeration value="parapet"/>
<xs:enumeration value="partitioning"/>
<xs:enumeration value="plumbingwall"/>
<xs:enumeration value="shear"/>
<xs:enumeration value="solidwall"/>
<xs:enumeration value="standard"/>
<xs:enumeration value="polygonal"/>
<xs:enumeration value="elementedwall"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWasteTerminalTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="floortrap"/>
<xs:enumeration value="floorwaste"/>
<xs:enumeration value="gullysump"/>
<xs:enumeration value="gullytrap"/>
<xs:enumeration value="roofdrain"/>
<xs:enumeration value="wastedisposalunit"/>
<xs:enumeration value="wastetrap"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWindowPanelOperationEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="sidehungrighthand"/>
<xs:enumeration value="sidehunglefthand"/>
<xs:enumeration value="tiltandturnrighthand"/>
<xs:enumeration value="tiltandturnlefthand"/>
<xs:enumeration value="tophung"/>
<xs:enumeration value="bottomhung"/>
<xs:enumeration value="pivothorizontal"/>
<xs:enumeration value="pivotvertical"/>
<xs:enumeration value="slidinghorizontal"/>
<xs:enumeration value="slidingvertical"/>
<xs:enumeration value="removablecasement"/>
<xs:enumeration value="fixedcasement"/>
<xs:enumeration value="otheroperation"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWindowPanelPositionEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="left"/>
<xs:enumeration value="middle"/>
<xs:enumeration value="right"/>
<xs:enumeration value="bottom"/>
<xs:enumeration value="top"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWindowStyleConstructionEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="aluminium"/>
<xs:enumeration value="high_grade_steel"/>
<xs:enumeration value="steel"/>
<xs:enumeration value="wood"/>
<xs:enumeration value="aluminium_wood"/>
<xs:enumeration value="plastic"/>
<xs:enumeration value="other_construction"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWindowStyleOperationEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="single_panel"/>
<xs:enumeration value="double_panel_vertical"/>
<xs:enumeration value="double_panel_horizontal"/>
<xs:enumeration value="triple_panel_vertical"/>
<xs:enumeration value="triple_panel_bottom"/>
<xs:enumeration value="triple_panel_top"/>
<xs:enumeration value="triple_panel_left"/>
<xs:enumeration value="triple_panel_right"/>
<xs:enumeration value="triple_panel_horizontal"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWindowTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="window"/>
<xs:enumeration value="skylight"/>
<xs:enumeration value="lightdome"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWindowTypePartitioningEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="single_panel"/>
<xs:enumeration value="double_panel_vertical"/>
<xs:enumeration value="double_panel_horizontal"/>
<xs:enumeration value="triple_panel_vertical"/>
<xs:enumeration value="triple_panel_bottom"/>
<xs:enumeration value="triple_panel_top"/>
<xs:enumeration value="triple_panel_left"/>
<xs:enumeration value="triple_panel_right"/>
<xs:enumeration value="triple_panel_horizontal"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWorkCalendarTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="firstshift"/>
<xs:enumeration value="secondshift"/>
<xs:enumeration value="thirdshift"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWorkPlanTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="actual"/>
<xs:enumeration value="baseline"/>
<xs:enumeration value="planned"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcWorkScheduleTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="actual"/>
<xs:enumeration value="baseline"/>
<xs:enumeration value="planned"/>
<xs:enumeration value="userdefined"/>
<xs:enumeration value="notdefined"/>
</xs:restriction>
</xs:simpleType>
<!-- simple type declarations (for TYPE defined data type definitions) -->
<xs:simpleType name="IfcAbsorbedDoseMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcAccelerationMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcAmountOfSubstanceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcAngularVelocityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:complexType name="IfcArcIndex">
<xs:simpleContent>
<xs:extension base="ifc:List-IfcArcIndex">
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPositiveInteger"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="List-IfcArcIndex">
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcPositiveInteger"/>
</xs:simpleType>
<xs:minLength value="3"/>
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcAreaDensityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcAreaMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:complexType name="IfcBinary">
<xs:simpleContent>
<xs:extension base="ifc:hexBinary">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="IfcBoolean">
<xs:restriction base="xs:boolean"/>
</xs:simpleType>
<xs:simpleType name="IfcBoxAlignment">
<xs:restriction base="ifc:IfcLabel"/>
</xs:simpleType>
<xs:simpleType name="IfcCardinalPointReference">
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:complexType name="IfcComplexNumber">
<xs:simpleContent>
<xs:extension base="ifc:List-IfcComplexNumber">
<xs:attribute ref="ifc:itemType" fixed="xs:double"/>
<xs:attribute ref="ifc:cType" fixed="array"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="List-IfcComplexNumber">
<xs:restriction>
<xs:simpleType>
<xs:list itemType="xs:double"/>
</xs:simpleType>
<xs:minLength value="2"/>
<xs:maxLength value="2"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="IfcCompoundPlaneAngleMeasure">
<xs:simpleContent>
<xs:extension base="ifc:List-IfcCompoundPlaneAngleMeasure">
<xs:attribute ref="ifc:itemType" fixed="xs:long"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="List-IfcCompoundPlaneAngleMeasure">
<xs:restriction>
<xs:simpleType>
<xs:list itemType="xs:long"/>
</xs:simpleType>
<xs:minLength value="3"/>
<xs:maxLength value="4"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcContextDependentMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcCountMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcCurvatureMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcDate">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcDateTime">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcDayInMonthNumber">
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:simpleType name="IfcDayInWeekNumber">
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:simpleType name="IfcDescriptiveMeasure">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcDimensionCount">
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:simpleType name="IfcDoseEquivalentMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcDuration">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcDynamicViscosityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcElectricCapacitanceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcElectricChargeMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcElectricConductanceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcElectricCurrentMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcElectricResistanceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcElectricVoltageMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcEnergyMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcFontStyle">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcFontVariant">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcFontWeight">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcForceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcFrequencyMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcGloballyUniqueId">
<xs:restriction base="xs:normalizedString">
<xs:minLength value="22"/>
<xs:maxLength value="22"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcHeatFluxDensityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcHeatingValueMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcIdentifier">
<xs:restriction base="xs:normalizedString">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcIlluminanceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcInductanceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcInteger">
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:simpleType name="IfcIntegerCountRateMeasure">
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:simpleType name="IfcIonConcentrationMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcIsothermalMoistureCapacityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcKinematicViscosityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcLabel">
<xs:restriction base="xs:normalizedString">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLanguageId">
<xs:restriction base="ifc:IfcIdentifier"/>
</xs:simpleType>
<xs:simpleType name="IfcLengthMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:complexType name="IfcLineIndex">
<xs:simpleContent>
<xs:extension base="ifc:List-IfcLineIndex">
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPositiveInteger"/>
<xs:attribute ref="ifc:cType" fixed="list"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="List-IfcLineIndex">
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcPositiveInteger"/>
</xs:simpleType>
<xs:minLength value="2"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLinearForceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcLinearMomentMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcLinearStiffnessMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcLinearVelocityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcLogical">
<xs:restriction base="ifc:logical"/>
</xs:simpleType>
<xs:simpleType name="IfcLuminousFluxMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcLuminousIntensityDistributionMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcLuminousIntensityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMagneticFluxDensityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMagneticFluxMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMassDensityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMassFlowRateMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMassMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMassPerLengthMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcModulusOfElasticityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcModulusOfLinearSubgradeReactionMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcModulusOfRotationalSubgradeReactionMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcModulusOfSubgradeReactionMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMoistureDiffusivityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMolecularWeightMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMomentOfInertiaMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMonetaryMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcMonthInYearNumber">
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:simpleType name="IfcNonNegativeLengthMeasure">
<xs:restriction base="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:simpleType name="IfcNormalisedRatioMeasure">
<xs:restriction base="ifc:IfcRatioMeasure"/>
</xs:simpleType>
<xs:simpleType name="IfcNumericMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcPHMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcParameterValue">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcPlanarForceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcPlaneAngleMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcPositiveInteger">
<xs:restriction base="ifc:IfcInteger"/>
</xs:simpleType>
<xs:simpleType name="IfcPositiveLengthMeasure">
<xs:restriction base="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:simpleType name="IfcPositivePlaneAngleMeasure">
<xs:restriction base="ifc:IfcPlaneAngleMeasure"/>
</xs:simpleType>
<xs:simpleType name="IfcPositiveRatioMeasure">
<xs:restriction base="ifc:IfcRatioMeasure"/>
</xs:simpleType>
<xs:simpleType name="IfcPowerMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcPresentableText">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcPressureMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:complexType name="IfcPropertySetDefinitionSet">
<xs:sequence>
<xs:element ref="ifc:IfcPropertySetDefinition" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPropertySetDefinition"/>
<xs:attribute ref="ifc:cType" fixed="set"/>
<xs:attribute ref="ifc:arraySize" use="optional"/>
</xs:complexType>
<xs:simpleType name="IfcRadioActivityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcRatioMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcReal">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcRotationalFrequencyMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcRotationalMassMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcRotationalStiffnessMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcSectionModulusMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcSectionalAreaIntegralMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcShearModulusMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcSolidAngleMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcSoundPowerLevelMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcSoundPowerMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcSoundPressureLevelMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcSoundPressureMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcSpecificHeatCapacityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcSpecularExponent">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcSpecularRoughness">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcTemperatureGradientMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcTemperatureRateOfChangeMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcText">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcTextAlignment">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcTextDecoration">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcTextFontName">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcTextTransformation">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcThermalAdmittanceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcThermalConductivityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcThermalExpansionCoefficientMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcThermalResistanceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcThermalTransmittanceMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcThermodynamicTemperatureMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcTime">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcTimeMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcTimeStamp">
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:simpleType name="IfcTorqueMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcURIReference">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcVaporPermeabilityMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcVolumeMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcVolumetricFlowRateMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcWarpingConstantMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcWarpingMomentMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<!-- base entity and entity attribute declaration (for embeded base schema definitions) -->
<xs:element name="Entity" type="ifc:Entity" abstract="true" nillable="true"/>
<xs:complexType name="Entity" abstract="true">
<xs:attribute name="href" type="xs:anyURI" use="optional"/>
<xs:attribute name="ref" type="xs:IDREF" use="optional"/>
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:complexType>
<!-- base global attribute declaration (for embeded base schema definitions) -->
<xs:attributeGroup name="instanceAttributes">
<xs:attribute name="id" type="xs:ID" use="optional"/>
<xs:attribute name="path" type="xs:NMTOKENS" use="optional"/>
<xs:attribute name="pos" use="optional">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="xs:integer"/>
</xs:simpleType>
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attribute name="arraySize">
<xs:simpleType>
<xs:restriction>
<xs:simpleType>
<xs:list itemType="xs:integer"/>
</xs:simpleType>
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="itemType">
<xs:simpleType>
<xs:list itemType="xs:QName"/>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="cType">
<xs:simpleType>
<xs:list itemType="ifc:aggregateType"/>
</xs:simpleType>
</xs:attribute>
<xs:simpleType name="aggregateType">
<xs:restriction base="xs:normalizedString">
<xs:enumeration value="array"/>
<xs:enumeration value="list"/>
<xs:enumeration value="set"/>
<xs:enumeration value="bag"/>
<xs:enumeration value="array-unique"/>
<xs:enumeration value="array-optional"/>
<xs:enumeration value="array-optional-unique"/>
<xs:enumeration value="list-unique"/>
</xs:restriction>
</xs:simpleType>
<!-- base global simple type declaration (for embeded base schema definitions) -->
<xs:complexType name="hexBinary">
<xs:simpleContent>
<xs:extension base="xs:hexBinary">
<xs:attribute name="extraBits" type="xs:integer" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="logical">
<xs:restriction base="xs:normalizedString">
<xs:enumeration value="false"/>
<xs:enumeration value="true"/>
<xs:enumeration value="unknown"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Seq-IfcPositiveInteger">
<xs:restriction>
<xs:simpleType>
<xs:list itemType="ifc:IfcPositiveInteger"/>
</xs:simpleType>
<xs:minLength value="3"/>
</xs:restriction>
</xs:simpleType>
<!-- base global wrapper declaration for atomic simple types (for embeded base schema definitions) -->
<xs:element name="IfcAbsorbedDoseMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcAbsorbedDoseMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcAccelerationMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcAccelerationMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcAmountOfSubstanceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcAmountOfSubstanceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcAngularVelocityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcAngularVelocityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcArcIndex-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcArcIndex">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcAreaDensityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcAreaDensityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcAreaMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcAreaMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcBinary-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcBinary">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcBoolean-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcBoolean">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcComplexNumber-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcComplexNumber">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcCompoundPlaneAngleMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcCompoundPlaneAngleMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcContextDependentMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcContextDependentMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcCountMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcCountMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcCurvatureMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcCurvatureMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcDate-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcDate">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcDateTime-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcDateTime">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcDescriptiveMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcDescriptiveMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcDoseEquivalentMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcDoseEquivalentMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcDuration-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcDuration">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcDynamicViscosityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcDynamicViscosityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcElectricCapacitanceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcElectricCapacitanceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcElectricChargeMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcElectricChargeMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcElectricConductanceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcElectricConductanceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcElectricCurrentMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcElectricCurrentMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcElectricResistanceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcElectricResistanceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcElectricVoltageMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcElectricVoltageMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcEnergyMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcEnergyMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcForceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcForceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcFrequencyMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcFrequencyMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcHeatFluxDensityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcHeatFluxDensityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcHeatingValueMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcHeatingValueMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcIdentifier-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcIdentifier">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcIlluminanceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcIlluminanceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcInductanceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcInductanceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcInteger-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcInteger">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcIntegerCountRateMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcIntegerCountRateMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcIonConcentrationMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcIonConcentrationMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcIsothermalMoistureCapacityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcIsothermalMoistureCapacityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcKinematicViscosityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcKinematicViscosityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLabel-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLabel">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLengthMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLengthMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLineIndex-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLineIndex">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLinearForceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLinearForceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLinearMomentMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLinearMomentMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLinearStiffnessMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLinearStiffnessMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLinearVelocityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLinearVelocityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLogical-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLogical">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLuminousFluxMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLuminousFluxMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLuminousIntensityDistributionMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLuminousIntensityDistributionMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcLuminousIntensityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcLuminousIntensityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcMagneticFluxDensityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcMagneticFluxDensityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcMagneticFluxMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcMagneticFluxMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcMassDensityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcMassDensityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcMassFlowRateMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcMassFlowRateMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcMassMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcMassMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcMassPerLengthMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcMassPerLengthMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcModulusOfElasticityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcModulusOfElasticityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcModulusOfLinearSubgradeReactionMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcModulusOfLinearSubgradeReactionMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcModulusOfRotationalSubgradeReactionMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcModulusOfRotationalSubgradeReactionMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcModulusOfSubgradeReactionMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcModulusOfSubgradeReactionMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcMoistureDiffusivityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcMoistureDiffusivityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcMolecularWeightMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcMolecularWeightMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcMomentOfInertiaMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcMomentOfInertiaMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcMonetaryMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcMonetaryMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcNonNegativeLengthMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcNonNegativeLengthMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcNormalisedRatioMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcNormalisedRatioMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcNullStyle-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcNullStyle">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcNumericMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcNumericMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcPHMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcPHMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcParameterValue-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcParameterValue">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcPlanarForceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcPlanarForceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcPlaneAngleMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcPlaneAngleMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcPositiveInteger-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcPositiveInteger">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcPositiveLengthMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcPositiveLengthMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcPositivePlaneAngleMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcPositivePlaneAngleMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcPositiveRatioMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcPositiveRatioMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcPowerMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcPowerMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcPressureMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcPressureMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcPropertySetDefinitionSet-wrapper" nillable="true">
<xs:complexType>
<xs:complexContent>
<xs:extension base="ifc:IfcPropertySetDefinitionSet">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcRadioActivityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcRadioActivityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcRatioMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcRatioMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcReal-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcReal">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcRotationalFrequencyMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcRotationalFrequencyMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcRotationalMassMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcRotationalMassMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcRotationalStiffnessMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcRotationalStiffnessMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcSectionModulusMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcSectionModulusMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcSectionalAreaIntegralMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcSectionalAreaIntegralMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcShearModulusMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcShearModulusMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcSolidAngleMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcSolidAngleMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcSoundPowerLevelMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcSoundPowerLevelMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcSoundPowerMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcSoundPowerMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcSoundPressureLevelMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcSoundPressureLevelMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcSoundPressureMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcSoundPressureMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcSpecificHeatCapacityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcSpecificHeatCapacityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcSpecularExponent-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcSpecularExponent">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcSpecularRoughness-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcSpecularRoughness">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcTemperatureGradientMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcTemperatureGradientMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcTemperatureRateOfChangeMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcTemperatureRateOfChangeMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcText-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcText">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcTextFontName-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcTextFontName">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcThermalAdmittanceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcThermalAdmittanceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcThermalConductivityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcThermalConductivityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcThermalExpansionCoefficientMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcThermalExpansionCoefficientMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcThermalResistanceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcThermalResistanceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcThermalTransmittanceMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcThermalTransmittanceMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcThermodynamicTemperatureMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcThermodynamicTemperatureMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcTime-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcTime">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcTimeMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcTimeMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcTimeStamp-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcTimeStamp">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcTorqueMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcTorqueMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcVaporPermeabilityMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcVaporPermeabilityMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcVolumeMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcVolumeMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcVolumetricFlowRateMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcVolumetricFlowRateMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcWarpingConstantMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcWarpingConstantMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="IfcWarpingMomentMeasure-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="ifc:IfcWarpingMomentMeasure">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>