Schema Name: IFC2X2_FINAL.xsd
Target Namespace: http://niem.gov/niem/external/iai-ifc/RC2/ifc/dhs-gmo/1.0.0
Documentation:
DHS Changes: 2006-10-05 Profiled target xmlns:ifc namespace: was http://www.iai-international.org/ifcXML2/RC2/IFC2X2_FINAL Profiled xmlns:ex namespace; was urn:iso.org:standard:10303:part(28):version(2):xmlschema:common
Collapse XSD Schema Code:

<!-- created with EXPTOOL V20050202 (perl 5 program) written by Thomas Liebich (TLConsulting) liebich@uumail.de -->
<!-- configuration options used to create the following XML schema definitions following ISO 10303-28(2) -->
<!-- global options within the <option> scoping element -->
<!-- + <inheritance> = "true" -->
<!-- + <exp-type> = "unspecified" -->
<!-- + <exp-attribute> = "double-tag" -->
<!-- + <flatten> = "false" -->
<!-- + <sparse> = "true" -->
<!-- + <tagless> = "false" -->
<!-- + <naming-convention> = "preserve-case" -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
  targetNamespace="http://niem.gov/niem/external/iai-ifc/RC2/ifc/dhs-gmo/1.0.0"
  xmlns:ifc="http://niem.gov/niem/external/iai-ifc/RC2/ifc/dhs-gmo/1.0.0" 
  xmlns:ex="http://niem.gov/niem/external/iso-10303-step/2/ex/dhs-gmo/1.0.0"
  xmlns:xlink="http://www.w3.org/1999/xlink" 
  elementFormDefault="qualified" 
  attributeFormDefault="unqualified">
	<xs:annotation>
		<xs:documentation>
		DHS Changes:
			2006-10-05
				Profiled target xmlns:ifc namespace: was http://www.iai-international.org/ifcXML2/RC2/IFC2X2_FINAL
				Profiled  xmlns:ex namespace; was urn:iso.org:standard:10303:part(28):version(2):xmlschema:common 	
		</xs:documentation>
	</xs:annotation>
	<xs:import namespace="http://niem.gov/niem/external/iso-10303-step/2/ex/dhs-gmo/1.0.0" 
	schemaLocation="../../../../iso-10303-step/2/dhs-gmo/1.0.0/ex.xsd"/>

	<!-- root element declaration (for SCHEMA definitions) -->
	<xs:element name="uos" type="ifc:uos" substitutionGroup="ex:uos"/>
	<xs:complexType name="uos">
		<xs:complexContent>
			<xs:restriction base="ex:uos">
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="ex:Entity"/>
				</xs:choice>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<!-- element and complex type declarations (for ENTITY definitions) -->
	<xs:element name="Ifc2DCompositeCurve" type="ifc:Ifc2DCompositeCurve" substitutionGroup="ifc:IfcCompositeCurve" nillable="true"/>
	<xs:complexType name="Ifc2DCompositeCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCompositeCurve"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcActionRequest" type="ifc:IfcActionRequest" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcActionRequest">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="RequestID" type="ifc:IfcIdentifier"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcActor" type="ifc:IfcActor" substitutionGroup="ifc:IfcObject" nillable="true"/>
	<xs:complexType name="IfcActor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObject">
				<xs:sequence>
					<xs:element name="TheActor">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcActorRole" type="ifc:IfcActorRole" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcActorRole">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Role" type="ifc:IfcRoleEnum"/>
					<xs:element name="UserDefinedRole" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcActuatorType" type="ifc:IfcActuatorType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcActuatorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcActuatorTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAddress" type="ifc:IfcAddress" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcAddress" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Purpose" type="ifc:IfcAddressTypeEnum" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="UserDefinedPurpose" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAirTerminalBoxType" type="ifc:IfcAirTerminalBoxType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcAirTerminalBoxType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcAirTerminalBoxTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAirTerminalType" type="ifc:IfcAirTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcAirTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcAirTerminalTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAirToAirHeatRecoveryType" type="ifc:IfcAirToAirHeatRecoveryType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcAirToAirHeatRecoveryType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcAirToAirHeatRecoveryTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlarmType" type="ifc:IfcAlarmType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcAlarmType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcAlarmTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAngularDimension" type="ifc:IfcAngularDimension" substitutionGroup="ifc:IfcDimensionCurveDirectedCallout" nillable="true"/>
	<xs:complexType name="IfcAngularDimension">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDimensionCurveDirectedCallout"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAnnotation" type="ifc:IfcAnnotation" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcAnnotation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAnnotationCurveOccurrence" type="ifc:IfcAnnotationCurveOccurrence" substitutionGroup="ifc:IfcAnnotationOccurrence" nillable="true"/>
	<xs:complexType name="IfcAnnotationCurveOccurrence">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAnnotationOccurrence"/>
		</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="Boundaries">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCurve" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcCurve"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAnnotationFillAreaOccurrence" type="ifc:IfcAnnotationFillAreaOccurrence" substitutionGroup="ifc:IfcAnnotationOccurrence" nillable="true"/>
	<xs:complexType name="IfcAnnotationFillAreaOccurrence">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAnnotationOccurrence">
				<xs:sequence>
					<xs:element name="FillStyleTarget">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAnnotationOccurrence" type="ifc:IfcAnnotationOccurrence" abstract="true" substitutionGroup="ifc:IfcStyledItem" nillable="true"/>
	<xs:complexType name="IfcAnnotationOccurrence" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStyledItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAnnotationSurfaceOccurrence" type="ifc:IfcAnnotationSurfaceOccurrence" substitutionGroup="ifc:IfcAnnotationOccurrence" nillable="true"/>
	<xs:complexType name="IfcAnnotationSurfaceOccurrence">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAnnotationOccurrence"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAnnotationSymbolOccurrence" type="ifc:IfcAnnotationSymbolOccurrence" substitutionGroup="ifc:IfcAnnotationOccurrence" nillable="true"/>
	<xs:complexType name="IfcAnnotationSymbolOccurrence">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAnnotationOccurrence"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAnnotationTextOccurrence" type="ifc:IfcAnnotationTextOccurrence" substitutionGroup="ifc:IfcAnnotationOccurrence" nillable="true"/>
	<xs:complexType name="IfcAnnotationTextOccurrence">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAnnotationOccurrence"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcApplication" type="ifc:IfcApplication" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcApplication">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ApplicationDeveloper">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcOrganization"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Version" type="ifc:IfcLabel"/>
					<xs:element name="ApplicationFullName" type="ifc:IfcLabel"/>
					<xs:element name="ApplicationIdentifier" type="ifc:IfcIdentifier"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAppliedValue" type="ifc:IfcAppliedValue" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcAppliedValue" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="AppliedValue" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcAppliedValueSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="UnitBasis" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMeasureWithUnit"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ApplicableDate" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="FixedUntilDate" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAppliedValueRelationship" type="ifc:IfcAppliedValueRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcAppliedValueRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ComponentOfTotal">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAppliedValue"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Components">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcAppliedValue" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcAppliedValue"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ArithmeticOperator" type="ifc:IfcArithmeticOperatorEnum"/>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcApproval" type="ifc:IfcApproval" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcApproval">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="ApprovalDateTime">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ApprovalStatus" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="ApprovalLevel" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="ApprovalQualifier" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="Identifier" type="ifc:IfcIdentifier"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcApprovalActorRelationship" type="ifc:IfcApprovalActorRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcApprovalActorRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Actor">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Approval">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcApproval"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Role">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcActorRole"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcApprovalPropertyRelationship" type="ifc:IfcApprovalPropertyRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcApprovalPropertyRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ApprovedProperties">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcProperty"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Approval">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcApproval"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcApprovalRelationship" type="ifc:IfcApprovalRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcApprovalRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="RelatedApproval">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcApproval"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatingApproval">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcApproval"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="Name" type="ifc:IfcLabel"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcArbitraryClosedProfileDef" type="ifc:IfcArbitraryClosedProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcArbitraryClosedProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="OuterCurve">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcArbitraryOpenProfileDef" type="ifc:IfcArbitraryOpenProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcArbitraryOpenProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="Curve">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcBoundedCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcArbitraryProfileDefWithVoids" type="ifc:IfcArbitraryProfileDefWithVoids" substitutionGroup="ifc:IfcArbitraryClosedProfileDef" nillable="true"/>
	<xs:complexType name="IfcArbitraryProfileDefWithVoids">
		<xs:complexContent>
			<xs:extension base="ifc:IfcArbitraryClosedProfileDef">
				<xs:sequence>
					<xs:element name="InnerCurves">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCurve" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcCurve"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAsset" type="ifc:IfcAsset" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcAsset">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup">
				<xs:sequence>
					<xs:element name="AssetID" type="ifc:IfcIdentifier"/>
					<xs:element name="OriginalValue">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCostValue"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurrentValue">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCostValue"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="TotalReplacementCost">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCostValue"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Owner">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="User">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ResponsiblePerson">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPerson"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="IncorporationDate">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCalendarDate"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="DepreciatedValue">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCostValue"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAsymmetricIShapeProfileDef" type="ifc:IfcAsymmetricIShapeProfileDef" substitutionGroup="ifc:IfcIShapeProfileDef" nillable="true"/>
	<xs:complexType name="IfcAsymmetricIShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcIShapeProfileDef">
				<xs:sequence>
					<xs:element name="TopFlangeWidth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="TopFlangeThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TopFlangeFilletRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CentreOfGravityInY" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAxis1Placement" type="ifc:IfcAxis1Placement" substitutionGroup="ifc:IfcPlacement" nillable="true"/>
	<xs:complexType name="IfcAxis1Placement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPlacement">
				<xs:sequence>
					<xs:element name="Axis" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAxis2Placement2D" type="ifc:IfcAxis2Placement2D" substitutionGroup="ifc:IfcPlacement" nillable="true"/>
	<xs:complexType name="IfcAxis2Placement2D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPlacement">
				<xs:sequence>
					<xs:element name="RefDirection" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAxis2Placement3D" type="ifc:IfcAxis2Placement3D" substitutionGroup="ifc:IfcPlacement" nillable="true"/>
	<xs:complexType name="IfcAxis2Placement3D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPlacement">
				<xs:sequence>
					<xs:element name="Axis" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RefDirection" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBSplineCurve" type="ifc:IfcBSplineCurve" abstract="true" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
	<xs:complexType name="IfcBSplineCurve" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedCurve">
				<xs:sequence>
					<xs:element name="Degree" type="xs:long"/>
					<xs:element name="ControlPointsList">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCartesianPoint" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcCartesianPoint"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurveForm" type="ifc:IfcBSplineCurveForm"/>
					<xs:element name="ClosedCurve" type="ex:logical"/>
					<xs:element name="SelfIntersect" type="ex:logical"/>
				</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="IfcBeamType" type="ifc:IfcBeamType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
	<xs:complexType name="IfcBeamType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcBeamTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBezierCurve" type="ifc:IfcBezierCurve" substitutionGroup="ifc:IfcBSplineCurve" nillable="true"/>
	<xs:complexType name="IfcBezierCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBSplineCurve"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoilerType" type="ifc:IfcBoilerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcBoilerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcBoilerTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBooleanClippingResult" type="ifc:IfcBooleanClippingResult" substitutionGroup="ifc:IfcBooleanResult" nillable="true"/>
	<xs:complexType name="IfcBooleanClippingResult">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBooleanResult"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBooleanResult" type="ifc:IfcBooleanResult" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcBooleanResult">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Operator" type="ifc:IfcBooleanOperator"/>
					<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:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryCondition" type="ifc:IfcBoundaryCondition" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcBoundaryCondition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryEdgeCondition" type="ifc:IfcBoundaryEdgeCondition" substitutionGroup="ifc:IfcBoundaryCondition" nillable="true"/>
	<xs:complexType name="IfcBoundaryEdgeCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundaryCondition">
				<xs:sequence>
					<xs:element name="LinearStiffnessByLengthX" type="ifc:IfcModulusOfLinearSubgradeReactionMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearStiffnessByLengthY" type="ifc:IfcModulusOfLinearSubgradeReactionMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearStiffnessByLengthZ" type="ifc:IfcModulusOfLinearSubgradeReactionMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RotationalStiffnessByLengthX" type="ifc:IfcModulusOfRotationalSubgradeReactionMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RotationalStiffnessByLengthY" type="ifc:IfcModulusOfRotationalSubgradeReactionMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RotationalStiffnessByLengthZ" type="ifc:IfcModulusOfRotationalSubgradeReactionMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryFaceCondition" type="ifc:IfcBoundaryFaceCondition" substitutionGroup="ifc:IfcBoundaryCondition" nillable="true"/>
	<xs:complexType name="IfcBoundaryFaceCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundaryCondition">
				<xs:sequence>
					<xs:element name="LinearStiffnessByAreaX" type="ifc:IfcModulusOfSubgradeReactionMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearStiffnessByAreaY" type="ifc:IfcModulusOfSubgradeReactionMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearStiffnessByAreaZ" type="ifc:IfcModulusOfSubgradeReactionMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryNodeCondition" type="ifc:IfcBoundaryNodeCondition" substitutionGroup="ifc:IfcBoundaryCondition" nillable="true"/>
	<xs:complexType name="IfcBoundaryNodeCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundaryCondition">
				<xs:sequence>
					<xs:element name="LinearStiffnessX" type="ifc:IfcLinearStiffnessMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearStiffnessY" type="ifc:IfcLinearStiffnessMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearStiffnessZ" type="ifc:IfcLinearStiffnessMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RotationalStiffnessX" type="ifc:IfcRotationalStiffnessMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RotationalStiffnessY" type="ifc:IfcRotationalStiffnessMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RotationalStiffnessZ" type="ifc:IfcRotationalStiffnessMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryNodeConditionWarping" type="ifc:IfcBoundaryNodeConditionWarping" substitutionGroup="ifc:IfcBoundaryNodeCondition" nillable="true"/>
	<xs:complexType name="IfcBoundaryNodeConditionWarping">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundaryNodeCondition">
				<xs:sequence>
					<xs:element name="WarpingStiffness" type="ifc:IfcWarpingMomentMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundedCurve" type="ifc:IfcBoundedCurve" abstract="true" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcBoundedCurve" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundedSurface" type="ifc:IfcBoundedSurface" substitutionGroup="ifc:IfcSurface" nillable="true"/>
	<xs:complexType name="IfcBoundedSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurface"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundingBox" type="ifc:IfcBoundingBox" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcBoundingBox">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Corner">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="XDim" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="YDim" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="ZDim" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoxedHalfSpace" type="ifc:IfcBoxedHalfSpace" substitutionGroup="ifc:IfcHalfSpaceSolid" nillable="true"/>
	<xs:complexType name="IfcBoxedHalfSpace">
		<xs:complexContent>
			<xs:extension base="ifc:IfcHalfSpaceSolid">
				<xs:sequence>
					<xs:element name="Enclosure">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcBoundingBox"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuilding" type="ifc:IfcBuilding" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
	<xs:complexType name="IfcBuilding">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialStructureElement">
				<xs:sequence>
					<xs:element name="ElevationOfRefHeight" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ElevationOfTerrain" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="BuildingAddress" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPostalAddress"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</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="IfcBuildingElementComponent" type="ifc:IfcBuildingElementComponent" abstract="true" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcBuildingElementComponent" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingElementComponentType" type="ifc:IfcBuildingElementComponentType" abstract="true" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
	<xs:complexType name="IfcBuildingElementComponentType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingElementPart" type="ifc:IfcBuildingElementPart" substitutionGroup="ifc:IfcBuildingElementComponent" nillable="true"/>
	<xs:complexType name="IfcBuildingElementPart">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementComponent"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingElementProxy" type="ifc:IfcBuildingElementProxy" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcBuildingElementProxy">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement">
				<xs:sequence>
					<xs:element name="CompositionType" type="ifc:IfcElementCompositionEnum" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingElementType" type="ifc:IfcBuildingElementType" abstract="true" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcBuildingElementType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingStorey" type="ifc:IfcBuildingStorey" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
	<xs:complexType name="IfcBuildingStorey">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialStructureElement">
				<xs:sequence>
					<xs:element name="Elevation" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCShapeProfileDef" type="ifc:IfcCShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcCShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="Depth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="Width" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="WallThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="Girth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="InternalFilletRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CentreOfGravityInX" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableCarrierFittingType" type="ifc:IfcCableCarrierFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
	<xs:complexType name="IfcCableCarrierFittingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFittingType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcCableCarrierFittingTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableCarrierSegmentType" type="ifc:IfcCableCarrierSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
	<xs:complexType name="IfcCableCarrierSegmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegmentType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcCableCarrierSegmentTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableSegmentType" type="ifc:IfcCableSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
	<xs:complexType name="IfcCableSegmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegmentType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcCableSegmentTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCalendarDate" type="ifc:IfcCalendarDate" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcCalendarDate">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="DayComponent" type="ifc:IfcDayInMonthNumber"/>
					<xs:element name="MonthComponent" type="ifc:IfcMonthInYearNumber"/>
					<xs:element name="YearComponent" type="ifc:IfcYearNumber"/>
				</xs:sequence>
			</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:sequence>
					<xs:element name="Coordinates">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLengthMeasure" maxOccurs="3"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLengthMeasure"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianTransformationOperator" type="ifc:IfcCartesianTransformationOperator" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcCartesianTransformationOperator" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Axis1" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Axis2" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="LocalOrigin">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Scale" type="xs:double" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianTransformationOperator2D" type="ifc:IfcCartesianTransformationOperator2D" substitutionGroup="ifc:IfcCartesianTransformationOperator" nillable="true"/>
	<xs:complexType name="IfcCartesianTransformationOperator2D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCartesianTransformationOperator"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianTransformationOperator2DnonUniform" type="ifc:IfcCartesianTransformationOperator2DnonUniform" substitutionGroup="ifc:IfcCartesianTransformationOperator2D" nillable="true"/>
	<xs:complexType name="IfcCartesianTransformationOperator2DnonUniform">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCartesianTransformationOperator2D">
				<xs:sequence>
					<xs:element name="Scale2" type="xs:double" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianTransformationOperator3D" type="ifc:IfcCartesianTransformationOperator3D" substitutionGroup="ifc:IfcCartesianTransformationOperator" nillable="true"/>
	<xs:complexType name="IfcCartesianTransformationOperator3D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCartesianTransformationOperator">
				<xs:sequence>
					<xs:element name="Axis3" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianTransformationOperator3DnonUniform" type="ifc:IfcCartesianTransformationOperator3DnonUniform" substitutionGroup="ifc:IfcCartesianTransformationOperator3D" nillable="true"/>
	<xs:complexType name="IfcCartesianTransformationOperator3DnonUniform">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCartesianTransformationOperator3D">
				<xs:sequence>
					<xs:element name="Scale2" type="xs:double" nillable="true" minOccurs="0"/>
					<xs:element name="Scale3" type="xs:double" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcChamferEdgeFeature" type="ifc:IfcChamferEdgeFeature" substitutionGroup="ifc:IfcEdgeFeature" nillable="true"/>
	<xs:complexType name="IfcChamferEdgeFeature">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEdgeFeature">
				<xs:sequence>
					<xs:element name="Width" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="Height" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcChillerType" type="ifc:IfcChillerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcChillerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcChillerTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCircle" type="ifc:IfcCircle" substitutionGroup="ifc:IfcConic" nillable="true"/>
	<xs:complexType name="IfcCircle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConic">
				<xs:sequence>
					<xs:element name="Radius" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCircleHollowProfileDef" type="ifc:IfcCircleHollowProfileDef" substitutionGroup="ifc:IfcCircleProfileDef" nillable="true"/>
	<xs:complexType name="IfcCircleHollowProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCircleProfileDef">
				<xs:sequence>
					<xs:element name="WallThickness" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCircleProfileDef" type="ifc:IfcCircleProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcCircleProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="Radius" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcClassification" type="ifc:IfcClassification" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcClassification">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Source" type="ifc:IfcLabel"/>
					<xs:element name="Edition" type="ifc:IfcLabel"/>
					<xs:element name="EditionDate" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCalendarDate"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Name" type="ifc:IfcLabel"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcClassificationItem" type="ifc:IfcClassificationItem" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcClassificationItem">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Notation">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcClassificationNotationFacet"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ItemOf" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcClassification"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Title" type="ifc:IfcLabel"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcClassificationItemRelationship" type="ifc:IfcClassificationItemRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcClassificationItemRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="RelatingItem">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcClassificationItem"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedItems">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcClassificationItem" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcClassificationItem"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcClassificationNotation" type="ifc:IfcClassificationNotation" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcClassificationNotation">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="NotationFacets">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcClassificationNotationFacet" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcClassificationNotationFacet"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcClassificationNotationFacet" type="ifc:IfcClassificationNotationFacet" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcClassificationNotationFacet">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="NotationValue" type="ifc:IfcLabel"/>
				</xs:sequence>
			</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:choice>
								<xs:element ref="ifc:IfcClassification"/>
							</xs:choice>
						</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="IfcCoilType" type="ifc:IfcCoilType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcCoilType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcCoilTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcColourRgb" type="ifc:IfcColourRgb" substitutionGroup="ifc:IfcColourSpecification" nillable="true"/>
	<xs:complexType name="IfcColourRgb">
		<xs:complexContent>
			<xs:extension base="ifc:IfcColourSpecification">
				<xs:sequence>
					<xs:element name="Red" type="ifc:IfcNormalisedRatioMeasure"/>
					<xs:element name="Green" type="ifc:IfcNormalisedRatioMeasure"/>
					<xs:element name="Blue" type="ifc:IfcNormalisedRatioMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcColourSpecification" type="ifc:IfcColourSpecification" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcColourSpecification" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcColumn" type="ifc:IfcColumn" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcColumn">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcColumnType" type="ifc:IfcColumnType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
	<xs:complexType name="IfcColumnType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcColumnTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcComplexProperty" type="ifc:IfcComplexProperty" substitutionGroup="ifc:IfcProperty" nillable="true"/>
	<xs:complexType name="IfcComplexProperty">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProperty">
				<xs:sequence>
					<xs:element name="UsageName" type="ifc:IfcIdentifier"/>
					<xs:element name="HasProperties">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcProperty"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCompositeCurve" type="ifc:IfcCompositeCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
	<xs:complexType name="IfcCompositeCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedCurve">
				<xs:sequence>
					<xs:element name="Segments">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCompositeCurveSegment" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcCompositeCurveSegment"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SelfIntersect" type="ex:logical"/>
				</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="Transition" type="ifc:IfcTransitionCode"/>
					<xs:element name="SameSense" type="xs:boolean"/>
					<xs:element name="ParentCurve">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCompositeProfileDef" type="ifc:IfcCompositeProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcCompositeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="Profiles">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProfileDef" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcProfileDef"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Label" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCompressorType" type="ifc:IfcCompressorType" substitutionGroup="ifc:IfcFlowMovingDeviceType" nillable="true"/>
	<xs:complexType name="IfcCompressorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowMovingDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcCompressorTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCondenserType" type="ifc:IfcCondenserType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcCondenserType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcCondenserTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCondition" type="ifc:IfcCondition" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConditionCriterion" type="ifc:IfcConditionCriterion" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcConditionCriterion">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="Criterion">
						<xs:complexType>
							<xs:group ref="ifc:IfcConditionCriterionSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CriterionDateTime">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConic" type="ifc:IfcConic" abstract="true" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcConic" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve">
				<xs:sequence>
					<xs:element name="Position">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectedFaceSet" type="ifc:IfcConnectedFaceSet" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcConnectedFaceSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem">
				<xs:sequence>
					<xs:element name="CfsFaces">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcFace" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcFace"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionCurveGeometry" type="ifc:IfcConnectionCurveGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
	<xs:complexType name="IfcConnectionCurveGeometry">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectionGeometry">
				<xs:sequence>
					<xs:element name="CurveOnRelatingElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcBoundedCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurveOnRelatedElement" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcBoundedCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionGeometry" type="ifc:IfcConnectionGeometry" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcConnectionGeometry" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionPointGeometry" type="ifc:IfcConnectionPointGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
	<xs:complexType name="IfcConnectionPointGeometry">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectionGeometry">
				<xs:sequence>
					<xs:element name="PointOnRelatingElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="PointOnRelatedElement" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionPortGeometry" type="ifc:IfcConnectionPortGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
	<xs:complexType name="IfcConnectionPortGeometry">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectionGeometry">
				<xs:sequence>
					<xs:element name="LocationAtRelatingElement">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LocationAtRelatedElement" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ProfileOfPort">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProfileDef"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionSurfaceGeometry" type="ifc:IfcConnectionSurfaceGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
	<xs:complexType name="IfcConnectionSurfaceGeometry">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectionGeometry">
				<xs:sequence>
					<xs:element name="SurfaceOnRelatingElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSurface"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="SurfaceOnRelatedElement" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSurface"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstraint" type="ifc:IfcConstraint" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcConstraint" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="ConstraintGrade" type="ifc:IfcConstraintEnum"/>
					<xs:element name="ConstraintSource" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="CreatingActor" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CreationTime" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="UserDefinedGrade" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstraintAggregationRelationship" type="ifc:IfcConstraintAggregationRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcConstraintAggregationRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="RelatingConstraint">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcConstraint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedConstraints">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcConstraint" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcConstraint"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LogicalAggregator" type="ifc:IfcLogicalOperatorEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstraintClassificationRelationship" type="ifc:IfcConstraintClassificationRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcConstraintClassificationRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ClassifiedConstraint">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcConstraint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedClassifications">
						<xs:complexType>
							<xs:group ref="ifc:IfcClassificationNotationSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcClassificationNotationSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstraintRelationship" type="ifc:IfcConstraintRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcConstraintRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="RelatingConstraint">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcConstraint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedConstraints">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcConstraint" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcConstraint"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex: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="IfcConstructionMaterialResource" type="ifc:IfcConstructionMaterialResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
	<xs:complexType name="IfcConstructionMaterialResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResource">
				<xs:sequence>
					<xs:element name="Suppliers" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcActorSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="UsageRatio" type="ifc:IfcRatioMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstructionProductResource" type="ifc:IfcConstructionProductResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
	<xs:complexType name="IfcConstructionProductResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResource"/>
		</xs: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="ResourceIdentifier" type="ifc:IfcIdentifier" nillable="true" minOccurs="0"/>
					<xs:element name="ResourceGroup" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="ResourceConsumption" type="ifc:IfcResourceConsumptionEnum" nillable="true" minOccurs="0"/>
					<xs:element name="BaseQuantity" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMeasureWithUnit"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcContextDependentUnit" type="ifc:IfcContextDependentUnit" substitutionGroup="ifc:IfcNamedUnit" nillable="true"/>
	<xs:complexType name="IfcContextDependentUnit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcNamedUnit">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
				</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="IfcControllerType" type="ifc:IfcControllerType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcControllerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcControllerTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConversionBasedUnit" type="ifc:IfcConversionBasedUnit" substitutionGroup="ifc:IfcNamedUnit" nillable="true"/>
	<xs:complexType name="IfcConversionBasedUnit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcNamedUnit">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="ConversionFactor">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMeasureWithUnit"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCooledBeamType" type="ifc:IfcCooledBeamType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcCooledBeamType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcCooledBeamTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCoolingTowerType" type="ifc:IfcCoolingTowerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcCoolingTowerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcCoolingTowerTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCoordinatedUniversalTimeOffset" type="ifc:IfcCoordinatedUniversalTimeOffset" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcCoordinatedUniversalTimeOffset">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="HourOffset" type="ifc:IfcHourInDay"/>
					<xs:element name="MinuteOffset" type="ifc:IfcMinuteInHour" nillable="true" minOccurs="0"/>
					<xs:element name="Sense" type="ifc:IfcAheadOrBehind"/>
				</xs:sequence>
			</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: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:sequence>
					<xs:element name="SubmittedBy" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="PreparedBy" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SubmittedOn" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Status" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="TargetUsers" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcActorSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="UpdateDate" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ID" type="ifc:IfcIdentifier"/>
					<xs:element name="PredefinedType" type="ifc:IfcCostScheduleTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCostValue" type="ifc:IfcCostValue" substitutionGroup="ifc:IfcAppliedValue" nillable="true"/>
	<xs:complexType name="IfcCostValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAppliedValue">
				<xs:sequence>
					<xs:element name="CostType" type="ifc:IfcLabel"/>
					<xs:element name="Condition" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</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:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcCoveringTypeEnum" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCoveringType" type="ifc:IfcCoveringType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
	<xs:complexType name="IfcCoveringType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcCoveringTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCraneRailAShapeProfileDef" type="ifc:IfcCraneRailAShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcCraneRailAShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="OverallHeight" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="BaseWidth2" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="Radius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="HeadWidth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="HeadDepth2" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="HeadDepth3" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="WebThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="BaseWidth4" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="BaseDepth1" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="BaseDepth2" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="BaseDepth3" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="CentreOfGravityInY" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCraneRailFShapeProfileDef" type="ifc:IfcCraneRailFShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcCraneRailFShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="OverallHeight" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="HeadWidth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="Radius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="HeadDepth2" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="HeadDepth3" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="WebThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="BaseDepth1" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="BaseDepth2" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="CentreOfGravityInY" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCrewResource" type="ifc:IfcCrewResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
	<xs:complexType name="IfcCrewResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResource"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCsgSolid" type="ifc:IfcCsgSolid" substitutionGroup="ifc:IfcSolidModel" nillable="true"/>
	<xs:complexType name="IfcCsgSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSolidModel">
				<xs:sequence>
					<xs:element name="TreeRootExpression">
						<xs:complexType>
							<xs:group ref="ifc:IfcCsgSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurrencyRelationship" type="ifc:IfcCurrencyRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcCurrencyRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="RelatingMonetaryUnit">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMonetaryUnit"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedMonetaryUnit">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMonetaryUnit"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ExchangeRate" type="ifc:IfcPositiveRatioMeasure"/>
					<xs:element name="RateDateTime">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDateAndTime"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RateSource" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcLibraryInformation"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurtainWall" type="ifc:IfcCurtainWall" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcCurtainWall">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurve" type="ifc:IfcCurve" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcCurve" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveBoundedPlane" type="ifc:IfcCurveBoundedPlane" substitutionGroup="ifc:IfcBoundedSurface" nillable="true"/>
	<xs:complexType name="IfcCurveBoundedPlane">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedSurface">
				<xs:sequence>
					<xs:element name="BasisSurface">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPlane"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="OuterBoundary">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="InnerBoundaries">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCurve" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcCurve"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveStyle" type="ifc:IfcCurveStyle" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcCurveStyle">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="CurveFont" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveFontOrScaledCurveFontSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurveWidth" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcSizeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurveColour" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcColour"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveStyleFont" type="ifc:IfcCurveStyleFont" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcCurveStyleFont">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="PatternList">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCurveStyleFontPattern" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcCurveStyleFontPattern"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveStyleFontAndScaling" type="ifc:IfcCurveStyleFontAndScaling" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcCurveStyleFontAndScaling">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="CurveFont">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveStyleFontSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurveFontScaling" type="ifc:IfcPositiveRatioMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveStyleFontPattern" type="ifc:IfcCurveStyleFontPattern" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcCurveStyleFontPattern">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="VisibleSegmentLength" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="InvisibleSegmentLength" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDamperType" type="ifc:IfcDamperType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcDamperType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcDamperTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDateAndTime" type="ifc:IfcDateAndTime" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcDateAndTime">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="DateComponent">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCalendarDate"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="TimeComponent">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcLocalTime"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDefinedSymbol" type="ifc:IfcDefinedSymbol" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcDefinedSymbol">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Definition">
						<xs:complexType>
							<xs:group ref="ifc:IfcDefinedSymbolSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Target">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianTransformationOperator2D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDerivedProfileDef" type="ifc:IfcDerivedProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcDerivedProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="ParentProfile">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProfileDef"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Operator">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianTransformationOperator2D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Label" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDerivedUnit" type="ifc:IfcDerivedUnit" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcDerivedUnit">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Elements">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcDerivedUnitElement" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcDerivedUnitElement"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="UnitType" type="ifc:IfcDerivedUnitEnum"/>
					<xs:element name="UserDefinedType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDerivedUnitElement" type="ifc:IfcDerivedUnitElement" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcDerivedUnitElement">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Unit">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcNamedUnit"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Exponent" type="xs:long"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDiameterDimension" type="ifc:IfcDiameterDimension" substitutionGroup="ifc:IfcDimensionCurveDirectedCallout" nillable="true"/>
	<xs:complexType name="IfcDiameterDimension">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDimensionCurveDirectedCallout"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDimensionCalloutRelationship" type="ifc:IfcDimensionCalloutRelationship" substitutionGroup="ifc:IfcDraughtingCalloutRelationship" nillable="true"/>
	<xs:complexType name="IfcDimensionCalloutRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDraughtingCalloutRelationship"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDimensionCurve" type="ifc:IfcDimensionCurve" substitutionGroup="ifc:IfcAnnotationCurveOccurrence" nillable="true"/>
	<xs:complexType name="IfcDimensionCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAnnotationCurveOccurrence"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDimensionCurveDirectedCallout" type="ifc:IfcDimensionCurveDirectedCallout" substitutionGroup="ifc:IfcDraughtingCallout" nillable="true"/>
	<xs:complexType name="IfcDimensionCurveDirectedCallout">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDraughtingCallout"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDimensionCurveTerminator" type="ifc:IfcDimensionCurveTerminator" substitutionGroup="ifc:IfcTerminatorSymbol" nillable="true"/>
	<xs:complexType name="IfcDimensionCurveTerminator">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTerminatorSymbol">
				<xs:sequence>
					<xs:element name="Role" type="ifc:IfcDimensionExtentUsage"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDimensionalExponents" type="ifc:IfcDimensionalExponents" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcDimensionalExponents">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="LengthExponent" type="xs:long"/>
					<xs:element name="MassExponent" type="xs:long"/>
					<xs:element name="TimeExponent" type="xs:long"/>
					<xs:element name="ElectricCurrentExponent" type="xs:long"/>
					<xs:element name="ThermodynamicTemperatureExponent" type="xs:long"/>
					<xs:element name="AmountOfSubstanceExponent" type="xs:long"/>
					<xs:element name="LuminousIntensityExponent" type="xs:long"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDirection" type="ifc:IfcDirection" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcDirection">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="DirectionRatios">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ex:double-wrapper" minOccurs="2" maxOccurs="3"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ex:double-wrapper"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDiscreteAccessory" type="ifc:IfcDiscreteAccessory" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcDiscreteAccessory">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDiscreteAccessoryType" type="ifc:IfcDiscreteAccessoryType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcDiscreteAccessoryType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionChamberElement" type="ifc:IfcDistributionChamberElement" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcDistributionChamberElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionChamberElementType" type="ifc:IfcDistributionChamberElementType" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcDistributionChamberElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcDistributionChamberElementTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionControlElement" type="ifc:IfcDistributionControlElement" substitutionGroup="ifc:IfcDistributionElement" nillable="true"/>
	<xs:complexType name="IfcDistributionControlElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionElement">
				<xs:sequence>
					<xs:element name="ControlElementId" type="ifc:IfcIdentifier" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionControlElementType" type="ifc:IfcDistributionControlElementType" abstract="true" substitutionGroup="ifc:IfcDistributionElementType" nillable="true"/>
	<xs:complexType name="IfcDistributionControlElementType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionElement" type="ifc:IfcDistributionElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcDistributionElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionElementType" type="ifc:IfcDistributionElementType" abstract="true" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcDistributionElementType" abstract="true">
		<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:sequence>
					<xs:element name="FlowDirection" type="ifc:IfcFlowDirectionEnum" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDocumentElectronicFormat" type="ifc:IfcDocumentElectronicFormat" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcDocumentElectronicFormat">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="FileExtension" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="MimeContentType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="MimeSubtype" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDocumentInformation" type="ifc:IfcDocumentInformation" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcDocumentInformation">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="DocumentId" type="ifc:IfcIdentifier"/>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="DocumentReferences" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcDocumentReference" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcDocumentReference"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Purpose" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="IntendedUse" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="Scope" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="Revision" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="DocumentOwner" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Editors" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcActorSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CreationTime" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDateAndTime"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="LastRevisionTime" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDateAndTime"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ElectronicFormat" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDocumentElectronicFormat"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ValidFrom" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCalendarDate"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ValidUntil" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCalendarDate"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Confidentiality" type="ifc:IfcDocumentConfidentialityEnum" nillable="true" minOccurs="0"/>
					<xs:element name="Status" type="ifc:IfcDocumentStatusEnum" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDocumentInformationRelationship" type="ifc:IfcDocumentInformationRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcDocumentInformationRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="RelatingDocument">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDocumentInformation"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedDocuments">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcDocumentInformation" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcDocumentInformation"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelationshipType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDocumentReference" type="ifc:IfcDocumentReference" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcDocumentReference">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDoor" type="ifc:IfcDoor" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcDoor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement">
				<xs:sequence>
					<xs:element name="OverallHeight" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="OverallWidth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDoorLiningProperties" type="ifc:IfcDoorLiningProperties" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcDoorLiningProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="LiningDepth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LiningThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ThresholdDepth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ThresholdThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TransomThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TransomOffset" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LiningOffset" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ThresholdOffset" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CasingThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CasingDepth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ShapeAspectStyle" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcShapeAspect"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDoorPanelProperties" type="ifc:IfcDoorPanelProperties" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcDoorPanelProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="PanelDepth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PanelOperation" type="ifc:IfcDoorPanelOperationEnum"/>
					<xs:element name="PanelWidth" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PanelPosition" type="ifc:IfcDoorPanelPositionEnum"/>
					<xs:element name="ShapeAspectStyle" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcShapeAspect"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDoorStyle" type="ifc:IfcDoorStyle" substitutionGroup="ifc:IfcTypeProduct" nillable="true"/>
	<xs:complexType name="IfcDoorStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeProduct">
				<xs:sequence>
					<xs:element name="OperationType" type="ifc:IfcDoorStyleOperationEnum"/>
					<xs:element name="ConstructionType" type="ifc:IfcDoorStyleConstructionEnum"/>
					<xs:element name="ParameterTakesPrecedence" type="xs:boolean"/>
					<xs:element name="Sizeable" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDraughtingCallout" type="ifc:IfcDraughtingCallout" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcDraughtingCallout">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Contents">
						<xs:complexType>
							<xs:group ref="ifc:IfcDraughtingCalloutElement" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcDraughtingCalloutElement"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDraughtingCalloutRelationship" type="ifc:IfcDraughtingCalloutRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcDraughtingCalloutRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="RelatingDraughtingCallout">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDraughtingCallout"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedDraughtingCallout">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDraughtingCallout"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDraughtingPreDefinedColour" type="ifc:IfcDraughtingPreDefinedColour" substitutionGroup="ifc:IfcPreDefinedColour" nillable="true"/>
	<xs:complexType name="IfcDraughtingPreDefinedColour">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedColour"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDraughtingPreDefinedCurveFont" type="ifc:IfcDraughtingPreDefinedCurveFont" substitutionGroup="ifc:IfcPreDefinedCurveFont" nillable="true"/>
	<xs:complexType name="IfcDraughtingPreDefinedCurveFont">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedCurveFont"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDraughtingPreDefinedTextFont" type="ifc:IfcDraughtingPreDefinedTextFont" substitutionGroup="ifc:IfcPreDefinedTextFont" nillable="true"/>
	<xs:complexType name="IfcDraughtingPreDefinedTextFont">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedTextFont"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDuctFittingType" type="ifc:IfcDuctFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
	<xs:complexType name="IfcDuctFittingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFittingType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcDuctFittingTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDuctSegmentType" type="ifc:IfcDuctSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
	<xs:complexType name="IfcDuctSegmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegmentType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcDuctSegmentTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDuctSilencerType" type="ifc:IfcDuctSilencerType" substitutionGroup="ifc:IfcFlowTreatmentDeviceType" nillable="true"/>
	<xs:complexType name="IfcDuctSilencerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTreatmentDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcDuctSilencerTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEdge" type="ifc:IfcEdge" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcEdge">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem">
				<xs:sequence>
					<xs:element name="EdgeStart" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcVertex"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="EdgeEnd" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcVertex"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEdgeCurve" type="ifc:IfcEdgeCurve" substitutionGroup="ifc:IfcEdge" nillable="true"/>
	<xs:complexType name="IfcEdgeCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEdge">
				<xs:sequence>
					<xs:element name="EdgeGeometry">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="SameSense" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEdgeFeature" type="ifc:IfcEdgeFeature" abstract="true" substitutionGroup="ifc:IfcFeatureElementSubtraction" nillable="true"/>
	<xs:complexType name="IfcEdgeFeature" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElementSubtraction">
				<xs:sequence>
					<xs:element name="FeatureLength" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEdgeLoop" type="ifc:IfcEdgeLoop" substitutionGroup="ifc:IfcLoop" nillable="true"/>
	<xs:complexType name="IfcEdgeLoop">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLoop">
				<xs:sequence>
					<xs:element name="EdgeList">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcOrientedEdge" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcOrientedEdge"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricApplianceType" type="ifc:IfcElectricApplianceType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcElectricApplianceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcElectricApplianceTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricDistributionPoint" type="ifc:IfcElectricDistributionPoint" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
	<xs:complexType name="IfcElectricDistributionPoint">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowController">
				<xs:sequence>
					<xs:element name="DistributionPointFunction" type="ifc:IfcElectricDistributionPointFunctionEnum"/>
					<xs:element name="UserDefinedFunction" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricFlowStorageDeviceType" type="ifc:IfcElectricFlowStorageDeviceType" substitutionGroup="ifc:IfcFlowStorageDeviceType" nillable="true"/>
	<xs:complexType name="IfcElectricFlowStorageDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowStorageDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcElectricFlowStorageDeviceTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricGeneratorType" type="ifc:IfcElectricGeneratorType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcElectricGeneratorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcElectricGeneratorTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricHeaterType" type="ifc:IfcElectricHeaterType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcElectricHeaterType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcElectricHeaterTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricMotorType" type="ifc:IfcElectricMotorType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcElectricMotorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcElectricMotorTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricTimeControlType" type="ifc:IfcElectricTimeControlType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcElectricTimeControlType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcElectricTimeControlTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricalBaseProperties" type="ifc:IfcElectricalBaseProperties" substitutionGroup="ifc:IfcEnergyProperties" nillable="true"/>
	<xs:complexType name="IfcElectricalBaseProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyProperties">
				<xs:sequence>
					<xs:element name="ElectricCurrentType" type="ifc:IfcElectricCurrentEnum" nillable="true" minOccurs="0"/>
					<xs:element name="InputVoltage" type="ifc:IfcElectricVoltageMeasure"/>
					<xs:element name="InputFrequency" type="ifc:IfcFrequencyMeasure"/>
					<xs:element name="FullLoadCurrent" type="ifc:IfcElectricCurrentMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MinimumCircuitCurrent" type="ifc:IfcElectricCurrentMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MaximumPowerInput" type="ifc:IfcPowerMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RatedPowerInput" type="ifc:IfcPowerMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="InputPhase" type="xs:long"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricalCircuit" type="ifc:IfcElectricalCircuit" substitutionGroup="ifc:IfcSystem" nillable="true"/>
	<xs:complexType name="IfcElectricalCircuit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSystem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricalElement" type="ifc:IfcElectricalElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcElectricalElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElement" type="ifc:IfcElement" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct">
				<xs:sequence>
					<xs:element name="Tag" type="ifc:IfcIdentifier" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementAssembly" type="ifc:IfcElementAssembly" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcElementAssembly">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement">
				<xs:sequence>
					<xs:element name="AssemblyPlace" type="ifc:IfcAssemblyPlaceEnum" nillable="true" minOccurs="0"/>
					<xs:element name="PredefinedType" type="ifc:IfcElementAssemblyTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementComponent" type="ifc:IfcElementComponent" abstract="true" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcElementComponent" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementComponentType" type="ifc:IfcElementComponentType" abstract="true" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcElementComponentType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementQuantity" type="ifc:IfcElementQuantity" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcElementQuantity">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="MethodOfMeasurement" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Quantities">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPhysicalQuantity" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcPhysicalQuantity"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementType" type="ifc:IfcElementType" abstract="true" substitutionGroup="ifc:IfcTypeProduct" nillable="true"/>
	<xs:complexType name="IfcElementType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeProduct">
				<xs:sequence>
					<xs:element name="ElementType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementarySurface" type="ifc:IfcElementarySurface" abstract="true" substitutionGroup="ifc:IfcSurface" nillable="true"/>
	<xs:complexType name="IfcElementarySurface" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurface">
				<xs:sequence>
					<xs:element name="Position">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAxis2Placement3D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEllipse" type="ifc:IfcEllipse" substitutionGroup="ifc:IfcConic" nillable="true"/>
	<xs:complexType name="IfcEllipse">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConic">
				<xs:sequence>
					<xs:element name="SemiAxis1" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="SemiAxis2" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEllipseProfileDef" type="ifc:IfcEllipseProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcEllipseProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="SemiAxis1" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="SemiAxis2" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEnergyConversionDevice" type="ifc:IfcEnergyConversionDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcEnergyConversionDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEnergyConversionDeviceType" type="ifc:IfcEnergyConversionDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcEnergyConversionDeviceType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEnergyProperties" type="ifc:IfcEnergyProperties" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcEnergyProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="EnergySequence" type="ifc:IfcEnergySequenceEnum" nillable="true" minOccurs="0"/>
					<xs:element name="UserDefinedEnergySequence" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEnvironmentalImpactValue" type="ifc:IfcEnvironmentalImpactValue" substitutionGroup="ifc:IfcAppliedValue" nillable="true"/>
	<xs:complexType name="IfcEnvironmentalImpactValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAppliedValue">
				<xs:sequence>
					<xs:element name="ImpactType" type="ifc:IfcLabel"/>
					<xs:element name="Category" type="ifc:IfcEnvironmentalImpactCategoryEnum"/>
					<xs:element name="UserDefinedCategory" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEquipmentElement" type="ifc:IfcEquipmentElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcEquipmentElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEquipmentStandard" type="ifc:IfcEquipmentStandard" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcEquipmentStandard">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEvaporativeCoolerType" type="ifc:IfcEvaporativeCoolerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcEvaporativeCoolerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcEvaporativeCoolerTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEvaporatorType" type="ifc:IfcEvaporatorType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcEvaporatorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcEvaporatorTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExtendedMaterialProperties" type="ifc:IfcExtendedMaterialProperties" substitutionGroup="ifc:IfcMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcExtendedMaterialProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProperties">
				<xs:sequence>
					<xs:element name="ExtendedProperties">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcProperty"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="Name" type="ifc:IfcLabel"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternalReference" type="ifc:IfcExternalReference" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcExternalReference" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Location" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="ItemReference" type="ifc:IfcIdentifier" nillable="true" minOccurs="0"/>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternallyDefinedHatchStyle" type="ifc:IfcExternallyDefinedHatchStyle" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcExternallyDefinedHatchStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternallyDefinedSufaceStyle" type="ifc:IfcExternallyDefinedSufaceStyle" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcExternallyDefinedSufaceStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternallyDefinedSymbol" type="ifc:IfcExternallyDefinedSymbol" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcExternallyDefinedSymbol">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternallyDefinedTextFont" type="ifc:IfcExternallyDefinedTextFont" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcExternallyDefinedTextFont">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExtrudedAreaSolid" type="ifc:IfcExtrudedAreaSolid" substitutionGroup="ifc:IfcSweptAreaSolid" nillable="true"/>
	<xs:complexType name="IfcExtrudedAreaSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSweptAreaSolid">
				<xs:sequence>
					<xs:element name="ExtrudedDirection">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Depth" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFace" type="ifc:IfcFace" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcFace">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem">
				<xs:sequence>
					<xs:element name="Bounds">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcFaceBound" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcFaceBound"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex: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="ex:itemType" fixed="ifc:IfcConnectedFaceSet"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex: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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcLoop"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Orientation" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFaceOuterBound" type="ifc:IfcFaceOuterBound" substitutionGroup="ifc:IfcFaceBound" nillable="true"/>
	<xs:complexType name="IfcFaceOuterBound">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFaceBound"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFaceSurface" type="ifc:IfcFaceSurface" substitutionGroup="ifc:IfcFace" nillable="true"/>
	<xs:complexType name="IfcFaceSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFace">
				<xs:sequence>
					<xs:element name="FaceSurface">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSurface"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="SameSense" type="xs:boolean"/>
				</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="IfcFacetedBrepWithVoids" type="ifc:IfcFacetedBrepWithVoids" substitutionGroup="ifc:IfcManifoldSolidBrep" nillable="true"/>
	<xs:complexType name="IfcFacetedBrepWithVoids">
		<xs:complexContent>
			<xs:extension base="ifc:IfcManifoldSolidBrep">
				<xs:sequence>
					<xs:element name="Voids">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcClosedShell" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcClosedShell"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFailureConnectionCondition" type="ifc:IfcFailureConnectionCondition" substitutionGroup="ifc:IfcStructuralConnectionCondition" nillable="true"/>
	<xs:complexType name="IfcFailureConnectionCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralConnectionCondition">
				<xs:sequence>
					<xs:element name="TensionFailureX" type="ifc:IfcForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TensionFailureY" type="ifc:IfcForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TensionFailureZ" type="ifc:IfcForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CompressionFailureX" type="ifc:IfcForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CompressionFailureY" type="ifc:IfcForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CompressionFailureZ" type="ifc:IfcForceMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFanType" type="ifc:IfcFanType" substitutionGroup="ifc:IfcFlowMovingDeviceType" nillable="true"/>
	<xs:complexType name="IfcFanType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowMovingDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcFanTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFastener" type="ifc:IfcFastener" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcFastener">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFastenerType" type="ifc:IfcFastenerType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcFastenerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFeatureElement" type="ifc:IfcFeatureElement" abstract="true" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcFeatureElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFeatureElementAddition" type="ifc:IfcFeatureElementAddition" abstract="true" substitutionGroup="ifc:IfcFeatureElement" nillable="true"/>
	<xs:complexType name="IfcFeatureElementAddition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFeatureElementSubtraction" type="ifc:IfcFeatureElementSubtraction" abstract="true" substitutionGroup="ifc:IfcFeatureElement" nillable="true"/>
	<xs:complexType name="IfcFeatureElementSubtraction" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFillAreaStyle" type="ifc:IfcFillAreaStyle" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcFillAreaStyle">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="FillStyles">
						<xs:complexType>
							<xs:group ref="ifc:IfcFillStyleSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcFillStyleSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Name" type="ifc:IfcLabel"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFillAreaStyleHatching" type="ifc:IfcFillAreaStyleHatching" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcFillAreaStyleHatching">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="HatchLineAppearance">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurveStyle"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="StartOfNextHatchLine">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcOneDirectionRepeatFactor"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="PointOfReferenceHatchLine">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="PatternStart">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="HatchLineAngle" type="ifc:IfcPlaneAngleMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFillAreaStyleTileSymbolWithStyle" type="ifc:IfcFillAreaStyleTileSymbolWithStyle" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcFillAreaStyleTileSymbolWithStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Symbol">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAnnotationSymbolOccurrence"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFillAreaStyleTiles" type="ifc:IfcFillAreaStyleTiles" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcFillAreaStyleTiles">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="TilingPattern">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcOneDirectionRepeatFactor"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Tiles">
						<xs:complexType>
							<xs:group ref="ifc:IfcFillAreaStyleTileShapeSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcFillAreaStyleTileShapeSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TilingScale" type="ifc:IfcPositiveRatioMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFilterType" type="ifc:IfcFilterType" substitutionGroup="ifc:IfcFlowTreatmentDeviceType" nillable="true"/>
	<xs:complexType name="IfcFilterType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTreatmentDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcFilterTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFireSuppressionTerminalType" type="ifc:IfcFireSuppressionTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcFireSuppressionTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcFireSuppressionTerminalTypeEnum"/>
				</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="IfcFlowInstrumentType" type="ifc:IfcFlowInstrumentType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcFlowInstrumentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcFlowInstrumentTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowMeterType" type="ifc:IfcFlowMeterType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcFlowMeterType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcFlowMeterTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowMovingDevice" type="ifc:IfcFlowMovingDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcFlowMovingDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowMovingDeviceType" type="ifc:IfcFlowMovingDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcFlowMovingDeviceType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowSegment" type="ifc:IfcFlowSegment" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcFlowSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowSegmentType" type="ifc:IfcFlowSegmentType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcFlowSegmentType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowStorageDevice" type="ifc:IfcFlowStorageDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcFlowStorageDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowStorageDeviceType" type="ifc:IfcFlowStorageDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcFlowStorageDeviceType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowTerminal" type="ifc:IfcFlowTerminal" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcFlowTerminal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowTerminalType" type="ifc:IfcFlowTerminalType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcFlowTerminalType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowTreatmentDevice" type="ifc:IfcFlowTreatmentDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcFlowTreatmentDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowTreatmentDeviceType" type="ifc:IfcFlowTreatmentDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcFlowTreatmentDeviceType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFluidFlowProperties" type="ifc:IfcFluidFlowProperties" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcFluidFlowProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="PropertySource" type="ifc:IfcPropertySourceEnum"/>
					<xs:element name="FlowConditionTimeSeries" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTimeSeries"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="VelocityTimeSeries" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTimeSeries"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="FlowrateTimeSeries" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTimeSeries"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Fluid">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMaterial"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="PressureTimeSeries" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTimeSeries"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="UserDefinedPropertySource" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="TemperatureSingleValue" type="ifc:IfcThermodynamicTemperatureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="WetBulbTemperatureSingleValue" type="ifc:IfcThermodynamicTemperatureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="WetBulbTemperatureTimeSeries" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTimeSeries"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="TemperatureTimeSeries" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTimeSeries"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="FlowrateSingleValue" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDerivedMeasureValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="FlowConditionSingleValue" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="VelocitySingleValue" type="ifc:IfcLinearVelocityMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PressureSingleValue" type="ifc:IfcPressureMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFooting" type="ifc:IfcFooting" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcFooting">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcFootingTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFuelProperties" type="ifc:IfcFuelProperties" substitutionGroup="ifc:IfcMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcFuelProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProperties">
				<xs:sequence>
					<xs:element name="CombustionTemperature" type="ifc:IfcThermodynamicTemperatureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CarbonContent" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LowerHeatingValue" type="ifc:IfcHeatingValueMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="HigherHeatingValue" type="ifc:IfcHeatingValueMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFurnishingElement" type="ifc:IfcFurnishingElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcFurnishingElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFurnishingElementType" type="ifc:IfcFurnishingElementType" abstract="true" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcFurnishingElementType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFurnitureStandard" type="ifc:IfcFurnitureStandard" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcFurnitureStandard">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFurnitureType" type="ifc:IfcFurnitureType" substitutionGroup="ifc:IfcFurnishingElementType" nillable="true"/>
	<xs:complexType name="IfcFurnitureType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFurnishingElementType">
				<xs:sequence>
					<xs:element name="AssemblyPlace" type="ifc:IfcAssemblyPlaceEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGasTerminalType" type="ifc:IfcGasTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcGasTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcGasTerminalTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeneralMaterialProperties" type="ifc:IfcGeneralMaterialProperties" substitutionGroup="ifc:IfcMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcGeneralMaterialProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProperties">
				<xs:sequence>
					<xs:element name="MolecularWeight" type="ifc:IfcMolecularWeightMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="Porosity" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MassDensity" type="ifc:IfcMassDensityMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeneralProfileProperties" type="ifc:IfcGeneralProfileProperties" substitutionGroup="ifc:IfcProfileProperties" nillable="true"/>
	<xs:complexType name="IfcGeneralProfileProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileProperties">
				<xs:sequence>
					<xs:element name="PhysicalWeight" type="ifc:IfcMassPerLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="Perimeter" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MinimumPlateThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MaximumPlateThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CrossSectionArea" type="ifc:IfcAreaMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeometricCurveSet" type="ifc:IfcGeometricCurveSet" substitutionGroup="ifc:IfcGeometricSet" nillable="true"/>
	<xs:complexType name="IfcGeometricCurveSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricSet"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeometricRepresentationContext" type="ifc:IfcGeometricRepresentationContext" substitutionGroup="ifc:IfcRepresentationContext" nillable="true"/>
	<xs:complexType name="IfcGeometricRepresentationContext">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentationContext">
				<xs:sequence>
					<xs:element name="CoordinateSpaceDimension" type="ifc:IfcDimensionCount" minOccurs="0"/>
					<xs:element name="Precision" type="xs:double" nillable="true" minOccurs="0"/>
					<xs:element name="WorldCoordinateSystem" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TrueNorth" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeometricRepresentationItem" type="ifc:IfcGeometricRepresentationItem" abstract="true" substitutionGroup="ifc:IfcRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcGeometricRepresentationItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IfcGeometricRepresentationSubContext-temp" abstract="true">
		<xs:complexContent>
			<xs:restriction base="ifc:IfcGeometricRepresentationContext">
				<xs:sequence>
					<xs:element name="ContextIdentifier" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="ContextType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeometricRepresentationSubContext" type="ifc:IfcGeometricRepresentationSubContext" substitutionGroup="ifc:IfcGeometricRepresentationContext" nillable="true"/>
	<xs:complexType name="IfcGeometricRepresentationSubContext">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationSubContext-temp">
				<xs:sequence>
					<xs:element name="ParentContext">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcGeometricRepresentationContext"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="TargetScale" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TargetView" type="ifc:IfcGeometricProjectionEnum"/>
					<xs:element name="UserDefinedTargetView" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeometricSet" type="ifc:IfcGeometricSet" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcGeometricSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Elements">
						<xs:complexType>
							<xs:group ref="ifc:IfcGeometricSetSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcGeometricSetSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex: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="ex:itemType" fixed="ifc:IfcGridAxis"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex: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="ex:itemType" fixed="ifc:IfcGridAxis"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="WAxes" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcGridAxis" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcGridAxis"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGridAxis" type="ifc:IfcGridAxis" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcGridAxis">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="AxisTag" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="AxisCurve">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="SameSense" type="ifc:IfcBoolean"/>
				</xs:sequence>
			</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcVirtualGridIntersection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="PlacementRefDirection" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcVirtualGridIntersection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGroup" type="ifc:IfcGroup" substitutionGroup="ifc:IfcObject" nillable="true"/>
	<xs:complexType name="IfcGroup">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObject"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcHalfSpaceSolid" type="ifc:IfcHalfSpaceSolid" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcHalfSpaceSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="BaseSurface">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSurface"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="AgreementFlag" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcHeatExchangerType" type="ifc:IfcHeatExchangerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcHeatExchangerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcHeatExchangerTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcHumidifierType" type="ifc:IfcHumidifierType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcHumidifierType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcHumidifierTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcHygroscopicMaterialProperties" type="ifc:IfcHygroscopicMaterialProperties" substitutionGroup="ifc:IfcMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcHygroscopicMaterialProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProperties">
				<xs:sequence>
					<xs:element name="UpperVaporResistanceFactor" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LowerVaporResistanceFactor" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="IsothermalMoistureCapacity" type="ifc:IfcIsothermalMoistureCapacityMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="VaporPermeability" type="ifc:IfcVaporPermeabilityMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MoistureDiffusivity" type="ifc:IfcMoistureDiffusivityMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIShapeProfileDef" type="ifc:IfcIShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcIShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="OverallWidth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="OverallDepth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="WebThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FilletRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcImageTexture" type="ifc:IfcImageTexture" substitutionGroup="ifc:IfcSurfaceTexture" nillable="true"/>
	<xs:complexType name="IfcImageTexture">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurfaceTexture">
				<xs:sequence>
					<xs:element name="UrlReference" type="ifc:IfcIdentifier"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcInventory" type="ifc:IfcInventory" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcInventory">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup">
				<xs:sequence>
					<xs:element name="InventoryType" type="ifc:IfcInventoryTypeEnum"/>
					<xs:element name="Jurisdiction">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ResponsiblePersons">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPerson" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcPerson"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LastUpdateDate">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCalendarDate"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurrentValue" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCostValue"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="OriginalValue" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCostValue"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIrregularTimeSeries" type="ifc:IfcIrregularTimeSeries" substitutionGroup="ifc:IfcTimeSeries" nillable="true"/>
	<xs:complexType name="IfcIrregularTimeSeries">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTimeSeries">
				<xs:sequence>
					<xs:element name="Values">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcIrregularTimeSeriesValue" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcIrregularTimeSeriesValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIrregularTimeSeriesValue" type="ifc:IfcIrregularTimeSeriesValue" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcIrregularTimeSeriesValue">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="TimeStamp">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ListValues">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcJunctionBoxType" type="ifc:IfcJunctionBoxType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
	<xs:complexType name="IfcJunctionBoxType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFittingType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcJunctionBoxTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLShapeProfileDef" type="ifc:IfcLShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcLShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="Depth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="Width" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="Thickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FilletRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="EdgeRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LegSlope" type="ifc:IfcPlaneAngleMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CentreOfGravityInX" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="CentreOfGravityInY" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLaborResource" type="ifc:IfcLaborResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
	<xs:complexType name="IfcLaborResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResource">
				<xs:sequence>
					<xs:element name="SkillSet" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLampType" type="ifc:IfcLampType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcLampType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcLampTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLibraryInformation" type="ifc:IfcLibraryInformation" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcLibraryInformation">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="Version" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Publisher" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcOrganization"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="VersionDate" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCalendarDate"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="LibraryReference" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLibraryReference" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLibraryReference"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLibraryReference" type="ifc:IfcLibraryReference" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcLibraryReference">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightDistributionData" type="ifc:IfcLightDistributionData" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcLightDistributionData">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="MainPlaneAngle" type="ifc:IfcPlaneAngleMeasure"/>
					<xs:element name="SecondaryPlaneAngle">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPlaneAngleMeasure" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcPlaneAngleMeasure"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LuminousIntensity">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLuminousIntensityDistributionMeasure"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightFixtureType" type="ifc:IfcLightFixtureType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcLightFixtureType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcLightFixtureTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightIntensityDistribution" type="ifc:IfcLightIntensityDistribution" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcLightIntensityDistribution">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="LightDistributionCurve" type="ifc:IfcLightDistributionCurveEnum"/>
					<xs:element name="DistributionData">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLightDistributionData" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLightDistributionData"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</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="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="LightColour">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcColourRgb"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="AmbientIntensity" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="Intensity" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSourceAmbient" type="ifc:IfcLightSourceAmbient" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
	<xs:complexType name="IfcLightSourceAmbient">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLightSource"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSourceDirectional" type="ifc:IfcLightSourceDirectional" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
	<xs:complexType name="IfcLightSourceDirectional">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLightSource">
				<xs:sequence>
					<xs:element name="Orientation">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSourceGoniometric" type="ifc:IfcLightSourceGoniometric" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
	<xs:complexType name="IfcLightSourceGoniometric">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLightSource">
				<xs:sequence>
					<xs:element name="Position">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAxis2Placement3D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ColourAppearance" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcColourRgb"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ColourTemperature" type="ifc:IfcThermodynamicTemperatureMeasure"/>
					<xs:element name="LuminousFlux" type="ifc:IfcLuminousFluxMeasure"/>
					<xs:element name="LightEmissionSource" type="ifc:IfcLightEmissionSourceEnum"/>
					<xs:element name="LightDistributionDataSource">
						<xs:complexType>
							<xs:group ref="ifc:IfcLightDistributionDataSourceSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSourcePositional" type="ifc:IfcLightSourcePositional" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
	<xs:complexType name="IfcLightSourcePositional">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLightSource">
				<xs:sequence>
					<xs:element name="Position">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Radius" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="ConstantAttenuation" type="ifc:IfcReal"/>
					<xs:element name="DistanceAttenuation" type="ifc:IfcReal"/>
					<xs:element name="QuadricAttenuation" type="ifc:IfcReal"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSourceSpot" type="ifc:IfcLightSourceSpot" substitutionGroup="ifc:IfcLightSourcePositional" nillable="true"/>
	<xs:complexType name="IfcLightSourceSpot">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLightSourcePositional">
				<xs:sequence>
					<xs:element name="Orientation">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ConcentrationExponent" type="ifc:IfcReal" nillable="true" minOccurs="0"/>
					<xs:element name="SpreadAngle" type="ifc:IfcPositivePlaneAngleMeasure"/>
					<xs:element name="BeamWidthAngle" type="ifc:IfcPositivePlaneAngleMeasure"/>
				</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Dir">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcVector"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLinearDimension" type="ifc:IfcLinearDimension" substitutionGroup="ifc:IfcDimensionCurveDirectedCallout" nillable="true"/>
	<xs:complexType name="IfcLinearDimension">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDimensionCurveDirectedCallout"/>
		</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" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcObjectPlacement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<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="IfcLocalTime" type="ifc:IfcLocalTime" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcLocalTime">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="HourComponent" type="ifc:IfcHourInDay"/>
					<xs:element name="MinuteComponent" type="ifc:IfcMinuteInHour" nillable="true" minOccurs="0"/>
					<xs:element name="SecondComponent" type="ifc:IfcSecondInMinute" nillable="true" minOccurs="0"/>
					<xs:element name="Zone" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCoordinatedUniversalTimeOffset"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="DaylightSavingOffset" type="ifc:IfcDaylightSavingHour" nillable="true" minOccurs="0"/>
				</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcClosedShell"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcRepresentationMap"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="MappingTarget">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianTransformationOperator"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterial" type="ifc:IfcMaterial" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterial">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialClassificationRelationship" type="ifc:IfcMaterialClassificationRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterialClassificationRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="MaterialClassifications">
						<xs:complexType>
							<xs:group ref="ifc:IfcClassificationNotationSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcClassificationNotationSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ClassifiedMaterial">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMaterial"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialLayer" type="ifc:IfcMaterialLayer" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterialLayer">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Material" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMaterial"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="LayerThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="IsVentilated" type="ifc:IfcBoolean" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialLayerSet" type="ifc:IfcMaterialLayerSet" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterialLayerSet">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="MaterialLayers">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcMaterialLayer" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcMaterialLayer"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LayerSetName" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialLayerSetUsage" type="ifc:IfcMaterialLayerSetUsage" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterialLayerSetUsage">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ForLayerSet">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMaterialLayerSet"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="LayerSetDirection" type="ifc:IfcLayerSetDirectionEnum"/>
					<xs:element name="DirectionSense" type="ifc:IfcDirectionSenseEnum"/>
					<xs:element name="OffsetFromReferenceLine" type="ifc:IfcLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialList" type="ifc:IfcMaterialList" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterialList">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Materials">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcMaterial" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType"  fixed="ifc:IfcMaterial"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialProperties" type="ifc:IfcMaterialProperties" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterialProperties" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Material">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMaterial"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMeasureWithUnit" type="ifc:IfcMeasureWithUnit" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcMeasureWithUnit">
		<xs:complexContent>
			<xs:extension base="ex: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="IfcMechanicalConcreteMaterialProperties" type="ifc:IfcMechanicalConcreteMaterialProperties" substitutionGroup="ifc:IfcMechanicalMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcMechanicalConcreteMaterialProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMechanicalMaterialProperties">
				<xs:sequence>
					<xs:element name="CompressiveStrength" type="ifc:IfcPressureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MaxAggregateSize" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="AdmixturesDescription" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="Workability" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="ProtectivePoreRatio" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="WaterImpermeability" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMechanicalFastener" type="ifc:IfcMechanicalFastener" substitutionGroup="ifc:IfcFastener" nillable="true"/>
	<xs:complexType name="IfcMechanicalFastener">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFastener">
				<xs:sequence>
					<xs:element name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="NominalLength" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMechanicalFastenerType" type="ifc:IfcMechanicalFastenerType" substitutionGroup="ifc:IfcFastenerType" nillable="true"/>
	<xs:complexType name="IfcMechanicalFastenerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFastenerType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMechanicalMaterialProperties" type="ifc:IfcMechanicalMaterialProperties" substitutionGroup="ifc:IfcMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcMechanicalMaterialProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProperties">
				<xs:sequence>
					<xs:element name="DynamicViscosity" type="ifc:IfcDynamicViscosityMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="YoungModulus" type="ifc:IfcModulusOfElasticityMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ShearModulus" type="ifc:IfcModulusOfElasticityMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PoissonRatio" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ThermalExpansionCoefficient" type="ifc:IfcThermalExpansionCoefficientMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMechanicalSteelMaterialProperties" type="ifc:IfcMechanicalSteelMaterialProperties" substitutionGroup="ifc:IfcMechanicalMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcMechanicalSteelMaterialProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMechanicalMaterialProperties">
				<xs:sequence>
					<xs:element name="YieldStress" type="ifc:IfcPressureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="UltimateStress" type="ifc:IfcPressureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="UltimateStrain" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="HardeningModule" type="ifc:IfcModulusOfElasticityMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ProportionalStress" type="ifc:IfcPressureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PlasticStrain" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="Relaxations" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRelaxation" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcRelaxation"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</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="IfcMemberType" type="ifc:IfcMemberType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
	<xs:complexType name="IfcMemberType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcMemberTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMetric" type="ifc:IfcMetric" substitutionGroup="ifc:IfcConstraint" nillable="true"/>
	<xs:complexType name="IfcMetric">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstraint">
				<xs:sequence>
					<xs:element name="Benchmark" type="ifc:IfcBenchmarkEnum"/>
					<xs:element name="ValueSource" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="DataValue">
						<xs:complexType>
							<xs:group ref="ifc:IfcMetricValueSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMonetaryUnit" type="ifc:IfcMonetaryUnit" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcMonetaryUnit">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Currency" type="ifc:IfcCurrencyEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMotorConnectionType" type="ifc:IfcMotorConnectionType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcMotorConnectionType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcMotorConnectionTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMove" type="ifc:IfcMove" substitutionGroup="ifc:IfcTask" nillable="true"/>
	<xs:complexType name="IfcMove">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTask">
				<xs:sequence>
					<xs:element name="MoveFrom">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSpatialStructureElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="MoveTo">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSpatialStructureElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="PunchList" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcText" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcText"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcNamedUnit" type="ifc:IfcNamedUnit" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcNamedUnit" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Dimensions" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDimensionalExponents"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="UnitType" type="ifc:IfcUnitEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcObject" type="ifc:IfcObject" abstract="true" substitutionGroup="ifc:IfcRoot" nillable="true"/>
	<xs:complexType name="IfcObject" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRoot">
				<xs:sequence>
					<xs:element name="ObjectType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcObjectPlacement" type="ifc:IfcObjectPlacement" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcObjectPlacement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcObjective" type="ifc:IfcObjective" substitutionGroup="ifc:IfcConstraint" nillable="true"/>
	<xs:complexType name="IfcObjective">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstraint">
				<xs:sequence>
					<xs:element name="BenchmarkValues" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMetric"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ResultValues" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMetric"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ObjectiveQualifier" type="ifc:IfcObjectiveEnum"/>
					<xs:element name="UserDefinedQualifier" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOccupant" type="ifc:IfcOccupant" substitutionGroup="ifc:IfcActor" nillable="true"/>
	<xs:complexType name="IfcOccupant">
		<xs:complexContent>
			<xs:extension base="ifc:IfcActor">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcOccupantTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOffsetCurve2D" type="ifc:IfcOffsetCurve2D" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcOffsetCurve2D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve">
				<xs:sequence>
					<xs:element name="BasisCurve">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Distance" type="ifc:IfcLengthMeasure"/>
					<xs:element name="SelfIntersect" type="ex:logical"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOffsetCurve3D" type="ifc:IfcOffsetCurve3D" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcOffsetCurve3D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve">
				<xs:sequence>
					<xs:element name="BasisCurve">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Distance" type="ifc:IfcLengthMeasure"/>
					<xs:element name="SelfIntersect" type="ex:logical"/>
					<xs:element name="RefDirection">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOneDirectionRepeatFactor" type="ifc:IfcOneDirectionRepeatFactor" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcOneDirectionRepeatFactor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="RepeatFactor">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcVector"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOpenShell" type="ifc:IfcOpenShell" substitutionGroup="ifc:IfcConnectedFaceSet" nillable="true"/>
	<xs:complexType name="IfcOpenShell">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectedFaceSet"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOpeningElement" type="ifc:IfcOpeningElement" substitutionGroup="ifc:IfcFeatureElementSubtraction" nillable="true"/>
	<xs:complexType name="IfcOpeningElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElementSubtraction"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOpticalMaterialProperties" type="ifc:IfcOpticalMaterialProperties" substitutionGroup="ifc:IfcMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcOpticalMaterialProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProperties">
				<xs:sequence>
					<xs:element name="VisibleTransmittance" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="SolarTransmittance" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ThermalIrTransmittance" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ThermalIrEmissivityBack" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ThermalIrEmissivityFront" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="VisibleReflectanceBack" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="VisibleReflectanceFront" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="SolarReflectanceFront" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="SolarReflectanceBack" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOrderAction" type="ifc:IfcOrderAction" substitutionGroup="ifc:IfcTask" nillable="true"/>
	<xs:complexType name="IfcOrderAction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTask">
				<xs:sequence>
					<xs:element name="ActionID" type="ifc:IfcIdentifier"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOrganization" type="ifc:IfcOrganization" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcOrganization">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Id" type="ifc:IfcIdentifier" nillable="true" minOccurs="0"/>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="Roles" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcActorRole" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcActorRole"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex: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="ex:itemType" fixed="ifc:IfcAddress"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOrganizationRelationship" type="ifc:IfcOrganizationRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcOrganizationRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="RelatingOrganization">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcOrganization"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedOrganizations">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcOrganization" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcOrganization"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IfcOrientedEdge-temp" abstract="true">
		<xs:complexContent>
			<xs:restriction base="ifc:IfcEdge">
				<xs:sequence/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOrientedEdge" type="ifc:IfcOrientedEdge" substitutionGroup="ifc:IfcEdge" nillable="true"/>
	<xs:complexType name="IfcOrientedEdge">
		<xs:complexContent>
			<xs:extension base="ifc:IfcOrientedEdge-temp">
				<xs:sequence>
					<xs:element name="EdgeElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcEdge"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Orientation" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOutletType" type="ifc:IfcOutletType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcOutletType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcOutletTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOwnerHistory" type="ifc:IfcOwnerHistory" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcOwnerHistory">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="OwningUser">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPersonAndOrganization"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="OwningApplication">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcApplication"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="State" type="ifc:IfcStateEnum" nillable="true" minOccurs="0"/>
					<xs:element name="ChangeAction" type="ifc:IfcChangeActionEnum"/>
					<xs:element name="LastModifiedDate" type="ifc:IfcTimeStamp" nillable="true" minOccurs="0"/>
					<xs:element name="LastModifyingUser" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPersonAndOrganization"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="LastModifyingApplication" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcApplication"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="CreationDate" type="ifc:IfcTimeStamp"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcParameterizedProfileDef" type="ifc:IfcParameterizedProfileDef" abstract="true" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcParameterizedProfileDef" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="Position">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAxis2Placement2D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPath" type="ifc:IfcPath" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcPath">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem">
				<xs:sequence>
					<xs:element name="EdgeList">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcOrientedEdge" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcOrientedEdge"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPerformanceHistory" type="ifc:IfcPerformanceHistory" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcPerformanceHistory">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="LifeCyclePhase" type="ifc:IfcLabel"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPermeableCoveringProperties" type="ifc:IfcPermeableCoveringProperties" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcPermeableCoveringProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="OperationType" type="ifc:IfcPermeableCoveringOperationEnum"/>
					<xs:element name="PanelPosition" type="ifc:IfcWindowPanelPositionEnum"/>
					<xs:element name="FrameDepth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FrameThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ShapeAspectStyle" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcShapeAspect"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPermit" type="ifc:IfcPermit" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcPermit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="PermitID" type="ifc:IfcIdentifier"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPerson" type="ifc:IfcPerson" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcPerson">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Id" type="ifc:IfcIdentifier" nillable="true" minOccurs="0"/>
					<xs:element name="FamilyName" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="GivenName" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="MiddleNames" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLabel" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLabel"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="PrefixTitles" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLabel" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLabel"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SuffixTitles" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLabel" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLabel"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Roles" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcActorRole" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcActorRole"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex: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="ex:itemType" fixed="ifc:IfcAddress"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPersonAndOrganization" type="ifc:IfcPersonAndOrganization" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcPersonAndOrganization">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ThePerson">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPerson"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="TheOrganization">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcOrganization"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Roles" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcActorRole" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcActorRole"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPhysicalComplexQuantity" type="ifc:IfcPhysicalComplexQuantity" substitutionGroup="ifc:IfcPhysicalQuantity" nillable="true"/>
	<xs:complexType name="IfcPhysicalComplexQuantity">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalQuantity">
				<xs:sequence>
					<xs:element name="HasQuantities">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPhysicalQuantity" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcPhysicalQuantity"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Discrimination" type="ifc:IfcLabel"/>
					<xs:element name="Quality" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Usage" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPhysicalQuantity" type="ifc:IfcPhysicalQuantity" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcPhysicalQuantity" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPhysicalSimpleQuantity" type="ifc:IfcPhysicalSimpleQuantity" abstract="true" substitutionGroup="ifc:IfcPhysicalQuantity" nillable="true"/>
	<xs:complexType name="IfcPhysicalSimpleQuantity" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalQuantity">
				<xs:sequence>
					<xs:element name="Unit" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcNamedUnit"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPile" type="ifc:IfcPile" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcPile">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcPileTypeEnum"/>
					<xs:element name="ConstructionType" type="ifc:IfcPileConstructionEnum" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPipeFittingType" type="ifc:IfcPipeFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
	<xs:complexType name="IfcPipeFittingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFittingType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcPipeFittingTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPipeSegmentType" type="ifc:IfcPipeSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
	<xs:complexType name="IfcPipeSegmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegmentType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcPipeSegmentTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPixelTexture" type="ifc:IfcPixelTexture" substitutionGroup="ifc:IfcSurfaceTexture" nillable="true"/>
	<xs:complexType name="IfcPixelTexture">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurfaceTexture">
				<xs:sequence>
					<xs:element name="Width" type="ifc:IfcInteger"/>
					<xs:element name="Height" type="ifc:IfcInteger"/>
					<xs:element name="ColourComponents" type="ifc:IfcInteger"/>
					<xs:element name="Pixel">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ex:string-wrapper" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ex:string-wrapper"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlacement" type="ifc:IfcPlacement" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcPlacement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Location">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlanarBox" type="ifc:IfcPlanarBox" substitutionGroup="ifc:IfcPlanarExtent" nillable="true"/>
	<xs:complexType name="IfcPlanarBox">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPlanarExtent">
				<xs:sequence>
					<xs:element name="Placement">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlanarExtent" type="ifc:IfcPlanarExtent" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcPlanarExtent">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="SizeInX" type="ifc:IfcLengthMeasure"/>
					<xs:element name="SizeInY" type="ifc:IfcLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlane" type="ifc:IfcPlane" substitutionGroup="ifc:IfcElementarySurface" nillable="true"/>
	<xs:complexType name="IfcPlane">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementarySurface"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlate" type="ifc:IfcPlate" substitutionGroup="ifc:IfcBuildingElementComponent" nillable="true"/>
	<xs:complexType name="IfcPlate">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementComponent"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlateType" type="ifc:IfcPlateType" substitutionGroup="ifc:IfcBuildingElementComponentType" nillable="true"/>
	<xs:complexType name="IfcPlateType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementComponentType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcPlateTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPoint" type="ifc:IfcPoint" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcPoint" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPointOnCurve" type="ifc:IfcPointOnCurve" substitutionGroup="ifc:IfcPoint" nillable="true"/>
	<xs:complexType name="IfcPointOnCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPoint">
				<xs:sequence>
					<xs:element name="BasisCurve">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="PointParameter" type="ifc:IfcParameterValue"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPointOnSurface" type="ifc:IfcPointOnSurface" substitutionGroup="ifc:IfcPoint" nillable="true"/>
	<xs:complexType name="IfcPointOnSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPoint">
				<xs:sequence>
					<xs:element name="BasisSurface">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSurface"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="PointParameterU" type="ifc:IfcParameterValue"/>
					<xs:element name="PointParameterV" type="ifc:IfcParameterValue"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPolyLoop" type="ifc:IfcPolyLoop" substitutionGroup="ifc:IfcLoop" nillable="true"/>
	<xs:complexType name="IfcPolyLoop">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLoop">
				<xs:sequence>
					<xs:element name="Polygon">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCartesianPoint" minOccurs="3" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcCartesianPoint"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPolygonalBoundedHalfSpace" type="ifc:IfcPolygonalBoundedHalfSpace" substitutionGroup="ifc:IfcHalfSpaceSolid" nillable="true"/>
	<xs:complexType name="IfcPolygonalBoundedHalfSpace">
		<xs:complexContent>
			<xs:extension base="ifc:IfcHalfSpaceSolid">
				<xs:sequence>
					<xs:element name="Position">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAxis2Placement3D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="PolygonalBoundary">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPolyline"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPolyline" type="ifc:IfcPolyline" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
	<xs:complexType name="IfcPolyline">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedCurve">
				<xs:sequence>
					<xs:element name="Points">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCartesianPoint" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcCartesianPoint"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPort" type="ifc:IfcPort" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcPort" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPostalAddress" type="ifc:IfcPostalAddress" substitutionGroup="ifc:IfcAddress" nillable="true"/>
	<xs:complexType name="IfcPostalAddress">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAddress">
				<xs:sequence>
					<xs:element name="InternalLocation" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="AddressLines" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLabel" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLabel"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="PostalBox" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Town" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Region" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="PostalCode" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Country" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedColour" type="ifc:IfcPreDefinedColour" abstract="true" substitutionGroup="ifc:IfcPreDefinedItem" nillable="true"/>
	<xs:complexType name="IfcPreDefinedColour" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedCurveFont" type="ifc:IfcPreDefinedCurveFont" abstract="true" substitutionGroup="ifc:IfcPreDefinedItem" nillable="true"/>
	<xs:complexType name="IfcPreDefinedCurveFont" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedDimensionSymbol" type="ifc:IfcPreDefinedDimensionSymbol" substitutionGroup="ifc:IfcPreDefinedSymbol" nillable="true"/>
	<xs:complexType name="IfcPreDefinedDimensionSymbol">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedSymbol"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedItem" type="ifc:IfcPreDefinedItem" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcPreDefinedItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedPointMarkerSymbol" type="ifc:IfcPreDefinedPointMarkerSymbol" substitutionGroup="ifc:IfcPreDefinedSymbol" nillable="true"/>
	<xs:complexType name="IfcPreDefinedPointMarkerSymbol">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedSymbol"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedSymbol" type="ifc:IfcPreDefinedSymbol" abstract="true" substitutionGroup="ifc:IfcPreDefinedItem" nillable="true"/>
	<xs:complexType name="IfcPreDefinedSymbol" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedTerminatorSymbol" type="ifc:IfcPreDefinedTerminatorSymbol" substitutionGroup="ifc:IfcPreDefinedSymbol" nillable="true"/>
	<xs:complexType name="IfcPreDefinedTerminatorSymbol">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedSymbol"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedTextFont" type="ifc:IfcPreDefinedTextFont" abstract="true" substitutionGroup="ifc:IfcPreDefinedItem" nillable="true"/>
	<xs:complexType name="IfcPreDefinedTextFont" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPresentationLayerAssignment" type="ifc:IfcPresentationLayerAssignment" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcPresentationLayerAssignment">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="AssignedItems">
						<xs:complexType>
							<xs:group ref="ifc:IfcLayeredItem" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLayeredItem"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPresentationLayerAssignmentWithStyle" type="ifc:IfcPresentationLayerAssignmentWithStyle" substitutionGroup="ifc:IfcPresentationLayerAssignment" nillable="true"/>
	<xs:complexType name="IfcPresentationLayerAssignmentWithStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationLayerAssignment">
				<xs:sequence>
					<xs:element name="LayerNumber" type="xs:long" nillable="true" minOccurs="0"/>
					<xs:element name="LayerOn" type="ex:logical"/>
					<xs:element name="LayerOnInAllViews" type="ex:logical"/>
					<xs:element name="LayerFrozen" type="ex:logical"/>
					<xs:element name="LayerFrozenInAllViews" type="ex:logical"/>
					<xs:element name="LayerBlocked" type="ex:logical"/>
					<xs:element name="LayerColour" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcColour"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LayerCurveWidth" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcSizeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LayerCurveFont" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveFontOrScaledCurveFontSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPresentationStyleAssignment" type="ifc:IfcPresentationStyleAssignment" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcPresentationStyleAssignment">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Styles">
						<xs:complexType>
							<xs:group ref="ifc:IfcPresentationStyleSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcPresentationStyleSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProcedure" type="ifc:IfcProcedure" substitutionGroup="ifc:IfcProcess" nillable="true"/>
	<xs:complexType name="IfcProcedure">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProcess">
				<xs:sequence>
					<xs:element name="ProcedureID" type="ifc:IfcIdentifier"/>
					<xs:element name="ProcedureType" type="ifc:IfcProcedureTypeEnum"/>
					<xs:element name="UserDefinedProcedureType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProcess" type="ifc:IfcProcess" abstract="true" substitutionGroup="ifc:IfcObject" nillable="true"/>
	<xs:complexType name="IfcProcess" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObject"/>
		</xs: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" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcObjectPlacement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Representation" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProductRepresentation"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</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" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcProductRepresentation">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="Representations">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRepresentation" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcRepresentation"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProductsOfCombustionProperties" type="ifc:IfcProductsOfCombustionProperties" substitutionGroup="ifc:IfcMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcProductsOfCombustionProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProperties">
				<xs:sequence>
					<xs:element name="SpecificHeatCapacity" type="ifc:IfcSpecificHeatCapacityMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="N20Content" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="COContent" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CO2Content" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProfileDef" type="ifc:IfcProfileDef" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcProfileDef" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ProfileType" type="ifc:IfcProfileTypeEnum"/>
					<xs:element name="ProfileName" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProfileProperties" type="ifc:IfcProfileProperties" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcProfileProperties" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ProfileName" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="ProfileDefinition" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProfileDef"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProject" type="ifc:IfcProject" substitutionGroup="ifc:IfcObject" nillable="true"/>
	<xs:complexType name="IfcProject">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObject">
				<xs:sequence>
					<xs:element name="LongName" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Phase" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="RepresentationContexts">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRepresentationContext" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcRepresentationContext"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="UnitsInContext">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcUnitAssignment"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProjectOrder" type="ifc:IfcProjectOrder" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcProjectOrder">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="ID" type="ifc:IfcIdentifier"/>
					<xs:element name="PredefinedType" type="ifc:IfcProjectOrderTypeEnum"/>
					<xs:element name="Status" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProjectOrderRecord" type="ifc:IfcProjectOrderRecord" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcProjectOrderRecord">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="Records">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRelAssignsToProjectOrder" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcRelAssignsToProjectOrder"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="PredefinedType" type="ifc:IfcProjectOrderRecordTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProjectionCurve" type="ifc:IfcProjectionCurve" substitutionGroup="ifc:IfcAnnotationCurveOccurrence" nillable="true"/>
	<xs:complexType name="IfcProjectionCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAnnotationCurveOccurrence"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProjectionElement" type="ifc:IfcProjectionElement" substitutionGroup="ifc:IfcFeatureElementAddition" nillable="true"/>
	<xs:complexType name="IfcProjectionElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElementAddition"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProperty" type="ifc:IfcProperty" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcProperty" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcIdentifier"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyBoundedValue" type="ifc:IfcPropertyBoundedValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
	<xs:complexType name="IfcPropertyBoundedValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSimpleProperty">
				<xs:sequence>
					<xs:element name="UpperBoundValue" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LowerBoundValue" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Unit" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyConstraintRelationship" type="ifc:IfcPropertyConstraintRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcPropertyConstraintRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="RelatingConstraint">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcConstraint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedProperties">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcProperty"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyDefinition" type="ifc:IfcPropertyDefinition" abstract="true" substitutionGroup="ifc:IfcRoot" nillable="true"/>
	<xs:complexType name="IfcPropertyDefinition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRoot"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyDependencyRelationship" type="ifc:IfcPropertyDependencyRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcPropertyDependencyRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="DependingProperty">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProperty"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="DependantProperty">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProperty"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="Expression" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyEnumeratedValue" type="ifc:IfcPropertyEnumeratedValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
	<xs:complexType name="IfcPropertyEnumeratedValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSimpleProperty">
				<xs:sequence>
					<xs:element name="EnumerationValues">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="EnumerationReference" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPropertyEnumeration"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyEnumeration" type="ifc:IfcPropertyEnumeration" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcPropertyEnumeration">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="EnumerationValues">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Unit" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyListValue" type="ifc:IfcPropertyListValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
	<xs:complexType name="IfcPropertyListValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSimpleProperty">
				<xs:sequence>
					<xs:element name="ListValues">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Unit" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyReferenceValue" type="ifc:IfcPropertyReferenceValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
	<xs:complexType name="IfcPropertyReferenceValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSimpleProperty">
				<xs:sequence>
					<xs:element name="UsageName" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="PropertyReference">
						<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="ex:itemType" fixed="ifc:IfcProperty"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex: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:sequence>
					<xs:element name="NominalValue">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Unit" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyTableValue" type="ifc:IfcPropertyTableValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
	<xs:complexType name="IfcPropertyTableValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSimpleProperty">
				<xs:sequence>
					<xs:element name="DefiningValues">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="DefinedValues">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Expression" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="DefiningUnit" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="DefinedUnit" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProtectiveDeviceType" type="ifc:IfcProtectiveDeviceType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcProtectiveDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcProtectiveDeviceTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProxy" type="ifc:IfcProxy" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcProxy">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct">
				<xs:sequence>
					<xs:element name="ProxyType" type="ifc:IfcObjectTypeEnum"/>
					<xs:element name="Tag" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPumpType" type="ifc:IfcPumpType" substitutionGroup="ifc:IfcFlowMovingDeviceType" nillable="true"/>
	<xs:complexType name="IfcPumpType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowMovingDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcPumpTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityArea" type="ifc:IfcQuantityArea" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityArea">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:sequence>
					<xs:element name="AreaValue" type="ifc:IfcAreaMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityCount" type="ifc:IfcQuantityCount" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityCount">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:sequence>
					<xs:element name="CountValue" type="ifc:IfcCountMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityLength" type="ifc:IfcQuantityLength" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityLength">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:sequence>
					<xs:element name="LengthValue" type="ifc:IfcLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityTime" type="ifc:IfcQuantityTime" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityTime">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:sequence>
					<xs:element name="TimeValue" type="ifc:IfcTimeMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityVolume" type="ifc:IfcQuantityVolume" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityVolume">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:sequence>
					<xs:element name="VolumeValue" type="ifc:IfcVolumeMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityWeight" type="ifc:IfcQuantityWeight" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityWeight">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:sequence>
					<xs:element name="WeightValue" type="ifc:IfcMassMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRadiusDimension" type="ifc:IfcRadiusDimension" substitutionGroup="ifc:IfcDimensionCurveDirectedCallout" nillable="true"/>
	<xs:complexType name="IfcRadiusDimension">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDimensionCurveDirectedCallout"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRailing" type="ifc:IfcRailing" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcRailing">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcRailingTypeEnum" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRailingType" type="ifc:IfcRailingType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
	<xs:complexType name="IfcRailingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcRailingTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRamp" type="ifc:IfcRamp" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcRamp">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement">
				<xs:sequence>
					<xs:element name="ShapeType" type="ifc:IfcRampTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRampFlight" type="ifc:IfcRampFlight" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcRampFlight">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRampFlightType" type="ifc:IfcRampFlightType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
	<xs:complexType name="IfcRampFlightType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcRampFlightTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRationalBezierCurve" type="ifc:IfcRationalBezierCurve" substitutionGroup="ifc:IfcBezierCurve" nillable="true"/>
	<xs:complexType name="IfcRationalBezierCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBezierCurve">
				<xs:sequence>
					<xs:element name="WeightsData">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ex:double-wrapper" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ex:double-wrapper"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRectangleHollowProfileDef" type="ifc:IfcRectangleHollowProfileDef" substitutionGroup="ifc:IfcRectangleProfileDef" nillable="true"/>
	<xs:complexType name="IfcRectangleHollowProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRectangleProfileDef">
				<xs:sequence>
					<xs:element name="WallThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="InnerFilletRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="OuterFilletRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRectangleProfileDef" type="ifc:IfcRectangleProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcRectangleProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="XDim" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="YDim" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRectangularTrimmedSurface" type="ifc:IfcRectangularTrimmedSurface" substitutionGroup="ifc:IfcBoundedSurface" nillable="true"/>
	<xs:complexType name="IfcRectangularTrimmedSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedSurface">
				<xs:sequence>
					<xs:element name="BasisSurface">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSurface"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="U1" type="ifc:IfcParameterValue"/>
					<xs:element name="V1" type="ifc:IfcParameterValue"/>
					<xs:element name="U2" type="ifc:IfcParameterValue"/>
					<xs:element name="V2" type="ifc:IfcParameterValue"/>
					<xs:element name="Usense" type="xs:boolean"/>
					<xs:element name="Vsense" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReferencesValueDocument" type="ifc:IfcReferencesValueDocument" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcReferencesValueDocument">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ReferencedDocument">
						<xs:complexType>
							<xs:group ref="ifc:IfcDocumentSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ReferencingValues">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcAppliedValue" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcAppliedValue"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRegularTimeSeries" type="ifc:IfcRegularTimeSeries" substitutionGroup="ifc:IfcTimeSeries" nillable="true"/>
	<xs:complexType name="IfcRegularTimeSeries">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTimeSeries">
				<xs:sequence>
					<xs:element name="TimeStep" type="ifc:IfcTimeMeasure"/>
					<xs:element name="Values">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcTimeSeriesValue" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcTimeSeriesValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcementBarProperties" type="ifc:IfcReinforcementBarProperties" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcReinforcementBarProperties">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="TotalCrossSectionArea" type="ifc:IfcAreaMeasure"/>
					<xs:element name="SteelGrade" type="ifc:IfcLabel"/>
					<xs:element name="BarSurface" type="ifc:IfcReinforcingBarSurfaceEnum" nillable="true" minOccurs="0"/>
					<xs:element name="EffectiveDepth" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="NominalBarDiameter" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="BarCount" type="ifc:IfcCountMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcementDefinitionProperties" type="ifc:IfcReinforcementDefinitionProperties" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcReinforcementDefinitionProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="DefinitionType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="ReinforcementSectionDefinitions">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcSectionReinforcementProperties" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcSectionReinforcementProperties"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcingBar" type="ifc:IfcReinforcingBar" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
	<xs:complexType name="IfcReinforcingBar">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElement">
				<xs:sequence>
					<xs:element name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="CrossSectionArea" type="ifc:IfcAreaMeasure"/>
					<xs:element name="BarLength" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="BarRole" type="ifc:IfcReinforcingBarRoleEnum"/>
					<xs:element name="BarSurface" type="ifc:IfcReinforcingBarSurfaceEnum" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcingElement" type="ifc:IfcReinforcingElement" abstract="true" substitutionGroup="ifc:IfcBuildingElementComponent" nillable="true"/>
	<xs:complexType name="IfcReinforcingElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementComponent">
				<xs:sequence>
					<xs:element name="SteelGrade" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcingMesh" type="ifc:IfcReinforcingMesh" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
	<xs:complexType name="IfcReinforcingMesh">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElement">
				<xs:sequence>
					<xs:element name="MeshLength" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MeshWidth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LongitudinalBarNominalDiameter" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="TransverseBarNominalDiameter" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="LongitudinalBarCrossSectionArea" type="ifc:IfcAreaMeasure"/>
					<xs:element name="TransverseBarCrossSectionArea" type="ifc:IfcAreaMeasure"/>
					<xs:element name="LongitudinalBarSpacing" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="TransverseBarSpacing" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</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: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:IfcObject" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcObject"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedObjectsType" type="ifc:IfcObjectTypeEnum" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssignsTasks" type="ifc:IfcRelAssignsTasks" substitutionGroup="ifc:IfcRelAssignsToControl" nillable="true"/>
	<xs:complexType name="IfcRelAssignsTasks">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssignsToControl">
				<xs:sequence>
					<xs:element name="TimeForTask" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcScheduleTimeControl"/>
							</xs:choice>
						</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcActor"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ActingRole" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcActorRole"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcControl"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcGroup"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</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:choice>
								<xs:element ref="ifc:IfcProcess"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="QuantityInProcess" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcMeasureWithUnit"/>
							</xs:choice>
						</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:choice>
								<xs:element ref="ifc:IfcProduct"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssignsToProjectOrder" type="ifc:IfcRelAssignsToProjectOrder" substitutionGroup="ifc:IfcRelAssignsToControl" nillable="true"/>
	<xs:complexType name="IfcRelAssignsToProjectOrder">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssignsToControl"/>
		</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:choice>
								<xs:element ref="ifc:IfcResource"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociates" type="ifc:IfcRelAssociates" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
	<xs:complexType name="IfcRelAssociates">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelationship">
				<xs:sequence>
					<xs:element name="RelatedObjects">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRoot" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcRoot"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesAppliedValue" type="ifc:IfcRelAssociatesAppliedValue" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesAppliedValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingAppliedValue">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAppliedValue"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesApproval" type="ifc:IfcRelAssociatesApproval" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesApproval">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingApproval">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcApproval"/>
							</xs:choice>
						</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:IfcClassificationNotationSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesConstraint" type="ifc:IfcRelAssociatesConstraint" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesConstraint">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="Intent" type="ifc:IfcLabel"/>
					<xs:element name="RelatingConstraint">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcConstraint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesDocument" type="ifc:IfcRelAssociatesDocument" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesDocument">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingDocument">
						<xs:complexType>
							<xs:group ref="ifc:IfcDocumentSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesLibrary" type="ifc:IfcRelAssociatesLibrary" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesLibrary">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingLibrary">
						<xs:complexType>
							<xs:group ref="ifc:IfcLibrarySelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesMaterial" type="ifc:IfcRelAssociatesMaterial" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesMaterial">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingMaterial">
						<xs:complexType>
							<xs:group ref="ifc:IfcMaterialSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesProfileProperties" type="ifc:IfcRelAssociatesProfileProperties" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesProfileProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingProfileProperties">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProfileProperties"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ProfileSectionLocation" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcShapeAspect"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnects" type="ifc:IfcRelConnects" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
	<xs:complexType name="IfcRelConnects" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelationship"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsElements" type="ifc:IfcRelConnectsElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelConnectsElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="ConnectionGeometry" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcConnectionGeometry"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatingElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsPathElements" type="ifc:IfcRelConnectsPathElements" substitutionGroup="ifc:IfcRelConnectsElements" nillable="true"/>
	<xs:complexType name="IfcRelConnectsPathElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnectsElements">
				<xs:sequence>
					<xs:element name="RelatingPriorities">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ex:long-wrapper" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ex:long-wrapper"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedPriorities">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ex:long-wrapper" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ex:long-wrapper"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedConnectionType" type="ifc:IfcConnectionTypeEnum"/>
					<xs:element name="RelatingConnectionType" type="ifc:IfcConnectionTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsPortToElement" type="ifc:IfcRelConnectsPortToElement" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelConnectsPortToElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingPort">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPort"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsPorts" type="ifc:IfcRelConnectsPorts" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelConnectsPorts">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingPort">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPort"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedPort">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPort"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RealizingElement" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsStructuralActivity" type="ifc:IfcRelConnectsStructuralActivity" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelConnectsStructuralActivity">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingElement">
						<xs:complexType>
							<xs:group ref="ifc:IfcStructuralActivityAssignmentSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedStructuralActivity">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcStructuralActivity"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsStructuralMember" type="ifc:IfcRelConnectsStructuralMember" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelConnectsStructuralMember">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingStructuralMember">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcStructuralMember"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedStructuralConnection">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcStructuralConnection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="AppliedCondition" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcBoundaryCondition"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="AdditionalConditions" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcStructuralConnectionCondition"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="SupportedLength" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ConditionCoordinateSystem" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAxis2Placement3D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsWithRealizingElements" type="ifc:IfcRelConnectsWithRealizingElements" substitutionGroup="ifc:IfcRelConnectsElements" nillable="true"/>
	<xs:complexType name="IfcRelConnectsWithRealizingElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnectsElements">
				<xs:sequence>
					<xs:element name="RealizingElements">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcElement" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcElement"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ConnectionType" type="ifc:IfcLabel" 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="ex:itemType" fixed="ifc:IfcProduct"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatingStructure">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSpatialStructureElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelCoversBldgElements" type="ifc:IfcRelCoversBldgElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelCoversBldgElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingBuildingElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedCoverings">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCovering" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcCovering"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex: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:sequence>
					<xs:element name="RelatingObject">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcObject"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedObjects">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcObject" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcObject"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</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:sequence>
					<xs:element name="RelatedObjects">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcObject" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcObject"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelDefinesByProperties" type="ifc:IfcRelDefinesByProperties" substitutionGroup="ifc:IfcRelDefines" nillable="true"/>
	<xs:complexType name="IfcRelDefinesByProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDefines">
				<xs:sequence>
					<xs:element name="RelatingPropertyDefinition">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPropertySetDefinition"/>
							</xs:choice>
						</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="RelatingType">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTypeObject"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelFillsElement" type="ifc:IfcRelFillsElement" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelFillsElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingOpeningElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcOpeningElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedBuildingElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelFlowControlElements" type="ifc:IfcRelFlowControlElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelFlowControlElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatedControlElements">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcDistributionControlElement" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcDistributionControlElement"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatingFlowElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDistributionFlowElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelInteractionRequirements" type="ifc:IfcRelInteractionRequirements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelInteractionRequirements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="DailyInteraction" type="ifc:IfcCountMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ImportanceRating" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LocationOfInteraction" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSpatialStructureElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedSpaceProgram">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSpaceProgram"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatingSpaceProgram">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSpaceProgram"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</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:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelOccupiesSpaces" type="ifc:IfcRelOccupiesSpaces" substitutionGroup="ifc:IfcRelAssignsToActor" nillable="true"/>
	<xs:complexType name="IfcRelOccupiesSpaces">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssignsToActor"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelOverridesProperties" type="ifc:IfcRelOverridesProperties" substitutionGroup="ifc:IfcRelDefinesByProperties" nillable="true"/>
	<xs:complexType name="IfcRelOverridesProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDefinesByProperties">
				<xs:sequence>
					<xs:element name="OverridingProperties">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcProperty"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelProjectsElement" type="ifc:IfcRelProjectsElement" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelProjectsElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedFeatureElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcFeatureElementAddition"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelSchedulesCostItems" type="ifc:IfcRelSchedulesCostItems" substitutionGroup="ifc:IfcRelAssignsToControl" nillable="true"/>
	<xs:complexType name="IfcRelSchedulesCostItems">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssignsToControl"/>
		</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProcess"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedProcess">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProcess"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="TimeLag" type="ifc:IfcTimeMeasure"/>
					<xs:element name="SequenceType" type="ifc:IfcSequenceEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelServicesBuildings" type="ifc:IfcRelServicesBuildings" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelServicesBuildings">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingSystem">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSystem"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedBuildings">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcSpatialStructureElement" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcSpatialStructureElement"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelSpaceBoundary" type="ifc:IfcRelSpaceBoundary" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelSpaceBoundary">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingSpace">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSpace"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedBuildingElement" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ConnectionGeometry" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcConnectionGeometry"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="PhysicalOrVirtualBoundary" type="ifc:IfcPhysicalOrVirtualEnum"/>
					<xs:element name="InternalOrExternalBoundary" type="ifc:IfcInternalOrExternalEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelVoidsElement" type="ifc:IfcRelVoidsElement" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelVoidsElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingBuildingElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedOpeningElement">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcFeatureElementSubtraction"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</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="IfcRelaxation" type="ifc:IfcRelaxation" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcRelaxation">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="RelaxationValue" type="ifc:IfcNormalisedRatioMeasure"/>
					<xs:element name="InitialStress" type="ifc:IfcNormalisedRatioMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRepresentation" type="ifc:IfcRepresentation" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcRepresentation">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ContextOfItems">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcRepresentationContext"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="RepresentationIdentifier" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="RepresentationType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Items">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRepresentationItem" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcRepresentationItem"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRepresentationContext" type="ifc:IfcRepresentationContext" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcRepresentationContext">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ContextIdentifier" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="ContextType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRepresentationItem" type="ifc:IfcRepresentationItem" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcRepresentationItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRepresentationMap" type="ifc:IfcRepresentationMap" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcRepresentationMap">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="MappingOrigin">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="MappedRepresentation">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcRepresentation"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAxis1Placement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Angle" type="ifc:IfcPlaneAngleMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRibPlateProfileProperties" type="ifc:IfcRibPlateProfileProperties" substitutionGroup="ifc:IfcProfileProperties" nillable="true"/>
	<xs:complexType name="IfcRibPlateProfileProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileProperties">
				<xs:sequence>
					<xs:element name="Thickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RibHeight" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RibWidth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RibSpacing" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="Direction" type="ifc:IfcRibPlateDirectionEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRoof" type="ifc:IfcRoof" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcRoof">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement">
				<xs:sequence>
					<xs:element name="ShapeType" type="ifc:IfcRoofTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRoot" type="ifc:IfcRoot" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcRoot" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="GlobalId" type="ifc:IfcGloballyUniqueId"/>
					<xs:element name="OwnerHistory">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcOwnerHistory"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRoundedEdgeFeature" type="ifc:IfcRoundedEdgeFeature" substitutionGroup="ifc:IfcEdgeFeature" nillable="true"/>
	<xs:complexType name="IfcRoundedEdgeFeature">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEdgeFeature">
				<xs:sequence>
					<xs:element name="Radius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRoundedRectangleProfileDef" type="ifc:IfcRoundedRectangleProfileDef" substitutionGroup="ifc:IfcRectangleProfileDef" nillable="true"/>
	<xs:complexType name="IfcRoundedRectangleProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRectangleProfileDef">
				<xs:sequence>
					<xs:element name="RoundingRadius" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IfcSIUnit-temp" abstract="true">
		<xs:complexContent>
			<xs:restriction base="ifc:IfcNamedUnit">
				<xs:sequence>
					<xs:element name="UnitType" type="ifc:IfcUnitEnum"/>
				</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:sequence>
					<xs:element name="Prefix" type="ifc:IfcSIPrefix" nillable="true" minOccurs="0"/>
					<xs:element name="Name" type="ifc:IfcSIUnitName"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSanitaryTerminalType" type="ifc:IfcSanitaryTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcSanitaryTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcSanitaryTerminalTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcScheduleTimeControl" type="ifc:IfcScheduleTimeControl" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcScheduleTimeControl">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="ActualStart" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="EarlyStart" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LateStart" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ScheduleStart" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ActualFinish" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="EarlyFinish" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LateFinish" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ScheduleFinish" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ScheduleDuration" type="ifc:IfcTimeMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ActualDuration" type="ifc:IfcTimeMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RemainingTime" type="ifc:IfcTimeMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FreeFloat" type="ifc:IfcTimeMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TotalFloat" type="ifc:IfcTimeMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="IsCritical" type="xs:boolean" nillable="true" minOccurs="0"/>
					<xs:element name="StatusTime" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="StartFloat" type="ifc:IfcTimeMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FinishFloat" type="ifc:IfcTimeMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="Completion" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSectionProperties" type="ifc:IfcSectionProperties" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcSectionProperties">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="SectionType" type="ifc:IfcSectionTypeEnum"/>
					<xs:element name="StartProfile">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProfileDef"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="EndProfile" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProfileDef"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSectionReinforcementProperties" type="ifc:IfcSectionReinforcementProperties" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcSectionReinforcementProperties">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="LongitudinalStartPosition" type="ifc:IfcLengthMeasure"/>
					<xs:element name="LongitudinalEndPosition" type="ifc:IfcLengthMeasure"/>
					<xs:element name="TransversePosition" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ReinforcementRole" type="ifc:IfcReinforcingBarRoleEnum"/>
					<xs:element name="SectionDefinition">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSectionProperties"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="CrossSectionReinforcementDefinitions">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcReinforcementBarProperties" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcReinforcementBarProperties"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSectionedSpine" type="ifc:IfcSectionedSpine" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcSectionedSpine">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="SpineCurve">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCompositeCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="CrossSections">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProfileDef" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcProfileDef"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex: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="ex:itemType" fixed="ifc:IfcAxis2Placement3D"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSensorType" type="ifc:IfcSensorType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcSensorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcSensorTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcServiceLife" type="ifc:IfcServiceLife" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcServiceLife">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="ServiceLifeType" type="ifc:IfcServiceLifeTypeEnum"/>
					<xs:element name="ServiceLifeDuration" type="ifc:IfcTimeMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcServiceLifeFactor" type="ifc:IfcServiceLifeFactor" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcServiceLifeFactor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcServiceLifeFactorTypeEnum"/>
					<xs:element name="UpperValue" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcMeasureValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="MostUsedValue">
						<xs:complexType>
							<xs:group ref="ifc:IfcMeasureValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LowerValue" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcMeasureValue"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcShapeAspect" type="ifc:IfcShapeAspect" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcShapeAspect">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ShapeRepresentations">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcShapeRepresentation" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcShapeRepresentation"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="ProductDefinitional" type="ex:logical"/>
					<xs:element name="PartOfProductDefinitionShape">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProductDefinitionShape"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcShapeRepresentation" type="ifc:IfcShapeRepresentation" substitutionGroup="ifc:IfcRepresentation" nillable="true"/>
	<xs:complexType name="IfcShapeRepresentation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentation"/>
		</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="ex:itemType" fixed="ifc:IfcShell"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex: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="RefLatitude" type="ifc:IfcCompoundPlaneAngleMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RefLongitude" type="ifc:IfcCompoundPlaneAngleMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RefElevation" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LandTitleNumber" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="SiteAddress" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPostalAddress"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</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:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcSlabTypeEnum" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSlabType" type="ifc:IfcSlabType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
	<xs:complexType name="IfcSlabType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcSlabTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSlippageConnectionCondition" type="ifc:IfcSlippageConnectionCondition" substitutionGroup="ifc:IfcStructuralConnectionCondition" nillable="true"/>
	<xs:complexType name="IfcSlippageConnectionCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralConnectionCondition">
				<xs:sequence>
					<xs:element name="SlippageX" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="SlippageY" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="SlippageZ" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</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="IfcSoundProperties" type="ifc:IfcSoundProperties" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcSoundProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="IsAttenuating" type="ifc:IfcBoolean"/>
					<xs:element name="SoundScale" type="ifc:IfcSoundScaleEnum" nillable="true" minOccurs="0"/>
					<xs:element name="PointOfMeasurement" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcLocalPlacement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="SoundValues">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcSoundValue" maxOccurs="8"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcSoundValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSoundValue" type="ifc:IfcSoundValue" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcSoundValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="SoundLevelTimeSeries" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTimeSeries"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Frequency" type="ifc:IfcFrequencyMeasure"/>
					<xs:element name="SoundLevelSingleValue" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDerivedMeasureValue"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</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:sequence>
					<xs:element name="InteriorOrExteriorSpace" type="ifc:IfcInternalOrExternalEnum"/>
					<xs:element name="ElevationWithFlooring" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpaceHeaterType" type="ifc:IfcSpaceHeaterType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcSpaceHeaterType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcSpaceHeaterTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpaceProgram" type="ifc:IfcSpaceProgram" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcSpaceProgram">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="SpaceProgramIdentifier" type="ifc:IfcIdentifier"/>
					<xs:element name="MaxRequiredArea" type="ifc:IfcAreaMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MinRequiredArea" type="ifc:IfcAreaMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RequestedLocation" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSpatialStructureElement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="StandardRequiredArea" type="ifc:IfcAreaMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpaceThermalLoadProperties" type="ifc:IfcSpaceThermalLoadProperties" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcSpaceThermalLoadProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="ApplicableValueRatio" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ThermalLoadSource" type="ifc:IfcThermalLoadSourceEnum"/>
					<xs:element name="PropertySource" type="ifc:IfcPropertySourceEnum"/>
					<xs:element name="SourceDescription" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="MaximumValue" type="ifc:IfcPowerMeasure"/>
					<xs:element name="MinimumValue" type="ifc:IfcPowerMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ThermalLoadTimeSeriesValues" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTimeSeries"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="UserDefinedThermalLoadSource" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="UserDefinedPropertySource" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="ThermalLoadType" type="ifc:IfcThermalLoadTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpatialStructureElement" type="ifc:IfcSpatialStructureElement" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcSpatialStructureElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct">
				<xs:sequence>
					<xs:element name="LongName" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="CompositionType" type="ifc:IfcElementCompositionEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStackTerminalType" type="ifc:IfcStackTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcStackTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcStackTerminalTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStair" type="ifc:IfcStair" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcStair">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement">
				<xs:sequence>
					<xs:element name="ShapeType" type="ifc:IfcStairTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStairFlight" type="ifc:IfcStairFlight" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcStairFlight">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement">
				<xs:sequence>
					<xs:element name="NumberOfRiser" type="xs:long" nillable="true" minOccurs="0"/>
					<xs:element name="NumberOfTreads" type="xs:long" nillable="true" minOccurs="0"/>
					<xs:element name="RiserHeight" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TreadLength" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStairFlightType" type="ifc:IfcStairFlightType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
	<xs:complexType name="IfcStairFlightType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcStairFlightTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralAction" type="ifc:IfcStructuralAction" abstract="true" substitutionGroup="ifc:IfcStructuralActivity" nillable="true"/>
	<xs:complexType name="IfcStructuralAction" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralActivity">
				<xs:sequence>
					<xs:element name="DestabilizingLoad" type="xs:boolean"/>
					<xs:element name="ProjectedOrTrue" type="ifc:IfcProjectedOrTrueLengthEnum"/>
					<xs:element name="CausedBy" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcStructuralReaction"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralActivity" type="ifc:IfcStructuralActivity" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcStructuralActivity" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct">
				<xs:sequence>
					<xs:element name="AppliedLoad">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcStructuralLoad"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="GlobalOrLocal" type="ifc:IfcGlobalOrLocalEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralAnalysisModel" type="ifc:IfcStructuralAnalysisModel" substitutionGroup="ifc:IfcSystem" nillable="true"/>
	<xs:complexType name="IfcStructuralAnalysisModel">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSystem">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcAnalysisModelTypeEnum"/>
					<xs:element name="OrientationOf2DPlane" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAxis2Placement3D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="LoadedBy" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcStructuralLoadGroup" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcStructuralLoadGroup"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="HasResults" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcStructuralResultGroup" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcStructuralResultGroup"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralConnection" type="ifc:IfcStructuralConnection" abstract="true" substitutionGroup="ifc:IfcStructuralItem" nillable="true"/>
	<xs:complexType name="IfcStructuralConnection" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralItem">
				<xs:sequence>
					<xs:element name="AppliedCondition" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcBoundaryCondition"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralConnectionCondition" type="ifc:IfcStructuralConnectionCondition" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcStructuralConnectionCondition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralCurveConnection" type="ifc:IfcStructuralCurveConnection" substitutionGroup="ifc:IfcStructuralConnection" nillable="true"/>
	<xs:complexType name="IfcStructuralCurveConnection">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralConnection"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralCurveMember" type="ifc:IfcStructuralCurveMember" substitutionGroup="ifc:IfcStructuralMember" nillable="true"/>
	<xs:complexType name="IfcStructuralCurveMember">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralMember">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcStructuralCurveTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralCurveMemberVarying" type="ifc:IfcStructuralCurveMemberVarying" substitutionGroup="ifc:IfcStructuralCurveMember" nillable="true"/>
	<xs:complexType name="IfcStructuralCurveMemberVarying">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralCurveMember"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralItem" type="ifc:IfcStructuralItem" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcStructuralItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLinearAction" type="ifc:IfcStructuralLinearAction" substitutionGroup="ifc:IfcStructuralAction" nillable="true"/>
	<xs:complexType name="IfcStructuralLinearAction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralAction"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLinearActionVarying" type="ifc:IfcStructuralLinearActionVarying" substitutionGroup="ifc:IfcStructuralLinearAction" nillable="true"/>
	<xs:complexType name="IfcStructuralLinearActionVarying">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLinearAction">
				<xs:sequence>
					<xs:element name="VaryingAppliedLoadLocation">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcShapeAspect"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="SubsequentAppliedLoads">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcStructuralLoad" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcStructuralLoad"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoad" type="ifc:IfcStructuralLoad" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcStructuralLoad" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadGroup" type="ifc:IfcStructuralLoadGroup" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadGroup">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcLoadGroupTypeEnum"/>
					<xs:element name="ActionType" type="ifc:IfcActionTypeEnum"/>
					<xs:element name="ActionSource" type="ifc:IfcActionSourceTypeEnum"/>
					<xs:element name="Coefficient" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="Purpose" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadLinearForce" type="ifc:IfcStructuralLoadLinearForce" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadLinearForce">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadStatic">
				<xs:sequence>
					<xs:element name="LinearForceX" type="ifc:IfcLinearForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearForceY" type="ifc:IfcLinearForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearForceZ" type="ifc:IfcLinearForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearMomentX" type="ifc:IfcLinearMomentMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearMomentY" type="ifc:IfcLinearMomentMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LinearMomentZ" type="ifc:IfcLinearMomentMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadPlanarForce" type="ifc:IfcStructuralLoadPlanarForce" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadPlanarForce">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadStatic">
				<xs:sequence>
					<xs:element name="PlanarForceX" type="ifc:IfcPlanarForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PlanarForceY" type="ifc:IfcPlanarForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PlanarForceZ" type="ifc:IfcPlanarForceMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadSingleDisplacement" type="ifc:IfcStructuralLoadSingleDisplacement" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadSingleDisplacement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadStatic">
				<xs:sequence>
					<xs:element name="DisplacementX" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="DisplacementY" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="DisplacementZ" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RotationalDisplacementRX" type="ifc:IfcPlaneAngleMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RotationalDisplacementRY" type="ifc:IfcPlaneAngleMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="RotationalDisplacementRZ" type="ifc:IfcPlaneAngleMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadSingleDisplacementDistortion" type="ifc:IfcStructuralLoadSingleDisplacementDistortion" substitutionGroup="ifc:IfcStructuralLoadSingleDisplacement" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadSingleDisplacementDistortion">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadSingleDisplacement">
				<xs:sequence>
					<xs:element name="Distortion" type="ifc:IfcCurvatureMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadSingleForce" type="ifc:IfcStructuralLoadSingleForce" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadSingleForce">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadStatic">
				<xs:sequence>
					<xs:element name="ForceX" type="ifc:IfcForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ForceY" type="ifc:IfcForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ForceZ" type="ifc:IfcForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MomentX" type="ifc:IfcTorqueMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MomentY" type="ifc:IfcTorqueMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MomentZ" type="ifc:IfcTorqueMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadSingleForceWarping" type="ifc:IfcStructuralLoadSingleForceWarping" substitutionGroup="ifc:IfcStructuralLoadSingleForce" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadSingleForceWarping">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadSingleForce">
				<xs:sequence>
					<xs:element name="WarpingMoment" type="ifc:IfcWarpingMomentMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadStatic" type="ifc:IfcStructuralLoadStatic" abstract="true" substitutionGroup="ifc:IfcStructuralLoad" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadStatic" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoad"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadTemperature" type="ifc:IfcStructuralLoadTemperature" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadTemperature">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadStatic">
				<xs:sequence>
					<xs:element name="DeltaT_Constant" type="ifc:IfcThermodynamicTemperatureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="DeltaT_Y" type="ifc:IfcThermodynamicTemperatureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="DeltaT_Z" type="ifc:IfcThermodynamicTemperatureMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralMember" type="ifc:IfcStructuralMember" abstract="true" substitutionGroup="ifc:IfcStructuralItem" nillable="true"/>
	<xs:complexType name="IfcStructuralMember" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralPlanarAction" type="ifc:IfcStructuralPlanarAction" substitutionGroup="ifc:IfcStructuralAction" nillable="true"/>
	<xs:complexType name="IfcStructuralPlanarAction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralAction"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralPlanarActionVarying" type="ifc:IfcStructuralPlanarActionVarying" substitutionGroup="ifc:IfcStructuralPlanarAction" nillable="true"/>
	<xs:complexType name="IfcStructuralPlanarActionVarying">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralPlanarAction">
				<xs:sequence>
					<xs:element name="VaryingAppliedLoadLocation">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcShapeAspect"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="SubsequentAppliedLoads">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcStructuralLoad" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcStructuralLoad"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralPointAction" type="ifc:IfcStructuralPointAction" substitutionGroup="ifc:IfcStructuralAction" nillable="true"/>
	<xs:complexType name="IfcStructuralPointAction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralAction"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralPointConnection" type="ifc:IfcStructuralPointConnection" substitutionGroup="ifc:IfcStructuralConnection" nillable="true"/>
	<xs:complexType name="IfcStructuralPointConnection">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralConnection"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralPointReaction" type="ifc:IfcStructuralPointReaction" substitutionGroup="ifc:IfcStructuralReaction" nillable="true"/>
	<xs:complexType name="IfcStructuralPointReaction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralReaction"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralProfileProperties" type="ifc:IfcStructuralProfileProperties" substitutionGroup="ifc:IfcGeneralProfileProperties" nillable="true"/>
	<xs:complexType name="IfcStructuralProfileProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeneralProfileProperties">
				<xs:sequence>
					<xs:element name="TorsionalConstantX" type="ifc:IfcMomentOfInertiaMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MomentOfInertiaYZ" type="ifc:IfcMomentOfInertiaMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MomentOfInertiaY" type="ifc:IfcMomentOfInertiaMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MomentOfInertiaZ" type="ifc:IfcMomentOfInertiaMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="WarpingConstant" type="ifc:IfcWarpingConstantMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ShearCentreZ" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ShearCentreY" type="ifc:IfcLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ShearDeformationAreaZ" type="ifc:IfcAreaMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ShearDeformationAreaY" type="ifc:IfcAreaMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MaximumSectionModulusY" type="ifc:IfcSectionModulusMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MinimumSectionModulusY" type="ifc:IfcSectionModulusMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MaximumSectionModulusZ" type="ifc:IfcSectionModulusMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MinimumSectionModulusZ" type="ifc:IfcSectionModulusMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TorsionalSectionModulus" type="ifc:IfcSectionModulusMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralReaction" type="ifc:IfcStructuralReaction" abstract="true" substitutionGroup="ifc:IfcStructuralActivity" nillable="true"/>
	<xs:complexType name="IfcStructuralReaction" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralActivity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralResultGroup" type="ifc:IfcStructuralResultGroup" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcStructuralResultGroup">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup">
				<xs:sequence>
					<xs:element name="TheoryType" type="ifc:IfcAnalysisTheoryTypeEnum"/>
					<xs:element name="ResultForLoadGroup" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcStructuralLoadGroup"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="IsLinear" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralSteelProfileProperties" type="ifc:IfcStructuralSteelProfileProperties" substitutionGroup="ifc:IfcStructuralProfileProperties" nillable="true"/>
	<xs:complexType name="IfcStructuralSteelProfileProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralProfileProperties">
				<xs:sequence>
					<xs:element name="ShearAreaZ" type="ifc:IfcAreaMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ShearAreaY" type="ifc:IfcAreaMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PlasticShapeFactorY" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PlasticShapeFactorZ" type="ifc:IfcPositiveRatioMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralSurfaceConnection" type="ifc:IfcStructuralSurfaceConnection" substitutionGroup="ifc:IfcStructuralConnection" nillable="true"/>
	<xs:complexType name="IfcStructuralSurfaceConnection">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralConnection"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralSurfaceMember" type="ifc:IfcStructuralSurfaceMember" substitutionGroup="ifc:IfcStructuralMember" nillable="true"/>
	<xs:complexType name="IfcStructuralSurfaceMember">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralMember">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcStructuralSurfaceTypeEnum"/>
					<xs:element name="Thickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralSurfaceMemberVarying" type="ifc:IfcStructuralSurfaceMemberVarying" substitutionGroup="ifc:IfcStructuralSurfaceMember" nillable="true"/>
	<xs:complexType name="IfcStructuralSurfaceMemberVarying">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralSurfaceMember">
				<xs:sequence>
					<xs:element name="SubsequentThickness">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPositiveLengthMeasure" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcPositiveLengthMeasure"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="VaryingThicknessLocation">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcShapeAspect"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuredDimensionCallout" type="ifc:IfcStructuredDimensionCallout" substitutionGroup="ifc:IfcDraughtingCallout" nillable="true"/>
	<xs:complexType name="IfcStructuredDimensionCallout">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDraughtingCallout"/>
		</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="Item">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcRepresentationItem"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Styles">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPresentationStyleAssignment" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcPresentationStyleAssignment"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Name" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStyledRepresentation" type="ifc:IfcStyledRepresentation" substitutionGroup="ifc:IfcRepresentation" nillable="true"/>
	<xs:complexType name="IfcStyledRepresentation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentation"/>
		</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:sequence>
					<xs:element name="SubContractor" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="JobDescription" type="ifc:IfcText" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSubedge" type="ifc:IfcSubedge" substitutionGroup="ifc:IfcEdge" nillable="true"/>
	<xs:complexType name="IfcSubedge">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEdge">
				<xs:sequence>
					<xs:element name="ParentEdge">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcEdge"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurface" type="ifc:IfcSurface" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcSurface" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceCurveSweptAreaSolid" type="ifc:IfcSurfaceCurveSweptAreaSolid" substitutionGroup="ifc:IfcSweptAreaSolid" nillable="true"/>
	<xs:complexType name="IfcSurfaceCurveSweptAreaSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSweptAreaSolid">
				<xs:sequence>
					<xs:element name="Directrix">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="StartParam" type="ifc:IfcParameterValue"/>
					<xs:element name="EndParam" type="ifc:IfcParameterValue"/>
					<xs:element name="ReferenceSurface">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSurface"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceOfLinearExtrusion" type="ifc:IfcSurfaceOfLinearExtrusion" substitutionGroup="ifc:IfcSweptSurface" nillable="true"/>
	<xs:complexType name="IfcSurfaceOfLinearExtrusion">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSweptSurface">
				<xs:sequence>
					<xs:element name="ExtrudedDirection">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Depth" type="ifc:IfcLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceOfRevolution" type="ifc:IfcSurfaceOfRevolution" substitutionGroup="ifc:IfcSweptSurface" nillable="true"/>
	<xs:complexType name="IfcSurfaceOfRevolution">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSweptSurface">
				<xs:sequence>
					<xs:element name="AxisPosition">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAxis1Placement"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyle" type="ifc:IfcSurfaceStyle" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyle">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Side" type="ifc:IfcSurfaceSide"/>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="Styles">
						<xs:complexType>
							<xs:group ref="ifc:IfcSurfaceStyleElementSelect" maxOccurs="5"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcSurfaceStyleElementSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyleLighting" type="ifc:IfcSurfaceStyleLighting" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyleLighting">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="DiffuseTransmissionColour">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcColourRgb"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="DiffuseReflectionColour">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcColourRgb"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="TransmissionColour">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcColourRgb"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="ReflectanceColour">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcColourRgb"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyleRefraction" type="ifc:IfcSurfaceStyleRefraction" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyleRefraction">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="RefractionIndex" type="ifc:IfcReal" nillable="true" minOccurs="0"/>
					<xs:element name="DispersionFactor" type="ifc:IfcReal" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyleRendering" type="ifc:IfcSurfaceStyleRendering" substitutionGroup="ifc:IfcSurfaceStyleShading" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyleRendering">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurfaceStyleShading">
				<xs:sequence>
					<xs:element name="Transparency" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="DiffuseColour" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcColourOrFactor"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TransmissionColour" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcColourOrFactor"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="DiffuseTransmissionColour" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcColourOrFactor"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ReflectionColour" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcColourOrFactor"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SpecularColour" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcColourOrFactor"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SpecularHighlight" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcSpecularHighlightSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ReflectanceMethod" type="ifc:IfcReflectanceMethodEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyleShading" type="ifc:IfcSurfaceStyleShading" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyleShading">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="SurfaceColour">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcColourRgb"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyleWithTextures" type="ifc:IfcSurfaceStyleWithTextures" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyleWithTextures">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Textures">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcSurfaceTexture" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcSurfaceTexture"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceTexture" type="ifc:IfcSurfaceTexture" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcSurfaceTexture" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="RepeatS" type="xs:boolean"/>
					<xs:element name="RepeatT" type="xs:boolean"/>
					<xs:element name="TextureType" type="ifc:IfcSurfaceTextureEnum"/>
					<xs:element name="TextureTransform" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCartesianTransformationOperator2D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProfileDef"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Position">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAxis2Placement3D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Radius" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="InnerRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="StartParam" type="ifc:IfcParameterValue"/>
					<xs:element name="EndParam" type="ifc:IfcParameterValue"/>
				</xs:sequence>
			</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcProfileDef"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Position">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAxis2Placement3D"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSwitchingDeviceType" type="ifc:IfcSwitchingDeviceType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcSwitchingDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcSwitchingDeviceTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSymbolStyle" type="ifc:IfcSymbolStyle" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcSymbolStyle">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="StyleOfSymbol">
						<xs:complexType>
							<xs:group ref="ifc:IfcSymbolStyleSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</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="IfcSystemFurnitureElementType" type="ifc:IfcSystemFurnitureElementType" substitutionGroup="ifc:IfcFurnishingElementType" nillable="true"/>
	<xs:complexType name="IfcSystemFurnitureElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFurnishingElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTShapeProfileDef" type="ifc:IfcTShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcTShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="Depth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FlangeWidth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="WebThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FilletRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FlangeEdgeRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="WebEdgeRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="WebSlope" type="ifc:IfcPlaneAngleMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FlangeSlope" type="ifc:IfcPlaneAngleMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CentreOfGravityInY" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTable" type="ifc:IfcTable" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTable">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="xs:normalizedString"/>
					<xs:element name="Rows">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcTableRow" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcTableRow"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTableRow" type="ifc:IfcTableRow" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTableRow">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="RowCells">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="IsHeading" type="xs:boolean"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTankType" type="ifc:IfcTankType" substitutionGroup="ifc:IfcFlowStorageDeviceType" nillable="true"/>
	<xs:complexType name="IfcTankType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowStorageDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcTankTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTask" type="ifc:IfcTask" substitutionGroup="ifc:IfcProcess" nillable="true"/>
	<xs:complexType name="IfcTask">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProcess">
				<xs:sequence>
					<xs:element name="TaskId" type="ifc:IfcIdentifier"/>
					<xs:element name="Status" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="WorkMethod" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="IsMilestone" type="xs:boolean"/>
					<xs:element name="Priority" type="xs:long" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</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:sequence>
					<xs:element name="TelephoneNumbers" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLabel" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLabel"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="FacsimileNumbers" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLabel" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLabel"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="PagerNumber" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="ElectronicMailAddresses" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLabel" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLabel"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="WWWHomePageURL" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTendon" type="ifc:IfcTendon" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
	<xs:complexType name="IfcTendon">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElement">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcTendonTypeEnum"/>
					<xs:element name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="CrossSectionArea" type="ifc:IfcAreaMeasure"/>
					<xs:element name="TensionForce" type="ifc:IfcForceMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PreStress" type="ifc:IfcPressureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FrictionCoefficient" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="AnchorageSlip" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MinCurvatureRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTendonAnchor" type="ifc:IfcTendonAnchor" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
	<xs:complexType name="IfcTendonAnchor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTerminatorSymbol" type="ifc:IfcTerminatorSymbol" substitutionGroup="ifc:IfcAnnotationSymbolOccurrence" nillable="true"/>
	<xs:complexType name="IfcTerminatorSymbol">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAnnotationSymbolOccurrence">
				<xs:sequence>
					<xs:element name="AnnotatedCurve">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcAnnotationCurveOccurrence"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</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="Literal" type="ifc:IfcPresentableText"/>
					<xs:element name="Placement">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Alignment" type="ifc:IfcTextAlignment"/>
					<xs:element name="Path" type="ifc:IfcTextPath"/>
					<xs:element name="Font">
						<xs:complexType>
							<xs:group ref="ifc:IfcFontSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextLiteralWithExtent" type="ifc:IfcTextLiteralWithExtent" substitutionGroup="ifc:IfcTextLiteral" nillable="true"/>
	<xs:complexType name="IfcTextLiteralWithExtent">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTextLiteral">
				<xs:sequence>
					<xs:element name="Extent">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPlanarExtent"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextStyle" type="ifc:IfcTextStyle" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTextStyle">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="CharacterGlyphAppearance" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcCharacterStyleSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TextStyles" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcTextStyleSelect" maxOccurs="3"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcTextStyleSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextStyleWithBoxCharacteristics" type="ifc:IfcTextStyleWithBoxCharacteristics" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTextStyleWithBoxCharacteristics">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="BoxHeight" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="BoxWidth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="BoxSlantAngle" type="ifc:IfcPlaneAngleMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="BoxRotateAngle" type="ifc:IfcPlaneAngleMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextStyleWithMirror" type="ifc:IfcTextStyleWithMirror" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTextStyleWithMirror">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="MirrorPlacement">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextStyleWithSpacing" type="ifc:IfcTextStyleWithSpacing" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTextStyleWithSpacing">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="CharacterSpacing">
						<xs:complexType>
							<xs:group ref="ifc:IfcCharacterSpacingSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureCoordinate" type="ifc:IfcTextureCoordinate" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTextureCoordinate" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Texture">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcSurfaceStyleWithTextures"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureCoordinateGenerator" type="ifc:IfcTextureCoordinateGenerator" substitutionGroup="ifc:IfcTextureCoordinate" nillable="true"/>
	<xs:complexType name="IfcTextureCoordinateGenerator">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTextureCoordinate">
				<xs:sequence>
					<xs:element name="Mode" type="ifc:IfcLabel"/>
					<xs:element name="Parameter">
						<xs:complexType>
							<xs:group ref="ifc:IfcSimpleValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcSimpleValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureMap" type="ifc:IfcTextureMap" substitutionGroup="ifc:IfcTextureCoordinate" nillable="true"/>
	<xs:complexType name="IfcTextureMap">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTextureCoordinate">
				<xs:sequence>
					<xs:element name="VertexBasedTextures" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcVertexBasedTextureMap" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcVertexBasedTextureMap"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureVertex" type="ifc:IfcTextureVertex" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTextureVertex">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Coordinates">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcParameterValue" minOccurs="2" maxOccurs="2"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcParameterValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcThermalMaterialProperties" type="ifc:IfcThermalMaterialProperties" substitutionGroup="ifc:IfcMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcThermalMaterialProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProperties">
				<xs:sequence>
					<xs:element name="SpecificHeatCapacity" type="ifc:IfcSpecificHeatCapacityMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="BoilingPoint" type="ifc:IfcThermodynamicTemperatureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FreezingPoint" type="ifc:IfcThermodynamicTemperatureMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ThermalConductivity" type="ifc:IfcThermalConductivityMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTimeSeries" type="ifc:IfcTimeSeries" abstract="true" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTimeSeries" abstract="true">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Name" type="ifc:IfcLabel"/>
					<xs:element name="Description" type="ifc:IfcText" nillable="true" minOccurs="0"/>
					<xs:element name="StartTime">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="EndTime">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TimeSeriesDataType" type="ifc:IfcTimeSeriesDataTypeEnum"/>
					<xs:element name="DataOrigin" type="ifc:IfcDataOriginEnum"/>
					<xs:element name="UserDefinedDataOrigin" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Unit" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTimeSeriesReferenceRelationship" type="ifc:IfcTimeSeriesReferenceRelationship" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTimeSeriesReferenceRelationship">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ReferencedTimeSeries">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTimeSeries"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="TimeSeriesReferences">
						<xs:complexType>
							<xs:group ref="ifc:IfcDocumentSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcDocumentSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTimeSeriesSchedule" type="ifc:IfcTimeSeriesSchedule" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcTimeSeriesSchedule">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="ApplicableDates" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcDateTimeSelect"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TimeSeriesScheduleType" type="ifc:IfcTimeSeriesScheduleTypeEnum"/>
					<xs:element name="TimeSeries">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcTimeSeries"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTimeSeriesValue" type="ifc:IfcTimeSeriesValue" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcTimeSeriesValue">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="ListValues">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTopologicalRepresentationItem" type="ifc:IfcTopologicalRepresentationItem" abstract="true" substitutionGroup="ifc:IfcRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcTopologicalRepresentationItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTopologyRepresentation" type="ifc:IfcTopologyRepresentation" substitutionGroup="ifc:IfcRepresentation" nillable="true"/>
	<xs:complexType name="IfcTopologyRepresentation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentation"/>
		</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:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcTransformerTypeEnum"/>
				</xs:sequence>
			</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:sequence>
					<xs:element name="OperationType" type="ifc:IfcTransportElementTypeEnum" nillable="true" minOccurs="0"/>
					<xs:element name="CapacityByWeight" type="ifc:IfcMassMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CapacityByNumber" type="ifc:IfcCountMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTransportElementType" type="ifc:IfcTransportElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcTransportElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcTransportElementTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTrapeziumProfileDef" type="ifc:IfcTrapeziumProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcTrapeziumProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="BottomXDim" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="TopXDim" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="YDim" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="TopXOffset" type="ifc:IfcLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTrimmedCurve" type="ifc:IfcTrimmedCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
	<xs:complexType name="IfcTrimmedCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedCurve">
				<xs:sequence>
					<xs:element name="BasisCurve">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcCurve"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Trim1">
						<xs:complexType>
							<xs:group ref="ifc:IfcTrimmingSelect" maxOccurs="2"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcTrimmingSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Trim2">
						<xs:complexType>
							<xs:group ref="ifc:IfcTrimmingSelect" maxOccurs="2"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcTrimmingSelect"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SenseAgreement" type="xs:boolean"/>
					<xs:element name="MasterRepresentation" type="ifc:IfcTrimmingPreference"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTubeBundleType" type="ifc:IfcTubeBundleType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcTubeBundleType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcTubeBundleTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTwoDirectionRepeatFactor" type="ifc:IfcTwoDirectionRepeatFactor" substitutionGroup="ifc:IfcOneDirectionRepeatFactor" nillable="true"/>
	<xs:complexType name="IfcTwoDirectionRepeatFactor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcOneDirectionRepeatFactor">
				<xs:sequence>
					<xs:element name="SecondRepeatFactor">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcVector"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTypeObject" type="ifc:IfcTypeObject" substitutionGroup="ifc:IfcPropertyDefinition" nillable="true"/>
	<xs:complexType name="IfcTypeObject">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyDefinition">
				<xs:sequence>
					<xs:element name="ApplicableOccurrence" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="HasPropertySets" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPropertySetDefinition" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcPropertySetDefinition"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTypeProduct" type="ifc:IfcTypeProduct" substitutionGroup="ifc:IfcTypeObject" nillable="true"/>
	<xs:complexType name="IfcTypeProduct">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeObject">
				<xs:sequence>
					<xs:element name="RepresentationMaps" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRepresentationMap" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcRepresentationMap"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Tag" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcUShapeProfileDef" type="ifc:IfcUShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcUShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="Depth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FlangeWidth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="WebThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FilletRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="EdgeRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FlangeSlope" type="ifc:IfcPlaneAngleMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="CentreOfGravityInX" type="ifc:IfcPositiveLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcUnitAssignment" type="ifc:IfcUnitAssignment" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcUnitAssignment">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="Units">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit" maxOccurs="unbounded"/>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcUnit"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcUnitaryEquipmentType" type="ifc:IfcUnitaryEquipmentType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcUnitaryEquipmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcUnitaryEquipmentTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcValveType" type="ifc:IfcValveType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcValveType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcValveTypeEnum"/>
				</xs:sequence>
			</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">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcDirection"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
					<xs:element name="Magnitude" type="ifc:IfcLengthMeasure"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVertex" type="ifc:IfcVertex" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcVertex">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVertexBasedTextureMap" type="ifc:IfcVertexBasedTextureMap" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcVertexBasedTextureMap">
		<xs:complexContent>
			<xs:extension base="ex:Entity">
				<xs:sequence>
					<xs:element name="TextureVertices">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcTextureVertex" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcTextureVertex"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="VertexBasedGeometry">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPolyLoop"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVertexLoop" type="ifc:IfcVertexLoop" substitutionGroup="ifc:IfcLoop" nillable="true"/>
	<xs:complexType name="IfcVertexLoop">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLoop">
				<xs:sequence>
					<xs:element name="LoopVertex">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcVertex"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVertexPoint" type="ifc:IfcVertexPoint" substitutionGroup="ifc:IfcVertex" nillable="true"/>
	<xs:complexType name="IfcVertexPoint">
		<xs:complexContent>
			<xs:extension base="ifc:IfcVertex">
				<xs:sequence>
					<xs:element name="VertexGeometry">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcPoint"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVibrationIsolatorType" type="ifc:IfcVibrationIsolatorType" substitutionGroup="ifc:IfcDiscreteAccessoryType" nillable="true"/>
	<xs:complexType name="IfcVibrationIsolatorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDiscreteAccessoryType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcVibrationIsolatorTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVirtualElement" type="ifc:IfcVirtualElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcVirtualElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVirtualGridIntersection" type="ifc:IfcVirtualGridIntersection" substitutionGroup="ex:Entity" nillable="true"/>
	<xs:complexType name="IfcVirtualGridIntersection">
		<xs:complexContent>
			<xs:extension base="ex: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="ex:itemType" fixed="ifc:IfcGridAxis"/>
							<xs:attribute ref="ex:cType" fixed="list-unique"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="OffsetDistances">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLengthMeasure" minOccurs="2" maxOccurs="3"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcLengthMeasure"/>
							<xs:attribute ref="ex:cType" fixed="list"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</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="IfcWallStandardCase" type="ifc:IfcWallStandardCase" substitutionGroup="ifc:IfcWall" nillable="true"/>
	<xs:complexType name="IfcWallStandardCase">
		<xs:complexContent>
			<xs:extension base="ifc:IfcWall"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWallType" type="ifc:IfcWallType" substitutionGroup="ifc:IfcBuildingElementType" nillable="true"/>
	<xs:complexType name="IfcWallType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElementType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcWallTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWasteTerminalType" type="ifc:IfcWasteTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcWasteTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:sequence>
					<xs:element name="PredefinedType" type="ifc:IfcWasteTerminalTypeEnum"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWaterProperties" type="ifc:IfcWaterProperties" substitutionGroup="ifc:IfcMaterialProperties" nillable="true"/>
	<xs:complexType name="IfcWaterProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProperties">
				<xs:sequence>
					<xs:element name="IsPotable" type="xs:boolean" nillable="true" minOccurs="0"/>
					<xs:element name="Hardness" type="ifc:IfcIonConcentrationMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="AlkalinityConcentration" type="ifc:IfcIonConcentrationMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="AcidityConcentration" type="ifc:IfcIonConcentrationMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ImpuritiesContent" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="PHLevel" type="ifc:IfcPHMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="DissolvedSolidsContent" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWindow" type="ifc:IfcWindow" substitutionGroup="ifc:IfcBuildingElement" nillable="true"/>
	<xs:complexType name="IfcWindow">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuildingElement">
				<xs:sequence>
					<xs:element name="OverallHeight" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="OverallWidth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWindowLiningProperties" type="ifc:IfcWindowLiningProperties" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcWindowLiningProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="LiningDepth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="LiningThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TransomThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="MullionThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FirstTransomOffset" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="SecondTransomOffset" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FirstMullionOffset" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="SecondMullionOffset" type="ifc:IfcNormalisedRatioMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ShapeAspectStyle" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcShapeAspect"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWindowPanelProperties" type="ifc:IfcWindowPanelProperties" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcWindowPanelProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="OperationType" type="ifc:IfcWindowPanelOperationEnum"/>
					<xs:element name="PanelPosition" type="ifc:IfcWindowPanelPositionEnum"/>
					<xs:element name="FrameDepth" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="FrameThickness" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="ShapeAspectStyle" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:choice>
								<xs:element ref="ifc:IfcShapeAspect"/>
							</xs:choice>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWindowStyle" type="ifc:IfcWindowStyle" substitutionGroup="ifc:IfcTypeProduct" nillable="true"/>
	<xs:complexType name="IfcWindowStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeProduct">
				<xs:sequence>
					<xs:element name="ConstructionType" type="ifc:IfcWindowStyleConstructionEnum"/>
					<xs:element name="OperationType" type="ifc:IfcWindowStyleOperationEnum"/>
					<xs:element name="ParameterTakesPrecedence" type="xs:boolean"/>
					<xs:element name="Sizeable" type="xs:boolean"/>
				</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:sequence>
					<xs:element name="Identifier" type="ifc:IfcIdentifier"/>
					<xs:element name="CreationDate">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Creators" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPerson" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ex:itemType" fixed="ifc:IfcPerson"/>
							<xs:attribute ref="ex:cType" fixed="set"/>
							<xs:attribute ref="ex:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Purpose" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
					<xs:element name="Duration" type="ifc:IfcTimeMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="TotalFloat" type="ifc:IfcTimeMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="StartTime">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="FinishTime" nillable="true" minOccurs="0">
						<xs:complexType>
							<xs:group ref="ifc:IfcDateTimeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="WorkControlType" type="ifc:IfcWorkControlTypeEnum" nillable="true" minOccurs="0"/>
					<xs:element name="UserDefinedControlType" type="ifc:IfcLabel" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</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="IfcWorkSchedule" type="ifc:IfcWorkSchedule" substitutionGroup="ifc:IfcWorkControl" nillable="true"/>
	<xs:complexType name="IfcWorkSchedule">
		<xs:complexContent>
			<xs:extension base="ifc:IfcWorkControl"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcZShapeProfileDef" type="ifc:IfcZShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcZShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:sequence>
					<xs:element name="Depth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FlangeWidth" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="WebThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure"/>
					<xs:element name="FilletRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
					<xs:element name="EdgeRadius" type="ifc:IfcPositiveLengthMeasure" nillable="true" minOccurs="0"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcZone" type="ifc:IfcZone" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcZone">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup"/>
		</xs:complexContent>
	</xs:complexType>
	<!-- group declarations (for SELECT data type definitions) -->
	<xs:complexType name="IfcActorSelect">
		<xs:group ref="ifc:IfcActorSelect"/>
	</xs:complexType>
	<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:complexType name="IfcAppliedValueSelect">
		<xs:group ref="ifc:IfcAppliedValueSelect"/>
	</xs:complexType>
	<xs:group name="IfcAppliedValueSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcRatioMeasure"/>
			<xs:element ref="ifc:IfcMeasureWithUnit"/>
			<xs:element ref="ifc:IfcMonetaryMeasure"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcAxis2Placement">
		<xs:group ref="ifc:IfcAxis2Placement"/>
	</xs:complexType>
	<xs:group name="IfcAxis2Placement">
		<xs:choice>
			<xs:element ref="ifc:IfcAxis2Placement2D"/>
			<xs:element ref="ifc:IfcAxis2Placement3D"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcBooleanOperand">
		<xs:group ref="ifc:IfcBooleanOperand"/>
	</xs:complexType>
	<xs:group name="IfcBooleanOperand">
		<xs:choice>
			<xs:element ref="ifc:IfcSolidModel"/>
			<xs:element ref="ifc:IfcHalfSpaceSolid"/>
			<xs:element ref="ifc:IfcBooleanResult"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcCharacterSpacingSelect">
		<xs:group ref="ifc:IfcCharacterSpacingSelect"/>
	</xs:complexType>
	<xs:group name="IfcCharacterSpacingSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcRatioMeasure"/>
			<xs:element ref="ifc:IfcLengthMeasure"/>
			<xs:element ref="ifc:IfcMeasureWithUnit"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcCharacterStyleSelect">
		<xs:group ref="ifc:IfcCharacterStyleSelect"/>
	</xs:complexType>
	<xs:group name="IfcCharacterStyleSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcColourSpecification"/>
			<xs:element ref="ifc:IfcPreDefinedColour"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcClassificationNotationSelect">
		<xs:group ref="ifc:IfcClassificationNotationSelect"/>
	</xs:complexType>
	<xs:group name="IfcClassificationNotationSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcClassificationNotation"/>
			<xs:element ref="ifc:IfcClassificationReference"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcColour">
		<xs:group ref="ifc:IfcColour"/>
	</xs:complexType>
	<xs:group name="IfcColour">
		<xs:choice>
			<xs:element ref="ifc:IfcColourSpecification"/>
			<xs:element ref="ifc:IfcPreDefinedColour"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcColourOrFactor">
		<xs:group ref="ifc:IfcColourOrFactor"/>
	</xs:complexType>
	<xs:group name="IfcColourOrFactor">
		<xs:choice>
			<xs:element ref="ifc:IfcColourRgb"/>
			<xs:element ref="ifc:IfcNormalisedRatioMeasure"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcConditionCriterionSelect">
		<xs:group ref="ifc:IfcConditionCriterionSelect"/>
	</xs:complexType>
	<xs:group name="IfcConditionCriterionSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcLabel"/>
			<xs:element ref="ifc:IfcMeasureWithUnit"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcCsgSelect">
		<xs:group ref="ifc:IfcCsgSelect"/>
	</xs:complexType>
	<xs:group name="IfcCsgSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcBooleanResult"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcCurveFontOrScaledCurveFontSelect">
		<xs:group ref="ifc:IfcCurveFontOrScaledCurveFontSelect"/>
	</xs:complexType>
	<xs:group name="IfcCurveFontOrScaledCurveFontSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcPreDefinedCurveFont"/>
			<xs:element ref="ifc:IfcCurveStyleFont"/>
			<xs:element ref="ifc:IfcCurveStyleFontAndScaling"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcCurveStyleFontSelect">
		<xs:group ref="ifc:IfcCurveStyleFontSelect"/>
	</xs:complexType>
	<xs:group name="IfcCurveStyleFontSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcPreDefinedCurveFont"/>
			<xs:element ref="ifc:IfcCurveStyleFont"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcDateTimeSelect">
		<xs:group ref="ifc:IfcDateTimeSelect"/>
	</xs:complexType>
	<xs:group name="IfcDateTimeSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcCalendarDate"/>
			<xs:element ref="ifc:IfcLocalTime"/>
			<xs:element ref="ifc:IfcDateAndTime"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcDefinedSymbolSelect">
		<xs:group ref="ifc:IfcDefinedSymbolSelect"/>
	</xs:complexType>
	<xs:group name="IfcDefinedSymbolSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcPreDefinedSymbol"/>
			<xs:element ref="ifc:IfcExternallyDefinedSymbol"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcDerivedMeasureValue">
		<xs:group ref="ifc:IfcDerivedMeasureValue"/>
	</xs:complexType>
	<xs:group name="IfcDerivedMeasureValue">
		<xs:choice>
			<xs:element ref="ifc:IfcVolumetricFlowRateMeasure"/>
			<xs:element ref="ifc:IfcTimeStamp"/>
			<xs:element ref="ifc:IfcThermalTransmittanceMeasure"/>
			<xs:element ref="ifc:IfcThermalResistanceMeasure"/>
			<xs:element ref="ifc:IfcThermalAdmittanceMeasure"/>
			<xs:element ref="ifc:IfcPressureMeasure"/>
			<xs:element ref="ifc:IfcPowerMeasure"/>
			<xs:element ref="ifc:IfcMassFlowRateMeasure"/>
			<xs:element ref="ifc:IfcMassDensityMeasure"/>
			<xs:element ref="ifc:IfcLinearVelocityMeasure"/>
			<xs:element ref="ifc:IfcKinematicViscosityMeasure"/>
			<xs:element ref="ifc:IfcIntegerCountRateMeasure"/>
			<xs:element ref="ifc:IfcHeatFluxDensityMeasure"/>
			<xs:element ref="ifc:IfcFrequencyMeasure"/>
			<xs:element ref="ifc:IfcEnergyMeasure"/>
			<xs:element ref="ifc:IfcElectricVoltageMeasure"/>
			<xs:element ref="ifc:IfcDynamicViscosityMeasure"/>
			<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure"/>
			<xs:element ref="ifc:IfcAngularVelocityMeasure"/>
			<xs:element ref="ifc:IfcThermalConductivityMeasure"/>
			<xs:element ref="ifc:IfcMolecularWeightMeasure"/>
			<xs:element ref="ifc:IfcVaporPermeabilityMeasure"/>
			<xs:element ref="ifc:IfcMoistureDiffusivityMeasure"/>
			<xs:element ref="ifc:IfcIsothermalMoistureCapacityMeasure"/>
			<xs:element ref="ifc:IfcSpecificHeatCapacityMeasure"/>
			<xs:element ref="ifc:IfcMonetaryMeasure"/>
			<xs:element ref="ifc:IfcMagneticFluxDensityMeasure"/>
			<xs:element ref="ifc:IfcMagneticFluxMeasure"/>
			<xs:element ref="ifc:IfcLuminousFluxMeasure"/>
			<xs:element ref="ifc:IfcForceMeasure"/>
			<xs:element ref="ifc:IfcInductanceMeasure"/>
			<xs:element ref="ifc:IfcIlluminanceMeasure"/>
			<xs:element ref="ifc:IfcElectricResistanceMeasure"/>
			<xs:element ref="ifc:IfcElectricConductanceMeasure"/>
			<xs:element ref="ifc:IfcElectricChargeMeasure"/>
			<xs:element ref="ifc:IfcDoseEquivalentMeasure"/>
			<xs:element ref="ifc:IfcElectricCapacitanceMeasure"/>
			<xs:element ref="ifc:IfcAbsorbedDoseMeasure"/>
			<xs:element ref="ifc:IfcRadioActivityMeasure"/>
			<xs:element ref="ifc:IfcRotationalFrequencyMeasure"/>
			<xs:element ref="ifc:IfcTorqueMeasure"/>
			<xs:element ref="ifc:IfcAccelerationMeasure"/>
			<xs:element ref="ifc:IfcLinearForceMeasure"/>
			<xs:element ref="ifc:IfcLinearStiffnessMeasure"/>
			<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure"/>
			<xs:element ref="ifc:IfcModulusOfElasticityMeasure"/>
			<xs:element ref="ifc:IfcMomentOfInertiaMeasure"/>
			<xs:element ref="ifc:IfcPlanarForceMeasure"/>
			<xs:element ref="ifc:IfcRotationalStiffnessMeasure"/>
			<xs:element ref="ifc:IfcShearModulusMeasure"/>
			<xs:element ref="ifc:IfcLinearMomentMeasure"/>
			<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure"/>
			<xs:element ref="ifc:IfcCurvatureMeasure"/>
			<xs:element ref="ifc:IfcMassPerLengthMeasure"/>
			<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure"/>
			<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure"/>
			<xs:element ref="ifc:IfcRotationalMassMeasure"/>
			<xs:element ref="ifc:IfcSectionalAreaIntegralMeasure"/>
			<xs:element ref="ifc:IfcSectionModulusMeasure"/>
			<xs:element ref="ifc:IfcTemperatureGradientMeasure"/>
			<xs:element ref="ifc:IfcThermalExpansionCoefficientMeasure"/>
			<xs:element ref="ifc:IfcWarpingConstantMeasure"/>
			<xs:element ref="ifc:IfcWarpingMomentMeasure"/>
			<xs:element ref="ifc:IfcSoundPowerMeasure"/>
			<xs:element ref="ifc:IfcSoundPressureMeasure"/>
			<xs:element ref="ifc:IfcHeatingValueMeasure"/>
			<xs:element ref="ifc:IfcPHMeasure"/>
			<xs:element ref="ifc:IfcIonConcentrationMeasure"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcDocumentSelect">
		<xs:group ref="ifc:IfcDocumentSelect"/>
	</xs:complexType>
	<xs:group name="IfcDocumentSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcDocumentReference"/>
			<xs:element ref="ifc:IfcDocumentInformation"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcDraughtingCalloutElement">
		<xs:group ref="ifc:IfcDraughtingCalloutElement"/>
	</xs:complexType>
	<xs:group name="IfcDraughtingCalloutElement">
		<xs:choice>
			<xs:element ref="ifc:IfcAnnotationCurveOccurrence"/>
			<xs:element ref="ifc:IfcAnnotationTextOccurrence"/>
			<xs:element ref="ifc:IfcAnnotationSymbolOccurrence"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcFillAreaStyleTileShapeSelect">
		<xs:group ref="ifc:IfcFillAreaStyleTileShapeSelect"/>
	</xs:complexType>
	<xs:group name="IfcFillAreaStyleTileShapeSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcFillAreaStyleTileSymbolWithStyle"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcFillStyleSelect">
		<xs:group ref="ifc:IfcFillStyleSelect"/>
	</xs:complexType>
	<xs:group name="IfcFillStyleSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcFillAreaStyleHatching"/>
			<xs:element ref="ifc:IfcFillAreaStyleTiles"/>
			<xs:element ref="ifc:IfcColourSpecification"/>
			<xs:element ref="ifc:IfcPreDefinedColour"/>
			<xs:element ref="ifc:IfcExternallyDefinedHatchStyle"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcFontSelect">
		<xs:group ref="ifc:IfcFontSelect"/>
	</xs:complexType>
	<xs:group name="IfcFontSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcPreDefinedTextFont"/>
			<xs:element ref="ifc:IfcExternallyDefinedTextFont"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcGeometricSetSelect">
		<xs:group ref="ifc:IfcGeometricSetSelect"/>
	</xs:complexType>
	<xs:group name="IfcGeometricSetSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcPoint"/>
			<xs:element ref="ifc:IfcCurve"/>
			<xs:element ref="ifc:IfcSurface"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcLayeredItem">
		<xs:group ref="ifc:IfcLayeredItem"/>
	</xs:complexType>
	<xs:group name="IfcLayeredItem">
		<xs:choice>
			<xs:element ref="ifc:IfcRepresentationItem"/>
			<xs:element ref="ifc:IfcRepresentation"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcLibrarySelect">
		<xs:group ref="ifc:IfcLibrarySelect"/>
	</xs:complexType>
	<xs:group name="IfcLibrarySelect">
		<xs:choice>
			<xs:element ref="ifc:IfcLibraryReference"/>
			<xs:element ref="ifc:IfcLibraryInformation"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcLightDistributionDataSourceSelect">
		<xs:group ref="ifc:IfcLightDistributionDataSourceSelect"/>
	</xs:complexType>
	<xs:group name="IfcLightDistributionDataSourceSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcExternalReference"/>
			<xs:element ref="ifc:IfcLightIntensityDistribution"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcMaterialSelect">
		<xs:group ref="ifc:IfcMaterialSelect"/>
	</xs:complexType>
	<xs:group name="IfcMaterialSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcMaterial"/>
			<xs:element ref="ifc:IfcMaterialList"/>
			<xs:element ref="ifc:IfcMaterialLayerSetUsage"/>
			<xs:element ref="ifc:IfcMaterialLayerSet"/>
			<xs:element ref="ifc:IfcMaterialLayer"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcMeasureValue">
		<xs:group ref="ifc:IfcMeasureValue"/>
	</xs:complexType>
	<xs:group name="IfcMeasureValue">
		<xs:choice>
			<xs:element ref="ifc:IfcVolumeMeasure"/>
			<xs:element ref="ifc:IfcTimeMeasure"/>
			<xs:element ref="ifc:IfcThermodynamicTemperatureMeasure"/>
			<xs:element ref="ifc:IfcSolidAngleMeasure"/>
			<xs:element ref="ifc:IfcPositiveRatioMeasure"/>
			<xs:element ref="ifc:IfcRatioMeasure"/>
			<xs:element ref="ifc:IfcPositivePlaneAngleMeasure"/>
			<xs:element ref="ifc:IfcPlaneAngleMeasure"/>
			<xs:element ref="ifc:IfcParameterValue"/>
			<xs:element ref="ifc:IfcNumericMeasure"/>
			<xs:element ref="ifc:IfcMassMeasure"/>
			<xs:element ref="ifc:IfcPositiveLengthMeasure"/>
			<xs:element ref="ifc:IfcLengthMeasure"/>
			<xs:element ref="ifc:IfcElectricCurrentMeasure"/>
			<xs:element ref="ifc:IfcDescriptiveMeasure"/>
			<xs:element ref="ifc:IfcCountMeasure"/>
			<xs:element ref="ifc:IfcContextDependentMeasure"/>
			<xs:element ref="ifc:IfcAreaMeasure"/>
			<xs:element ref="ifc:IfcAmountOfSubstanceMeasure"/>
			<xs:element ref="ifc:IfcLuminousIntensityMeasure"/>
			<xs:element ref="ifc:IfcNormalisedRatioMeasure"/>
			<xs:element ref="ifc:IfcComplexNumber"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcMetricValueSelect">
		<xs:group ref="ifc:IfcMetricValueSelect"/>
	</xs:complexType>
	<xs:group name="IfcMetricValueSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcCalendarDate"/>
			<xs:element ref="ifc:IfcLocalTime"/>
			<xs:element ref="ifc:IfcDateAndTime"/>
			<xs:element ref="ifc:IfcMeasureWithUnit"/>
			<xs:element ref="ifc:IfcTable"/>
			<xs:element ref="ifc:IfcText"/>
			<xs:element ref="ifc:IfcTimeSeries"/>
			<xs:element ref="ifc:IfcCostValue"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcObjectReferenceSelect">
		<xs:group ref="ifc:IfcObjectReferenceSelect"/>
	</xs:complexType>
	<xs:group name="IfcObjectReferenceSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcMaterial"/>
			<xs:element ref="ifc:IfcPerson"/>
			<xs:element ref="ifc:IfcDateAndTime"/>
			<xs:element ref="ifc:IfcMaterialList"/>
			<xs:element ref="ifc:IfcOrganization"/>
			<xs:element ref="ifc:IfcCalendarDate"/>
			<xs:element ref="ifc:IfcLocalTime"/>
			<xs:element ref="ifc:IfcPersonAndOrganization"/>
			<xs:element ref="ifc:IfcMaterialLayer"/>
			<xs:element ref="ifc:IfcExternalReference"/>
			<xs:element ref="ifc:IfcTimeSeries"/>
			<xs:element ref="ifc:IfcAddress"/>
			<xs:element ref="ifc:IfcAppliedValue"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcPresentationStyleSelect">
		<xs:group ref="ifc:IfcPresentationStyleSelect"/>
	</xs:complexType>
	<xs:group name="IfcPresentationStyleSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcNullStyle"/>
			<xs:element ref="ifc:IfcCurveStyle"/>
			<xs:element ref="ifc:IfcSymbolStyle"/>
			<xs:element ref="ifc:IfcFillAreaStyle"/>
			<xs:element ref="ifc:IfcTextStyle"/>
			<xs:element ref="ifc:IfcSurfaceStyle"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcShell">
		<xs:group ref="ifc:IfcShell"/>
	</xs:complexType>
	<xs:group name="IfcShell">
		<xs:choice>
			<xs:element ref="ifc:IfcClosedShell"/>
			<xs:element ref="ifc:IfcOpenShell"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcSimpleValue">
		<xs:group ref="ifc:IfcSimpleValue"/>
	</xs:complexType>
	<xs:group name="IfcSimpleValue">
		<xs:choice>
			<xs:element ref="ifc:IfcInteger"/>
			<xs:element ref="ifc:IfcReal"/>
			<xs:element ref="ifc:IfcBoolean"/>
			<xs:element ref="ifc:IfcIdentifier"/>
			<xs:element ref="ifc:IfcText"/>
			<xs:element ref="ifc:IfcLabel"/>
			<xs:element ref="ifc:IfcLogical"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcSizeSelect">
		<xs:group ref="ifc:IfcSizeSelect"/>
	</xs:complexType>
	<xs:group name="IfcSizeSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcPositiveLengthMeasure"/>
			<xs:element ref="ifc:IfcMeasureWithUnit"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcSpecularHighlightSelect">
		<xs:group ref="ifc:IfcSpecularHighlightSelect"/>
	</xs:complexType>
	<xs:group name="IfcSpecularHighlightSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcSpecularExponent"/>
			<xs:element ref="ifc:IfcSpecularRoughness"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcStructuralActivityAssignmentSelect">
		<xs:group ref="ifc:IfcStructuralActivityAssignmentSelect"/>
	</xs:complexType>
	<xs:group name="IfcStructuralActivityAssignmentSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcStructuralItem"/>
			<xs:element ref="ifc:IfcBuildingElement"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcSurfaceStyleElementSelect">
		<xs:group ref="ifc:IfcSurfaceStyleElementSelect"/>
	</xs:complexType>
	<xs:group name="IfcSurfaceStyleElementSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcSurfaceStyleShading"/>
			<xs:element ref="ifc:IfcSurfaceStyleLighting"/>
			<xs:element ref="ifc:IfcSurfaceStyleWithTextures"/>
			<xs:element ref="ifc:IfcExternallyDefinedSufaceStyle"/>
			<xs:element ref="ifc:IfcSurfaceStyleRefraction"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcSymbolStyleSelect">
		<xs:group ref="ifc:IfcSymbolStyleSelect"/>
	</xs:complexType>
	<xs:group name="IfcSymbolStyleSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcColourSpecification"/>
			<xs:element ref="ifc:IfcPreDefinedColour"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcTextStyleSelect">
		<xs:group ref="ifc:IfcTextStyleSelect"/>
	</xs:complexType>
	<xs:group name="IfcTextStyleSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcTextStyleWithMirror"/>
			<xs:element ref="ifc:IfcTextStyleWithSpacing"/>
			<xs:element ref="ifc:IfcTextStyleWithBoxCharacteristics"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcTrimmingSelect">
		<xs:group ref="ifc:IfcTrimmingSelect"/>
	</xs:complexType>
	<xs:group name="IfcTrimmingSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcCartesianPoint"/>
			<xs:element ref="ifc:IfcParameterValue"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcUnit">
		<xs:group ref="ifc:IfcUnit"/>
	</xs:complexType>
	<xs:group name="IfcUnit">
		<xs:choice>
			<xs:element ref="ifc:IfcDerivedUnit"/>
			<xs:element ref="ifc:IfcNamedUnit"/>
			<xs:element ref="ifc:IfcMonetaryUnit"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcValue">
		<xs:group ref="ifc:IfcValue"/>
	</xs:complexType>
	<xs:group name="IfcValue">
		<xs:choice>
			<xs:element ref="ifc:IfcVolumeMeasure"/>
			<xs:element ref="ifc:IfcTimeMeasure"/>
			<xs:element ref="ifc:IfcThermodynamicTemperatureMeasure"/>
			<xs:element ref="ifc:IfcSolidAngleMeasure"/>
			<xs:element ref="ifc:IfcPositiveRatioMeasure"/>
			<xs:element ref="ifc:IfcRatioMeasure"/>
			<xs:element ref="ifc:IfcPositivePlaneAngleMeasure"/>
			<xs:element ref="ifc:IfcPlaneAngleMeasure"/>
			<xs:element ref="ifc:IfcParameterValue"/>
			<xs:element ref="ifc:IfcNumericMeasure"/>
			<xs:element ref="ifc:IfcMassMeasure"/>
			<xs:element ref="ifc:IfcPositiveLengthMeasure"/>
			<xs:element ref="ifc:IfcLengthMeasure"/>
			<xs:element ref="ifc:IfcElectricCurrentMeasure"/>
			<xs:element ref="ifc:IfcDescriptiveMeasure"/>
			<xs:element ref="ifc:IfcCountMeasure"/>
			<xs:element ref="ifc:IfcContextDependentMeasure"/>
			<xs:element ref="ifc:IfcAreaMeasure"/>
			<xs:element ref="ifc:IfcAmountOfSubstanceMeasure"/>
			<xs:element ref="ifc:IfcLuminousIntensityMeasure"/>
			<xs:element ref="ifc:IfcNormalisedRatioMeasure"/>
			<xs:element ref="ifc:IfcComplexNumber"/>
			<xs:element ref="ifc:IfcInteger"/>
			<xs:element ref="ifc:IfcReal"/>
			<xs:element ref="ifc:IfcBoolean"/>
			<xs:element ref="ifc:IfcIdentifier"/>
			<xs:element ref="ifc:IfcText"/>
			<xs:element ref="ifc:IfcLabel"/>
			<xs:element ref="ifc:IfcLogical"/>
			<xs:element ref="ifc:IfcVolumetricFlowRateMeasure"/>
			<xs:element ref="ifc:IfcTimeStamp"/>
			<xs:element ref="ifc:IfcThermalTransmittanceMeasure"/>
			<xs:element ref="ifc:IfcThermalResistanceMeasure"/>
			<xs:element ref="ifc:IfcThermalAdmittanceMeasure"/>
			<xs:element ref="ifc:IfcPressureMeasure"/>
			<xs:element ref="ifc:IfcPowerMeasure"/>
			<xs:element ref="ifc:IfcMassFlowRateMeasure"/>
			<xs:element ref="ifc:IfcMassDensityMeasure"/>
			<xs:element ref="ifc:IfcLinearVelocityMeasure"/>
			<xs:element ref="ifc:IfcKinematicViscosityMeasure"/>
			<xs:element ref="ifc:IfcIntegerCountRateMeasure"/>
			<xs:element ref="ifc:IfcHeatFluxDensityMeasure"/>
			<xs:element ref="ifc:IfcFrequencyMeasure"/>
			<xs:element ref="ifc:IfcEnergyMeasure"/>
			<xs:element ref="ifc:IfcElectricVoltageMeasure"/>
			<xs:element ref="ifc:IfcDynamicViscosityMeasure"/>
			<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure"/>
			<xs:element ref="ifc:IfcAngularVelocityMeasure"/>
			<xs:element ref="ifc:IfcThermalConductivityMeasure"/>
			<xs:element ref="ifc:IfcMolecularWeightMeasure"/>
			<xs:element ref="ifc:IfcVaporPermeabilityMeasure"/>
			<xs:element ref="ifc:IfcMoistureDiffusivityMeasure"/>
			<xs:element ref="ifc:IfcIsothermalMoistureCapacityMeasure"/>
			<xs:element ref="ifc:IfcSpecificHeatCapacityMeasure"/>
			<xs:element ref="ifc:IfcMonetaryMeasure"/>
			<xs:element ref="ifc:IfcMagneticFluxDensityMeasure"/>
			<xs:element ref="ifc:IfcMagneticFluxMeasure"/>
			<xs:element ref="ifc:IfcLuminousFluxMeasure"/>
			<xs:element ref="ifc:IfcForceMeasure"/>
			<xs:element ref="ifc:IfcInductanceMeasure"/>
			<xs:element ref="ifc:IfcIlluminanceMeasure"/>
			<xs:element ref="ifc:IfcElectricResistanceMeasure"/>
			<xs:element ref="ifc:IfcElectricConductanceMeasure"/>
			<xs:element ref="ifc:IfcElectricChargeMeasure"/>
			<xs:element ref="ifc:IfcDoseEquivalentMeasure"/>
			<xs:element ref="ifc:IfcElectricCapacitanceMeasure"/>
			<xs:element ref="ifc:IfcAbsorbedDoseMeasure"/>
			<xs:element ref="ifc:IfcRadioActivityMeasure"/>
			<xs:element ref="ifc:IfcRotationalFrequencyMeasure"/>
			<xs:element ref="ifc:IfcTorqueMeasure"/>
			<xs:element ref="ifc:IfcAccelerationMeasure"/>
			<xs:element ref="ifc:IfcLinearForceMeasure"/>
			<xs:element ref="ifc:IfcLinearStiffnessMeasure"/>
			<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure"/>
			<xs:element ref="ifc:IfcModulusOfElasticityMeasure"/>
			<xs:element ref="ifc:IfcMomentOfInertiaMeasure"/>
			<xs:element ref="ifc:IfcPlanarForceMeasure"/>
			<xs:element ref="ifc:IfcRotationalStiffnessMeasure"/>
			<xs:element ref="ifc:IfcShearModulusMeasure"/>
			<xs:element ref="ifc:IfcLinearMomentMeasure"/>
			<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure"/>
			<xs:element ref="ifc:IfcCurvatureMeasure"/>
			<xs:element ref="ifc:IfcMassPerLengthMeasure"/>
			<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure"/>
			<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure"/>
			<xs:element ref="ifc:IfcRotationalMassMeasure"/>
			<xs:element ref="ifc:IfcSectionalAreaIntegralMeasure"/>
			<xs:element ref="ifc:IfcSectionModulusMeasure"/>
			<xs:element ref="ifc:IfcTemperatureGradientMeasure"/>
			<xs:element ref="ifc:IfcThermalExpansionCoefficientMeasure"/>
			<xs:element ref="ifc:IfcWarpingConstantMeasure"/>
			<xs:element ref="ifc:IfcWarpingMomentMeasure"/>
			<xs:element ref="ifc:IfcSoundPowerMeasure"/>
			<xs:element ref="ifc:IfcSoundPressureMeasure"/>
			<xs:element ref="ifc:IfcHeatingValueMeasure"/>
			<xs:element ref="ifc:IfcPHMeasure"/>
			<xs:element ref="ifc:IfcIonConcentrationMeasure"/>
		</xs:choice>
	</xs:group>
	<xs:complexType name="IfcVectorOrDirection">
		<xs:group ref="ifc:IfcVectorOrDirection"/>
	</xs:complexType>
	<xs:group name="IfcVectorOrDirection">
		<xs:choice>
			<xs:element ref="ifc:IfcDirection"/>
			<xs:element ref="ifc:IfcVector"/>
		</xs:choice>
	</xs:group>
	<!-- enumeration type declarations (for ENUMERATION data type definitions) -->
	<xs:element name="IfcActionSourceTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcActionSourceTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcActionSourceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="dead_load_g"/>
			<xs:enumeration value="completion_g1"/>
			<xs:enumeration value="live_load_q"/>
			<xs:enumeration value="snow_s"/>
			<xs:enumeration value="wind_w"/>
			<xs:enumeration value="prestressing_p"/>
			<xs:enumeration value="settlement_u"/>
			<xs:enumeration value="temperature_t"/>
			<xs:enumeration value="earthquake_e"/>
			<xs:enumeration value="fire"/>
			<xs:enumeration value="impulse"/>
			<xs:enumeration value="impact"/>
			<xs:enumeration value="transport"/>
			<xs:enumeration value="erection"/>
			<xs:enumeration value="propping"/>
			<xs:enumeration value="system_imperfection"/>
			<xs:enumeration value="shrinkage"/>
			<xs:enumeration value="creep"/>
			<xs:enumeration value="lack_of_fit"/>
			<xs:enumeration value="buoyancy"/>
			<xs:enumeration value="ice"/>
			<xs:enumeration value="current"/>
			<xs:enumeration value="wave"/>
			<xs:enumeration value="rain"/>
			<xs:enumeration value="brakes"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcActionTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcActionTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcActionTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="permanent_g"/>
			<xs:enumeration value="variable_q"/>
			<xs:enumeration value="extraordinary_a"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcActuatorTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcActuatorTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcActuatorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="electricactuator"/>
			<xs:enumeration value="handoperatedactuator"/>
			<xs:enumeration value="hydraulicactuator"/>
			<xs:enumeration value="pneumaticactuator"/>
			<xs:enumeration value="thermostaticactuator"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcAddressTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAddressTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAddressTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="office"/>
			<xs:enumeration value="site"/>
			<xs:enumeration value="home"/>
			<xs:enumeration value="distributionpoint"/>
			<xs:enumeration value="userdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcAheadOrBehind" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAheadOrBehind">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAheadOrBehind">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ahead"/>
			<xs:enumeration value="behind"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcAirTerminalBoxTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAirTerminalBoxTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAirTerminalBoxTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="constantflow"/>
			<xs:enumeration value="variableflowpressuredependant"/>
			<xs:enumeration value="variableflowpressureindependant"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcAirTerminalTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAirTerminalTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAirTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="grille"/>
			<xs:enumeration value="register"/>
			<xs:enumeration value="diffuser"/>
			<xs:enumeration value="eyeball"/>
			<xs:enumeration value="iris"/>
			<xs:enumeration value="lineargrille"/>
			<xs:enumeration value="lineardiffuser"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcAirToAirHeatRecoveryTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAirToAirHeatRecoveryTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAirToAirHeatRecoveryTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="fixedplatecounterflowexchanger"/>
			<xs:enumeration value="fixedplatecrossflowexchanger"/>
			<xs:enumeration value="fixedplateparallelflowexchanger"/>
			<xs:enumeration value="rotarywheel"/>
			<xs:enumeration value="runaroundcoilloop"/>
			<xs:enumeration value="heatpipe"/>
			<xs:enumeration value="twintowerenthalpyrecoveryloops"/>
			<xs:enumeration value="thermosiphonsealedtubeheatexchangers"/>
			<xs:enumeration value="thermosiphoncoiltypeheatexchangers"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcAlarmTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAlarmTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAlarmTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bell"/>
			<xs:enumeration value="breakglassbutton"/>
			<xs:enumeration value="light"/>
			<xs:enumeration value="manualpullbox"/>
			<xs:enumeration value="siren"/>
			<xs:enumeration value="whistle"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcAnalysisModelTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAnalysisModelTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAnalysisModelTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="in_plane_loading_2d"/>
			<xs:enumeration value="out_plane_loading_2d"/>
			<xs:enumeration value="loading_3d"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcAnalysisTheoryTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAnalysisTheoryTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAnalysisTheoryTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="first_order_theory"/>
			<xs:enumeration value="second_order_theory"/>
			<xs:enumeration value="third_order_theory"/>
			<xs:enumeration value="full_nonlinear_theory"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcArithmeticOperatorEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcArithmeticOperatorEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcArithmeticOperatorEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="add"/>
			<xs:enumeration value="divide"/>
			<xs:enumeration value="multiply"/>
			<xs:enumeration value="subtract"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcAssemblyPlaceEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAssemblyPlaceEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAssemblyPlaceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="site"/>
			<xs:enumeration value="factory"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcBSplineCurveForm" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcBSplineCurveForm">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcBSplineCurveForm">
		<xs:restriction base="xs:string">
			<xs:enumeration value="polyline_form"/>
			<xs:enumeration value="circular_arc"/>
			<xs:enumeration value="elliptic_arc"/>
			<xs:enumeration value="parabolic_arc"/>
			<xs:enumeration value="hyperbolic_arc"/>
			<xs:enumeration value="unspecified"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcBeamTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcBeamTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcBeamTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="beam"/>
			<xs:enumeration value="joist"/>
			<xs:enumeration value="lintel"/>
			<xs:enumeration value="t_beam"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcBenchmarkEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcBenchmarkEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcBenchmarkEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="greaterthan"/>
			<xs:enumeration value="greaterthanorequalto"/>
			<xs:enumeration value="lessthan"/>
			<xs:enumeration value="lessthanorequalto"/>
			<xs:enumeration value="equalto"/>
			<xs:enumeration value="notequalto"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcBoilerTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcBoilerTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcBoilerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="water"/>
			<xs:enumeration value="steam"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcBooleanOperator" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcBooleanOperator">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcCableCarrierFittingTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCableCarrierFittingTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcCableCarrierSegmentTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCableCarrierSegmentTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcCableSegmentTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCableSegmentTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcCableSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cablesegment"/>
			<xs:enumeration value="conductorsegment"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcChangeActionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcChangeActionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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="modifiedadded"/>
			<xs:enumeration value="modifieddeleted"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcChillerTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcChillerTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcCoilTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCoilTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcCoilTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="dxcoolingcoil"/>
			<xs:enumeration value="watercoolingcoil"/>
			<xs:enumeration value="steamheatingcoil"/>
			<xs:enumeration value="waterheatingcoil"/>
			<xs:enumeration value="electricheatingcoil"/>
			<xs:enumeration value="gasheatingcoil"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcColumnTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcColumnTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcColumnTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="column"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcCompressorTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCompressorTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcCompressorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="dynamic"/>
			<xs:enumeration value="reciprocating"/>
			<xs:enumeration value="rotary"/>
			<xs:enumeration value="scroll"/>
			<xs:enumeration value="trochoidal"/>
			<xs:enumeration value="singlestage"/>
			<xs:enumeration value="booster"/>
			<xs:enumeration value="opentype"/>
			<xs:enumeration value="hermetic"/>
			<xs:enumeration value="semihermetic"/>
			<xs:enumeration value="weldedshellhermetic"/>
			<xs:enumeration value="rollingpiston"/>
			<xs:enumeration value="rotaryvane"/>
			<xs:enumeration value="singlescrew"/>
			<xs:enumeration value="twinscrew"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcCondenserTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCondenserTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcCondenserTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="watercooledshelltube"/>
			<xs:enumeration value="watercooledshellcoil"/>
			<xs:enumeration value="watercooledtubeintube"/>
			<xs:enumeration value="watercooledbrazedplate"/>
			<xs:enumeration value="aircooled"/>
			<xs:enumeration value="evaporativecooled"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcConnectionTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcConnectionTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcConnectionTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="atpath"/>
			<xs:enumeration value="atstart"/>
			<xs:enumeration value="atend"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcConstraintEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcConstraintEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcConstraintEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="hard"/>
			<xs:enumeration value="soft"/>
			<xs:enumeration value="advisory"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcControllerTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcControllerTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcControllerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="floating"/>
			<xs:enumeration value="proportional"/>
			<xs:enumeration value="proportionalintegral"/>
			<xs:enumeration value="proportionalintegralderivative"/>
			<xs:enumeration value="timedtwoposition"/>
			<xs:enumeration value="twoposition"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcCooledBeamTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCooledBeamTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcCooledBeamTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="active"/>
			<xs:enumeration value="passive"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcCoolingTowerTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCoolingTowerTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcCoolingTowerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="naturaldraft"/>
			<xs:enumeration value="mechanicalinduceddraft"/>
			<xs:enumeration value="mechanicalforceddraft"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcCostScheduleTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCostScheduleTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcCostScheduleTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="budget"/>
			<xs:enumeration value="costplan"/>
			<xs:enumeration value="estimate"/>
			<xs:enumeration value="tender"/>
			<xs:enumeration value="pricedbillofquantities"/>
			<xs:enumeration value="unpricedbillofquantities"/>
			<xs:enumeration value="scheduleofrates"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcCoveringTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCoveringTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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="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:element name="IfcCurrencyEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCurrencyEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcCurrencyEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="aed"/>
			<xs:enumeration value="aes"/>
			<xs:enumeration value="ats"/>
			<xs:enumeration value="aud"/>
			<xs:enumeration value="bbd"/>
			<xs:enumeration value="beg"/>
			<xs:enumeration value="bgl"/>
			<xs:enumeration value="bhd"/>
			<xs:enumeration value="bmd"/>
			<xs:enumeration value="bnd"/>
			<xs:enumeration value="brl"/>
			<xs:enumeration value="bsd"/>
			<xs:enumeration value="bwp"/>
			<xs:enumeration value="bzd"/>
			<xs:enumeration value="cad"/>
			<xs:enumeration value="cbd"/>
			<xs:enumeration value="chf"/>
			<xs:enumeration value="clp"/>
			<xs:enumeration value="cny"/>
			<xs:enumeration value="cys"/>
			<xs:enumeration value="czk"/>
			<xs:enumeration value="ddp"/>
			<xs:enumeration value="dem"/>
			<xs:enumeration value="dkk"/>
			<xs:enumeration value="egl"/>
			<xs:enumeration value="est"/>
			<xs:enumeration value="eur"/>
			<xs:enumeration value="fak"/>
			<xs:enumeration value="fim"/>
			<xs:enumeration value="fjd"/>
			<xs:enumeration value="fkp"/>
			<xs:enumeration value="frf"/>
			<xs:enumeration value="gbp"/>
			<xs:enumeration value="gip"/>
			<xs:enumeration value="gmd"/>
			<xs:enumeration value="grx"/>
			<xs:enumeration value="hkd"/>
			<xs:enumeration value="huf"/>
			<xs:enumeration value="ick"/>
			<xs:enumeration value="idr"/>
			<xs:enumeration value="ils"/>
			<xs:enumeration value="inr"/>
			<xs:enumeration value="irp"/>
			<xs:enumeration value="itl"/>
			<xs:enumeration value="jmd"/>
			<xs:enumeration value="jod"/>
			<xs:enumeration value="jpy"/>
			<xs:enumeration value="kes"/>
			<xs:enumeration value="krw"/>
			<xs:enumeration value="kwd"/>
			<xs:enumeration value="kyd"/>
			<xs:enumeration value="lkr"/>
			<xs:enumeration value="luf"/>
			<xs:enumeration value="mtl"/>
			<xs:enumeration value="mur"/>
			<xs:enumeration value="mxn"/>
			<xs:enumeration value="myr"/>
			<xs:enumeration value="nlg"/>
			<xs:enumeration value="nzd"/>
			<xs:enumeration value="omr"/>
			<xs:enumeration value="pgk"/>
			<xs:enumeration value="php"/>
			<xs:enumeration value="pkr"/>
			<xs:enumeration value="pln"/>
			<xs:enumeration value="ptn"/>
			<xs:enumeration value="qar"/>
			<xs:enumeration value="rur"/>
			<xs:enumeration value="sar"/>
			<xs:enumeration value="scr"/>
			<xs:enumeration value="sek"/>
			<xs:enumeration value="sgd"/>
			<xs:enumeration value="skp"/>
			<xs:enumeration value="thb"/>
			<xs:enumeration value="trl"/>
			<xs:enumeration value="ttd"/>
			<xs:enumeration value="twd"/>
			<xs:enumeration value="usd"/>
			<xs:enumeration value="veb"/>
			<xs:enumeration value="vnd"/>
			<xs:enumeration value="xeu"/>
			<xs:enumeration value="zar"/>
			<xs:enumeration value="zwd"/>
			<xs:enumeration value="nok"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDamperTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDamperTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDamperTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="controldamper"/>
			<xs:enumeration value="firedamper"/>
			<xs:enumeration value="smokedamper"/>
			<xs:enumeration value="firesmokedamper"/>
			<xs:enumeration value="backdraftdamper"/>
			<xs:enumeration value="reliefdamper"/>
			<xs:enumeration value="blastdamper"/>
			<xs:enumeration value="gravitydamper"/>
			<xs:enumeration value="gravityreliefdamper"/>
			<xs:enumeration value="balancingdamper"/>
			<xs:enumeration value="fumehoodexhaust"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDataOriginEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDataOriginEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcDerivedUnitEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDerivedUnitEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDerivedUnitEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="angularvelocityunit"/>
			<xs:enumeration value="compoundplaneangleunit"/>
			<xs:enumeration value="dynamicviscosityunit"/>
			<xs:enumeration value="heatfluxdensityunit"/>
			<xs:enumeration value="integercountrateunit"/>
			<xs:enumeration value="isothermalmoisturecapacityunit"/>
			<xs:enumeration value="kinematicviscosityunit"/>
			<xs:enumeration value="linearvelocityunit"/>
			<xs:enumeration value="massdensityunit"/>
			<xs:enumeration value="massflowrateunit"/>
			<xs:enumeration value="moisturediffusivityunit"/>
			<xs:enumeration value="molecularweightunit"/>
			<xs:enumeration value="specificheatcapacityunit"/>
			<xs:enumeration value="thermaladmittanceunit"/>
			<xs:enumeration value="thermalconductanceunit"/>
			<xs:enumeration value="thermalresistanceunit"/>
			<xs:enumeration value="thermaltransmittanceunit"/>
			<xs:enumeration value="vaporpermeabilityunit"/>
			<xs:enumeration value="volumetricflowrateunit"/>
			<xs:enumeration value="rotationalfrequencyunit"/>
			<xs:enumeration value="torqueunit"/>
			<xs:enumeration value="momentofinertiaunit"/>
			<xs:enumeration value="linearmomentunit"/>
			<xs:enumeration value="linearforceunit"/>
			<xs:enumeration value="planarforceunit"/>
			<xs:enumeration value="modulusofelasticityunit"/>
			<xs:enumeration value="shearmodulusunit"/>
			<xs:enumeration value="linearstiffnessunit"/>
			<xs:enumeration value="rotationalstiffnessunit"/>
			<xs:enumeration value="modulusofsubgradereactionunit"/>
			<xs:enumeration value="accelerationunit"/>
			<xs:enumeration value="curvatureunit"/>
			<xs:enumeration value="heatingvalueunit"/>
			<xs:enumeration value="ionconcentrationunit"/>
			<xs:enumeration value="luminousintensitydistributionunit"/>
			<xs:enumeration value="massperlengthunit"/>
			<xs:enumeration value="modulusoflinearsubgradereactionunit"/>
			<xs:enumeration value="modulusofrotationalsubgradereactionunit"/>
			<xs:enumeration value="phunit"/>
			<xs:enumeration value="rotationalmassunit"/>
			<xs:enumeration value="sectionareaintegralunit"/>
			<xs:enumeration value="sectionmodulusunit"/>
			<xs:enumeration value="soundpowerunit"/>
			<xs:enumeration value="soundpressureunit"/>
			<xs:enumeration value="temperaturegradientunit"/>
			<xs:enumeration value="thermalexpansioncoefficientunit"/>
			<xs:enumeration value="warpingconstantunit"/>
			<xs:enumeration value="warpingmomentunit"/>
			<xs:enumeration value="userdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDimensionExtentUsage" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDimensionExtentUsage">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDimensionExtentUsage">
		<xs:restriction base="xs:string">
			<xs:enumeration value="origin"/>
			<xs:enumeration value="target"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDirectionSenseEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDirectionSenseEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDirectionSenseEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="positive"/>
			<xs:enumeration value="negative"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDistributionChamberElementTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDistributionChamberElementTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDistributionChamberElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="formedduct"/>
			<xs:enumeration value="inspectionchamber"/>
			<xs:enumeration value="inspectionpit"/>
			<xs:enumeration value="manhole"/>
			<xs:enumeration value="meterchamber"/>
			<xs:enumeration value="sump"/>
			<xs:enumeration value="trench"/>
			<xs:enumeration value="valvechamber"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDocumentConfidentialityEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDocumentConfidentialityEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDocumentConfidentialityEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="public"/>
			<xs:enumeration value="restricted"/>
			<xs:enumeration value="confidential"/>
			<xs:enumeration value="personal"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDocumentStatusEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDocumentStatusEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDocumentStatusEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="draft"/>
			<xs:enumeration value="finaldraft"/>
			<xs:enumeration value="final"/>
			<xs:enumeration value="revision"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDoorPanelOperationEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDoorPanelOperationEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDoorPanelOperationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="swinging"/>
			<xs:enumeration value="double_acting"/>
			<xs:enumeration value="sliding"/>
			<xs:enumeration value="folding"/>
			<xs:enumeration value="revolving"/>
			<xs:enumeration value="rollingup"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDoorPanelPositionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDoorPanelPositionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDoorPanelPositionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="left"/>
			<xs:enumeration value="middle"/>
			<xs:enumeration value="right"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDoorStyleConstructionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDoorStyleConstructionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDoorStyleConstructionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="aluminium"/>
			<xs:enumeration value="high_grade_steel"/>
			<xs:enumeration value="steel"/>
			<xs:enumeration value="wood"/>
			<xs:enumeration value="aluminium_wood"/>
			<xs:enumeration value="aluminium_plastic"/>
			<xs:enumeration value="plastic"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDoorStyleOperationEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDoorStyleOperationEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDoorStyleOperationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="single_swing_left"/>
			<xs:enumeration value="single_swing_right"/>
			<xs:enumeration value="double_door_single_swing"/>
			<xs:enumeration value="double_door_single_swing_opposite_left"/>
			<xs:enumeration value="double_door_single_swing_opposite_right"/>
			<xs:enumeration value="double_swing_left"/>
			<xs:enumeration value="double_swing_right"/>
			<xs:enumeration value="double_door_double_swing"/>
			<xs:enumeration value="sliding_to_left"/>
			<xs:enumeration value="sliding_to_right"/>
			<xs:enumeration value="double_door_sliding"/>
			<xs:enumeration value="folding_to_left"/>
			<xs:enumeration value="folding_to_right"/>
			<xs:enumeration value="double_door_folding"/>
			<xs:enumeration value="revolving"/>
			<xs:enumeration value="rollingup"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDuctFittingTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDuctFittingTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDuctFittingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bend"/>
			<xs:enumeration value="connector"/>
			<xs:enumeration value="entry"/>
			<xs:enumeration value="exit"/>
			<xs:enumeration value="junction"/>
			<xs:enumeration value="obstruction"/>
			<xs:enumeration value="transition"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDuctSegmentTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDuctSegmentTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDuctSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="rigidsegment"/>
			<xs:enumeration value="flexiblesegment"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcDuctSilencerTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDuctSilencerTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDuctSilencerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="flatoval"/>
			<xs:enumeration value="rectangular"/>
			<xs:enumeration value="round"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcElectricApplianceTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricApplianceTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricApplianceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="computer"/>
			<xs:enumeration value="directwaterheater"/>
			<xs:enumeration value="dishwasher"/>
			<xs:enumeration value="electriccooker"/>
			<xs:enumeration value="electricheater"/>
			<xs:enumeration value="facsimile"/>
			<xs:enumeration value="freestandingfan"/>
			<xs:enumeration value="freezer"/>
			<xs:enumeration value="fridge_freezer"/>
			<xs:enumeration value="handdryer"/>
			<xs:enumeration value="indirectwaterheater"/>
			<xs:enumeration value="microwave"/>
			<xs:enumeration value="photocopier"/>
			<xs:enumeration value="printer"/>
			<xs:enumeration value="refrigerator"/>
			<xs:enumeration value="radiantheater"/>
			<xs:enumeration value="scanner"/>
			<xs:enumeration value="telephone"/>
			<xs:enumeration value="tumbledryer"/>
			<xs:enumeration value="tv"/>
			<xs:enumeration value="vendingmachine"/>
			<xs:enumeration value="washingmachine"/>
			<xs:enumeration value="waterheater"/>
			<xs:enumeration value="watercooler"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcElectricCurrentEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricCurrentEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricCurrentEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="alternating"/>
			<xs:enumeration value="direct"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcElectricDistributionPointFunctionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricDistributionPointFunctionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricDistributionPointFunctionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="alarmpanel"/>
			<xs:enumeration value="consumerunit"/>
			<xs:enumeration value="controlpanel"/>
			<xs:enumeration value="distributionboard"/>
			<xs:enumeration value="gasdetectorpanel"/>
			<xs:enumeration value="indicatorpanel"/>
			<xs:enumeration value="mimicpanel"/>
			<xs:enumeration value="motorcontrolcentre"/>
			<xs:enumeration value="switchboard"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcElectricFlowStorageDeviceTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricFlowStorageDeviceTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcElectricGeneratorTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricGeneratorTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricGeneratorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcElectricHeaterTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricHeaterTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricHeaterTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="electricpointheater"/>
			<xs:enumeration value="electriccableheater"/>
			<xs:enumeration value="electricmatheater"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcElectricMotorTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricMotorTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcElectricTimeControlTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricTimeControlTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricTimeControlTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="timeclock"/>
			<xs:enumeration value="timedelay"/>
			<xs:enumeration value="relay"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcElementAssemblyTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElementAssemblyTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElementAssemblyTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="accessory_assembly"/>
			<xs:enumeration value="arch"/>
			<xs:enumeration value="beam_grid"/>
			<xs:enumeration value="braced_frame"/>
			<xs:enumeration value="girder"/>
			<xs:enumeration value="reinforcement_unit"/>
			<xs:enumeration value="rigid_frame"/>
			<xs:enumeration value="slab_field"/>
			<xs:enumeration value="truss"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcElementCompositionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElementCompositionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElementCompositionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="complex"/>
			<xs:enumeration value="element"/>
			<xs:enumeration value="partial"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcEnergySequenceEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcEnergySequenceEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcEnergySequenceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="primary"/>
			<xs:enumeration value="secondary"/>
			<xs:enumeration value="tertiary"/>
			<xs:enumeration value="auxiliary"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcEnvironmentalImpactCategoryEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcEnvironmentalImpactCategoryEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcEnvironmentalImpactCategoryEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="combinedvalue"/>
			<xs:enumeration value="disposal"/>
			<xs:enumeration value="extraction"/>
			<xs:enumeration value="installation"/>
			<xs:enumeration value="manufacture"/>
			<xs:enumeration value="transportation"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcEvaporativeCoolerTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcEvaporativeCoolerTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcEvaporativeCoolerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="directevaporativerandommediaaircooler"/>
			<xs:enumeration value="directevaporativerigidmediaaircooler"/>
			<xs:enumeration value="directevaporativeslingerspackagedaircooler"/>
			<xs:enumeration value="directevaporativepackagedrotaryaircooler"/>
			<xs:enumeration value="directevaporativeairwasher"/>
			<xs:enumeration value="indirectevaporativepackageaircooler"/>
			<xs:enumeration value="indirectevaporativewetcoil"/>
			<xs:enumeration value="indirectevaporativecoolingtowerorcoilcooler"/>
			<xs:enumeration value="indirectdirectcombination"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcEvaporatorTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcEvaporatorTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcEvaporatorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="directexpansionshellandtube"/>
			<xs:enumeration value="directexpansiontubeintube"/>
			<xs:enumeration value="directexpansionbrazedplate"/>
			<xs:enumeration value="floodedshellandtube"/>
			<xs:enumeration value="shellandcoil"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcFanTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcFanTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcFanTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="centrifugalforwardcurved"/>
			<xs:enumeration value="centrifugalradial"/>
			<xs:enumeration value="centrifugalbackwardinclinedcurved"/>
			<xs:enumeration value="centrifugalairfoil"/>
			<xs:enumeration value="tubeaxial"/>
			<xs:enumeration value="vaneaxial"/>
			<xs:enumeration value="propelloraxial"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcFilterTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcFilterTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcFilterTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="airparticlefilter"/>
			<xs:enumeration value="odorfilter"/>
			<xs:enumeration value="oilfilter"/>
			<xs:enumeration value="strainer"/>
			<xs:enumeration value="waterfilter"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcFireSuppressionTerminalTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcFireSuppressionTerminalTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcFireSuppressionTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="breechinginlet"/>
			<xs:enumeration value="firehydrant"/>
			<xs:enumeration value="hosereel"/>
			<xs:enumeration value="sprinkler"/>
			<xs:enumeration value="sprinklerdeflector"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcFlowDirectionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcFlowDirectionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcFlowInstrumentTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcFlowInstrumentTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcFlowInstrumentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="pressuregauge"/>
			<xs:enumeration value="thermometer"/>
			<xs:enumeration value="ammeter"/>
			<xs:enumeration value="frequencymeter"/>
			<xs:enumeration value="powerfactormeter"/>
			<xs:enumeration value="phaseanglemeter"/>
			<xs:enumeration value="voltmeter_peak"/>
			<xs:enumeration value="voltmeter_rms"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcFlowMeterTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcFlowMeterTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcFlowMeterTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="electricmeter"/>
			<xs:enumeration value="energymeter"/>
			<xs:enumeration value="flowmeter"/>
			<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:element name="IfcFootingTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcFootingTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcFootingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="footing_beam"/>
			<xs:enumeration value="pad_footing"/>
			<xs:enumeration value="pile_cap"/>
			<xs:enumeration value="strip_footing"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcGasTerminalTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcGasTerminalTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcGasTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="gasappliance"/>
			<xs:enumeration value="gasbooster"/>
			<xs:enumeration value="gasburner"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcGeometricProjectionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcGeometricProjectionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcGeometricProjectionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="graph_view"/>
			<xs:enumeration value="sketch_view"/>
			<xs:enumeration value="model_view"/>
			<xs:enumeration value="plan_view"/>
			<xs:enumeration value="reflected_plan_view"/>
			<xs:enumeration value="section_view"/>
			<xs:enumeration value="elevation_view"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcGlobalOrLocalEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcGlobalOrLocalEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcGlobalOrLocalEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="global_coords"/>
			<xs:enumeration value="local_coords"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcHeatExchangerTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcHeatExchangerTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcHeatExchangerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="plate"/>
			<xs:enumeration value="shellandtube"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcHumidifierTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcHumidifierTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcHumidifierTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="steaminjection"/>
			<xs:enumeration value="adiabaticairwasher"/>
			<xs:enumeration value="adiabaticpan"/>
			<xs:enumeration value="adiabaticwettedelement"/>
			<xs:enumeration value="adiabaticatomizing"/>
			<xs:enumeration value="adiabaticultrasonic"/>
			<xs:enumeration value="adiabaticrigidmedia"/>
			<xs:enumeration value="adiabaticcompressedairnozzle"/>
			<xs:enumeration value="assistedelectric"/>
			<xs:enumeration value="assistednaturalgas"/>
			<xs:enumeration value="assistedpropane"/>
			<xs:enumeration value="assistedbutane"/>
			<xs:enumeration value="assistedsteam"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcInternalOrExternalEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcInternalOrExternalEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcInternalOrExternalEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="internal"/>
			<xs:enumeration value="external"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcInventoryTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcInventoryTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcInventoryTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="assetinventory"/>
			<xs:enumeration value="spaceinventory"/>
			<xs:enumeration value="furnitureinventory"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcJunctionBoxTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcJunctionBoxTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcJunctionBoxTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcLampTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLampTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLampTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="compactfluorescent"/>
			<xs:enumeration value="fluorescent"/>
			<xs:enumeration value="highpressuremercury"/>
			<xs:enumeration value="highpressuresodium"/>
			<xs:enumeration value="metalhalide"/>
			<xs:enumeration value="tungstenfilament"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcLayerSetDirectionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLayerSetDirectionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLayerSetDirectionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="axis1"/>
			<xs:enumeration value="axis2"/>
			<xs:enumeration value="axis3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcLightDistributionCurveEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLightDistributionCurveEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLightDistributionCurveEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="type_a"/>
			<xs:enumeration value="type_b"/>
			<xs:enumeration value="type_c"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcLightEmissionSourceEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLightEmissionSourceEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLightEmissionSourceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="compactfluorescent"/>
			<xs:enumeration value="fluorescent"/>
			<xs:enumeration value="highpressuremercury"/>
			<xs:enumeration value="highpressuresodium"/>
			<xs:enumeration value="lightemittingdiode"/>
			<xs:enumeration value="lowpressuresodium"/>
			<xs:enumeration value="lowvoltagehalogen"/>
			<xs:enumeration value="mainvoltagehalogen"/>
			<xs:enumeration value="metalhalide"/>
			<xs:enumeration value="tungstenfilament"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcLightFixtureTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLightFixtureTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLightFixtureTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="pointsource"/>
			<xs:enumeration value="directionsource"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcLoadGroupTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLoadGroupTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLoadGroupTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="load_group"/>
			<xs:enumeration value="load_case"/>
			<xs:enumeration value="load_combination_group"/>
			<xs:enumeration value="load_combination"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcLogicalOperatorEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLogicalOperatorEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLogicalOperatorEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="logicaland"/>
			<xs:enumeration value="logicalor"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcMemberTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMemberTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMemberTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="brace"/>
			<xs:enumeration value="chord"/>
			<xs:enumeration value="collar"/>
			<xs:enumeration value="member"/>
			<xs:enumeration value="plate"/>
			<xs:enumeration value="post"/>
			<xs:enumeration value="purlin"/>
			<xs:enumeration value="rafter"/>
			<xs:enumeration value="stringer"/>
			<xs:enumeration value="strut"/>
			<xs:enumeration value="stud"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcMotorConnectionTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMotorConnectionTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMotorConnectionTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="beltdrive"/>
			<xs:enumeration value="coupling"/>
			<xs:enumeration value="directdrive"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcNullStyle" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcNullStyle">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcNullStyle">
		<xs:restriction base="xs:string">
			<xs:enumeration value="null"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcObjectTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcObjectTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcObjectTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="product"/>
			<xs:enumeration value="process"/>
			<xs:enumeration value="control"/>
			<xs:enumeration value="resource"/>
			<xs:enumeration value="actor"/>
			<xs:enumeration value="group"/>
			<xs:enumeration value="project"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcObjectiveEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcObjectiveEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcObjectiveEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="codecompliance"/>
			<xs:enumeration value="designintent"/>
			<xs:enumeration value="healthandsafety"/>
			<xs:enumeration value="requirement"/>
			<xs:enumeration value="specification"/>
			<xs:enumeration value="triggercondition"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcOccupantTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcOccupantTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcOccupantTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="assignee"/>
			<xs:enumeration value="assignor"/>
			<xs:enumeration value="lessee"/>
			<xs:enumeration value="lessor"/>
			<xs:enumeration value="lettingagent"/>
			<xs:enumeration value="owner"/>
			<xs:enumeration value="tenant"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcOutletTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcOutletTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcOutletTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="audiovisualoutlet"/>
			<xs:enumeration value="communicationsoutlet"/>
			<xs:enumeration value="poweroutlet"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcPermeableCoveringOperationEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPermeableCoveringOperationEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPermeableCoveringOperationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="grill"/>
			<xs:enumeration value="louver"/>
			<xs:enumeration value="screen"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcPhysicalOrVirtualEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPhysicalOrVirtualEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPhysicalOrVirtualEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="physical"/>
			<xs:enumeration value="virtual"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcPileConstructionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPileConstructionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPileConstructionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cast_in_place"/>
			<xs:enumeration value="composite"/>
			<xs:enumeration value="precast_concrete"/>
			<xs:enumeration value="prefab_steel"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcPileTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPileTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPileTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cohesion"/>
			<xs:enumeration value="friction"/>
			<xs:enumeration value="support"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcPipeFittingTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPipeFittingTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPipeFittingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bend"/>
			<xs:enumeration value="connector"/>
			<xs:enumeration value="entry"/>
			<xs:enumeration value="exit"/>
			<xs:enumeration value="junction"/>
			<xs:enumeration value="obstruction"/>
			<xs:enumeration value="transition"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcPipeSegmentTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPipeSegmentTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPipeSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="flexiblesegment"/>
			<xs:enumeration value="rigidsegment"/>
			<xs:enumeration value="gutter"/>
			<xs:enumeration value="spool"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcPlateTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPlateTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPlateTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcProcedureTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcProcedureTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcProcedureTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="advice_caution"/>
			<xs:enumeration value="advice_note"/>
			<xs:enumeration value="advice_warning"/>
			<xs:enumeration value="calibration"/>
			<xs:enumeration value="diagnostic"/>
			<xs:enumeration value="shutdown"/>
			<xs:enumeration value="startup"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcProfileTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcProfileTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcProfileTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="curve"/>
			<xs:enumeration value="area"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcProjectOrderRecordTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcProjectOrderRecordTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcProjectOrderRecordTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="change"/>
			<xs:enumeration value="maintenance"/>
			<xs:enumeration value="move"/>
			<xs:enumeration value="purchase"/>
			<xs:enumeration value="work"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcProjectOrderTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcProjectOrderTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcProjectOrderTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="changeorder"/>
			<xs:enumeration value="maintenanceworkorder"/>
			<xs:enumeration value="moveorder"/>
			<xs:enumeration value="purchaseorder"/>
			<xs:enumeration value="workorder"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcProjectedOrTrueLengthEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcProjectedOrTrueLengthEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcProjectedOrTrueLengthEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="projected_length"/>
			<xs:enumeration value="true_length"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcPropertySourceEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPropertySourceEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPropertySourceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="design"/>
			<xs:enumeration value="designmaximum"/>
			<xs:enumeration value="designminimum"/>
			<xs:enumeration value="simulated"/>
			<xs:enumeration value="asbuilt"/>
			<xs:enumeration value="commissioning"/>
			<xs:enumeration value="measured"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notknown"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcProtectiveDeviceTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcProtectiveDeviceTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcProtectiveDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="fusedisconnector"/>
			<xs:enumeration value="circuitbreaker"/>
			<xs:enumeration value="earthfailuredevice"/>
			<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:element name="IfcPumpTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPumpTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPumpTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="circulator"/>
			<xs:enumeration value="endsuction"/>
			<xs:enumeration value="splitcase"/>
			<xs:enumeration value="verticalinline"/>
			<xs:enumeration value="verticalturbine"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcRailingTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRailingTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcRailingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="handrail"/>
			<xs:enumeration value="guardrail"/>
			<xs:enumeration value="balustrade"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcRampFlightTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRampFlightTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcRampFlightTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="straight"/>
			<xs:enumeration value="spiral"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcRampTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRampTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcRampTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="straight_run_ramp"/>
			<xs:enumeration value="two_straight_run_ramp"/>
			<xs:enumeration value="quarter_turn_ramp"/>
			<xs:enumeration value="two_quarter_turn_ramp"/>
			<xs:enumeration value="half_turn_ramp"/>
			<xs:enumeration value="spiral_ramp"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcReflectanceMethodEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcReflectanceMethodEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcReflectanceMethodEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="blinn"/>
			<xs:enumeration value="flat"/>
			<xs:enumeration value="glass"/>
			<xs:enumeration value="matt"/>
			<xs:enumeration value="metal"/>
			<xs:enumeration value="mirror"/>
			<xs:enumeration value="phong"/>
			<xs:enumeration value="plastic"/>
			<xs:enumeration value="strauss"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcReinforcingBarRoleEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcReinforcingBarRoleEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcReinforcingBarRoleEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="main"/>
			<xs:enumeration value="shear"/>
			<xs:enumeration value="ligature"/>
			<xs:enumeration value="stud"/>
			<xs:enumeration value="punching"/>
			<xs:enumeration value="edge"/>
			<xs:enumeration value="ring"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcReinforcingBarSurfaceEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcReinforcingBarSurfaceEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcReinforcingBarSurfaceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="plain"/>
			<xs:enumeration value="textured"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcResourceConsumptionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcResourceConsumptionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcResourceConsumptionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="consumed"/>
			<xs:enumeration value="partiallyconsumed"/>
			<xs:enumeration value="notconsumed"/>
			<xs:enumeration value="occupied"/>
			<xs:enumeration value="partiallyoccupied"/>
			<xs:enumeration value="notoccupied"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcRibPlateDirectionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRibPlateDirectionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcRibPlateDirectionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="direction_x"/>
			<xs:enumeration value="direction_y"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcRoleEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRoleEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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="comissioningengineer"/>
			<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:element name="IfcRoofTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRoofTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcRoofTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="flat_roof"/>
			<xs:enumeration value="shed_roof"/>
			<xs:enumeration value="gable_roof"/>
			<xs:enumeration value="hip_roof"/>
			<xs:enumeration value="hipped_gable_roof"/>
			<xs:enumeration value="gambrel_roof"/>
			<xs:enumeration value="mansard_roof"/>
			<xs:enumeration value="barrel_roof"/>
			<xs:enumeration value="rainbow_roof"/>
			<xs:enumeration value="butterfly_roof"/>
			<xs:enumeration value="pavilion_roof"/>
			<xs:enumeration value="dome_roof"/>
			<xs:enumeration value="freeform"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcSIPrefix" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSIPrefix">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcSIUnitName" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSIUnitName">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcSanitaryTerminalTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSanitaryTerminalTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSanitaryTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bath"/>
			<xs:enumeration value="bidet"/>
			<xs:enumeration value="cistern"/>
			<xs:enumeration value="shower"/>
			<xs:enumeration value="sink"/>
			<xs:enumeration value="sanitaryfountain"/>
			<xs:enumeration value="toiletpan"/>
			<xs:enumeration value="urinal"/>
			<xs:enumeration value="washhandbasin"/>
			<xs:enumeration value="wcseat"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcSectionTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSectionTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSectionTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="uniform"/>
			<xs:enumeration value="tapered"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcSensorTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSensorTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSensorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="co2sensor"/>
			<xs:enumeration value="firesensor"/>
			<xs:enumeration value="flowsensor"/>
			<xs:enumeration value="gassensor"/>
			<xs:enumeration value="heatsensor"/>
			<xs:enumeration value="humiditysensor"/>
			<xs:enumeration value="lightsensor"/>
			<xs:enumeration value="moisturesensor"/>
			<xs:enumeration value="movementsensor"/>
			<xs:enumeration value="pressuresensor"/>
			<xs:enumeration value="smokesensor"/>
			<xs:enumeration value="soundsensor"/>
			<xs:enumeration value="temperaturesensor"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcSequenceEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSequenceEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSequenceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="start_start"/>
			<xs:enumeration value="start_finish"/>
			<xs:enumeration value="finish_start"/>
			<xs:enumeration value="finish_finish"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcServiceLifeFactorTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcServiceLifeFactorTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcServiceLifeFactorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="a_qualityofcomponents"/>
			<xs:enumeration value="b_designlevel"/>
			<xs:enumeration value="c_workexecutionlevel"/>
			<xs:enumeration value="d_indoorenvironment"/>
			<xs:enumeration value="e_outdoorenvironment"/>
			<xs:enumeration value="f_inuseconditions"/>
			<xs:enumeration value="g_maintenancelevel"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcServiceLifeTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcServiceLifeTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcServiceLifeTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="actualservicelife"/>
			<xs:enumeration value="expectedservicelife"/>
			<xs:enumeration value="optimisticreferenceservicelife"/>
			<xs:enumeration value="pessimisticreferenceservicelife"/>
			<xs:enumeration value="referenceservicelife"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcSlabTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSlabTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSlabTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="floor"/>
			<xs:enumeration value="roof"/>
			<xs:enumeration value="landing"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcSoundScaleEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSoundScaleEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSoundScaleEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="dba"/>
			<xs:enumeration value="dbb"/>
			<xs:enumeration value="dbc"/>
			<xs:enumeration value="nc"/>
			<xs:enumeration value="nr"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcSpaceHeaterTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSpaceHeaterTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSpaceHeaterTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="sectionalradiator"/>
			<xs:enumeration value="panelradiator"/>
			<xs:enumeration value="tubularradiator"/>
			<xs:enumeration value="convector"/>
			<xs:enumeration value="baseboardheater"/>
			<xs:enumeration value="finnedtubeunit"/>
			<xs:enumeration value="unitheater"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcStackTerminalTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcStackTerminalTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcStackTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="birdcage"/>
			<xs:enumeration value="cowl"/>
			<xs:enumeration value="rainwaterhopper"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcStairFlightTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcStairFlightTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcStairFlightTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="straight"/>
			<xs:enumeration value="winder"/>
			<xs:enumeration value="spiral"/>
			<xs:enumeration value="curved"/>
			<xs:enumeration value="freeform"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcStairTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcStairTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcStairTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="straight_run_stair"/>
			<xs:enumeration value="two_straight_run_stair"/>
			<xs:enumeration value="quarter_winding_stair"/>
			<xs:enumeration value="quarter_turn_stair"/>
			<xs:enumeration value="half_winding_stair"/>
			<xs:enumeration value="half_turn_stair"/>
			<xs:enumeration value="two_quarter_winding_stair"/>
			<xs:enumeration value="two_quarter_turn_stair"/>
			<xs:enumeration value="three_quarter_winding_stair"/>
			<xs:enumeration value="three_quarter_turn_stair"/>
			<xs:enumeration value="spiral_stair"/>
			<xs:enumeration value="double_return_stair"/>
			<xs:enumeration value="curved_run_stair"/>
			<xs:enumeration value="two_curved_run_stair"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcStateEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcStateEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcStructuralCurveTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcStructuralCurveTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcStructuralCurveTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="rigid_joined_member"/>
			<xs:enumeration value="pin_joined_member"/>
			<xs:enumeration value="cable"/>
			<xs:enumeration value="tension_member"/>
			<xs:enumeration value="compression_member"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcStructuralSurfaceTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcStructuralSurfaceTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcStructuralSurfaceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bending_element"/>
			<xs:enumeration value="membrane_element"/>
			<xs:enumeration value="shell"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcSurfaceSide" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSurfaceSide">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcSurfaceTextureEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSurfaceTextureEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSurfaceTextureEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bump"/>
			<xs:enumeration value="opacity"/>
			<xs:enumeration value="reflection"/>
			<xs:enumeration value="selfillumination"/>
			<xs:enumeration value="shininess"/>
			<xs:enumeration value="specular"/>
			<xs:enumeration value="texture"/>
			<xs:enumeration value="transparencymap"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcSwitchingDeviceTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSwitchingDeviceTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSwitchingDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="contactor"/>
			<xs:enumeration value="emergencystop"/>
			<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:element name="IfcTankTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTankTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTankTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="preformed"/>
			<xs:enumeration value="sectional"/>
			<xs:enumeration value="expansion"/>
			<xs:enumeration value="pressurevessel"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcTendonTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTendonTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTendonTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="strand"/>
			<xs:enumeration value="wire"/>
			<xs:enumeration value="bar"/>
			<xs:enumeration value="coated"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcTextPath" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTextPath">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcThermalLoadSourceEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalLoadSourceEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcThermalLoadSourceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="people"/>
			<xs:enumeration value="lighting"/>
			<xs:enumeration value="equipment"/>
			<xs:enumeration value="ventilationindoorair"/>
			<xs:enumeration value="ventilationoutsideair"/>
			<xs:enumeration value="recirculatedair"/>
			<xs:enumeration value="exhaustair"/>
			<xs:enumeration value="airexchangerate"/>
			<xs:enumeration value="drybulbtemperature"/>
			<xs:enumeration value="relativehumidity"/>
			<xs:enumeration value="infiltration"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcThermalLoadTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalLoadTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcThermalLoadTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="sensible"/>
			<xs:enumeration value="latent"/>
			<xs:enumeration value="radiant"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcTimeSeriesDataTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTimeSeriesDataTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcTimeSeriesScheduleTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTimeSeriesScheduleTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTimeSeriesScheduleTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="annual"/>
			<xs:enumeration value="monthly"/>
			<xs:enumeration value="weekly"/>
			<xs:enumeration value="daily"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcTransformerTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTransformerTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTransformerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="current"/>
			<xs:enumeration value="frequency"/>
			<xs:enumeration value="voltage"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcTransitionCode" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTransitionCode">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcTransportElementTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTransportElementTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTransportElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="elevator"/>
			<xs:enumeration value="escalator"/>
			<xs:enumeration value="movingwalkway"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcTrimmingPreference" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTrimmingPreference">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTrimmingPreference">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cartesian"/>
			<xs:enumeration value="parameter"/>
			<xs:enumeration value="unspecified"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcTubeBundleTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTubeBundleTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTubeBundleTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="finned"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcUnitEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcUnitEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<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:element name="IfcUnitaryEquipmentTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcUnitaryEquipmentTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcUnitaryEquipmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="airhandler"/>
			<xs:enumeration value="airconditioningunit"/>
			<xs:enumeration value="splitsystem"/>
			<xs:enumeration value="rooftopunit"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcValveTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcValveTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcValveTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="airrelease"/>
			<xs:enumeration value="antivacuum"/>
			<xs:enumeration value="changeover"/>
			<xs:enumeration value="check"/>
			<xs:enumeration value="commissioning"/>
			<xs:enumeration value="diverting"/>
			<xs:enumeration value="drawoffcock"/>
			<xs:enumeration value="doublecheck"/>
			<xs:enumeration value="doubleregulating"/>
			<xs:enumeration value="faucet"/>
			<xs:enumeration value="flushing"/>
			<xs:enumeration value="gascock"/>
			<xs:enumeration value="gastap"/>
			<xs:enumeration value="isolating"/>
			<xs:enumeration value="mixing"/>
			<xs:enumeration value="pressurereducing"/>
			<xs:enumeration value="pressurerelief"/>
			<xs:enumeration value="regulating"/>
			<xs:enumeration value="safetycutoff"/>
			<xs:enumeration value="steamtrap"/>
			<xs:enumeration value="stopcock"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcVibrationIsolatorTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcVibrationIsolatorTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcVibrationIsolatorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="compression"/>
			<xs:enumeration value="spring"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcWallTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWallTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcWallTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="standard"/>
			<xs:enumeration value="polygonal"/>
			<xs:enumeration value="shear"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcWasteTerminalTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWasteTerminalTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcWasteTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="floortrap"/>
			<xs:enumeration value="floorwaste"/>
			<xs:enumeration value="gullysump"/>
			<xs:enumeration value="gullytrap"/>
			<xs:enumeration value="greaseinterceptor"/>
			<xs:enumeration value="oilinterceptor"/>
			<xs:enumeration value="petrolinterceptor"/>
			<xs:enumeration value="roofdrain"/>
			<xs:enumeration value="wastedisposalunit"/>
			<xs:enumeration value="wastetrap"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcWindowPanelOperationEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWindowPanelOperationEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcWindowPanelOperationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="sidehungrighthand"/>
			<xs:enumeration value="sidehunglefthand"/>
			<xs:enumeration value="tiltandturnrighthand"/>
			<xs:enumeration value="tiltandturnlefthand"/>
			<xs:enumeration value="tophung"/>
			<xs:enumeration value="bottomhung"/>
			<xs:enumeration value="pivothorizontal"/>
			<xs:enumeration value="pivotvertical"/>
			<xs:enumeration value="slidinghorizontal"/>
			<xs:enumeration value="slidingvertical"/>
			<xs:enumeration value="removablecasement"/>
			<xs:enumeration value="fixedcasement"/>
			<xs:enumeration value="otheroperation"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcWindowPanelPositionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWindowPanelPositionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcWindowPanelPositionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="left"/>
			<xs:enumeration value="middle"/>
			<xs:enumeration value="right"/>
			<xs:enumeration value="bottom"/>
			<xs:enumeration value="top"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcWindowStyleConstructionEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWindowStyleConstructionEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcWindowStyleConstructionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="aluminium"/>
			<xs:enumeration value="high_grade_steel"/>
			<xs:enumeration value="steel"/>
			<xs:enumeration value="wood"/>
			<xs:enumeration value="aluminium_wood"/>
			<xs:enumeration value="plastic"/>
			<xs:enumeration value="other_construction"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcWindowStyleOperationEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWindowStyleOperationEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcWindowStyleOperationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="single_panel"/>
			<xs:enumeration value="double_panel_vertical"/>
			<xs:enumeration value="double_panel_horizontal"/>
			<xs:enumeration value="triple_panel_vertical"/>
			<xs:enumeration value="triple_panel_bottom"/>
			<xs:enumeration value="triple_panel_top"/>
			<xs:enumeration value="triple_panel_left"/>
			<xs:enumeration value="triple_panel_right"/>
			<xs:enumeration value="triple_panel_horizontal"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcWorkControlTypeEnum" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWorkControlTypeEnum">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcWorkControlTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="actual"/>
			<xs:enumeration value="baseline"/>
			<xs:enumeration value="planned"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<!-- simple type declarations (for TYPE defined data type definitions) -->
	<xs:element name="IfcAbsorbedDoseMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAbsorbedDoseMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAbsorbedDoseMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcAccelerationMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAccelerationMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAccelerationMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcAmountOfSubstanceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAmountOfSubstanceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAmountOfSubstanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcAngularVelocityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAngularVelocityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAngularVelocityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcAreaMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAreaMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcAreaMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcBoolean" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcBoolean">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcBoolean">
		<xs:restriction base="xs:boolean"/>
	</xs:simpleType>
	<xs:element name="IfcComplexNumber" nillable="true">
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="ifc:IfcComplexNumber">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="IfcComplexNumber">
		<xs:sequence>
			<xs:element ref="ex:double-wrapper" minOccurs="2" maxOccurs="2"/>
		</xs:sequence>
		<xs:attribute ref="ex:itemType" fixed="ex:double-wrapper"/>
		<xs:attribute ref="ex:cType" fixed="array"/>
		<xs:attribute ref="ex:arraySize" use="optional"/>
	</xs:complexType>
	<xs:element name="IfcCompoundPlaneAngleMeasure" nillable="true">
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="ifc:IfcCompoundPlaneAngleMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="IfcCompoundPlaneAngleMeasure">
		<xs:sequence>
			<xs:element ref="ex:long-wrapper" minOccurs="3" maxOccurs="3"/>
		</xs:sequence>
		<xs:attribute ref="ex:itemType" fixed="ex:long-wrapper"/>
		<xs:attribute ref="ex:cType" fixed="list"/>
		<xs:attribute ref="ex:arraySize" use="optional"/>
	</xs:complexType>
	<xs:element name="IfcContextDependentMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcContextDependentMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcContextDependentMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcCountMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCountMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcCountMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcCurvatureMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCurvatureMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcCurvatureMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcDayInMonthNumber" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDayInMonthNumber">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDayInMonthNumber">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:element name="IfcDaylightSavingHour" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDaylightSavingHour">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDaylightSavingHour">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:element name="IfcDescriptiveMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDescriptiveMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDescriptiveMeasure">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:element name="IfcDimensionCount" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDimensionCount">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDimensionCount">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:element name="IfcDoseEquivalentMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDoseEquivalentMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDoseEquivalentMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcDynamicViscosityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDynamicViscosityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcDynamicViscosityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcElectricCapacitanceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricCapacitanceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricCapacitanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcElectricChargeMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricChargeMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricChargeMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcElectricConductanceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricConductanceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricConductanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcElectricCurrentMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricCurrentMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricCurrentMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcElectricResistanceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricResistanceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricResistanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcElectricVoltageMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricVoltageMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcElectricVoltageMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcEnergyMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcEnergyMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcEnergyMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcForceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcForceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcForceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcFrequencyMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcFrequencyMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcFrequencyMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcGloballyUniqueId" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcGloballyUniqueId">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcGloballyUniqueId">
		<xs:restriction base="xs:normalizedString">
			<xs:minLength value="22"/>
			<xs:maxLength value="22"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcHeatFluxDensityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcHeatFluxDensityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcHeatFluxDensityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcHeatingValueMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcHeatingValueMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcHeatingValueMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcHourInDay" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcHourInDay">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcHourInDay">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:element name="IfcIdentifier" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcIdentifier">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcIdentifier">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:element name="IfcIlluminanceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcIlluminanceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcIlluminanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcInductanceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcInductanceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcInductanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcInteger" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcInteger">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcInteger">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:element name="IfcIntegerCountRateMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcIntegerCountRateMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcIntegerCountRateMeasure">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:element name="IfcIonConcentrationMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcIonConcentrationMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcIonConcentrationMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcIsothermalMoistureCapacityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcIsothermalMoistureCapacityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcIsothermalMoistureCapacityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcKinematicViscosityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcKinematicViscosityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcKinematicViscosityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcLabel" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLabel">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLabel">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:element name="IfcLengthMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLengthMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLengthMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcLinearForceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLinearForceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLinearForceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcLinearMomentMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLinearMomentMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLinearMomentMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcLinearStiffnessMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLinearStiffnessMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLinearStiffnessMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcLinearVelocityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLinearVelocityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLinearVelocityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcLogical" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLogical">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLogical">
		<xs:restriction base="ex:logical"/>
	</xs:simpleType>
	<xs:element name="IfcLuminousFluxMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLuminousFluxMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLuminousFluxMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcLuminousIntensityDistributionMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLuminousIntensityDistributionMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLuminousIntensityDistributionMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcLuminousIntensityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLuminousIntensityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcLuminousIntensityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMagneticFluxDensityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMagneticFluxDensityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMagneticFluxDensityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMagneticFluxMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMagneticFluxMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMagneticFluxMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMassDensityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMassDensityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMassDensityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMassFlowRateMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMassFlowRateMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMassFlowRateMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMassMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMassMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMassMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMassPerLengthMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMassPerLengthMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMassPerLengthMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMinuteInHour" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMinuteInHour">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMinuteInHour">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:element name="IfcModulusOfElasticityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcModulusOfElasticityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcModulusOfElasticityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcModulusOfLinearSubgradeReactionMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcModulusOfLinearSubgradeReactionMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcModulusOfLinearSubgradeReactionMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcModulusOfRotationalSubgradeReactionMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcModulusOfRotationalSubgradeReactionMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcModulusOfRotationalSubgradeReactionMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcModulusOfSubgradeReactionMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcModulusOfSubgradeReactionMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcModulusOfSubgradeReactionMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMoistureDiffusivityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMoistureDiffusivityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMoistureDiffusivityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMolecularWeightMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMolecularWeightMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMolecularWeightMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMomentOfInertiaMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMomentOfInertiaMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMomentOfInertiaMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMonetaryMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMonetaryMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMonetaryMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcMonthInYearNumber" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMonthInYearNumber">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcMonthInYearNumber">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:element name="IfcNormalisedRatioMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcNormalisedRatioMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcNormalisedRatioMeasure">
		<xs:restriction base="ifc:IfcRatioMeasure"/>
	</xs:simpleType>
	<xs:element name="IfcNumericMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcNumericMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcNumericMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcPHMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPHMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPHMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcParameterValue" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcParameterValue">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcParameterValue">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcPlanarForceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPlanarForceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPlanarForceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcPlaneAngleMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPlaneAngleMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPlaneAngleMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcPositiveLengthMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPositiveLengthMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPositiveLengthMeasure">
		<xs:restriction base="ifc:IfcLengthMeasure"/>
	</xs:simpleType>
	<xs:element name="IfcPositivePlaneAngleMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPositivePlaneAngleMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPositivePlaneAngleMeasure">
		<xs:restriction base="ifc:IfcPlaneAngleMeasure"/>
	</xs:simpleType>
	<xs:element name="IfcPositiveRatioMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPositiveRatioMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPositiveRatioMeasure">
		<xs:restriction base="ifc:IfcRatioMeasure"/>
	</xs:simpleType>
	<xs:element name="IfcPowerMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPowerMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPowerMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcPresentableText" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPresentableText">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPresentableText">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:element name="IfcPressureMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPressureMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcPressureMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcRadioActivityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRadioActivityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcRadioActivityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcRatioMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRatioMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcRatioMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcReal" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcReal">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcReal">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcRotationalFrequencyMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRotationalFrequencyMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcRotationalFrequencyMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcRotationalMassMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRotationalMassMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcRotationalMassMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcRotationalStiffnessMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRotationalStiffnessMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcRotationalStiffnessMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcSecondInMinute" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSecondInMinute">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSecondInMinute">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcSectionModulusMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSectionModulusMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSectionModulusMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcSectionalAreaIntegralMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSectionalAreaIntegralMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSectionalAreaIntegralMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcShearModulusMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcShearModulusMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcShearModulusMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcSolidAngleMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSolidAngleMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSolidAngleMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcSoundPowerMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSoundPowerMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSoundPowerMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcSoundPressureMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSoundPressureMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSoundPressureMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcSpecificHeatCapacityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSpecificHeatCapacityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSpecificHeatCapacityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcSpecularExponent" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSpecularExponent">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSpecularExponent">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcSpecularRoughness" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSpecularRoughness">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcSpecularRoughness">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcTemperatureGradientMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTemperatureGradientMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTemperatureGradientMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcText" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcText">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcText">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:element name="IfcTextAlignment" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTextAlignment">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTextAlignment">
		<xs:restriction base="ifc:IfcLabel"/>
	</xs:simpleType>
	<xs:element name="IfcThermalAdmittanceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalAdmittanceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcThermalAdmittanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcThermalConductivityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalConductivityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcThermalConductivityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcThermalExpansionCoefficientMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalExpansionCoefficientMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcThermalExpansionCoefficientMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcThermalResistanceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalResistanceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcThermalResistanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcThermalTransmittanceMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalTransmittanceMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcThermalTransmittanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcThermodynamicTemperatureMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermodynamicTemperatureMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcThermodynamicTemperatureMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcTimeMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTimeMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTimeMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcTimeStamp" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTimeStamp">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTimeStamp">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:element name="IfcTorqueMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTorqueMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcTorqueMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcVaporPermeabilityMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcVaporPermeabilityMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcVaporPermeabilityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcVolumeMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcVolumeMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcVolumeMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcVolumetricFlowRateMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcVolumetricFlowRateMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcVolumetricFlowRateMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcWarpingConstantMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWarpingConstantMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcWarpingConstantMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcWarpingMomentMeasure" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWarpingMomentMeasure">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcWarpingMomentMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:element name="IfcYearNumber" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcYearNumber">
					<xs:attributeGroup ref="ex:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="IfcYearNumber">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
</xs:schema>
Collapse ComplexTypes:
Collapse Elements:
Collapse Groups:
Collapse SimpleTypes: