<?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/ifcXML/MVD4/SPARKie" targetNamespace="http://www.buildingsmart-tech.org/ifcXML/MVD4/SPARKie" elementFormDefault="qualified" attributeFormDefault="unqualified" >
<!-- created with IFCDOC 5.6 at buildingsmart-tech.org -->
<!-- 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="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: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: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="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: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:sequence>
<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="ApplicableDate" type="ifc:IfcDate" use="optional"/>
<xs:attribute name="FixedUntilDate" type="ifc:IfcDate" 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: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="IfcBeam" type="ifc:IfcBeam" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcBeam">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement"/>
</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="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="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: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: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: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: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: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: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="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="LocalOrigin" type="ifc:IfcCartesianPoint" nillable="true"/>
</xs:sequence>
</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: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="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:sequence>
<xs:attribute name="Source" type="ifc:IfcLabel" use="optional"/>
<xs:attribute name="Name" type="ifc:IfcLabel" 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="ReferencedSource" nillable="true" minOccurs="0">
<xs:complexType>
<xs:group ref="ifc:IfcClassificationReferenceSelect"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</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="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="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: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:extension>
</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: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="IfcConstructionEquipmentResource" type="ifc:IfcConstructionEquipmentResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
<xs:complexType name="IfcConstructionEquipmentResource">
<xs:complexContent>
<xs:extension base="ifc:IfcConstructionResource"/>
</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="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="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: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:sequence>
</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: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="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:sequence>
</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: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="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="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="IfcCurveStyle" type="ifc:IfcCurveStyle" substitutionGroup="ifc:IfcPresentationStyle" nillable="true"/>
<xs:complexType name="IfcCurveStyle">
<xs:complexContent>
<xs:extension base="ifc:IfcPresentationStyle"/>
</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: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: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="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: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: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: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: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: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: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: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="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: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="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: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="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: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="Identification" type="ifc:IfcIdentifier" use="optional"/>
</xs:extension>
</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="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: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="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: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="IfcFlowMeter" type="ifc:IfcFlowMeter" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
<xs:complexType name="IfcFlowMeter">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowController"/>
</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="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:sequence>
<xs:attribute name="CoordinateSpaceDimension" type="ifc:IfcDimensionCount" 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: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: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: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="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: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="IfcLamp" type="ifc:IfcLamp" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcLamp">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal"/>
</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="IfcLightFixture" type="ifc:IfcLightFixture" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
<xs:complexType name="IfcLightFixture">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowTerminal"/>
</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="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: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="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: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="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: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:sequence>
</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: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="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="IfcMember" type="ifc:IfcMember" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcMember">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement"/>
</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: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: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="IfcOccupant" type="ifc:IfcOccupant" substitutionGroup="ifc:IfcActor" nillable="true"/>
<xs:complexType name="IfcOccupant">
<xs:complexContent>
<xs:extension base="ifc:IfcActor"/>
</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:extension>
</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: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:sequence>
<xs:attribute name="State" type="ifc:IfcStateEnum" use="optional"/>
<xs:attribute name="ChangeAction" type="ifc:IfcChangeActionEnum" use="optional"/>
<xs:attribute name="CreationDate" type="ifc:IfcTimeStamp" use="optional"/>
</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: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: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:sequence>
</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: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: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="IfcPlate" type="ifc:IfcPlate" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcPlate">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement"/>
</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="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="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="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: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: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: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: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: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: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="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: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: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="IfcPropertyEnumeratedValue" type="ifc:IfcPropertyEnumeratedValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
<xs:complexType name="IfcPropertyEnumeratedValue">
<xs:complexContent>
<xs:extension base="ifc:IfcSimpleProperty"/>
</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: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: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="IfcPropertySingleValue" type="ifc:IfcPropertySingleValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
<xs:complexType name="IfcPropertySingleValue">
<xs:complexContent>
<xs:extension base="ifc:IfcSimpleProperty"/>
</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: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: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="IfcPump" type="ifc:IfcPump" substitutionGroup="ifc:IfcFlowMovingDevice" nillable="true"/>
<xs:complexType name="IfcPump">
<xs:complexContent>
<xs:extension base="ifc:IfcFlowMovingDevice"/>
</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="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="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="RelatingObject" type="ifc:IfcObjectDefinition" nillable="true"/>
<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: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: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="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: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="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="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="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="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:element name="RelatingStructure" type="ifc:IfcSpatialElement" nillable="true"/>
</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="RelatingContext" type="ifc:IfcContext" nillable="true"/>
<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:element name="RelatingObject" type="ifc:IfcObject" nillable="true"/>
</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="RelatedObjects" type="ifc:IfcObjectDefinition" nillable="true" maxOccurs="1"/>
<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="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="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:element name="RelatingType" type="ifc:IfcTypeObject" 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:sequence>
</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="RelatingObject" type="ifc:IfcObjectDefinition" nillable="true"/>
<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="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: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="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: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="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: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="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: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="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="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: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="IfcSolarDevice" type="ifc:IfcSolarDevice" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcSolarDevice">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice"/>
</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: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: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: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: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: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="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: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: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="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="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="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: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: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: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: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="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: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="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: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="Recurrance" 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: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="ElectronicMailAddresses" 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="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: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="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:attribute name="Name" type="ifc:IfcLabel" 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: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="IfcTransformer" type="ifc:IfcTransformer" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcTransformer">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice"/>
</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: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="IfcTriangulatedFaceSet" type="ifc:IfcTriangulatedFaceSet" substitutionGroup="ifc:IfcTessellatedFaceSet" nillable="true"/>
<xs:complexType name="IfcTriangulatedFaceSet">
<xs:complexContent>
<xs:extension base="ifc:IfcTessellatedFaceSet"/>
</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: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: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: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: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="IfcUnitaryEquipment" type="ifc:IfcUnitaryEquipment" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
<xs:complexType name="IfcUnitaryEquipment">
<xs:complexContent>
<xs:extension base="ifc:IfcEnergyConversionDevice"/>
</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="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="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="IfcWall" type="ifc:IfcWall" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
<xs:complexType name="IfcWall">
<xs:complexContent>
<xs:extension base="ifc:IfcBuildingElement"/>
</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="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:sequence>
</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:attribute name="CreationDate" type="ifc:IfcDateTime" use="optional"/>
<xs:attribute name="StartTime" 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: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>
<!-- 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:IfcAreaMeasure-wrapper"/>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcCountMeasure-wrapper"/>
<xs:element ref="ifc:IfcDate-wrapper"/>
<xs:element ref="ifc:IfcDateTime-wrapper"/>
<xs:element ref="ifc:IfcDuration-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:IfcFrequencyMeasure-wrapper"/>
<xs:element ref="ifc:IfcIdentifier-wrapper"/>
<xs:element ref="ifc:IfcIlluminanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcInteger-wrapper"/>
<xs:element ref="ifc:IfcLabel-wrapper"/>
<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcLogical-wrapper"/>
<xs:element ref="ifc:IfcMassMeasure-wrapper"/>
<xs:element ref="ifc:IfcMeasureWithUnit"/>
<xs:element ref="ifc:IfcMonetaryMeasure-wrapper"/>
<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcPlanarForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcPowerMeasure-wrapper"/>
<xs:element ref="ifc:IfcReal-wrapper"/>
<xs:element ref="ifc:IfcText-wrapper"/>
<xs:element ref="ifc:IfcThermalConductivityMeasure-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:IfcVolumeMeasure-wrapper"/>
</xs:choice>
</xs:group>
<xs:group name="IfcAxis2Placement">
<xs:choice>
<xs:element ref="ifc:IfcAxis2Placement3D"/>
</xs:choice>
</xs:group>
<xs:group name="IfcBooleanOperand">
<xs:choice>
<xs:element ref="ifc:IfcBooleanResult"/>
<xs:element ref="ifc:IfcSolidModel"/>
</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="IfcCsgSelect">
<xs:choice>
<xs:element ref="ifc:IfcBooleanResult"/>
</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="IfcFillStyleSelect">
<xs:choice>
<xs:element ref="ifc:IfcColourSpecification"/>
</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="IfcLayeredItem">
<xs:choice>
<xs:element ref="ifc:IfcRepresentation"/>
<xs:element ref="ifc:IfcRepresentationItem"/>
</xs:choice>
</xs:group>
<xs:group name="IfcMaterialSelect">
<xs:choice>
<xs:element ref="ifc:IfcMaterialDefinition"/>
<xs:element ref="ifc:IfcMaterialUsageDefinition"/>
</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:IfcTimeSeries"/>
</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="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: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="IfcShell">
<xs:choice>
<xs:element ref="ifc:IfcClosedShell"/>
</xs:choice>
</xs:group>
<xs:group name="IfcStyleAssignmentSelect">
<xs:choice>
<xs:element ref="ifc:IfcPresentationStyle"/>
</xs:choice>
</xs:group>
<xs:group name="IfcSurfaceStyleElementSelect">
<xs:choice>
</xs:choice>
</xs:group>
<xs:group name="IfcUnit">
<xs:choice>
<xs:element ref="ifc:IfcNamedUnit"/>
</xs:choice>
</xs:group>
<xs:group name="IfcValue">
<xs:choice>
<xs:element ref="ifc:IfcAreaMeasure-wrapper"/>
<xs:element ref="ifc:IfcBoolean-wrapper"/>
<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcCountMeasure-wrapper"/>
<xs:element ref="ifc:IfcDate-wrapper"/>
<xs:element ref="ifc:IfcDateTime-wrapper"/>
<xs:element ref="ifc:IfcDuration-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:IfcFrequencyMeasure-wrapper"/>
<xs:element ref="ifc:IfcIdentifier-wrapper"/>
<xs:element ref="ifc:IfcIlluminanceMeasure-wrapper"/>
<xs:element ref="ifc:IfcInteger-wrapper"/>
<xs:element ref="ifc:IfcLabel-wrapper"/>
<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcLogical-wrapper"/>
<xs:element ref="ifc:IfcMassMeasure-wrapper"/>
<xs:element ref="ifc:IfcMonetaryMeasure-wrapper"/>
<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcPlanarForceMeasure-wrapper"/>
<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
<xs:element ref="ifc:IfcPowerMeasure-wrapper"/>
<xs:element ref="ifc:IfcReal-wrapper"/>
<xs:element ref="ifc:IfcText-wrapper"/>
<xs:element ref="ifc:IfcThermalConductivityMeasure-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:IfcVolumeMeasure-wrapper"/>
</xs:choice>
</xs:group>
<!-- enumeration type declarations (for ENUMERATION data type definitions) -->
<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="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="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="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="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="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="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="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="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="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="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="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="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="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="IfcProfileTypeEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="curve"/>
<xs:enumeration value="area"/>
</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="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="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="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="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="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="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="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="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="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="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="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="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>
<!-- simple type declarations (for TYPE defined data type definitions) -->
<xs:simpleType name="IfcAreaMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcBoolean">
<xs:restriction base="xs:boolean"/>
</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="IfcCountMeasure">
<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="IfcDimensionCount">
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:simpleType name="IfcDuration">
<xs:restriction base="xs:normalizedString"/>
</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="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="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="IfcInteger">
<xs:restriction base="xs:long"/>
</xs:simpleType>
<xs:simpleType name="IfcLabel">
<xs:restriction base="xs:normalizedString">
<xs:maxLength value="255"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="IfcLengthMeasure">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcLogical">
<xs:restriction base="ifc:logical"/>
</xs:simpleType>
<xs:simpleType name="IfcMassMeasure">
<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="IfcNormalisedRatioMeasure">
<xs:restriction base="ifc:IfcStrippedOptional"/>
</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="IfcPositiveLengthMeasure">
<xs:restriction base="ifc:IfcLengthMeasure"/>
</xs:simpleType>
<xs:simpleType name="IfcPositiveRatioMeasure">
<xs:restriction base="ifc:IfcStrippedOptional"/>
</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="IfcReal">
<xs:restriction base="xs:double"/>
</xs:simpleType>
<xs:simpleType name="IfcText">
<xs:restriction base="xs:normalizedString"/>
</xs:simpleType>
<xs:simpleType name="IfcThermalConductivityMeasure">
<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="IfcVolumeMeasure">
<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>
<!-- base global wrapper declaration for atomic simple types (for embeded base schema definitions) -->
<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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="double-wrapper" nillable="true">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:double">
<xs:attributeGroup ref="ifc:instanceAttributes"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>