<?xml version='1.0' encoding='ASCII'?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ifc="https://standards.buildingsmart.org/IFC/RELEASE/IFC4/3/DEV/03701bb6" targetNamespace="https://standards.buildingsmart.org/IFC/RELEASE/IFC4/3/DEV/03701bb6" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="uos" type="ifc:uos" abstract="true"/>
	<xs:simpleType name="Seq-anyURI">
		<xs:list itemType="xs:anyURI"/>
	</xs:simpleType>
	<xs:complexType name="uos" abstract="true">
		<xs:sequence>
			<xs:element name="header" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="name" type="xs:string" minOccurs="0"/>
						<xs:element name="time_stamp" type="xs:dateTime" minOccurs="0"/>
						<xs:element name="author" type="xs:string" minOccurs="0"/>
						<xs:element name="organization" type="xs:string" minOccurs="0"/>
						<xs:element name="preprocessor_version" type="xs:string" minOccurs="0"/>
						<xs:element name="originating_system" type="xs:string" minOccurs="0"/>
						<xs:element name="authorization" type="xs:string" minOccurs="0"/>
						<xs:element name="documentation" type="xs:string" minOccurs="0"/>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="id" type="xs:ID" use="optional"/>
		<xs:attribute name="express" type="ifc:Seq-anyURI" use="optional"/>
		<xs:attribute name="configuration" type="ifc:Seq-anyURI" use="optional"/>
	</xs:complexType>
	<xs:element name="ifcXML" type="ifc:ifcXML" substitutionGroup="ifc:uos"/>
	<xs:complexType name="ifcXML">
		<xs:complexContent>
			<xs:extension base="ifc:uos">
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="ifc:Entity"/>
				</xs:choice>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcActionRequest" type="ifc:IfcActionRequest" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcActionRequest">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:attribute name="PredefinedType" type="ifc:IfcActionRequestTypeEnum" use="optional"/>
				<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcActor" type="ifc:IfcActor" substitutionGroup="ifc:IfcObject" nillable="true"/>
	<xs:complexType name="IfcActor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObject">
				<xs:sequence>
					<xs:element name="TheActor">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcActorRole" type="ifc:IfcActorRole" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcActorRole">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Role" type="ifc:IfcRoleEnum" use="optional"/>
				<xs:attribute name="UserDefinedRole" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcActuator" type="ifc:IfcActuator" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
	<xs:complexType name="IfcActuator">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcActuatorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcActuatorType" type="ifc:IfcActuatorType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcActuatorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcActuatorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAddress" type="ifc:IfcAddress" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcAddress" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Purpose" type="ifc:IfcAddressTypeEnum" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="UserDefinedPurpose" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAdvancedBrep" type="ifc:IfcAdvancedBrep" substitutionGroup="ifc:IfcManifoldSolidBrep" nillable="true"/>
	<xs:complexType name="IfcAdvancedBrep">
		<xs:complexContent>
			<xs:extension base="ifc:IfcManifoldSolidBrep"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAdvancedBrepWithVoids" type="ifc:IfcAdvancedBrepWithVoids" substitutionGroup="ifc:IfcAdvancedBrep" nillable="true"/>
	<xs:complexType name="IfcAdvancedBrepWithVoids">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAdvancedBrep">
				<xs:sequence>
					<xs:element name="Voids">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcClosedShell" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcClosedShell"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAdvancedFace" type="ifc:IfcAdvancedFace" substitutionGroup="ifc:IfcFaceSurface" nillable="true"/>
	<xs:complexType name="IfcAdvancedFace">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFaceSurface"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAirTerminal" type="ifc:IfcAirTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcAirTerminal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcAirTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAirTerminalBox" type="ifc:IfcAirTerminalBox" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
	<xs:complexType name="IfcAirTerminalBox">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowController">
				<xs:attribute name="PredefinedType" type="ifc:IfcAirTerminalBoxTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAirTerminalBoxType" type="ifc:IfcAirTerminalBoxType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcAirTerminalBoxType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:attribute name="PredefinedType" type="ifc:IfcAirTerminalBoxTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAirTerminalType" type="ifc:IfcAirTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcAirTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcAirTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAirToAirHeatRecovery" type="ifc:IfcAirToAirHeatRecovery" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcAirToAirHeatRecovery">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcAirToAirHeatRecoveryTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAirToAirHeatRecoveryType" type="ifc:IfcAirToAirHeatRecoveryType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcAirToAirHeatRecoveryType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcAirToAirHeatRecoveryTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlarm" type="ifc:IfcAlarm" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
	<xs:complexType name="IfcAlarm">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcAlarmTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlarmType" type="ifc:IfcAlarmType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcAlarmType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcAlarmTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlignment" type="ifc:IfcAlignment" substitutionGroup="ifc:IfcLinearPositioningElement" nillable="true"/>
	<xs:complexType name="IfcAlignment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLinearPositioningElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcAlignmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlignmentCant" type="ifc:IfcAlignmentCant" substitutionGroup="ifc:IfcLinearElement" nillable="true"/>
	<xs:complexType name="IfcAlignmentCant">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLinearElement">
				<xs:attribute name="RailHeadDistance" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlignmentCantSegment" type="ifc:IfcAlignmentCantSegment" substitutionGroup="ifc:IfcAlignmentParameterSegment" nillable="true"/>
	<xs:complexType name="IfcAlignmentCantSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAlignmentParameterSegment">
				<xs:attribute name="StartDistAlong" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="HorizontalLength" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="StartCantLeft" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="EndCantLeft" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="StartCantRight" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="EndCantRight" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcAlignmentCantSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlignmentHorizontal" type="ifc:IfcAlignmentHorizontal" substitutionGroup="ifc:IfcLinearElement" nillable="true"/>
	<xs:complexType name="IfcAlignmentHorizontal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLinearElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlignmentHorizontalSegment" type="ifc:IfcAlignmentHorizontalSegment" substitutionGroup="ifc:IfcAlignmentParameterSegment" nillable="true"/>
	<xs:complexType name="IfcAlignmentHorizontalSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAlignmentParameterSegment">
				<xs:sequence>
					<xs:element name="StartPoint" type="ifc:IfcCartesianPoint" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="StartDirection" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
				<xs:attribute name="StartRadiusOfCurvature" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="EndRadiusOfCurvature" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="SegmentLength" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="GravityCenterLineHeight" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcAlignmentHorizontalSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlignmentParameterSegment" type="ifc:IfcAlignmentParameterSegment" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcAlignmentParameterSegment" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="StartTag" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="EndTag" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlignmentSegment" type="ifc:IfcAlignmentSegment" substitutionGroup="ifc:IfcLinearElement" nillable="true"/>
	<xs:complexType name="IfcAlignmentSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLinearElement">
				<xs:sequence>
					<xs:element name="DesignParameters" type="ifc:IfcAlignmentParameterSegment" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlignmentVertical" type="ifc:IfcAlignmentVertical" substitutionGroup="ifc:IfcLinearElement" nillable="true"/>
	<xs:complexType name="IfcAlignmentVertical">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLinearElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAlignmentVerticalSegment" type="ifc:IfcAlignmentVerticalSegment" substitutionGroup="ifc:IfcAlignmentParameterSegment" nillable="true"/>
	<xs:complexType name="IfcAlignmentVerticalSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAlignmentParameterSegment">
				<xs:attribute name="StartDistAlong" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="HorizontalLength" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="StartHeight" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="StartGradient" type="ifc:IfcRatioMeasure" use="optional"/>
				<xs:attribute name="EndGradient" type="ifc:IfcRatioMeasure" use="optional"/>
				<xs:attribute name="RadiusOfCurvature" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcAlignmentVerticalSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAnnotation" type="ifc:IfcAnnotation" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcAnnotation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct">
				<xs:attribute name="PredefinedType" type="ifc:IfcAnnotationTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAnnotationFillArea" type="ifc:IfcAnnotationFillArea" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcAnnotationFillArea">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="OuterBoundary" type="ifc:IfcCurve" nillable="true"/>
					<xs:element name="InnerBoundaries" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCurve" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCurve"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcApplication" type="ifc:IfcApplication" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcApplication">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="ApplicationDeveloper" type="ifc:IfcOrganization" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Version" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="ApplicationFullName" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="ApplicationIdentifier" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAppliedValue" type="ifc:IfcAppliedValue" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcAppliedValue">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="AppliedValue" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcAppliedValueSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="UnitBasis" type="ifc:IfcMeasureWithUnit" minOccurs="0" nillable="true"/>
					<xs:element name="Components" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcAppliedValue" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAppliedValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="ApplicableDate" type="ifc:IfcDate" use="optional"/>
				<xs:attribute name="FixedUntilDate" type="ifc:IfcDate" use="optional"/>
				<xs:attribute name="Category" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Condition" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="ArithmeticOperator" type="ifc:IfcArithmeticOperatorEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcApproval" type="ifc:IfcApproval" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcApproval">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="RequestingApproval" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="GivingApproval" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Identifier" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="TimeOfApproval" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Level" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Qualifier" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcApprovalRelationship" type="ifc:IfcApprovalRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
	<xs:complexType name="IfcApprovalRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:IfcResourceLevelRelationship">
				<xs:sequence>
					<xs:element name="RelatingApproval" type="ifc:IfcApproval" nillable="true"/>
					<xs:element name="RelatedApprovals">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcApproval" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcApproval"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcArbitraryClosedProfileDef" type="ifc:IfcArbitraryClosedProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcArbitraryClosedProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="OuterCurve" type="ifc:IfcCurve" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcArbitraryOpenProfileDef" type="ifc:IfcArbitraryOpenProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcArbitraryOpenProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="Curve" type="ifc:IfcBoundedCurve" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcArbitraryProfileDefWithVoids" type="ifc:IfcArbitraryProfileDefWithVoids" substitutionGroup="ifc:IfcArbitraryClosedProfileDef" nillable="true"/>
	<xs:complexType name="IfcArbitraryProfileDefWithVoids">
		<xs:complexContent>
			<xs:extension base="ifc:IfcArbitraryClosedProfileDef">
				<xs:sequence>
					<xs:element name="InnerCurves">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCurve" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCurve"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAsset" type="ifc:IfcAsset" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcAsset">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup">
				<xs:sequence>
					<xs:element name="OriginalValue" type="ifc:IfcCostValue" minOccurs="0" nillable="true"/>
					<xs:element name="CurrentValue" type="ifc:IfcCostValue" minOccurs="0" nillable="true"/>
					<xs:element name="TotalReplacementCost" type="ifc:IfcCostValue" minOccurs="0" nillable="true"/>
					<xs:element name="Owner" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="User" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ResponsiblePerson" type="ifc:IfcPerson" minOccurs="0" nillable="true"/>
					<xs:element name="DepreciatedValue" type="ifc:IfcCostValue" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="IncorporationDate" type="ifc:IfcDate" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAsymmetricIShapeProfileDef" type="ifc:IfcAsymmetricIShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcAsymmetricIShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="BottomFlangeWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="OverallDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="WebThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="BottomFlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="BottomFlangeFilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="TopFlangeWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="TopFlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="TopFlangeFilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="BottomFlangeEdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="BottomFlangeSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
				<xs:attribute name="TopFlangeEdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="TopFlangeSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAudioVisualAppliance" type="ifc:IfcAudioVisualAppliance" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcAudioVisualAppliance">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcAudioVisualApplianceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAudioVisualApplianceType" type="ifc:IfcAudioVisualApplianceType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcAudioVisualApplianceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcAudioVisualApplianceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAxis1Placement" type="ifc:IfcAxis1Placement" substitutionGroup="ifc:IfcPlacement" nillable="true"/>
	<xs:complexType name="IfcAxis1Placement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPlacement">
				<xs:sequence>
					<xs:element name="Axis" type="ifc:IfcDirection" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAxis2Placement2D" type="ifc:IfcAxis2Placement2D" substitutionGroup="ifc:IfcPlacement" nillable="true"/>
	<xs:complexType name="IfcAxis2Placement2D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPlacement">
				<xs:sequence>
					<xs:element name="RefDirection" type="ifc:IfcDirection" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAxis2Placement3D" type="ifc:IfcAxis2Placement3D" substitutionGroup="ifc:IfcPlacement" nillable="true"/>
	<xs:complexType name="IfcAxis2Placement3D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPlacement">
				<xs:sequence>
					<xs:element name="Axis" type="ifc:IfcDirection" minOccurs="0" nillable="true"/>
					<xs:element name="RefDirection" type="ifc:IfcDirection" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcAxis2PlacementLinear" type="ifc:IfcAxis2PlacementLinear" substitutionGroup="ifc:IfcPlacement" nillable="true"/>
	<xs:complexType name="IfcAxis2PlacementLinear">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPlacement">
				<xs:sequence>
					<xs:element name="Axis" type="ifc:IfcDirection" minOccurs="0" nillable="true"/>
					<xs:element name="RefDirection" type="ifc:IfcDirection" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBSplineCurve" type="ifc:IfcBSplineCurve" abstract="true" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
	<xs:complexType name="IfcBSplineCurve" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedCurve">
				<xs:sequence>
					<xs:element name="ControlPointsList">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCartesianPoint" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCartesianPoint"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Degree" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="CurveForm" type="ifc:IfcBSplineCurveForm" use="optional"/>
				<xs:attribute name="ClosedCurve" type="ifc:IfcLogical" use="optional"/>
				<xs:attribute name="SelfIntersect" type="ifc:IfcLogical" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBSplineCurveWithKnots" type="ifc:IfcBSplineCurveWithKnots" substitutionGroup="ifc:IfcBSplineCurve" nillable="true"/>
	<xs:complexType name="IfcBSplineCurveWithKnots">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBSplineCurve">
				<xs:attribute name="KnotMultiplicities" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcInteger"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="Knots" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcParameterValue"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="KnotSpec" type="ifc:IfcKnotType" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBSplineSurface" type="ifc:IfcBSplineSurface" abstract="true" substitutionGroup="ifc:IfcBoundedSurface" nillable="true"/>
	<xs:complexType name="IfcBSplineSurface" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedSurface">
				<xs:sequence>
					<xs:element name="ControlPointsList">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCartesianPoint" minOccurs="4" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCartesianPoint"/>
							<xs:attribute ref="ifc:cType" fixed="list list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="UDegree" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="VDegree" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="SurfaceForm" type="ifc:IfcBSplineSurfaceForm" use="optional"/>
				<xs:attribute name="UClosed" type="ifc:IfcLogical" use="optional"/>
				<xs:attribute name="VClosed" type="ifc:IfcLogical" use="optional"/>
				<xs:attribute name="SelfIntersect" type="ifc:IfcLogical" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBSplineSurfaceWithKnots" type="ifc:IfcBSplineSurfaceWithKnots" substitutionGroup="ifc:IfcBSplineSurface" nillable="true"/>
	<xs:complexType name="IfcBSplineSurfaceWithKnots">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBSplineSurface">
				<xs:attribute name="UMultiplicities" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcInteger"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="VMultiplicities" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcInteger"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="UKnots" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcParameterValue"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="VKnots" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcParameterValue"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="KnotSpec" type="ifc:IfcKnotType" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBeam" type="ifc:IfcBeam" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcBeam">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcBeamTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBeamType" type="ifc:IfcBeamType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcBeamType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcBeamTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBearing" type="ifc:IfcBearing" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcBearing">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcBearingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBearingType" type="ifc:IfcBearingType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcBearingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcBearingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBlobTexture" type="ifc:IfcBlobTexture" substitutionGroup="ifc:IfcSurfaceTexture" nillable="true"/>
	<xs:complexType name="IfcBlobTexture">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurfaceTexture">
				<xs:sequence>
					<xs:element name="RasterCode" type="ifc:IfcBinary"/>
				</xs:sequence>
				<xs:attribute name="RasterFormat" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBlock" type="ifc:IfcBlock" substitutionGroup="ifc:IfcCsgPrimitive3D" nillable="true"/>
	<xs:complexType name="IfcBlock">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCsgPrimitive3D">
				<xs:attribute name="XLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="YLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="ZLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoiler" type="ifc:IfcBoiler" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcBoiler">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcBoilerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoilerType" type="ifc:IfcBoilerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcBoilerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcBoilerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBooleanClippingResult" type="ifc:IfcBooleanClippingResult" substitutionGroup="ifc:IfcBooleanResult" nillable="true"/>
	<xs:complexType name="IfcBooleanClippingResult">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBooleanResult"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBooleanResult" type="ifc:IfcBooleanResult" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcBooleanResult">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="FirstOperand">
						<xs:complexType>
							<xs:group ref="ifc:IfcBooleanOperand"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SecondOperand">
						<xs:complexType>
							<xs:group ref="ifc:IfcBooleanOperand"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Operator" type="ifc:IfcBooleanOperator" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBorehole" type="ifc:IfcBorehole" substitutionGroup="ifc:IfcGeotechnicalAssembly" nillable="true"/>
	<xs:complexType name="IfcBorehole">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeotechnicalAssembly"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryCondition" type="ifc:IfcBoundaryCondition" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcBoundaryCondition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryCurve" type="ifc:IfcBoundaryCurve" substitutionGroup="ifc:IfcCompositeCurveOnSurface" nillable="true"/>
	<xs:complexType name="IfcBoundaryCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCompositeCurveOnSurface"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryEdgeCondition" type="ifc:IfcBoundaryEdgeCondition" substitutionGroup="ifc:IfcBoundaryCondition" nillable="true"/>
	<xs:complexType name="IfcBoundaryEdgeCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundaryCondition">
				<xs:sequence>
					<xs:element name="TranslationalStiffnessByLengthX" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcModulusOfTranslationalSubgradeReactionSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TranslationalStiffnessByLengthY" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcModulusOfTranslationalSubgradeReactionSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TranslationalStiffnessByLengthZ" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcModulusOfTranslationalSubgradeReactionSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RotationalStiffnessByLengthX" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcModulusOfRotationalSubgradeReactionSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RotationalStiffnessByLengthY" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcModulusOfRotationalSubgradeReactionSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RotationalStiffnessByLengthZ" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcModulusOfRotationalSubgradeReactionSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryFaceCondition" type="ifc:IfcBoundaryFaceCondition" substitutionGroup="ifc:IfcBoundaryCondition" nillable="true"/>
	<xs:complexType name="IfcBoundaryFaceCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundaryCondition">
				<xs:sequence>
					<xs:element name="TranslationalStiffnessByAreaX" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcModulusOfSubgradeReactionSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TranslationalStiffnessByAreaY" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcModulusOfSubgradeReactionSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TranslationalStiffnessByAreaZ" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcModulusOfSubgradeReactionSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryNodeCondition" type="ifc:IfcBoundaryNodeCondition" substitutionGroup="ifc:IfcBoundaryCondition" nillable="true"/>
	<xs:complexType name="IfcBoundaryNodeCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundaryCondition">
				<xs:sequence>
					<xs:element name="TranslationalStiffnessX" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcTranslationalStiffnessSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TranslationalStiffnessY" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcTranslationalStiffnessSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TranslationalStiffnessZ" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcTranslationalStiffnessSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RotationalStiffnessX" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcRotationalStiffnessSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RotationalStiffnessY" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcRotationalStiffnessSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RotationalStiffnessZ" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcRotationalStiffnessSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundaryNodeConditionWarping" type="ifc:IfcBoundaryNodeConditionWarping" substitutionGroup="ifc:IfcBoundaryNodeCondition" nillable="true"/>
	<xs:complexType name="IfcBoundaryNodeConditionWarping">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundaryNodeCondition">
				<xs:sequence>
					<xs:element name="WarpingStiffness" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcWarpingStiffnessSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundedCurve" type="ifc:IfcBoundedCurve" abstract="true" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcBoundedCurve" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundedSurface" type="ifc:IfcBoundedSurface" abstract="true" substitutionGroup="ifc:IfcSurface" nillable="true"/>
	<xs:complexType name="IfcBoundedSurface" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurface"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoundingBox" type="ifc:IfcBoundingBox" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcBoundingBox">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Corner" type="ifc:IfcCartesianPoint" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="XDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="YDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="ZDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBoxedHalfSpace" type="ifc:IfcBoxedHalfSpace" substitutionGroup="ifc:IfcHalfSpaceSolid" nillable="true"/>
	<xs:complexType name="IfcBoxedHalfSpace">
		<xs:complexContent>
			<xs:extension base="ifc:IfcHalfSpaceSolid">
				<xs:sequence>
					<xs:element name="Enclosure" type="ifc:IfcBoundingBox" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBridge" type="ifc:IfcBridge" substitutionGroup="ifc:IfcFacility" nillable="true"/>
	<xs:complexType name="IfcBridge">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacility">
				<xs:attribute name="PredefinedType" type="ifc:IfcBridgeTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBridgePart" type="ifc:IfcBridgePart" substitutionGroup="ifc:IfcFacilityPart" nillable="true"/>
	<xs:complexType name="IfcBridgePart">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacilityPart">
				<xs:attribute name="PredefinedType" type="ifc:IfcBridgePartTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuilding" type="ifc:IfcBuilding" substitutionGroup="ifc:IfcFacility" nillable="true"/>
	<xs:complexType name="IfcBuilding">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacility">
				<xs:sequence>
					<xs:element name="BuildingAddress" type="ifc:IfcPostalAddress" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="ElevationOfRefHeight" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="ElevationOfTerrain" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingElementPart" type="ifc:IfcBuildingElementPart" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcBuildingElementPart">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent">
				<xs:attribute name="PredefinedType" type="ifc:IfcBuildingElementPartTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingElementPartType" type="ifc:IfcBuildingElementPartType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcBuildingElementPartType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcBuildingElementPartTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingElementProxy" type="ifc:IfcBuildingElementProxy" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcBuildingElementProxy">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcBuildingElementProxyTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingElementProxyType" type="ifc:IfcBuildingElementProxyType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcBuildingElementProxyType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcBuildingElementProxyTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingStorey" type="ifc:IfcBuildingStorey" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
	<xs:complexType name="IfcBuildingStorey">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialStructureElement">
				<xs:attribute name="Elevation" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuildingSystem" type="ifc:IfcBuildingSystem" substitutionGroup="ifc:IfcSystem" nillable="true"/>
	<xs:complexType name="IfcBuildingSystem">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSystem">
				<xs:attribute name="PredefinedType" type="ifc:IfcBuildingSystemTypeEnum" use="optional"/>
				<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuiltElement" type="ifc:IfcBuiltElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcBuiltElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuiltElementType" type="ifc:IfcBuiltElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcBuiltElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBuiltSystem" type="ifc:IfcBuiltSystem" substitutionGroup="ifc:IfcSystem" nillable="true"/>
	<xs:complexType name="IfcBuiltSystem">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSystem">
				<xs:attribute name="PredefinedType" type="ifc:IfcBuiltSystemTypeEnum" use="optional"/>
				<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBurner" type="ifc:IfcBurner" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcBurner">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcBurnerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcBurnerType" type="ifc:IfcBurnerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcBurnerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcBurnerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCShapeProfileDef" type="ifc:IfcCShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcCShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="Width" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="WallThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="Girth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="InternalFilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableCarrierFitting" type="ifc:IfcCableCarrierFitting" substitutionGroup="ifc:IfcFlowFitting" nillable="true"/>
	<xs:complexType name="IfcCableCarrierFitting">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFitting">
				<xs:attribute name="PredefinedType" type="ifc:IfcCableCarrierFittingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableCarrierFittingType" type="ifc:IfcCableCarrierFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
	<xs:complexType name="IfcCableCarrierFittingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFittingType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCableCarrierFittingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableCarrierSegment" type="ifc:IfcCableCarrierSegment" substitutionGroup="ifc:IfcFlowSegment" nillable="true"/>
	<xs:complexType name="IfcCableCarrierSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegment">
				<xs:attribute name="PredefinedType" type="ifc:IfcCableCarrierSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableCarrierSegmentType" type="ifc:IfcCableCarrierSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
	<xs:complexType name="IfcCableCarrierSegmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegmentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCableCarrierSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableFitting" type="ifc:IfcCableFitting" substitutionGroup="ifc:IfcFlowFitting" nillable="true"/>
	<xs:complexType name="IfcCableFitting">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFitting">
				<xs:attribute name="PredefinedType" type="ifc:IfcCableFittingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableFittingType" type="ifc:IfcCableFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
	<xs:complexType name="IfcCableFittingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFittingType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCableFittingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableSegment" type="ifc:IfcCableSegment" substitutionGroup="ifc:IfcFlowSegment" nillable="true"/>
	<xs:complexType name="IfcCableSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegment">
				<xs:attribute name="PredefinedType" type="ifc:IfcCableSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCableSegmentType" type="ifc:IfcCableSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
	<xs:complexType name="IfcCableSegmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegmentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCableSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCaissonFoundation" type="ifc:IfcCaissonFoundation" substitutionGroup="ifc:IfcDeepFoundation" nillable="true"/>
	<xs:complexType name="IfcCaissonFoundation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDeepFoundation">
				<xs:attribute name="PredefinedType" type="ifc:IfcCaissonFoundationTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCaissonFoundationType" type="ifc:IfcCaissonFoundationType" substitutionGroup="ifc:IfcDeepFoundationType" nillable="true"/>
	<xs:complexType name="IfcCaissonFoundationType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDeepFoundationType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCaissonFoundationTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianPoint" type="ifc:IfcCartesianPoint" substitutionGroup="ifc:IfcPoint" nillable="true"/>
	<xs:complexType name="IfcCartesianPoint">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPoint">
				<xs:attribute name="Coordinates" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLengthMeasure"/>
							</xs:simpleType>
							<xs:maxLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianPointList" type="ifc:IfcCartesianPointList" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcCartesianPointList" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianPointList2D" type="ifc:IfcCartesianPointList2D" substitutionGroup="ifc:IfcCartesianPointList" nillable="true"/>
	<xs:complexType name="IfcCartesianPointList2D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCartesianPointList">
				<xs:attribute name="CoordList" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLengthMeasure"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="TagList" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLabel"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianPointList3D" type="ifc:IfcCartesianPointList3D" substitutionGroup="ifc:IfcCartesianPointList" nillable="true"/>
	<xs:complexType name="IfcCartesianPointList3D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCartesianPointList">
				<xs:attribute name="CoordList" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLengthMeasure"/>
							</xs:simpleType>
							<xs:minLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="TagList" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLabel"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianTransformationOperator" type="ifc:IfcCartesianTransformationOperator" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcCartesianTransformationOperator" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Axis1" type="ifc:IfcDirection" minOccurs="0" nillable="true"/>
					<xs:element name="Axis2" type="ifc:IfcDirection" minOccurs="0" nillable="true"/>
					<xs:element name="LocalOrigin" type="ifc:IfcCartesianPoint" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Scale" type="ifc:IfcReal" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianTransformationOperator2D" type="ifc:IfcCartesianTransformationOperator2D" substitutionGroup="ifc:IfcCartesianTransformationOperator" nillable="true"/>
	<xs:complexType name="IfcCartesianTransformationOperator2D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCartesianTransformationOperator"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianTransformationOperator2DnonUniform" type="ifc:IfcCartesianTransformationOperator2DnonUniform" substitutionGroup="ifc:IfcCartesianTransformationOperator2D" nillable="true"/>
	<xs:complexType name="IfcCartesianTransformationOperator2DnonUniform">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCartesianTransformationOperator2D">
				<xs:attribute name="Scale2" type="ifc:IfcReal" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianTransformationOperator3D" type="ifc:IfcCartesianTransformationOperator3D" substitutionGroup="ifc:IfcCartesianTransformationOperator" nillable="true"/>
	<xs:complexType name="IfcCartesianTransformationOperator3D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCartesianTransformationOperator">
				<xs:sequence>
					<xs:element name="Axis3" type="ifc:IfcDirection" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCartesianTransformationOperator3DnonUniform" type="ifc:IfcCartesianTransformationOperator3DnonUniform" substitutionGroup="ifc:IfcCartesianTransformationOperator3D" nillable="true"/>
	<xs:complexType name="IfcCartesianTransformationOperator3DnonUniform">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCartesianTransformationOperator3D">
				<xs:attribute name="Scale2" type="ifc:IfcReal" use="optional"/>
				<xs:attribute name="Scale3" type="ifc:IfcReal" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCenterLineProfileDef" type="ifc:IfcCenterLineProfileDef" substitutionGroup="ifc:IfcArbitraryOpenProfileDef" nillable="true"/>
	<xs:complexType name="IfcCenterLineProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcArbitraryOpenProfileDef">
				<xs:attribute name="Thickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcChiller" type="ifc:IfcChiller" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcChiller">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcChillerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcChillerType" type="ifc:IfcChillerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcChillerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcChillerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcChimney" type="ifc:IfcChimney" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcChimney">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcChimneyTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcChimneyType" type="ifc:IfcChimneyType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcChimneyType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcChimneyTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCircle" type="ifc:IfcCircle" substitutionGroup="ifc:IfcConic" nillable="true"/>
	<xs:complexType name="IfcCircle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConic">
				<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCircleHollowProfileDef" type="ifc:IfcCircleHollowProfileDef" substitutionGroup="ifc:IfcCircleProfileDef" nillable="true"/>
	<xs:complexType name="IfcCircleHollowProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCircleProfileDef">
				<xs:attribute name="WallThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCircleProfileDef" type="ifc:IfcCircleProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcCircleProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCivilElement" type="ifc:IfcCivilElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcCivilElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCivilElementType" type="ifc:IfcCivilElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcCivilElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcClassification" type="ifc:IfcClassification" substitutionGroup="ifc:IfcExternalInformation" nillable="true"/>
	<xs:complexType name="IfcClassification">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalInformation">
				<xs:sequence>
					<xs:element name="ReferenceTokens" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcIdentifier-wrapper" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcIdentifier-wrapper"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="HasReferences" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcClassificationReference" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcClassificationReference"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Source" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Edition" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="EditionDate" type="ifc:IfcDate" use="optional"/>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Specification" type="ifc:IfcURIReference" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcClassificationReference" type="ifc:IfcClassificationReference" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcClassificationReference">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference">
				<xs:sequence>
					<xs:element name="HasReferences" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcClassificationReference" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcClassificationReference"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Sort" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcClosedShell" type="ifc:IfcClosedShell" substitutionGroup="ifc:IfcConnectedFaceSet" nillable="true"/>
	<xs:complexType name="IfcClosedShell">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectedFaceSet"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcClothoid" type="ifc:IfcClothoid" substitutionGroup="ifc:IfcSpiral" nillable="true"/>
	<xs:complexType name="IfcClothoid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpiral">
				<xs:attribute name="ClothoidConstant" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCoil" type="ifc:IfcCoil" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcCoil">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcCoilTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCoilType" type="ifc:IfcCoilType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcCoilType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCoilTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcColourRgb" type="ifc:IfcColourRgb" substitutionGroup="ifc:IfcColourSpecification" nillable="true"/>
	<xs:complexType name="IfcColourRgb">
		<xs:complexContent>
			<xs:extension base="ifc:IfcColourSpecification">
				<xs:attribute name="Red" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="Green" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="Blue" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcColourRgbList" type="ifc:IfcColourRgbList" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcColourRgbList">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:attribute name="ColourList" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcNormalisedRatioMeasure"/>
							</xs:simpleType>
							<xs:minLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcColourSpecification" type="ifc:IfcColourSpecification" abstract="true" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcColourSpecification" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcColumn" type="ifc:IfcColumn" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcColumn">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcColumnTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcColumnType" type="ifc:IfcColumnType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcColumnType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcColumnTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCommunicationsAppliance" type="ifc:IfcCommunicationsAppliance" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcCommunicationsAppliance">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcCommunicationsApplianceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCommunicationsApplianceType" type="ifc:IfcCommunicationsApplianceType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcCommunicationsApplianceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCommunicationsApplianceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcComplexProperty" type="ifc:IfcComplexProperty" substitutionGroup="ifc:IfcProperty" nillable="true"/>
	<xs:complexType name="IfcComplexProperty">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProperty">
				<xs:sequence>
					<xs:element name="HasProperties">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProperty"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="UsageName" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcComplexPropertyTemplate" type="ifc:IfcComplexPropertyTemplate" substitutionGroup="ifc:IfcPropertyTemplate" nillable="true"/>
	<xs:complexType name="IfcComplexPropertyTemplate">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyTemplate">
				<xs:sequence>
					<xs:element name="HasPropertyTemplates" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPropertyTemplate" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPropertyTemplate"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="UsageName" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="TemplateType" type="ifc:IfcComplexPropertyTemplateTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCompositeCurve" type="ifc:IfcCompositeCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
	<xs:complexType name="IfcCompositeCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedCurve">
				<xs:sequence>
					<xs:element name="Segments">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcSegment" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSegment"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="SelfIntersect" type="ifc:IfcLogical" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCompositeCurveOnSurface" type="ifc:IfcCompositeCurveOnSurface" substitutionGroup="ifc:IfcCompositeCurve" nillable="true"/>
	<xs:complexType name="IfcCompositeCurveOnSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCompositeCurve"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCompositeCurveSegment" type="ifc:IfcCompositeCurveSegment" substitutionGroup="ifc:IfcSegment" nillable="true"/>
	<xs:complexType name="IfcCompositeCurveSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSegment">
				<xs:sequence>
					<xs:element name="ParentCurve" type="ifc:IfcCurve" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="SameSense" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCompositeProfileDef" type="ifc:IfcCompositeProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcCompositeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="Profiles">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProfileDef" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProfileDef"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Label" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCompressor" type="ifc:IfcCompressor" substitutionGroup="ifc:IfcFlowMovingDevice" nillable="true"/>
	<xs:complexType name="IfcCompressor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowMovingDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcCompressorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCompressorType" type="ifc:IfcCompressorType" substitutionGroup="ifc:IfcFlowMovingDeviceType" nillable="true"/>
	<xs:complexType name="IfcCompressorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowMovingDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCompressorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCondenser" type="ifc:IfcCondenser" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcCondenser">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcCondenserTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCondenserType" type="ifc:IfcCondenserType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcCondenserType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCondenserTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConic" type="ifc:IfcConic" abstract="true" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcConic" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve">
				<xs:sequence>
					<xs:element name="Position">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectedFaceSet" type="ifc:IfcConnectedFaceSet" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcConnectedFaceSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem">
				<xs:sequence>
					<xs:element name="CfsFaces">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcFace" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcFace"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionCurveGeometry" type="ifc:IfcConnectionCurveGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
	<xs:complexType name="IfcConnectionCurveGeometry">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectionGeometry">
				<xs:sequence>
					<xs:element name="CurveOnRelatingElement">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveOrEdgeCurve"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurveOnRelatedElement" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveOrEdgeCurve"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionGeometry" type="ifc:IfcConnectionGeometry" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcConnectionGeometry" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionPointEccentricity" type="ifc:IfcConnectionPointEccentricity" substitutionGroup="ifc:IfcConnectionPointGeometry" nillable="true"/>
	<xs:complexType name="IfcConnectionPointEccentricity">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectionPointGeometry">
				<xs:attribute name="EccentricityInX" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="EccentricityInY" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="EccentricityInZ" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionPointGeometry" type="ifc:IfcConnectionPointGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
	<xs:complexType name="IfcConnectionPointGeometry">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectionGeometry">
				<xs:sequence>
					<xs:element name="PointOnRelatingElement">
						<xs:complexType>
							<xs:group ref="ifc:IfcPointOrVertexPoint"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="PointOnRelatedElement" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcPointOrVertexPoint"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionSurfaceGeometry" type="ifc:IfcConnectionSurfaceGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
	<xs:complexType name="IfcConnectionSurfaceGeometry">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectionGeometry">
				<xs:sequence>
					<xs:element name="SurfaceOnRelatingElement">
						<xs:complexType>
							<xs:group ref="ifc:IfcSurfaceOrFaceSurface"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SurfaceOnRelatedElement" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcSurfaceOrFaceSurface"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConnectionVolumeGeometry" type="ifc:IfcConnectionVolumeGeometry" substitutionGroup="ifc:IfcConnectionGeometry" nillable="true"/>
	<xs:complexType name="IfcConnectionVolumeGeometry">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectionGeometry">
				<xs:sequence>
					<xs:element name="VolumeOnRelatingElement">
						<xs:complexType>
							<xs:group ref="ifc:IfcSolidOrShell"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="VolumeOnRelatedElement" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcSolidOrShell"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstraint" type="ifc:IfcConstraint" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcConstraint" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="CreatingActor" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="ConstraintGrade" type="ifc:IfcConstraintEnum" use="optional"/>
				<xs:attribute name="ConstraintSource" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="CreationTime" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="UserDefinedGrade" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstructionEquipmentResource" type="ifc:IfcConstructionEquipmentResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
	<xs:complexType name="IfcConstructionEquipmentResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResource">
				<xs:attribute name="PredefinedType" type="ifc:IfcConstructionEquipmentResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstructionEquipmentResourceType" type="ifc:IfcConstructionEquipmentResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
	<xs:complexType name="IfcConstructionEquipmentResourceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResourceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcConstructionEquipmentResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstructionMaterialResource" type="ifc:IfcConstructionMaterialResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
	<xs:complexType name="IfcConstructionMaterialResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResource">
				<xs:attribute name="PredefinedType" type="ifc:IfcConstructionMaterialResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstructionMaterialResourceType" type="ifc:IfcConstructionMaterialResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
	<xs:complexType name="IfcConstructionMaterialResourceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResourceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcConstructionMaterialResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstructionProductResource" type="ifc:IfcConstructionProductResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
	<xs:complexType name="IfcConstructionProductResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResource">
				<xs:attribute name="PredefinedType" type="ifc:IfcConstructionProductResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstructionProductResourceType" type="ifc:IfcConstructionProductResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
	<xs:complexType name="IfcConstructionProductResourceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResourceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcConstructionProductResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstructionResource" type="ifc:IfcConstructionResource" abstract="true" substitutionGroup="ifc:IfcResource" nillable="true"/>
	<xs:complexType name="IfcConstructionResource" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcResource">
				<xs:sequence>
					<xs:element name="Usage" type="ifc:IfcResourceTime" minOccurs="0" nillable="true"/>
					<xs:element name="BaseCosts" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcAppliedValue" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAppliedValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="BaseQuantity" type="ifc:IfcPhysicalQuantity" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConstructionResourceType" type="ifc:IfcConstructionResourceType" abstract="true" substitutionGroup="ifc:IfcTypeResource" nillable="true"/>
	<xs:complexType name="IfcConstructionResourceType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeResource">
				<xs:sequence>
					<xs:element name="BaseCosts" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcAppliedValue" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAppliedValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="BaseQuantity" type="ifc:IfcPhysicalQuantity" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcContext" type="ifc:IfcContext" abstract="true" substitutionGroup="ifc:IfcObjectDefinition" nillable="true"/>
	<xs:complexType name="IfcContext" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObjectDefinition">
				<xs:sequence>
					<xs:element name="RepresentationContexts" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRepresentationContext" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRepresentationContext"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="UnitsInContext" type="ifc:IfcUnitAssignment" minOccurs="0" nillable="true"/>
					<xs:element name="IsDefinedBy" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRelDefinesByProperties" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelDefinesByProperties"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Declares" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRelDeclares" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelDeclares"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ObjectType" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Phase" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcContextDependentUnit" type="ifc:IfcContextDependentUnit" substitutionGroup="ifc:IfcNamedUnit" nillable="true"/>
	<xs:complexType name="IfcContextDependentUnit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcNamedUnit">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcControl" type="ifc:IfcControl" abstract="true" substitutionGroup="ifc:IfcObject" nillable="true"/>
	<xs:complexType name="IfcControl" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObject">
				<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcController" type="ifc:IfcController" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
	<xs:complexType name="IfcController">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcControllerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcControllerType" type="ifc:IfcControllerType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcControllerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcControllerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConversionBasedUnit" type="ifc:IfcConversionBasedUnit" substitutionGroup="ifc:IfcNamedUnit" nillable="true"/>
	<xs:complexType name="IfcConversionBasedUnit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcNamedUnit">
				<xs:sequence>
					<xs:element name="ConversionFactor" type="ifc:IfcMeasureWithUnit" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConversionBasedUnitWithOffset" type="ifc:IfcConversionBasedUnitWithOffset" substitutionGroup="ifc:IfcConversionBasedUnit" nillable="true"/>
	<xs:complexType name="IfcConversionBasedUnitWithOffset">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConversionBasedUnit">
				<xs:attribute name="ConversionOffset" type="ifc:IfcReal" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConveyorSegment" type="ifc:IfcConveyorSegment" substitutionGroup="ifc:IfcFlowSegment" nillable="true"/>
	<xs:complexType name="IfcConveyorSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegment">
				<xs:attribute name="PredefinedType" type="ifc:IfcConveyorSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcConveyorSegmentType" type="ifc:IfcConveyorSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
	<xs:complexType name="IfcConveyorSegmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegmentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcConveyorSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCooledBeam" type="ifc:IfcCooledBeam" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcCooledBeam">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcCooledBeamTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCooledBeamType" type="ifc:IfcCooledBeamType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcCooledBeamType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCooledBeamTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCoolingTower" type="ifc:IfcCoolingTower" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcCoolingTower">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcCoolingTowerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCoolingTowerType" type="ifc:IfcCoolingTowerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcCoolingTowerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCoolingTowerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCoordinateOperation" type="ifc:IfcCoordinateOperation" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcCoordinateOperation" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="TargetCRS" type="ifc:IfcCoordinateReferenceSystem" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCoordinateReferenceSystem" type="ifc:IfcCoordinateReferenceSystem" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcCoordinateReferenceSystem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="GeodeticDatum" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCosineSpiral" type="ifc:IfcCosineSpiral" substitutionGroup="ifc:IfcSpiral" nillable="true"/>
	<xs:complexType name="IfcCosineSpiral">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpiral">
				<xs:attribute name="CosineTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="ConstantTerm" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCostItem" type="ifc:IfcCostItem" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcCostItem">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="CostValues" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCostValue" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCostValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CostQuantities" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPhysicalQuantity" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPhysicalQuantity"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="PredefinedType" type="ifc:IfcCostItemTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCostSchedule" type="ifc:IfcCostSchedule" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcCostSchedule">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:attribute name="PredefinedType" type="ifc:IfcCostScheduleTypeEnum" use="optional"/>
				<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="SubmittedOn" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="UpdateDate" type="ifc:IfcDateTime" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCostValue" type="ifc:IfcCostValue" substitutionGroup="ifc:IfcAppliedValue" nillable="true"/>
	<xs:complexType name="IfcCostValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAppliedValue"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCourse" type="ifc:IfcCourse" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcCourse">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcCourseTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCourseType" type="ifc:IfcCourseType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcCourseType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCourseTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCovering" type="ifc:IfcCovering" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcCovering">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcCoveringTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCoveringType" type="ifc:IfcCoveringType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcCoveringType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCoveringTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCrewResource" type="ifc:IfcCrewResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
	<xs:complexType name="IfcCrewResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResource">
				<xs:attribute name="PredefinedType" type="ifc:IfcCrewResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCrewResourceType" type="ifc:IfcCrewResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
	<xs:complexType name="IfcCrewResourceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResourceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCrewResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCsgPrimitive3D" type="ifc:IfcCsgPrimitive3D" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcCsgPrimitive3D" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Position" type="ifc:IfcAxis2Placement3D" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCsgSolid" type="ifc:IfcCsgSolid" substitutionGroup="ifc:IfcSolidModel" nillable="true"/>
	<xs:complexType name="IfcCsgSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSolidModel">
				<xs:sequence>
					<xs:element name="TreeRootExpression">
						<xs:complexType>
							<xs:group ref="ifc:IfcCsgSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurrencyRelationship" type="ifc:IfcCurrencyRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
	<xs:complexType name="IfcCurrencyRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:IfcResourceLevelRelationship">
				<xs:sequence>
					<xs:element name="RelatingMonetaryUnit" type="ifc:IfcMonetaryUnit" nillable="true"/>
					<xs:element name="RelatedMonetaryUnit" type="ifc:IfcMonetaryUnit" nillable="true"/>
					<xs:element name="RateSource" type="ifc:IfcLibraryInformation" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="ExchangeRate" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
				<xs:attribute name="RateDateTime" type="ifc:IfcDateTime" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurtainWall" type="ifc:IfcCurtainWall" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcCurtainWall">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcCurtainWallTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurtainWallType" type="ifc:IfcCurtainWallType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcCurtainWallType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcCurtainWallTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurve" type="ifc:IfcCurve" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcCurve" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveBoundedPlane" type="ifc:IfcCurveBoundedPlane" substitutionGroup="ifc:IfcBoundedSurface" nillable="true"/>
	<xs:complexType name="IfcCurveBoundedPlane">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedSurface">
				<xs:sequence>
					<xs:element name="BasisSurface" type="ifc:IfcPlane" nillable="true"/>
					<xs:element name="OuterBoundary" type="ifc:IfcCurve" nillable="true"/>
					<xs:element name="InnerBoundaries">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCurve" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCurve"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveBoundedSurface" type="ifc:IfcCurveBoundedSurface" substitutionGroup="ifc:IfcBoundedSurface" nillable="true"/>
	<xs:complexType name="IfcCurveBoundedSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedSurface">
				<xs:sequence>
					<xs:element name="BasisSurface" type="ifc:IfcSurface" nillable="true"/>
					<xs:element name="Boundaries">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcBoundaryCurve" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcBoundaryCurve"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ImplicitOuter" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveSegment" type="ifc:IfcCurveSegment" substitutionGroup="ifc:IfcSegment" nillable="true"/>
	<xs:complexType name="IfcCurveSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSegment">
				<xs:sequence>
					<xs:element name="Placement" type="ifc:IfcPlacement" nillable="true"/>
					<xs:element name="SegmentStart">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveMeasureSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SegmentLength">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveMeasureSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ParentCurve" type="ifc:IfcCurve" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveStyle" type="ifc:IfcCurveStyle" substitutionGroup="ifc:IfcPresentationStyle" nillable="true"/>
	<xs:complexType name="IfcCurveStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationStyle">
				<xs:sequence>
					<xs:element name="CurveFont" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveFontOrScaledCurveFontSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurveWidth" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcSizeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurveColour" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcColour"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ModelOrDraughting" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveStyleFont" type="ifc:IfcCurveStyleFont" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcCurveStyleFont">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:sequence>
					<xs:element name="PatternList">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCurveStyleFontPattern" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCurveStyleFontPattern"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveStyleFontAndScaling" type="ifc:IfcCurveStyleFontAndScaling" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcCurveStyleFontAndScaling">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:sequence>
					<xs:element name="CurveStyleFont">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveStyleFontSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="CurveFontScaling" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCurveStyleFontPattern" type="ifc:IfcCurveStyleFontPattern" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcCurveStyleFontPattern">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:attribute name="VisibleSegmentLength" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="InvisibleSegmentLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcCylindricalSurface" type="ifc:IfcCylindricalSurface" substitutionGroup="ifc:IfcElementarySurface" nillable="true"/>
	<xs:complexType name="IfcCylindricalSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementarySurface">
				<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDamper" type="ifc:IfcDamper" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
	<xs:complexType name="IfcDamper">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowController">
				<xs:attribute name="PredefinedType" type="ifc:IfcDamperTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDamperType" type="ifc:IfcDamperType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcDamperType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:attribute name="PredefinedType" type="ifc:IfcDamperTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDeepFoundation" type="ifc:IfcDeepFoundation" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcDeepFoundation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDeepFoundationType" type="ifc:IfcDeepFoundationType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcDeepFoundationType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDerivedProfileDef" type="ifc:IfcDerivedProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcDerivedProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="ParentProfile" type="ifc:IfcProfileDef" nillable="true"/>
					<xs:element name="Operator" type="ifc:IfcCartesianTransformationOperator2D" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Label" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDerivedUnit" type="ifc:IfcDerivedUnit" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcDerivedUnit">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Elements">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcDerivedUnitElement" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDerivedUnitElement"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="UnitType" type="ifc:IfcDerivedUnitEnum" use="optional"/>
				<xs:attribute name="UserDefinedType" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDerivedUnitElement" type="ifc:IfcDerivedUnitElement" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcDerivedUnitElement">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Unit" type="ifc:IfcNamedUnit" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Exponent" type="xs:long" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDimensionalExponents" type="ifc:IfcDimensionalExponents" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcDimensionalExponents">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="LengthExponent" type="xs:long" use="optional"/>
				<xs:attribute name="MassExponent" type="xs:long" use="optional"/>
				<xs:attribute name="TimeExponent" type="xs:long" use="optional"/>
				<xs:attribute name="ElectricCurrentExponent" type="xs:long" use="optional"/>
				<xs:attribute name="ThermodynamicTemperatureExponent" type="xs:long" use="optional"/>
				<xs:attribute name="AmountOfSubstanceExponent" type="xs:long" use="optional"/>
				<xs:attribute name="LuminousIntensityExponent" type="xs:long" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDirection" type="ifc:IfcDirection" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcDirection">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:attribute name="DirectionRatios" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcReal"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
							<xs:maxLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDirectrixCurveSweptAreaSolid" type="ifc:IfcDirectrixCurveSweptAreaSolid" abstract="true" substitutionGroup="ifc:IfcSweptAreaSolid" nillable="true"/>
	<xs:complexType name="IfcDirectrixCurveSweptAreaSolid" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSweptAreaSolid">
				<xs:sequence>
					<xs:element name="Directrix" type="ifc:IfcCurve" nillable="true"/>
					<xs:element name="StartParam" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveMeasureSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="EndParam" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveMeasureSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDirectrixDerivedReferenceSweptAreaSolid" type="ifc:IfcDirectrixDerivedReferenceSweptAreaSolid" substitutionGroup="ifc:IfcFixedReferenceSweptAreaSolid" nillable="true"/>
	<xs:complexType name="IfcDirectrixDerivedReferenceSweptAreaSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFixedReferenceSweptAreaSolid"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDiscreteAccessory" type="ifc:IfcDiscreteAccessory" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcDiscreteAccessory">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent">
				<xs:attribute name="PredefinedType" type="ifc:IfcDiscreteAccessoryTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDiscreteAccessoryType" type="ifc:IfcDiscreteAccessoryType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcDiscreteAccessoryType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcDiscreteAccessoryTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionBoard" type="ifc:IfcDistributionBoard" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
	<xs:complexType name="IfcDistributionBoard">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowController">
				<xs:attribute name="PredefinedType" type="ifc:IfcDistributionBoardTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionBoardType" type="ifc:IfcDistributionBoardType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcDistributionBoardType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:attribute name="PredefinedType" type="ifc:IfcDistributionBoardTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionChamberElement" type="ifc:IfcDistributionChamberElement" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcDistributionChamberElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcDistributionChamberElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionChamberElementType" type="ifc:IfcDistributionChamberElementType" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcDistributionChamberElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcDistributionChamberElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionCircuit" type="ifc:IfcDistributionCircuit" substitutionGroup="ifc:IfcDistributionSystem" nillable="true"/>
	<xs:complexType name="IfcDistributionCircuit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionSystem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionControlElement" type="ifc:IfcDistributionControlElement" substitutionGroup="ifc:IfcDistributionElement" nillable="true"/>
	<xs:complexType name="IfcDistributionControlElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionControlElementType" type="ifc:IfcDistributionControlElementType" abstract="true" substitutionGroup="ifc:IfcDistributionElementType" nillable="true"/>
	<xs:complexType name="IfcDistributionControlElementType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionElement" type="ifc:IfcDistributionElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcDistributionElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionElementType" type="ifc:IfcDistributionElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcDistributionElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionFlowElement" type="ifc:IfcDistributionFlowElement" substitutionGroup="ifc:IfcDistributionElement" nillable="true"/>
	<xs:complexType name="IfcDistributionFlowElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionFlowElementType" type="ifc:IfcDistributionFlowElementType" abstract="true" substitutionGroup="ifc:IfcDistributionElementType" nillable="true"/>
	<xs:complexType name="IfcDistributionFlowElementType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionPort" type="ifc:IfcDistributionPort" substitutionGroup="ifc:IfcPort" nillable="true"/>
	<xs:complexType name="IfcDistributionPort">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPort">
				<xs:attribute name="FlowDirection" type="ifc:IfcFlowDirectionEnum" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcDistributionPortTypeEnum" use="optional"/>
				<xs:attribute name="SystemType" type="ifc:IfcDistributionSystemEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDistributionSystem" type="ifc:IfcDistributionSystem" substitutionGroup="ifc:IfcSystem" nillable="true"/>
	<xs:complexType name="IfcDistributionSystem">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSystem">
				<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcDistributionSystemEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDocumentInformation" type="ifc:IfcDocumentInformation" substitutionGroup="ifc:IfcExternalInformation" nillable="true"/>
	<xs:complexType name="IfcDocumentInformation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalInformation">
				<xs:sequence>
					<xs:element name="DocumentOwner" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Editors" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcActorSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Location" type="ifc:IfcURIReference" use="optional"/>
				<xs:attribute name="Purpose" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="IntendedUse" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Scope" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Revision" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="CreationTime" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="LastRevisionTime" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="ElectronicFormat" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="ValidFrom" type="ifc:IfcDate" use="optional"/>
				<xs:attribute name="ValidUntil" type="ifc:IfcDate" use="optional"/>
				<xs:attribute name="Confidentiality" type="ifc:IfcDocumentConfidentialityEnum" use="optional"/>
				<xs:attribute name="Status" type="ifc:IfcDocumentStatusEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDocumentInformationRelationship" type="ifc:IfcDocumentInformationRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
	<xs:complexType name="IfcDocumentInformationRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:IfcResourceLevelRelationship">
				<xs:sequence>
					<xs:element name="RelatingDocument" type="ifc:IfcDocumentInformation" nillable="true"/>
					<xs:element name="RelatedDocuments">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcDocumentInformation" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDocumentInformation"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="RelationshipType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDocumentReference" type="ifc:IfcDocumentReference" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcDocumentReference">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference">
				<xs:sequence>
					<xs:element name="ReferencedDocument" type="ifc:IfcDocumentInformation" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDoor" type="ifc:IfcDoor" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcDoor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="OverallHeight" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="OverallWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcDoorTypeEnum" use="optional"/>
				<xs:attribute name="OperationType" type="ifc:IfcDoorTypeOperationEnum" use="optional"/>
				<xs:attribute name="UserDefinedOperationType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDoorLiningProperties" type="ifc:IfcDoorLiningProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
	<xs:complexType name="IfcDoorLiningProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedPropertySet">
				<xs:sequence>
					<xs:element name="ShapeAspectStyle" type="ifc:IfcShapeAspect" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="LiningDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="LiningThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="ThresholdDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="ThresholdThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="TransomThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="TransomOffset" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="LiningOffset" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="ThresholdOffset" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="CasingThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="CasingDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="LiningToPanelOffsetX" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="LiningToPanelOffsetY" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDoorPanelProperties" type="ifc:IfcDoorPanelProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
	<xs:complexType name="IfcDoorPanelProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedPropertySet">
				<xs:sequence>
					<xs:element name="ShapeAspectStyle" type="ifc:IfcShapeAspect" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="PanelDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="PanelOperation" type="ifc:IfcDoorPanelOperationEnum" use="optional"/>
				<xs:attribute name="PanelWidth" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="PanelPosition" type="ifc:IfcDoorPanelPositionEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDoorType" type="ifc:IfcDoorType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcDoorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcDoorTypeEnum" use="optional"/>
				<xs:attribute name="OperationType" type="ifc:IfcDoorTypeOperationEnum" use="optional"/>
				<xs:attribute name="ParameterTakesPrecedence" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="UserDefinedOperationType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDraughtingPreDefinedColour" type="ifc:IfcDraughtingPreDefinedColour" substitutionGroup="ifc:IfcPreDefinedColour" nillable="true"/>
	<xs:complexType name="IfcDraughtingPreDefinedColour">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedColour"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDraughtingPreDefinedCurveFont" type="ifc:IfcDraughtingPreDefinedCurveFont" substitutionGroup="ifc:IfcPreDefinedCurveFont" nillable="true"/>
	<xs:complexType name="IfcDraughtingPreDefinedCurveFont">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedCurveFont"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDuctFitting" type="ifc:IfcDuctFitting" substitutionGroup="ifc:IfcFlowFitting" nillable="true"/>
	<xs:complexType name="IfcDuctFitting">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFitting">
				<xs:attribute name="PredefinedType" type="ifc:IfcDuctFittingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDuctFittingType" type="ifc:IfcDuctFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
	<xs:complexType name="IfcDuctFittingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFittingType">
				<xs:attribute name="PredefinedType" type="ifc:IfcDuctFittingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDuctSegment" type="ifc:IfcDuctSegment" substitutionGroup="ifc:IfcFlowSegment" nillable="true"/>
	<xs:complexType name="IfcDuctSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegment">
				<xs:attribute name="PredefinedType" type="ifc:IfcDuctSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDuctSegmentType" type="ifc:IfcDuctSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
	<xs:complexType name="IfcDuctSegmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegmentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcDuctSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDuctSilencer" type="ifc:IfcDuctSilencer" substitutionGroup="ifc:IfcFlowTreatmentDevice" nillable="true"/>
	<xs:complexType name="IfcDuctSilencer">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTreatmentDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcDuctSilencerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcDuctSilencerType" type="ifc:IfcDuctSilencerType" substitutionGroup="ifc:IfcFlowTreatmentDeviceType" nillable="true"/>
	<xs:complexType name="IfcDuctSilencerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTreatmentDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcDuctSilencerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEarthworksCut" type="ifc:IfcEarthworksCut" substitutionGroup="ifc:IfcFeatureElementSubtraction" nillable="true"/>
	<xs:complexType name="IfcEarthworksCut">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElementSubtraction">
				<xs:attribute name="PredefinedType" type="ifc:IfcEarthworksCutTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEarthworksElement" type="ifc:IfcEarthworksElement" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcEarthworksElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEarthworksFill" type="ifc:IfcEarthworksFill" substitutionGroup="ifc:IfcEarthworksElement" nillable="true"/>
	<xs:complexType name="IfcEarthworksFill">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEarthworksElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcEarthworksFillTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEdge" type="ifc:IfcEdge" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcEdge">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem">
				<xs:sequence>
					<xs:element name="EdgeStart" type="ifc:IfcVertex" nillable="true"/>
					<xs:element name="EdgeEnd" type="ifc:IfcVertex" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEdgeCurve" type="ifc:IfcEdgeCurve" substitutionGroup="ifc:IfcEdge" nillable="true"/>
	<xs:complexType name="IfcEdgeCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEdge">
				<xs:sequence>
					<xs:element name="EdgeGeometry" type="ifc:IfcCurve" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="SameSense" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEdgeLoop" type="ifc:IfcEdgeLoop" substitutionGroup="ifc:IfcLoop" nillable="true"/>
	<xs:complexType name="IfcEdgeLoop">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLoop">
				<xs:sequence>
					<xs:element name="EdgeList">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcOrientedEdge" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcOrientedEdge"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricAppliance" type="ifc:IfcElectricAppliance" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcElectricAppliance">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricApplianceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricApplianceType" type="ifc:IfcElectricApplianceType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcElectricApplianceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricApplianceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricDistributionBoard" type="ifc:IfcElectricDistributionBoard" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
	<xs:complexType name="IfcElectricDistributionBoard">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowController">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricDistributionBoardTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricDistributionBoardType" type="ifc:IfcElectricDistributionBoardType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcElectricDistributionBoardType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricDistributionBoardTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricFlowStorageDevice" type="ifc:IfcElectricFlowStorageDevice" substitutionGroup="ifc:IfcFlowStorageDevice" nillable="true"/>
	<xs:complexType name="IfcElectricFlowStorageDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowStorageDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricFlowStorageDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricFlowStorageDeviceType" type="ifc:IfcElectricFlowStorageDeviceType" substitutionGroup="ifc:IfcFlowStorageDeviceType" nillable="true"/>
	<xs:complexType name="IfcElectricFlowStorageDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowStorageDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricFlowStorageDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricFlowTreatmentDevice" type="ifc:IfcElectricFlowTreatmentDevice" substitutionGroup="ifc:IfcFlowTreatmentDevice" nillable="true"/>
	<xs:complexType name="IfcElectricFlowTreatmentDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTreatmentDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricFlowTreatmentDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricFlowTreatmentDeviceType" type="ifc:IfcElectricFlowTreatmentDeviceType" substitutionGroup="ifc:IfcFlowTreatmentDeviceType" nillable="true"/>
	<xs:complexType name="IfcElectricFlowTreatmentDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTreatmentDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricFlowTreatmentDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricGenerator" type="ifc:IfcElectricGenerator" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcElectricGenerator">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricGeneratorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricGeneratorType" type="ifc:IfcElectricGeneratorType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcElectricGeneratorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricGeneratorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricMotor" type="ifc:IfcElectricMotor" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcElectricMotor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricMotorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricMotorType" type="ifc:IfcElectricMotorType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcElectricMotorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricMotorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricTimeControl" type="ifc:IfcElectricTimeControl" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
	<xs:complexType name="IfcElectricTimeControl">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowController">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricTimeControlTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElectricTimeControlType" type="ifc:IfcElectricTimeControlType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcElectricTimeControlType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:attribute name="PredefinedType" type="ifc:IfcElectricTimeControlTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElement" type="ifc:IfcElement" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct">
				<xs:sequence>
					<xs:element name="HasProjections" type="ifc:IfcRelProjectsElement" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
					<xs:element name="HasOpenings" type="ifc:IfcRelVoidsElement" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
				<xs:attribute name="Tag" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementAssembly" type="ifc:IfcElementAssembly" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcElementAssembly">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement">
				<xs:attribute name="AssemblyPlace" type="ifc:IfcAssemblyPlaceEnum" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcElementAssemblyTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementAssemblyType" type="ifc:IfcElementAssemblyType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcElementAssemblyType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcElementAssemblyTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementComponent" type="ifc:IfcElementComponent" abstract="true" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcElementComponent" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementComponentType" type="ifc:IfcElementComponentType" abstract="true" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcElementComponentType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementQuantity" type="ifc:IfcElementQuantity" substitutionGroup="ifc:IfcQuantitySet" nillable="true"/>
	<xs:complexType name="IfcElementQuantity">
		<xs:complexContent>
			<xs:extension base="ifc:IfcQuantitySet">
				<xs:sequence>
					<xs:element name="Quantities">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPhysicalQuantity" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPhysicalQuantity"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="MethodOfMeasurement" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementType" type="ifc:IfcElementType" abstract="true" substitutionGroup="ifc:IfcTypeProduct" nillable="true"/>
	<xs:complexType name="IfcElementType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeProduct">
				<xs:attribute name="ElementType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcElementarySurface" type="ifc:IfcElementarySurface" abstract="true" substitutionGroup="ifc:IfcSurface" nillable="true"/>
	<xs:complexType name="IfcElementarySurface" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurface">
				<xs:sequence>
					<xs:element name="Position" type="ifc:IfcAxis2Placement3D" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEllipse" type="ifc:IfcEllipse" substitutionGroup="ifc:IfcConic" nillable="true"/>
	<xs:complexType name="IfcEllipse">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConic">
				<xs:attribute name="SemiAxis1" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="SemiAxis2" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEllipseProfileDef" type="ifc:IfcEllipseProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcEllipseProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="SemiAxis1" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="SemiAxis2" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEnergyConversionDevice" type="ifc:IfcEnergyConversionDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcEnergyConversionDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEnergyConversionDeviceType" type="ifc:IfcEnergyConversionDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcEnergyConversionDeviceType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEngine" type="ifc:IfcEngine" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcEngine">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcEngineTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEngineType" type="ifc:IfcEngineType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcEngineType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcEngineTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEvaporativeCooler" type="ifc:IfcEvaporativeCooler" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcEvaporativeCooler">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcEvaporativeCoolerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEvaporativeCoolerType" type="ifc:IfcEvaporativeCoolerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcEvaporativeCoolerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcEvaporativeCoolerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEvaporator" type="ifc:IfcEvaporator" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcEvaporator">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcEvaporatorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEvaporatorType" type="ifc:IfcEvaporatorType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcEvaporatorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcEvaporatorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEvent" type="ifc:IfcEvent" substitutionGroup="ifc:IfcProcess" nillable="true"/>
	<xs:complexType name="IfcEvent">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProcess">
				<xs:sequence>
					<xs:element name="EventOccurenceTime" type="ifc:IfcEventTime" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="PredefinedType" type="ifc:IfcEventTypeEnum" use="optional"/>
				<xs:attribute name="EventTriggerType" type="ifc:IfcEventTriggerTypeEnum" use="optional"/>
				<xs:attribute name="UserDefinedEventTriggerType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEventTime" type="ifc:IfcEventTime" substitutionGroup="ifc:IfcSchedulingTime" nillable="true"/>
	<xs:complexType name="IfcEventTime">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSchedulingTime">
				<xs:attribute name="ActualDate" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="EarlyDate" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="LateDate" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="ScheduleDate" type="ifc:IfcDateTime" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcEventType" type="ifc:IfcEventType" substitutionGroup="ifc:IfcTypeProcess" nillable="true"/>
	<xs:complexType name="IfcEventType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeProcess">
				<xs:attribute name="PredefinedType" type="ifc:IfcEventTypeEnum" use="optional"/>
				<xs:attribute name="EventTriggerType" type="ifc:IfcEventTriggerTypeEnum" use="optional"/>
				<xs:attribute name="UserDefinedEventTriggerType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExtendedProperties" type="ifc:IfcExtendedProperties" abstract="true" substitutionGroup="ifc:IfcPropertyAbstraction" nillable="true"/>
	<xs:complexType name="IfcExtendedProperties" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyAbstraction">
				<xs:sequence>
					<xs:element name="Properties">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProperty"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternalInformation" type="ifc:IfcExternalInformation" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcExternalInformation" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternalReference" type="ifc:IfcExternalReference" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcExternalReference" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Location" type="ifc:IfcURIReference" use="optional"/>
				<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternalReferenceRelationship" type="ifc:IfcExternalReferenceRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
	<xs:complexType name="IfcExternalReferenceRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:IfcResourceLevelRelationship">
				<xs:sequence>
					<xs:element name="RelatingReference" type="ifc:IfcExternalReference" nillable="true"/>
					<xs:element name="RelatedResourceObjects">
						<xs:complexType>
							<xs:group ref="ifc:IfcResourceObjectSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcResourceObjectSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternalSpatialElement" type="ifc:IfcExternalSpatialElement" substitutionGroup="ifc:IfcExternalSpatialStructureElement" nillable="true"/>
	<xs:complexType name="IfcExternalSpatialElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalSpatialStructureElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcExternalSpatialElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternalSpatialStructureElement" type="ifc:IfcExternalSpatialStructureElement" abstract="true" substitutionGroup="ifc:IfcSpatialElement" nillable="true"/>
	<xs:complexType name="IfcExternalSpatialStructureElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternallyDefinedHatchStyle" type="ifc:IfcExternallyDefinedHatchStyle" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcExternallyDefinedHatchStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternallyDefinedSurfaceStyle" type="ifc:IfcExternallyDefinedSurfaceStyle" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcExternallyDefinedSurfaceStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExternallyDefinedTextFont" type="ifc:IfcExternallyDefinedTextFont" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcExternallyDefinedTextFont">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExtrudedAreaSolid" type="ifc:IfcExtrudedAreaSolid" substitutionGroup="ifc:IfcSweptAreaSolid" nillable="true"/>
	<xs:complexType name="IfcExtrudedAreaSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSweptAreaSolid">
				<xs:sequence>
					<xs:element name="ExtrudedDirection" type="ifc:IfcDirection" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcExtrudedAreaSolidTapered" type="ifc:IfcExtrudedAreaSolidTapered" substitutionGroup="ifc:IfcExtrudedAreaSolid" nillable="true"/>
	<xs:complexType name="IfcExtrudedAreaSolidTapered">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExtrudedAreaSolid">
				<xs:sequence>
					<xs:element name="EndSweptArea" type="ifc:IfcProfileDef" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFace" type="ifc:IfcFace" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcFace">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem">
				<xs:sequence>
					<xs:element name="Bounds">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcFaceBound" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcFaceBound"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFaceBasedSurfaceModel" type="ifc:IfcFaceBasedSurfaceModel" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcFaceBasedSurfaceModel">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="FbsmFaces">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcConnectedFaceSet" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcConnectedFaceSet"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFaceBound" type="ifc:IfcFaceBound" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcFaceBound">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem">
				<xs:sequence>
					<xs:element name="Bound" type="ifc:IfcLoop" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Orientation" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFaceOuterBound" type="ifc:IfcFaceOuterBound" substitutionGroup="ifc:IfcFaceBound" nillable="true"/>
	<xs:complexType name="IfcFaceOuterBound">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFaceBound"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFaceSurface" type="ifc:IfcFaceSurface" substitutionGroup="ifc:IfcFace" nillable="true"/>
	<xs:complexType name="IfcFaceSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFace">
				<xs:sequence>
					<xs:element name="FaceSurface" type="ifc:IfcSurface" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="SameSense" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFacetedBrep" type="ifc:IfcFacetedBrep" substitutionGroup="ifc:IfcManifoldSolidBrep" nillable="true"/>
	<xs:complexType name="IfcFacetedBrep">
		<xs:complexContent>
			<xs:extension base="ifc:IfcManifoldSolidBrep"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFacetedBrepWithVoids" type="ifc:IfcFacetedBrepWithVoids" substitutionGroup="ifc:IfcFacetedBrep" nillable="true"/>
	<xs:complexType name="IfcFacetedBrepWithVoids">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacetedBrep">
				<xs:sequence>
					<xs:element name="Voids">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcClosedShell" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcClosedShell"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFacility" type="ifc:IfcFacility" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
	<xs:complexType name="IfcFacility">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialStructureElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFacilityPart" type="ifc:IfcFacilityPart" abstract="true" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
	<xs:complexType name="IfcFacilityPart" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialStructureElement">
				<xs:attribute name="UsageType" type="ifc:IfcFacilityUsageEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFacilityPartCommon" type="ifc:IfcFacilityPartCommon" substitutionGroup="ifc:IfcFacilityPart" nillable="true"/>
	<xs:complexType name="IfcFacilityPartCommon">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacilityPart">
				<xs:attribute name="PredefinedType" type="ifc:IfcFacilityPartCommonTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFailureConnectionCondition" type="ifc:IfcFailureConnectionCondition" substitutionGroup="ifc:IfcStructuralConnectionCondition" nillable="true"/>
	<xs:complexType name="IfcFailureConnectionCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralConnectionCondition">
				<xs:attribute name="TensionFailureX" type="ifc:IfcForceMeasure" use="optional"/>
				<xs:attribute name="TensionFailureY" type="ifc:IfcForceMeasure" use="optional"/>
				<xs:attribute name="TensionFailureZ" type="ifc:IfcForceMeasure" use="optional"/>
				<xs:attribute name="CompressionFailureX" type="ifc:IfcForceMeasure" use="optional"/>
				<xs:attribute name="CompressionFailureY" type="ifc:IfcForceMeasure" use="optional"/>
				<xs:attribute name="CompressionFailureZ" type="ifc:IfcForceMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFan" type="ifc:IfcFan" substitutionGroup="ifc:IfcFlowMovingDevice" nillable="true"/>
	<xs:complexType name="IfcFan">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowMovingDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcFanTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFanType" type="ifc:IfcFanType" substitutionGroup="ifc:IfcFlowMovingDeviceType" nillable="true"/>
	<xs:complexType name="IfcFanType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowMovingDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcFanTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFastener" type="ifc:IfcFastener" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcFastener">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent">
				<xs:attribute name="PredefinedType" type="ifc:IfcFastenerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFastenerType" type="ifc:IfcFastenerType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcFastenerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcFastenerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFeatureElement" type="ifc:IfcFeatureElement" abstract="true" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcFeatureElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFeatureElementAddition" type="ifc:IfcFeatureElementAddition" abstract="true" substitutionGroup="ifc:IfcFeatureElement" nillable="true"/>
	<xs:complexType name="IfcFeatureElementAddition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFeatureElementSubtraction" type="ifc:IfcFeatureElementSubtraction" abstract="true" substitutionGroup="ifc:IfcFeatureElement" nillable="true"/>
	<xs:complexType name="IfcFeatureElementSubtraction" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFillAreaStyle" type="ifc:IfcFillAreaStyle" substitutionGroup="ifc:IfcPresentationStyle" nillable="true"/>
	<xs:complexType name="IfcFillAreaStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationStyle">
				<xs:sequence>
					<xs:element name="FillStyles">
						<xs:complexType>
							<xs:group ref="ifc:IfcFillStyleSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcFillStyleSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ModelOrDraughting" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFillAreaStyleHatching" type="ifc:IfcFillAreaStyleHatching" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcFillAreaStyleHatching">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="HatchLineAppearance" type="ifc:IfcCurveStyle" nillable="true"/>
					<xs:element name="StartOfNextHatchLine">
						<xs:complexType>
							<xs:group ref="ifc:IfcHatchLineDistanceSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="PointOfReferenceHatchLine" type="ifc:IfcCartesianPoint" minOccurs="0" nillable="true"/>
					<xs:element name="PatternStart" type="ifc:IfcCartesianPoint" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="HatchLineAngle" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFillAreaStyleTiles" type="ifc:IfcFillAreaStyleTiles" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcFillAreaStyleTiles">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="TilingPattern">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcVector" minOccurs="2" maxOccurs="2"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcVector"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Tiles">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcStyledItem" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcStyledItem"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="TilingScale" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFilter" type="ifc:IfcFilter" substitutionGroup="ifc:IfcFlowTreatmentDevice" nillable="true"/>
	<xs:complexType name="IfcFilter">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTreatmentDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcFilterTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFilterType" type="ifc:IfcFilterType" substitutionGroup="ifc:IfcFlowTreatmentDeviceType" nillable="true"/>
	<xs:complexType name="IfcFilterType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTreatmentDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcFilterTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFireSuppressionTerminal" type="ifc:IfcFireSuppressionTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcFireSuppressionTerminal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcFireSuppressionTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFireSuppressionTerminalType" type="ifc:IfcFireSuppressionTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcFireSuppressionTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcFireSuppressionTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFixedReferenceSweptAreaSolid" type="ifc:IfcFixedReferenceSweptAreaSolid" substitutionGroup="ifc:IfcDirectrixCurveSweptAreaSolid" nillable="true"/>
	<xs:complexType name="IfcFixedReferenceSweptAreaSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDirectrixCurveSweptAreaSolid">
				<xs:sequence>
					<xs:element name="FixedReference" type="ifc:IfcDirection" nillable="true"/>
				</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="IfcFlowInstrument" type="ifc:IfcFlowInstrument" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
	<xs:complexType name="IfcFlowInstrument">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcFlowInstrumentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowInstrumentType" type="ifc:IfcFlowInstrumentType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcFlowInstrumentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcFlowInstrumentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowMeter" type="ifc:IfcFlowMeter" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
	<xs:complexType name="IfcFlowMeter">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowController">
				<xs:attribute name="PredefinedType" type="ifc:IfcFlowMeterTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowMeterType" type="ifc:IfcFlowMeterType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcFlowMeterType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:attribute name="PredefinedType" type="ifc:IfcFlowMeterTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowMovingDevice" type="ifc:IfcFlowMovingDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcFlowMovingDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowMovingDeviceType" type="ifc:IfcFlowMovingDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcFlowMovingDeviceType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowSegment" type="ifc:IfcFlowSegment" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcFlowSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowSegmentType" type="ifc:IfcFlowSegmentType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcFlowSegmentType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowStorageDevice" type="ifc:IfcFlowStorageDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcFlowStorageDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowStorageDeviceType" type="ifc:IfcFlowStorageDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcFlowStorageDeviceType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowTerminal" type="ifc:IfcFlowTerminal" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcFlowTerminal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowTerminalType" type="ifc:IfcFlowTerminalType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcFlowTerminalType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowTreatmentDevice" type="ifc:IfcFlowTreatmentDevice" substitutionGroup="ifc:IfcDistributionFlowElement" nillable="true"/>
	<xs:complexType name="IfcFlowTreatmentDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFlowTreatmentDeviceType" type="ifc:IfcFlowTreatmentDeviceType" abstract="true" substitutionGroup="ifc:IfcDistributionFlowElementType" nillable="true"/>
	<xs:complexType name="IfcFlowTreatmentDeviceType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionFlowElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFooting" type="ifc:IfcFooting" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcFooting">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcFootingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFootingType" type="ifc:IfcFootingType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcFootingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcFootingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFurnishingElement" type="ifc:IfcFurnishingElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcFurnishingElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFurnishingElementType" type="ifc:IfcFurnishingElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcFurnishingElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFurniture" type="ifc:IfcFurniture" substitutionGroup="ifc:IfcFurnishingElement" nillable="true"/>
	<xs:complexType name="IfcFurniture">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFurnishingElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcFurnitureTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcFurnitureType" type="ifc:IfcFurnitureType" substitutionGroup="ifc:IfcFurnishingElementType" nillable="true"/>
	<xs:complexType name="IfcFurnitureType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFurnishingElementType">
				<xs:attribute name="AssemblyPlace" type="ifc:IfcAssemblyPlaceEnum" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcFurnitureTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeographicCRS" type="ifc:IfcGeographicCRS" substitutionGroup="ifc:IfcCoordinateReferenceSystem" nillable="true"/>
	<xs:complexType name="IfcGeographicCRS">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCoordinateReferenceSystem">
				<xs:sequence>
					<xs:element name="AngleUnit" type="ifc:IfcNamedUnit" minOccurs="0" nillable="true"/>
					<xs:element name="HeightUnit" type="ifc:IfcNamedUnit" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="PrimeMeridian" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeographicElement" type="ifc:IfcGeographicElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcGeographicElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcGeographicElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeographicElementType" type="ifc:IfcGeographicElementType" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcGeographicElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcGeographicElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeometricCurveSet" type="ifc:IfcGeometricCurveSet" substitutionGroup="ifc:IfcGeometricSet" nillable="true"/>
	<xs:complexType name="IfcGeometricCurveSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricSet"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeometricRepresentationContext" type="ifc:IfcGeometricRepresentationContext" substitutionGroup="ifc:IfcRepresentationContext" nillable="true"/>
	<xs:complexType name="IfcGeometricRepresentationContext">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentationContext">
				<xs:sequence>
					<xs:element name="WorldCoordinateSystem">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TrueNorth" type="ifc:IfcDirection" minOccurs="0" nillable="true"/>
					<xs:element name="HasSubContexts" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcGeometricRepresentationSubContext" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGeometricRepresentationSubContext"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="HasCoordinateOperation" type="ifc:IfcCoordinateOperation" nillable="true" minOccurs="0" maxOccurs="1"/>
				</xs:sequence>
				<xs:attribute name="CoordinateSpaceDimension" type="ifc:IfcDimensionCount" use="optional"/>
				<xs:attribute name="Precision" type="ifc:IfcReal" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeometricRepresentationItem" type="ifc:IfcGeometricRepresentationItem" abstract="true" substitutionGroup="ifc:IfcRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcGeometricRepresentationItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IfcGeometricRepresentationSubContext-temp" abstract="true">
		<xs:complexContent>
			<xs:restriction base="ifc:IfcGeometricRepresentationContext">
				<xs:sequence>
					<xs:element name="HasSubContexts" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcGeometricRepresentationSubContext" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGeometricRepresentationSubContext"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="HasCoordinateOperation" type="ifc:IfcCoordinateOperation" nillable="true" minOccurs="0" maxOccurs="1"/>
				</xs:sequence>
				<xs:attribute name="ContextIdentifier" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="ContextType" type="ifc:IfcLabel" use="optional"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeometricRepresentationSubContext" type="ifc:IfcGeometricRepresentationSubContext" substitutionGroup="ifc:IfcGeometricRepresentationContext" nillable="true"/>
	<xs:complexType name="IfcGeometricRepresentationSubContext">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationSubContext-temp">
				<xs:attribute name="TargetScale" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
				<xs:attribute name="TargetView" type="ifc:IfcGeometricProjectionEnum" use="optional"/>
				<xs:attribute name="UserDefinedTargetView" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeometricSet" type="ifc:IfcGeometricSet" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcGeometricSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Elements">
						<xs:complexType>
							<xs:group ref="ifc:IfcGeometricSetSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGeometricSetSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeomodel" type="ifc:IfcGeomodel" substitutionGroup="ifc:IfcGeotechnicalAssembly" nillable="true"/>
	<xs:complexType name="IfcGeomodel">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeotechnicalAssembly"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeoslice" type="ifc:IfcGeoslice" substitutionGroup="ifc:IfcGeotechnicalAssembly" nillable="true"/>
	<xs:complexType name="IfcGeoslice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeotechnicalAssembly"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeotechnicalAssembly" type="ifc:IfcGeotechnicalAssembly" abstract="true" substitutionGroup="ifc:IfcGeotechnicalElement" nillable="true"/>
	<xs:complexType name="IfcGeotechnicalAssembly" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeotechnicalElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeotechnicalElement" type="ifc:IfcGeotechnicalElement" abstract="true" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcGeotechnicalElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGeotechnicalStratum" type="ifc:IfcGeotechnicalStratum" substitutionGroup="ifc:IfcGeotechnicalElement" nillable="true"/>
	<xs:complexType name="IfcGeotechnicalStratum">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeotechnicalElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcGeotechnicalStratumTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGradientCurve" type="ifc:IfcGradientCurve" substitutionGroup="ifc:IfcCompositeCurve" nillable="true"/>
	<xs:complexType name="IfcGradientCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCompositeCurve">
				<xs:sequence>
					<xs:element name="BaseCurve" type="ifc:IfcBoundedCurve" nillable="true"/>
					<xs:element name="EndPoint" type="ifc:IfcPlacement" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGrid" type="ifc:IfcGrid" substitutionGroup="ifc:IfcPositioningElement" nillable="true"/>
	<xs:complexType name="IfcGrid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPositioningElement">
				<xs:sequence>
					<xs:element name="UAxes">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcGridAxis" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGridAxis"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="VAxes">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcGridAxis" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGridAxis"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="WAxes" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcGridAxis" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGridAxis"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="PredefinedType" type="ifc:IfcGridTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGridAxis" type="ifc:IfcGridAxis" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcGridAxis">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="AxisCurve" type="ifc:IfcCurve" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="AxisTag" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="SameSense" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGridPlacement" type="ifc:IfcGridPlacement" substitutionGroup="ifc:IfcObjectPlacement" nillable="true"/>
	<xs:complexType name="IfcGridPlacement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObjectPlacement">
				<xs:sequence>
					<xs:element name="PlacementLocation" type="ifc:IfcVirtualGridIntersection" nillable="true"/>
					<xs:element name="PlacementRefDirection" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcGridPlacementDirectionSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcGroup" type="ifc:IfcGroup" substitutionGroup="ifc:IfcObject" nillable="true"/>
	<xs:complexType name="IfcGroup">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObject"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcHalfSpaceSolid" type="ifc:IfcHalfSpaceSolid" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcHalfSpaceSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="BaseSurface" type="ifc:IfcSurface" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="AgreementFlag" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcHeatExchanger" type="ifc:IfcHeatExchanger" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcHeatExchanger">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcHeatExchangerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcHeatExchangerType" type="ifc:IfcHeatExchangerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcHeatExchangerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcHeatExchangerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcHumidifier" type="ifc:IfcHumidifier" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcHumidifier">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcHumidifierTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcHumidifierType" type="ifc:IfcHumidifierType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcHumidifierType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcHumidifierTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIShapeProfileDef" type="ifc:IfcIShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcIShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="OverallWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="OverallDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="WebThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeEdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcImageTexture" type="ifc:IfcImageTexture" substitutionGroup="ifc:IfcSurfaceTexture" nillable="true"/>
	<xs:complexType name="IfcImageTexture">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurfaceTexture">
				<xs:attribute name="URLReference" type="ifc:IfcURIReference" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcImpactProtectionDevice" type="ifc:IfcImpactProtectionDevice" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcImpactProtectionDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent">
				<xs:attribute name="PredefinedType" type="ifc:IfcImpactProtectionDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcImpactProtectionDeviceType" type="ifc:IfcImpactProtectionDeviceType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcImpactProtectionDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcImpactProtectionDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIndexedColourMap" type="ifc:IfcIndexedColourMap" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcIndexedColourMap">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:sequence>
					<xs:element name="Colours" type="ifc:IfcColourRgbList" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Opacity" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="ColourIndex" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcPositiveInteger"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIndexedPolyCurve" type="ifc:IfcIndexedPolyCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
	<xs:complexType name="IfcIndexedPolyCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedCurve">
				<xs:sequence>
					<xs:element name="Points" type="ifc:IfcCartesianPointList" nillable="true"/>
					<xs:element name="Segments" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcSegmentIndexSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSegmentIndexSelect"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="SelfIntersect" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIndexedPolygonalFace" type="ifc:IfcIndexedPolygonalFace" substitutionGroup="ifc:IfcTessellatedItem" nillable="true"/>
	<xs:complexType name="IfcIndexedPolygonalFace">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTessellatedItem">
				<xs:attribute name="CoordIndex" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcPositiveInteger"/>
							</xs:simpleType>
							<xs:minLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIndexedPolygonalFaceWithVoids" type="ifc:IfcIndexedPolygonalFaceWithVoids" substitutionGroup="ifc:IfcIndexedPolygonalFace" nillable="true"/>
	<xs:complexType name="IfcIndexedPolygonalFaceWithVoids">
		<xs:complexContent>
			<xs:extension base="ifc:IfcIndexedPolygonalFace">
				<xs:sequence>
					<xs:element name="InnerCoordIndices" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="Seq-IfcPositiveInteger-wrapper" type="ifc:Seq-IfcPositiveInteger" maxOccurs="unbounded"/>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIndexedPolygonalTextureMap" type="ifc:IfcIndexedPolygonalTextureMap" substitutionGroup="ifc:IfcIndexedTextureMap" nillable="true"/>
	<xs:complexType name="IfcIndexedPolygonalTextureMap">
		<xs:complexContent>
			<xs:extension base="ifc:IfcIndexedTextureMap">
				<xs:sequence>
					<xs:element name="TexCoordIndices">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcTextureCoordinateIndices" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTextureCoordinateIndices"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIndexedTextureMap" type="ifc:IfcIndexedTextureMap" abstract="true" substitutionGroup="ifc:IfcTextureCoordinate" nillable="true"/>
	<xs:complexType name="IfcIndexedTextureMap" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTextureCoordinate">
				<xs:sequence>
					<xs:element name="TexCoords" type="ifc:IfcTextureVertexList" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIndexedTriangleTextureMap" type="ifc:IfcIndexedTriangleTextureMap" substitutionGroup="ifc:IfcIndexedTextureMap" nillable="true"/>
	<xs:complexType name="IfcIndexedTriangleTextureMap">
		<xs:complexContent>
			<xs:extension base="ifc:IfcIndexedTextureMap">
				<xs:attribute name="TexCoordIndex" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcPositiveInteger"/>
							</xs:simpleType>
							<xs:minLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcInterceptor" type="ifc:IfcInterceptor" substitutionGroup="ifc:IfcFlowTreatmentDevice" nillable="true"/>
	<xs:complexType name="IfcInterceptor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTreatmentDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcInterceptorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcInterceptorType" type="ifc:IfcInterceptorType" substitutionGroup="ifc:IfcFlowTreatmentDeviceType" nillable="true"/>
	<xs:complexType name="IfcInterceptorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTreatmentDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcInterceptorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIntersectionCurve" type="ifc:IfcIntersectionCurve" substitutionGroup="ifc:IfcSurfaceCurve" nillable="true"/>
	<xs:complexType name="IfcIntersectionCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurfaceCurve"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcInventory" type="ifc:IfcInventory" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcInventory">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup">
				<xs:sequence>
					<xs:element name="Jurisdiction" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ResponsiblePersons" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPerson" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPerson"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CurrentValue" type="ifc:IfcCostValue" minOccurs="0" nillable="true"/>
					<xs:element name="OriginalValue" type="ifc:IfcCostValue" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="PredefinedType" type="ifc:IfcInventoryTypeEnum" use="optional"/>
				<xs:attribute name="LastUpdateDate" type="ifc:IfcDate" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIrregularTimeSeries" type="ifc:IfcIrregularTimeSeries" substitutionGroup="ifc:IfcTimeSeries" nillable="true"/>
	<xs:complexType name="IfcIrregularTimeSeries">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTimeSeries">
				<xs:sequence>
					<xs:element name="Values">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcIrregularTimeSeriesValue" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcIrregularTimeSeriesValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcIrregularTimeSeriesValue" type="ifc:IfcIrregularTimeSeriesValue" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcIrregularTimeSeriesValue">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="ListValues">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="TimeStamp" type="ifc:IfcDateTime" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcJunctionBox" type="ifc:IfcJunctionBox" substitutionGroup="ifc:IfcFlowFitting" nillable="true"/>
	<xs:complexType name="IfcJunctionBox">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFitting">
				<xs:attribute name="PredefinedType" type="ifc:IfcJunctionBoxTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcJunctionBoxType" type="ifc:IfcJunctionBoxType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
	<xs:complexType name="IfcJunctionBoxType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFittingType">
				<xs:attribute name="PredefinedType" type="ifc:IfcJunctionBoxTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcKerb" type="ifc:IfcKerb" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcKerb">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcKerbTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcKerbType" type="ifc:IfcKerbType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcKerbType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcKerbTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLShapeProfileDef" type="ifc:IfcLShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcLShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="Width" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="Thickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="EdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="LegSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLaborResource" type="ifc:IfcLaborResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
	<xs:complexType name="IfcLaborResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResource">
				<xs:attribute name="PredefinedType" type="ifc:IfcLaborResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLaborResourceType" type="ifc:IfcLaborResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
	<xs:complexType name="IfcLaborResourceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResourceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcLaborResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLagTime" type="ifc:IfcLagTime" substitutionGroup="ifc:IfcSchedulingTime" nillable="true"/>
	<xs:complexType name="IfcLagTime">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSchedulingTime">
				<xs:sequence>
					<xs:element name="LagValue">
						<xs:complexType>
							<xs:group ref="ifc:IfcTimeOrRatioSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="DurationType" type="ifc:IfcTaskDurationEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLamp" type="ifc:IfcLamp" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcLamp">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcLampTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLampType" type="ifc:IfcLampType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcLampType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcLampTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLibraryInformation" type="ifc:IfcLibraryInformation" substitutionGroup="ifc:IfcExternalInformation" nillable="true"/>
	<xs:complexType name="IfcLibraryInformation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalInformation">
				<xs:sequence>
					<xs:element name="Publisher" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcActorSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Version" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="VersionDate" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="Location" type="ifc:IfcURIReference" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLibraryReference" type="ifc:IfcLibraryReference" substitutionGroup="ifc:IfcExternalReference" nillable="true"/>
	<xs:complexType name="IfcLibraryReference">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExternalReference">
				<xs:sequence>
					<xs:element name="ReferencedLibrary" type="ifc:IfcLibraryInformation" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Language" type="ifc:IfcLanguageId" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightDistributionData" type="ifc:IfcLightDistributionData" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcLightDistributionData">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="MainPlaneAngle" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
				<xs:attribute name="SecondaryPlaneAngle" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcPlaneAngleMeasure"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="LuminousIntensity" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLuminousIntensityDistributionMeasure"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightFixture" type="ifc:IfcLightFixture" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcLightFixture">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcLightFixtureTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightFixtureType" type="ifc:IfcLightFixtureType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcLightFixtureType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcLightFixtureTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightIntensityDistribution" type="ifc:IfcLightIntensityDistribution" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcLightIntensityDistribution">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="DistributionData">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLightDistributionData" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcLightDistributionData"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="LightDistributionCurve" type="ifc:IfcLightDistributionCurveEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSource" type="ifc:IfcLightSource" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcLightSource" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="LightColour" type="ifc:IfcColourRgb" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="AmbientIntensity" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="Intensity" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSourceAmbient" type="ifc:IfcLightSourceAmbient" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
	<xs:complexType name="IfcLightSourceAmbient">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLightSource"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSourceDirectional" type="ifc:IfcLightSourceDirectional" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
	<xs:complexType name="IfcLightSourceDirectional">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLightSource">
				<xs:sequence>
					<xs:element name="Orientation" type="ifc:IfcDirection" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSourceGoniometric" type="ifc:IfcLightSourceGoniometric" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
	<xs:complexType name="IfcLightSourceGoniometric">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLightSource">
				<xs:sequence>
					<xs:element name="Position" type="ifc:IfcAxis2Placement3D" nillable="true"/>
					<xs:element name="ColourAppearance" type="ifc:IfcColourRgb" minOccurs="0" nillable="true"/>
					<xs:element name="LightDistributionDataSource">
						<xs:complexType>
							<xs:group ref="ifc:IfcLightDistributionDataSourceSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ColourTemperature" type="ifc:IfcThermodynamicTemperatureMeasure" use="optional"/>
				<xs:attribute name="LuminousFlux" type="ifc:IfcLuminousFluxMeasure" use="optional"/>
				<xs:attribute name="LightEmissionSource" type="ifc:IfcLightEmissionSourceEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSourcePositional" type="ifc:IfcLightSourcePositional" substitutionGroup="ifc:IfcLightSource" nillable="true"/>
	<xs:complexType name="IfcLightSourcePositional">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLightSource">
				<xs:sequence>
					<xs:element name="Position" type="ifc:IfcCartesianPoint" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="ConstantAttenuation" type="ifc:IfcReal" use="optional"/>
				<xs:attribute name="DistanceAttenuation" type="ifc:IfcReal" use="optional"/>
				<xs:attribute name="QuadricAttenuation" type="ifc:IfcReal" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLightSourceSpot" type="ifc:IfcLightSourceSpot" substitutionGroup="ifc:IfcLightSourcePositional" nillable="true"/>
	<xs:complexType name="IfcLightSourceSpot">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLightSourcePositional">
				<xs:sequence>
					<xs:element name="Orientation" type="ifc:IfcDirection" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="ConcentrationExponent" type="ifc:IfcReal" use="optional"/>
				<xs:attribute name="SpreadAngle" type="ifc:IfcPositivePlaneAngleMeasure" use="optional"/>
				<xs:attribute name="BeamWidthAngle" type="ifc:IfcPositivePlaneAngleMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLine" type="ifc:IfcLine" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcLine">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve">
				<xs:sequence>
					<xs:element name="Pnt" type="ifc:IfcCartesianPoint" nillable="true"/>
					<xs:element name="Dir" type="ifc:IfcVector" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLinearElement" type="ifc:IfcLinearElement" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcLinearElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLinearPlacement" type="ifc:IfcLinearPlacement" substitutionGroup="ifc:IfcObjectPlacement" nillable="true"/>
	<xs:complexType name="IfcLinearPlacement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObjectPlacement">
				<xs:sequence>
					<xs:element name="RelativePlacement" type="ifc:IfcAxis2PlacementLinear" nillable="true"/>
					<xs:element name="CartesianPosition" type="ifc:IfcAxis2Placement3D" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLinearPositioningElement" type="ifc:IfcLinearPositioningElement" substitutionGroup="ifc:IfcPositioningElement" nillable="true"/>
	<xs:complexType name="IfcLinearPositioningElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPositioningElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLiquidTerminal" type="ifc:IfcLiquidTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcLiquidTerminal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcLiquidTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLiquidTerminalType" type="ifc:IfcLiquidTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcLiquidTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcLiquidTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLocalPlacement" type="ifc:IfcLocalPlacement" substitutionGroup="ifc:IfcObjectPlacement" nillable="true"/>
	<xs:complexType name="IfcLocalPlacement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObjectPlacement">
				<xs:sequence>
					<xs:element name="RelativePlacement">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcLoop" type="ifc:IfcLoop" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcLoop">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcManifoldSolidBrep" type="ifc:IfcManifoldSolidBrep" abstract="true" substitutionGroup="ifc:IfcSolidModel" nillable="true"/>
	<xs:complexType name="IfcManifoldSolidBrep" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSolidModel">
				<xs:sequence>
					<xs:element name="Outer" type="ifc:IfcClosedShell" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMapConversion" type="ifc:IfcMapConversion" substitutionGroup="ifc:IfcCoordinateOperation" nillable="true"/>
	<xs:complexType name="IfcMapConversion">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCoordinateOperation">
				<xs:attribute name="Eastings" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="Northings" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="OrthogonalHeight" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="XAxisAbscissa" type="ifc:IfcReal" use="optional"/>
				<xs:attribute name="XAxisOrdinate" type="ifc:IfcReal" use="optional"/>
				<xs:attribute name="Scale" type="ifc:IfcReal" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMapConversionScaled" type="ifc:IfcMapConversionScaled" substitutionGroup="ifc:IfcMapConversion" nillable="true"/>
	<xs:complexType name="IfcMapConversionScaled">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMapConversion">
				<xs:attribute name="FactorX" type="ifc:IfcReal" use="optional"/>
				<xs:attribute name="FactorY" type="ifc:IfcReal" use="optional"/>
				<xs:attribute name="FactorZ" type="ifc:IfcReal" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMappedItem" type="ifc:IfcMappedItem" substitutionGroup="ifc:IfcRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcMappedItem">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentationItem">
				<xs:sequence>
					<xs:element name="MappingSource" type="ifc:IfcRepresentationMap" nillable="true"/>
					<xs:element name="MappingTarget" type="ifc:IfcCartesianTransformationOperator" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMarineFacility" type="ifc:IfcMarineFacility" substitutionGroup="ifc:IfcFacility" nillable="true"/>
	<xs:complexType name="IfcMarineFacility">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacility">
				<xs:attribute name="PredefinedType" type="ifc:IfcMarineFacilityTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMarinePart" type="ifc:IfcMarinePart" substitutionGroup="ifc:IfcFacilityPart" nillable="true"/>
	<xs:complexType name="IfcMarinePart">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacilityPart">
				<xs:attribute name="PredefinedType" type="ifc:IfcMarinePartTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterial" type="ifc:IfcMaterial" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
	<xs:complexType name="IfcMaterial">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialDefinition">
				<xs:sequence>
					<xs:element name="HasRepresentation" type="ifc:IfcMaterialDefinitionRepresentation" nillable="true" minOccurs="0" maxOccurs="1"/>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Category" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialClassificationRelationship" type="ifc:IfcMaterialClassificationRelationship" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterialClassificationRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="MaterialClassifications">
						<xs:complexType>
							<xs:group ref="ifc:IfcClassificationSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcClassificationSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ClassifiedMaterial" type="ifc:IfcMaterial" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialConstituent" type="ifc:IfcMaterialConstituent" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
	<xs:complexType name="IfcMaterialConstituent">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialDefinition">
				<xs:sequence>
					<xs:element name="Material" type="ifc:IfcMaterial" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Fraction" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="Category" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialConstituentSet" type="ifc:IfcMaterialConstituentSet" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
	<xs:complexType name="IfcMaterialConstituentSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialDefinition">
				<xs:sequence>
					<xs:element name="MaterialConstituents" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcMaterialConstituent" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterialConstituent"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialDefinition" type="ifc:IfcMaterialDefinition" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterialDefinition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="HasProperties" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcMaterialProperties" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterialProperties"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialDefinitionRepresentation" type="ifc:IfcMaterialDefinitionRepresentation" substitutionGroup="ifc:IfcProductRepresentation" nillable="true"/>
	<xs:complexType name="IfcMaterialDefinitionRepresentation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProductRepresentation"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialLayer" type="ifc:IfcMaterialLayer" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
	<xs:complexType name="IfcMaterialLayer">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialDefinition">
				<xs:sequence>
					<xs:element name="Material" type="ifc:IfcMaterial" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="LayerThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="IsVentilated" type="ifc:IfcLogical" use="optional"/>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Category" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Priority" type="ifc:IfcInteger" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialLayerSet" type="ifc:IfcMaterialLayerSet" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
	<xs:complexType name="IfcMaterialLayerSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialDefinition">
				<xs:sequence>
					<xs:element name="MaterialLayers">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcMaterialLayer" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterialLayer"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="LayerSetName" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialLayerSetUsage" type="ifc:IfcMaterialLayerSetUsage" substitutionGroup="ifc:IfcMaterialUsageDefinition" nillable="true"/>
	<xs:complexType name="IfcMaterialLayerSetUsage">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialUsageDefinition">
				<xs:sequence>
					<xs:element name="ForLayerSet" type="ifc:IfcMaterialLayerSet" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="LayerSetDirection" type="ifc:IfcLayerSetDirectionEnum" use="optional"/>
				<xs:attribute name="DirectionSense" type="ifc:IfcDirectionSenseEnum" use="optional"/>
				<xs:attribute name="OffsetFromReferenceLine" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="ReferenceExtent" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialLayerWithOffsets" type="ifc:IfcMaterialLayerWithOffsets" substitutionGroup="ifc:IfcMaterialLayer" nillable="true"/>
	<xs:complexType name="IfcMaterialLayerWithOffsets">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialLayer">
				<xs:attribute name="OffsetDirection" type="ifc:IfcLayerSetDirectionEnum" use="optional"/>
				<xs:attribute name="OffsetValues" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLengthMeasure"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
							<xs:maxLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialList" type="ifc:IfcMaterialList" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterialList">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Materials">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcMaterial" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterial"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialProfile" type="ifc:IfcMaterialProfile" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
	<xs:complexType name="IfcMaterialProfile">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialDefinition">
				<xs:sequence>
					<xs:element name="Material" type="ifc:IfcMaterial" minOccurs="0" nillable="true"/>
					<xs:element name="Profile" type="ifc:IfcProfileDef" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Priority" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="Category" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialProfileSet" type="ifc:IfcMaterialProfileSet" substitutionGroup="ifc:IfcMaterialDefinition" nillable="true"/>
	<xs:complexType name="IfcMaterialProfileSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialDefinition">
				<xs:sequence>
					<xs:element name="MaterialProfiles">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcMaterialProfile" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterialProfile"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CompositeProfile" type="ifc:IfcCompositeProfileDef" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialProfileSetUsage" type="ifc:IfcMaterialProfileSetUsage" substitutionGroup="ifc:IfcMaterialUsageDefinition" nillable="true"/>
	<xs:complexType name="IfcMaterialProfileSetUsage">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialUsageDefinition">
				<xs:sequence>
					<xs:element name="ForProfileSet" type="ifc:IfcMaterialProfileSet" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="CardinalPoint" type="ifc:IfcCardinalPointReference" use="optional"/>
				<xs:attribute name="ReferenceExtent" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialProfileSetUsageTapering" type="ifc:IfcMaterialProfileSetUsageTapering" substitutionGroup="ifc:IfcMaterialProfileSetUsage" nillable="true"/>
	<xs:complexType name="IfcMaterialProfileSetUsageTapering">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProfileSetUsage">
				<xs:sequence>
					<xs:element name="ForProfileEndSet" type="ifc:IfcMaterialProfileSet" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="CardinalEndPoint" type="ifc:IfcCardinalPointReference" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialProfileWithOffsets" type="ifc:IfcMaterialProfileWithOffsets" substitutionGroup="ifc:IfcMaterialProfile" nillable="true"/>
	<xs:complexType name="IfcMaterialProfileWithOffsets">
		<xs:complexContent>
			<xs:extension base="ifc:IfcMaterialProfile">
				<xs:attribute name="OffsetValues" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLengthMeasure"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
							<xs:maxLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialProperties" type="ifc:IfcMaterialProperties" substitutionGroup="ifc:IfcExtendedProperties" nillable="true"/>
	<xs:complexType name="IfcMaterialProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExtendedProperties"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialRelationship" type="ifc:IfcMaterialRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
	<xs:complexType name="IfcMaterialRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:IfcResourceLevelRelationship">
				<xs:sequence>
					<xs:element name="RelatingMaterial" type="ifc:IfcMaterial" nillable="true"/>
					<xs:element name="RelatedMaterials">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcMaterial" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcMaterial"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="MaterialExpression" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMaterialUsageDefinition" type="ifc:IfcMaterialUsageDefinition" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcMaterialUsageDefinition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMeasureWithUnit" type="ifc:IfcMeasureWithUnit" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcMeasureWithUnit">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="ValueComponent">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="UnitComponent">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMechanicalFastener" type="ifc:IfcMechanicalFastener" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcMechanicalFastener">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent">
				<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="NominalLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcMechanicalFastenerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMechanicalFastenerType" type="ifc:IfcMechanicalFastenerType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcMechanicalFastenerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcMechanicalFastenerTypeEnum" use="optional"/>
				<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="NominalLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMedicalDevice" type="ifc:IfcMedicalDevice" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcMedicalDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcMedicalDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMedicalDeviceType" type="ifc:IfcMedicalDeviceType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcMedicalDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcMedicalDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMember" type="ifc:IfcMember" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcMember">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcMemberTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMemberType" type="ifc:IfcMemberType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcMemberType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcMemberTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMetric" type="ifc:IfcMetric" substitutionGroup="ifc:IfcConstraint" nillable="true"/>
	<xs:complexType name="IfcMetric">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstraint">
				<xs:sequence>
					<xs:element name="DataValue" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcMetricValueSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ReferencePath" type="ifc:IfcReference" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Benchmark" type="ifc:IfcBenchmarkEnum" use="optional"/>
				<xs:attribute name="ValueSource" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IfcMirroredProfileDef">
		<xs:complexContent>
			<xs:restriction base="ifc:IfcDerivedProfileDef">
				<xs:sequence>
					<xs:element name="HasProperties" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProfileProperties" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProfileProperties"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ParentProfile" type="ifc:IfcProfileDef" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="ProfileType" type="ifc:IfcProfileTypeEnum" use="optional"/>
				<xs:attribute name="ProfileName" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Label" type="ifc:IfcLabel" use="optional"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMobileTelecommunicationsAppliance" type="ifc:IfcMobileTelecommunicationsAppliance" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcMobileTelecommunicationsAppliance">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcMobileTelecommunicationsApplianceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMobileTelecommunicationsApplianceType" type="ifc:IfcMobileTelecommunicationsApplianceType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcMobileTelecommunicationsApplianceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcMobileTelecommunicationsApplianceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMonetaryUnit" type="ifc:IfcMonetaryUnit" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcMonetaryUnit">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Currency" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMooringDevice" type="ifc:IfcMooringDevice" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcMooringDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcMooringDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMooringDeviceType" type="ifc:IfcMooringDeviceType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcMooringDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcMooringDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMotorConnection" type="ifc:IfcMotorConnection" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcMotorConnection">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcMotorConnectionTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcMotorConnectionType" type="ifc:IfcMotorConnectionType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcMotorConnectionType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcMotorConnectionTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcNamedUnit" type="ifc:IfcNamedUnit" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcNamedUnit" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Dimensions" type="ifc:IfcDimensionalExponents" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="UnitType" type="ifc:IfcUnitEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcNavigationElement" type="ifc:IfcNavigationElement" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcNavigationElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcNavigationElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcNavigationElementType" type="ifc:IfcNavigationElementType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcNavigationElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcNavigationElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcObject" type="ifc:IfcObject" abstract="true" substitutionGroup="ifc:IfcObjectDefinition" nillable="true"/>
	<xs:complexType name="IfcObject" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObjectDefinition">
				<xs:sequence>
					<xs:element name="IsDeclaredBy" type="ifc:IfcRelDefinesByObject" nillable="true" minOccurs="0" maxOccurs="1"/>
					<xs:element name="IsTypedBy" type="ifc:IfcRelDefinesByType" nillable="true" minOccurs="0" maxOccurs="1"/>
					<xs:element name="IsDefinedBy" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRelDefinesByProperties" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelDefinesByProperties"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ObjectType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcObjectDefinition" type="ifc:IfcObjectDefinition" abstract="true" substitutionGroup="ifc:IfcRoot" nillable="true"/>
	<xs:complexType name="IfcObjectDefinition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRoot">
				<xs:sequence>
					<xs:element name="IsNestedBy" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRelNests" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelNests"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="IsDecomposedBy" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRelAggregates" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelAggregates"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcObjectPlacement" type="ifc:IfcObjectPlacement" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcObjectPlacement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="PlacementRelTo" type="ifc:IfcObjectPlacement" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</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" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcConstraint" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcConstraint"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="LogicalAggregator" type="ifc:IfcLogicalOperatorEnum" use="optional"/>
				<xs:attribute name="ObjectiveQualifier" type="ifc:IfcObjectiveEnum" use="optional"/>
				<xs:attribute name="UserDefinedQualifier" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOccupant" type="ifc:IfcOccupant" substitutionGroup="ifc:IfcActor" nillable="true"/>
	<xs:complexType name="IfcOccupant">
		<xs:complexContent>
			<xs:extension base="ifc:IfcActor">
				<xs:attribute name="PredefinedType" type="ifc:IfcOccupantTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOffsetCurve" type="ifc:IfcOffsetCurve" abstract="true" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcOffsetCurve" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve">
				<xs:sequence>
					<xs:element name="BasisCurve" type="ifc:IfcCurve" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOffsetCurve2D" type="ifc:IfcOffsetCurve2D" substitutionGroup="ifc:IfcOffsetCurve" nillable="true"/>
	<xs:complexType name="IfcOffsetCurve2D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcOffsetCurve">
				<xs:attribute name="Distance" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="SelfIntersect" type="ifc:IfcLogical" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOffsetCurve3D" type="ifc:IfcOffsetCurve3D" substitutionGroup="ifc:IfcOffsetCurve" nillable="true"/>
	<xs:complexType name="IfcOffsetCurve3D">
		<xs:complexContent>
			<xs:extension base="ifc:IfcOffsetCurve">
				<xs:sequence>
					<xs:element name="RefDirection" type="ifc:IfcDirection" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Distance" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="SelfIntersect" type="ifc:IfcLogical" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOffsetCurveByDistances" type="ifc:IfcOffsetCurveByDistances" substitutionGroup="ifc:IfcOffsetCurve" nillable="true"/>
	<xs:complexType name="IfcOffsetCurveByDistances">
		<xs:complexContent>
			<xs:extension base="ifc:IfcOffsetCurve">
				<xs:sequence>
					<xs:element name="OffsetValues">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPointByDistanceExpression" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPointByDistanceExpression"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Tag" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOpenCrossProfileDef" type="ifc:IfcOpenCrossProfileDef" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcOpenCrossProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="OffsetPoint" type="ifc:IfcCartesianPoint" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="HorizontalWidths" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="Widths" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcNonNegativeLengthMeasure"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="Slopes" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcPlaneAngleMeasure"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="Tags" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLabel"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOpenShell" type="ifc:IfcOpenShell" substitutionGroup="ifc:IfcConnectedFaceSet" nillable="true"/>
	<xs:complexType name="IfcOpenShell">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConnectedFaceSet"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOpeningElement" type="ifc:IfcOpeningElement" substitutionGroup="ifc:IfcFeatureElementSubtraction" nillable="true"/>
	<xs:complexType name="IfcOpeningElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElementSubtraction">
				<xs:sequence>
					<xs:element name="HasFillings" type="ifc:IfcRelFillsElement" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
				</xs:sequence>
				<xs:attribute name="PredefinedType" type="ifc:IfcOpeningElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOrganization" type="ifc:IfcOrganization" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcOrganization">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Roles" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcActorRole" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcActorRole"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Addresses" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcAddress" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAddress"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOrganizationRelationship" type="ifc:IfcOrganizationRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
	<xs:complexType name="IfcOrganizationRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:IfcResourceLevelRelationship">
				<xs:sequence>
					<xs:element name="RelatingOrganization" type="ifc:IfcOrganization" nillable="true"/>
					<xs:element name="RelatedOrganizations">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcOrganization" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcOrganization"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IfcOrientedEdge-temp" abstract="true">
		<xs:complexContent>
			<xs:restriction base="ifc:IfcEdge">
				<xs:sequence>
					<xs:element name="StyledByItem" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcStyledItem" minOccurs="0" maxOccurs="1"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcStyledItem"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOrientedEdge" type="ifc:IfcOrientedEdge" substitutionGroup="ifc:IfcEdge" nillable="true"/>
	<xs:complexType name="IfcOrientedEdge">
		<xs:complexContent>
			<xs:extension base="ifc:IfcOrientedEdge-temp">
				<xs:sequence>
					<xs:element name="EdgeElement" type="ifc:IfcEdge" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Orientation" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOuterBoundaryCurve" type="ifc:IfcOuterBoundaryCurve" substitutionGroup="ifc:IfcBoundaryCurve" nillable="true"/>
	<xs:complexType name="IfcOuterBoundaryCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundaryCurve"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOutlet" type="ifc:IfcOutlet" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcOutlet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcOutletTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOutletType" type="ifc:IfcOutletType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcOutletType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcOutletTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcOwnerHistory" type="ifc:IfcOwnerHistory" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcOwnerHistory">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="OwningUser" type="ifc:IfcPersonAndOrganization" nillable="true"/>
					<xs:element name="OwningApplication" type="ifc:IfcApplication" nillable="true"/>
					<xs:element name="LastModifyingUser" type="ifc:IfcPersonAndOrganization" minOccurs="0" nillable="true"/>
					<xs:element name="LastModifyingApplication" type="ifc:IfcApplication" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="State" type="ifc:IfcStateEnum" use="optional"/>
				<xs:attribute name="ChangeAction" type="ifc:IfcChangeActionEnum" use="optional"/>
				<xs:attribute name="LastModifiedDate" type="ifc:IfcTimeStamp" use="optional"/>
				<xs:attribute name="CreationDate" type="ifc:IfcTimeStamp" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcParameterizedProfileDef" type="ifc:IfcParameterizedProfileDef" abstract="true" substitutionGroup="ifc:IfcProfileDef" nillable="true"/>
	<xs:complexType name="IfcParameterizedProfileDef" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProfileDef">
				<xs:sequence>
					<xs:element name="Position" type="ifc:IfcAxis2Placement2D" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPath" type="ifc:IfcPath" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcPath">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem">
				<xs:sequence>
					<xs:element name="EdgeList">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcOrientedEdge" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcOrientedEdge"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPavement" type="ifc:IfcPavement" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcPavement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcPavementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPavementType" type="ifc:IfcPavementType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcPavementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcPavementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPcurve" type="ifc:IfcPcurve" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcPcurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve">
				<xs:sequence>
					<xs:element name="BasisSurface" type="ifc:IfcSurface" nillable="true"/>
					<xs:element name="ReferenceCurve" type="ifc:IfcCurve" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPerformanceHistory" type="ifc:IfcPerformanceHistory" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcPerformanceHistory">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:attribute name="LifeCyclePhase" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcPerformanceHistoryTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPermeableCoveringProperties" type="ifc:IfcPermeableCoveringProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
	<xs:complexType name="IfcPermeableCoveringProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedPropertySet">
				<xs:sequence>
					<xs:element name="ShapeAspectStyle" type="ifc:IfcShapeAspect" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="OperationType" type="ifc:IfcPermeableCoveringOperationEnum" use="optional"/>
				<xs:attribute name="PanelPosition" type="ifc:IfcWindowPanelPositionEnum" use="optional"/>
				<xs:attribute name="FrameDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FrameThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPermit" type="ifc:IfcPermit" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcPermit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:attribute name="PredefinedType" type="ifc:IfcPermitTypeEnum" use="optional"/>
				<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPerson" type="ifc:IfcPerson" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcPerson">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Roles" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcActorRole" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcActorRole"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Addresses" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcAddress" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAddress"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="FamilyName" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="GivenName" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="MiddleNames" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLabel"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="PrefixTitles" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLabel"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="SuffixTitles" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLabel"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPersonAndOrganization" type="ifc:IfcPersonAndOrganization" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcPersonAndOrganization">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="ThePerson" type="ifc:IfcPerson" nillable="true"/>
					<xs:element name="TheOrganization" type="ifc:IfcOrganization" nillable="true"/>
					<xs:element name="Roles" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcActorRole" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcActorRole"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPhysicalComplexQuantity" type="ifc:IfcPhysicalComplexQuantity" substitutionGroup="ifc:IfcPhysicalQuantity" nillable="true"/>
	<xs:complexType name="IfcPhysicalComplexQuantity">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalQuantity">
				<xs:sequence>
					<xs:element name="HasQuantities">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPhysicalQuantity" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPhysicalQuantity"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Discrimination" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Quality" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Usage" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPhysicalQuantity" type="ifc:IfcPhysicalQuantity" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcPhysicalQuantity" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPhysicalSimpleQuantity" type="ifc:IfcPhysicalSimpleQuantity" abstract="true" substitutionGroup="ifc:IfcPhysicalQuantity" nillable="true"/>
	<xs:complexType name="IfcPhysicalSimpleQuantity" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalQuantity">
				<xs:sequence>
					<xs:element name="Unit" type="ifc:IfcNamedUnit" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPile" type="ifc:IfcPile" substitutionGroup="ifc:IfcDeepFoundation" nillable="true"/>
	<xs:complexType name="IfcPile">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDeepFoundation">
				<xs:attribute name="PredefinedType" type="ifc:IfcPileTypeEnum" use="optional"/>
				<xs:attribute name="ConstructionType" type="ifc:IfcPileConstructionEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPileType" type="ifc:IfcPileType" substitutionGroup="ifc:IfcDeepFoundationType" nillable="true"/>
	<xs:complexType name="IfcPileType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDeepFoundationType">
				<xs:attribute name="PredefinedType" type="ifc:IfcPileTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPipeFitting" type="ifc:IfcPipeFitting" substitutionGroup="ifc:IfcFlowFitting" nillable="true"/>
	<xs:complexType name="IfcPipeFitting">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFitting">
				<xs:attribute name="PredefinedType" type="ifc:IfcPipeFittingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPipeFittingType" type="ifc:IfcPipeFittingType" substitutionGroup="ifc:IfcFlowFittingType" nillable="true"/>
	<xs:complexType name="IfcPipeFittingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowFittingType">
				<xs:attribute name="PredefinedType" type="ifc:IfcPipeFittingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPipeSegment" type="ifc:IfcPipeSegment" substitutionGroup="ifc:IfcFlowSegment" nillable="true"/>
	<xs:complexType name="IfcPipeSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegment">
				<xs:attribute name="PredefinedType" type="ifc:IfcPipeSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPipeSegmentType" type="ifc:IfcPipeSegmentType" substitutionGroup="ifc:IfcFlowSegmentType" nillable="true"/>
	<xs:complexType name="IfcPipeSegmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowSegmentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcPipeSegmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPixelTexture" type="ifc:IfcPixelTexture" substitutionGroup="ifc:IfcSurfaceTexture" nillable="true"/>
	<xs:complexType name="IfcPixelTexture">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurfaceTexture">
				<xs:attribute name="Width" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="Height" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="ColourComponents" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="Pixel" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcBinary"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlacement" type="ifc:IfcPlacement" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcPlacement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Location" type="ifc:IfcPoint" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlanarBox" type="ifc:IfcPlanarBox" substitutionGroup="ifc:IfcPlanarExtent" nillable="true"/>
	<xs:complexType name="IfcPlanarBox">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPlanarExtent">
				<xs:sequence>
					<xs:element name="Placement">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlanarExtent" type="ifc:IfcPlanarExtent" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcPlanarExtent">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:attribute name="SizeInX" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="SizeInY" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlane" type="ifc:IfcPlane" substitutionGroup="ifc:IfcElementarySurface" nillable="true"/>
	<xs:complexType name="IfcPlane">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementarySurface"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlate" type="ifc:IfcPlate" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcPlate">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcPlateTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPlateType" type="ifc:IfcPlateType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcPlateType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcPlateTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPoint" type="ifc:IfcPoint" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcPoint" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPointByDistanceExpression" type="ifc:IfcPointByDistanceExpression" substitutionGroup="ifc:IfcPoint" nillable="true"/>
	<xs:complexType name="IfcPointByDistanceExpression">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPoint">
				<xs:sequence>
					<xs:element name="DistanceAlong">
						<xs:complexType>
							<xs:group ref="ifc:IfcCurveMeasureSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="BasisCurve" type="ifc:IfcCurve" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="OffsetLateral" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="OffsetVertical" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="OffsetLongitudinal" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPointOnCurve" type="ifc:IfcPointOnCurve" substitutionGroup="ifc:IfcPoint" nillable="true"/>
	<xs:complexType name="IfcPointOnCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPoint">
				<xs:sequence>
					<xs:element name="BasisCurve" type="ifc:IfcCurve" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="PointParameter" type="ifc:IfcParameterValue" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPointOnSurface" type="ifc:IfcPointOnSurface" substitutionGroup="ifc:IfcPoint" nillable="true"/>
	<xs:complexType name="IfcPointOnSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPoint">
				<xs:sequence>
					<xs:element name="BasisSurface" type="ifc:IfcSurface" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="PointParameterU" type="ifc:IfcParameterValue" use="optional"/>
				<xs:attribute name="PointParameterV" type="ifc:IfcParameterValue" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPolyLoop" type="ifc:IfcPolyLoop" substitutionGroup="ifc:IfcLoop" nillable="true"/>
	<xs:complexType name="IfcPolyLoop">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLoop">
				<xs:sequence>
					<xs:element name="Polygon">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCartesianPoint" minOccurs="3" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCartesianPoint"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPolygonalBoundedHalfSpace" type="ifc:IfcPolygonalBoundedHalfSpace" substitutionGroup="ifc:IfcHalfSpaceSolid" nillable="true"/>
	<xs:complexType name="IfcPolygonalBoundedHalfSpace">
		<xs:complexContent>
			<xs:extension base="ifc:IfcHalfSpaceSolid">
				<xs:sequence>
					<xs:element name="Position" type="ifc:IfcAxis2Placement3D" nillable="true"/>
					<xs:element name="PolygonalBoundary" type="ifc:IfcBoundedCurve" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPolygonalFaceSet" type="ifc:IfcPolygonalFaceSet" substitutionGroup="ifc:IfcTessellatedFaceSet" nillable="true"/>
	<xs:complexType name="IfcPolygonalFaceSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTessellatedFaceSet">
				<xs:sequence>
					<xs:element name="Faces">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcIndexedPolygonalFace" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcIndexedPolygonalFace"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Closed" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="PnIndex" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcPositiveInteger"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPolyline" type="ifc:IfcPolyline" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
	<xs:complexType name="IfcPolyline">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedCurve">
				<xs:sequence>
					<xs:element name="Points">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCartesianPoint" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCartesianPoint"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPolynomialCurve" type="ifc:IfcPolynomialCurve" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcPolynomialCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve">
				<xs:sequence>
					<xs:element name="Position" type="ifc:IfcPlacement" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="CoefficientsX" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcReal"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="CoefficientsY" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcReal"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="CoefficientsZ" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcReal"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="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="IfcPositioningElement" type="ifc:IfcPositioningElement" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcPositioningElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPostalAddress" type="ifc:IfcPostalAddress" substitutionGroup="ifc:IfcAddress" nillable="true"/>
	<xs:complexType name="IfcPostalAddress">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAddress">
				<xs:sequence>
					<xs:element name="AddressLines" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLabel-wrapper" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcLabel-wrapper"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="InternalLocation" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="PostalBox" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Town" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Region" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="PostalCode" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Country" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedColour" type="ifc:IfcPreDefinedColour" abstract="true" substitutionGroup="ifc:IfcPreDefinedItem" nillable="true"/>
	<xs:complexType name="IfcPreDefinedColour" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedCurveFont" type="ifc:IfcPreDefinedCurveFont" abstract="true" substitutionGroup="ifc:IfcPreDefinedItem" nillable="true"/>
	<xs:complexType name="IfcPreDefinedCurveFont" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedItem" type="ifc:IfcPreDefinedItem" abstract="true" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcPreDefinedItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedProperties" type="ifc:IfcPreDefinedProperties" abstract="true" substitutionGroup="ifc:IfcPropertyAbstraction" nillable="true"/>
	<xs:complexType name="IfcPreDefinedProperties" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyAbstraction"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedPropertySet" type="ifc:IfcPreDefinedPropertySet" abstract="true" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcPreDefinedPropertySet" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPreDefinedTextFont" type="ifc:IfcPreDefinedTextFont" abstract="true" substitutionGroup="ifc:IfcPreDefinedItem" nillable="true"/>
	<xs:complexType name="IfcPreDefinedTextFont" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPresentationItem" type="ifc:IfcPresentationItem" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcPresentationItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPresentationLayerAssignment" type="ifc:IfcPresentationLayerAssignment" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcPresentationLayerAssignment">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="AssignedItems">
						<xs:complexType>
							<xs:group ref="ifc:IfcLayeredItem" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcLayeredItem"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="Identifier" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPresentationLayerWithStyle" type="ifc:IfcPresentationLayerWithStyle" substitutionGroup="ifc:IfcPresentationLayerAssignment" nillable="true"/>
	<xs:complexType name="IfcPresentationLayerWithStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationLayerAssignment">
				<xs:sequence>
					<xs:element name="LayerStyles">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPresentationStyle" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPresentationStyle"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="LayerOn" type="ifc:IfcLogical" use="optional"/>
				<xs:attribute name="LayerFrozen" type="ifc:IfcLogical" use="optional"/>
				<xs:attribute name="LayerBlocked" type="ifc:IfcLogical" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPresentationStyle" type="ifc:IfcPresentationStyle" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcPresentationStyle" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProcedure" type="ifc:IfcProcedure" substitutionGroup="ifc:IfcProcess" nillable="true"/>
	<xs:complexType name="IfcProcedure">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProcess">
				<xs:attribute name="PredefinedType" type="ifc:IfcProcedureTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProcedureType" type="ifc:IfcProcedureType" substitutionGroup="ifc:IfcTypeProcess" nillable="true"/>
	<xs:complexType name="IfcProcedureType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeProcess">
				<xs:attribute name="PredefinedType" type="ifc:IfcProcedureTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProcess" type="ifc:IfcProcess" abstract="true" substitutionGroup="ifc:IfcObject" nillable="true"/>
	<xs:complexType name="IfcProcess" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObject">
				<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProduct" type="ifc:IfcProduct" abstract="true" substitutionGroup="ifc:IfcObject" nillable="true"/>
	<xs:complexType name="IfcProduct" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObject">
				<xs:sequence>
					<xs:element name="ObjectPlacement" type="ifc:IfcObjectPlacement" minOccurs="0" nillable="true"/>
					<xs:element name="Representation" type="ifc:IfcProductRepresentation" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProductDefinitionShape" type="ifc:IfcProductDefinitionShape" substitutionGroup="ifc:IfcProductRepresentation" nillable="true"/>
	<xs:complexType name="IfcProductDefinitionShape">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProductRepresentation">
				<xs:sequence>
					<xs:element name="HasShapeAspects" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcShapeAspect" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcShapeAspect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProductRepresentation" type="ifc:IfcProductRepresentation" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcProductRepresentation" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Representations">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRepresentation" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRepresentation"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProfileDef" type="ifc:IfcProfileDef" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="HasProperties" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProfileProperties" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProfileProperties"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ProfileType" type="ifc:IfcProfileTypeEnum" use="optional"/>
				<xs:attribute name="ProfileName" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProfileProperties" type="ifc:IfcProfileProperties" substitutionGroup="ifc:IfcExtendedProperties" nillable="true"/>
	<xs:complexType name="IfcProfileProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcExtendedProperties"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProject" type="ifc:IfcProject" substitutionGroup="ifc:IfcContext" nillable="true"/>
	<xs:complexType name="IfcProject">
		<xs:complexContent>
			<xs:extension base="ifc:IfcContext"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProjectLibrary" type="ifc:IfcProjectLibrary" substitutionGroup="ifc:IfcContext" nillable="true"/>
	<xs:complexType name="IfcProjectLibrary">
		<xs:complexContent>
			<xs:extension base="ifc:IfcContext"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProjectOrder" type="ifc:IfcProjectOrder" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcProjectOrder">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:attribute name="PredefinedType" type="ifc:IfcProjectOrderTypeEnum" use="optional"/>
				<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProjectedCRS" type="ifc:IfcProjectedCRS" substitutionGroup="ifc:IfcCoordinateReferenceSystem" nillable="true"/>
	<xs:complexType name="IfcProjectedCRS">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCoordinateReferenceSystem">
				<xs:sequence>
					<xs:element name="MapUnit" type="ifc:IfcNamedUnit" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="VerticalDatum" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="MapProjection" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="MapZone" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProjectionElement" type="ifc:IfcProjectionElement" substitutionGroup="ifc:IfcFeatureElementAddition" nillable="true"/>
	<xs:complexType name="IfcProjectionElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElementAddition">
				<xs:attribute name="PredefinedType" type="ifc:IfcProjectionElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProperty" type="ifc:IfcProperty" abstract="true" substitutionGroup="ifc:IfcPropertyAbstraction" nillable="true"/>
	<xs:complexType name="IfcProperty" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyAbstraction">
				<xs:attribute name="Name" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="Specification" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyAbstraction" type="ifc:IfcPropertyAbstraction" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcPropertyAbstraction" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyBoundedValue" type="ifc:IfcPropertyBoundedValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
	<xs:complexType name="IfcPropertyBoundedValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSimpleProperty">
				<xs:sequence>
					<xs:element name="UpperBoundValue" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LowerBoundValue" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Unit" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SetPointValue" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyDefinition" type="ifc:IfcPropertyDefinition" abstract="true" substitutionGroup="ifc:IfcRoot" nillable="true"/>
	<xs:complexType name="IfcPropertyDefinition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRoot"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyDependencyRelationship" type="ifc:IfcPropertyDependencyRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
	<xs:complexType name="IfcPropertyDependencyRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:IfcResourceLevelRelationship">
				<xs:sequence>
					<xs:element name="DependingProperty" type="ifc:IfcProperty" nillable="true"/>
					<xs:element name="DependantProperty" type="ifc:IfcProperty" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Expression" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyEnumeratedValue" type="ifc:IfcPropertyEnumeratedValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
	<xs:complexType name="IfcPropertyEnumeratedValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSimpleProperty">
				<xs:sequence>
					<xs:element name="EnumerationValues" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="EnumerationReference" type="ifc:IfcPropertyEnumeration" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyEnumeration" type="ifc:IfcPropertyEnumeration" substitutionGroup="ifc:IfcPropertyAbstraction" nillable="true"/>
	<xs:complexType name="IfcPropertyEnumeration">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyAbstraction">
				<xs:sequence>
					<xs:element name="EnumerationValues">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Unit" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyListValue" type="ifc:IfcPropertyListValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
	<xs:complexType name="IfcPropertyListValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSimpleProperty">
				<xs:sequence>
					<xs:element name="ListValues" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Unit" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyReferenceValue" type="ifc:IfcPropertyReferenceValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
	<xs:complexType name="IfcPropertyReferenceValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSimpleProperty">
				<xs:sequence>
					<xs:element name="PropertyReference" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcObjectReferenceSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="UsageName" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertySet" type="ifc:IfcPropertySet" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcPropertySet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition">
				<xs:sequence>
					<xs:element name="HasProperties">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProperty" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProperty"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertySetDefinition" type="ifc:IfcPropertySetDefinition" abstract="true" substitutionGroup="ifc:IfcPropertyDefinition" nillable="true"/>
	<xs:complexType name="IfcPropertySetDefinition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyDefinition"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertySetTemplate" type="ifc:IfcPropertySetTemplate" substitutionGroup="ifc:IfcPropertyTemplateDefinition" nillable="true"/>
	<xs:complexType name="IfcPropertySetTemplate">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyTemplateDefinition">
				<xs:sequence>
					<xs:element name="HasPropertyTemplates">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPropertyTemplate" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPropertyTemplate"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="TemplateType" type="ifc:IfcPropertySetTemplateTypeEnum" use="optional"/>
				<xs:attribute name="ApplicableEntity" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertySingleValue" type="ifc:IfcPropertySingleValue" substitutionGroup="ifc:IfcSimpleProperty" nillable="true"/>
	<xs:complexType name="IfcPropertySingleValue">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSimpleProperty">
				<xs:sequence>
					<xs:element name="NominalValue" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Unit" minOccurs="0" nillable="true">
						<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" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="DefinedValues" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="DefiningUnit" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="DefinedUnit" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Expression" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="CurveInterpolation" type="ifc:IfcCurveInterpolationEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyTemplate" type="ifc:IfcPropertyTemplate" abstract="true" substitutionGroup="ifc:IfcPropertyTemplateDefinition" nillable="true"/>
	<xs:complexType name="IfcPropertyTemplate" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyTemplateDefinition"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPropertyTemplateDefinition" type="ifc:IfcPropertyTemplateDefinition" abstract="true" substitutionGroup="ifc:IfcPropertyDefinition" nillable="true"/>
	<xs:complexType name="IfcPropertyTemplateDefinition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyDefinition"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProtectiveDevice" type="ifc:IfcProtectiveDevice" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
	<xs:complexType name="IfcProtectiveDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowController">
				<xs:attribute name="PredefinedType" type="ifc:IfcProtectiveDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProtectiveDeviceTrippingUnit" type="ifc:IfcProtectiveDeviceTrippingUnit" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
	<xs:complexType name="IfcProtectiveDeviceTrippingUnit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcProtectiveDeviceTrippingUnitTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProtectiveDeviceTrippingUnitType" type="ifc:IfcProtectiveDeviceTrippingUnitType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcProtectiveDeviceTrippingUnitType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcProtectiveDeviceTrippingUnitTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcProtectiveDeviceType" type="ifc:IfcProtectiveDeviceType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcProtectiveDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:attribute name="PredefinedType" type="ifc:IfcProtectiveDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPump" type="ifc:IfcPump" substitutionGroup="ifc:IfcFlowMovingDevice" nillable="true"/>
	<xs:complexType name="IfcPump">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowMovingDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcPumpTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcPumpType" type="ifc:IfcPumpType" substitutionGroup="ifc:IfcFlowMovingDeviceType" nillable="true"/>
	<xs:complexType name="IfcPumpType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowMovingDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcPumpTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityArea" type="ifc:IfcQuantityArea" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityArea">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:attribute name="AreaValue" type="ifc:IfcAreaMeasure" use="optional"/>
				<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityCount" type="ifc:IfcQuantityCount" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityCount">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:attribute name="CountValue" type="ifc:IfcCountMeasure" use="optional"/>
				<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityLength" type="ifc:IfcQuantityLength" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityLength">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:attribute name="LengthValue" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityNumber" type="ifc:IfcQuantityNumber" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityNumber">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:attribute name="NumberValue" type="ifc:IfcNumericMeasure" use="optional"/>
				<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantitySet" type="ifc:IfcQuantitySet" abstract="true" substitutionGroup="ifc:IfcPropertySetDefinition" nillable="true"/>
	<xs:complexType name="IfcQuantitySet" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertySetDefinition"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityTime" type="ifc:IfcQuantityTime" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityTime">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:attribute name="TimeValue" type="ifc:IfcTimeMeasure" use="optional"/>
				<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityVolume" type="ifc:IfcQuantityVolume" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityVolume">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:attribute name="VolumeValue" type="ifc:IfcVolumeMeasure" use="optional"/>
				<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcQuantityWeight" type="ifc:IfcQuantityWeight" substitutionGroup="ifc:IfcPhysicalSimpleQuantity" nillable="true"/>
	<xs:complexType name="IfcQuantityWeight">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPhysicalSimpleQuantity">
				<xs:attribute name="WeightValue" type="ifc:IfcMassMeasure" use="optional"/>
				<xs:attribute name="Formula" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRail" type="ifc:IfcRail" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcRail">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcRailTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRailType" type="ifc:IfcRailType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcRailType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcRailTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRailing" type="ifc:IfcRailing" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcRailing">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcRailingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRailingType" type="ifc:IfcRailingType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcRailingType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcRailingTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRailway" type="ifc:IfcRailway" substitutionGroup="ifc:IfcFacility" nillable="true"/>
	<xs:complexType name="IfcRailway">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacility">
				<xs:attribute name="PredefinedType" type="ifc:IfcRailwayTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRailwayPart" type="ifc:IfcRailwayPart" substitutionGroup="ifc:IfcFacilityPart" nillable="true"/>
	<xs:complexType name="IfcRailwayPart">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacilityPart">
				<xs:attribute name="PredefinedType" type="ifc:IfcRailwayPartTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRamp" type="ifc:IfcRamp" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcRamp">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcRampTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRampFlight" type="ifc:IfcRampFlight" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcRampFlight">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcRampFlightTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRampFlightType" type="ifc:IfcRampFlightType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcRampFlightType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcRampFlightTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRampType" type="ifc:IfcRampType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcRampType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcRampTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRationalBSplineCurveWithKnots" type="ifc:IfcRationalBSplineCurveWithKnots" substitutionGroup="ifc:IfcBSplineCurveWithKnots" nillable="true"/>
	<xs:complexType name="IfcRationalBSplineCurveWithKnots">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBSplineCurveWithKnots">
				<xs:attribute name="WeightsData" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcReal"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRationalBSplineSurfaceWithKnots" type="ifc:IfcRationalBSplineSurfaceWithKnots" substitutionGroup="ifc:IfcBSplineSurfaceWithKnots" nillable="true"/>
	<xs:complexType name="IfcRationalBSplineSurfaceWithKnots">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBSplineSurfaceWithKnots">
				<xs:sequence>
					<xs:element name="WeightsData">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcReal-wrapper" minOccurs="4" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcReal-wrapper"/>
							<xs:attribute ref="ifc:cType" fixed="list list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRectangleHollowProfileDef" type="ifc:IfcRectangleHollowProfileDef" substitutionGroup="ifc:IfcRectangleProfileDef" nillable="true"/>
	<xs:complexType name="IfcRectangleHollowProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRectangleProfileDef">
				<xs:attribute name="WallThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="InnerFilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="OuterFilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRectangleProfileDef" type="ifc:IfcRectangleProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcRectangleProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="XDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="YDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRectangularPyramid" type="ifc:IfcRectangularPyramid" substitutionGroup="ifc:IfcCsgPrimitive3D" nillable="true"/>
	<xs:complexType name="IfcRectangularPyramid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCsgPrimitive3D">
				<xs:attribute name="XLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="YLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="Height" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRectangularTrimmedSurface" type="ifc:IfcRectangularTrimmedSurface" substitutionGroup="ifc:IfcBoundedSurface" nillable="true"/>
	<xs:complexType name="IfcRectangularTrimmedSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedSurface">
				<xs:sequence>
					<xs:element name="BasisSurface" type="ifc:IfcSurface" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="U1" type="ifc:IfcParameterValue" use="optional"/>
				<xs:attribute name="V1" type="ifc:IfcParameterValue" use="optional"/>
				<xs:attribute name="U2" type="ifc:IfcParameterValue" use="optional"/>
				<xs:attribute name="V2" type="ifc:IfcParameterValue" use="optional"/>
				<xs:attribute name="Usense" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="Vsense" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRecurrencePattern" type="ifc:IfcRecurrencePattern" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcRecurrencePattern">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="TimePeriods" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcTimePeriod" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTimePeriod"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="RecurrenceType" type="ifc:IfcRecurrenceTypeEnum" use="optional"/>
				<xs:attribute name="DayComponent" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcDayInMonthNumber"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="WeekdayComponent" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcDayInWeekNumber"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="MonthComponent" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcMonthInYearNumber"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="Position" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="Interval" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="Occurrences" type="ifc:IfcInteger" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReference" type="ifc:IfcReference" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcReference">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="InnerReference" type="ifc:IfcReference" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="TypeIdentifier" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="AttributeIdentifier" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="InstanceName" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="ListPositions" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcInteger"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReferent" type="ifc:IfcReferent" substitutionGroup="ifc:IfcPositioningElement" nillable="true"/>
	<xs:complexType name="IfcReferent">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPositioningElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcReferentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRegularTimeSeries" type="ifc:IfcRegularTimeSeries" substitutionGroup="ifc:IfcTimeSeries" nillable="true"/>
	<xs:complexType name="IfcRegularTimeSeries">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTimeSeries">
				<xs:sequence>
					<xs:element name="Values">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcTimeSeriesValue" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTimeSeriesValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="TimeStep" type="ifc:IfcTimeMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcedSoil" type="ifc:IfcReinforcedSoil" substitutionGroup="ifc:IfcEarthworksElement" nillable="true"/>
	<xs:complexType name="IfcReinforcedSoil">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEarthworksElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcReinforcedSoilTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcementBarProperties" type="ifc:IfcReinforcementBarProperties" substitutionGroup="ifc:IfcPreDefinedProperties" nillable="true"/>
	<xs:complexType name="IfcReinforcementBarProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedProperties">
				<xs:attribute name="TotalCrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
				<xs:attribute name="SteelGrade" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="BarSurface" type="ifc:IfcReinforcingBarSurfaceEnum" use="optional"/>
				<xs:attribute name="EffectiveDepth" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="NominalBarDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="BarCount" type="ifc:IfcCountMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcementDefinitionProperties" type="ifc:IfcReinforcementDefinitionProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
	<xs:complexType name="IfcReinforcementDefinitionProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedPropertySet">
				<xs:sequence>
					<xs:element name="ReinforcementSectionDefinitions">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcSectionReinforcementProperties" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSectionReinforcementProperties"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="DefinitionType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcingBar" type="ifc:IfcReinforcingBar" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
	<xs:complexType name="IfcReinforcingBar">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElement">
				<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="CrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
				<xs:attribute name="BarLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcReinforcingBarTypeEnum" use="optional"/>
				<xs:attribute name="BarSurface" type="ifc:IfcReinforcingBarSurfaceEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcingBarType" type="ifc:IfcReinforcingBarType" substitutionGroup="ifc:IfcReinforcingElementType" nillable="true"/>
	<xs:complexType name="IfcReinforcingBarType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElementType">
				<xs:sequence>
					<xs:element name="BendingParameters" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcBendingParameterSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcBendingParameterSelect"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="PredefinedType" type="ifc:IfcReinforcingBarTypeEnum" use="optional"/>
				<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="CrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
				<xs:attribute name="BarLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="BarSurface" type="ifc:IfcReinforcingBarSurfaceEnum" use="optional"/>
				<xs:attribute name="BendingShapeCode" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcingElement" type="ifc:IfcReinforcingElement" abstract="true" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcReinforcingElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent">
				<xs:attribute name="SteelGrade" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcingElementType" type="ifc:IfcReinforcingElementType" abstract="true" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcReinforcingElementType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcingMesh" type="ifc:IfcReinforcingMesh" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
	<xs:complexType name="IfcReinforcingMesh">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElement">
				<xs:attribute name="MeshLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="MeshWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="LongitudinalBarNominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="TransverseBarNominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="LongitudinalBarCrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
				<xs:attribute name="TransverseBarCrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
				<xs:attribute name="LongitudinalBarSpacing" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="TransverseBarSpacing" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcReinforcingMeshTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReinforcingMeshType" type="ifc:IfcReinforcingMeshType" substitutionGroup="ifc:IfcReinforcingElementType" nillable="true"/>
	<xs:complexType name="IfcReinforcingMeshType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElementType">
				<xs:sequence>
					<xs:element name="BendingParameters" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcBendingParameterSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcBendingParameterSelect"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="PredefinedType" type="ifc:IfcReinforcingMeshTypeEnum" use="optional"/>
				<xs:attribute name="MeshLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="MeshWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="LongitudinalBarNominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="TransverseBarNominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="LongitudinalBarCrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
				<xs:attribute name="TransverseBarCrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
				<xs:attribute name="LongitudinalBarSpacing" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="TransverseBarSpacing" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="BendingShapeCode" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAdheresToElement" type="ifc:IfcRelAdheresToElement" substitutionGroup="ifc:IfcRelDecomposes" nillable="true"/>
	<xs:complexType name="IfcRelAdheresToElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDecomposes">
				<xs:sequence>
					<xs:element name="RelatingElement" type="ifc:IfcElement" nillable="true"/>
					<xs:element name="RelatedSurfaceFeatures">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcSurfaceFeature" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSurfaceFeature"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAggregates" type="ifc:IfcRelAggregates" substitutionGroup="ifc:IfcRelDecomposes" nillable="true"/>
	<xs:complexType name="IfcRelAggregates">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDecomposes">
				<xs:sequence>
					<xs:element name="RelatedObjects">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcObjectDefinition" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcObjectDefinition"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssigns" type="ifc:IfcRelAssigns" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
	<xs:complexType name="IfcRelAssigns" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelationship">
				<xs:sequence>
					<xs:element name="RelatedObjects">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcObjectDefinition" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcObjectDefinition"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="RelatedObjectsType" type="ifc:IfcStrippedOptional" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssignsToActor" type="ifc:IfcRelAssignsToActor" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
	<xs:complexType name="IfcRelAssignsToActor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssigns">
				<xs:sequence>
					<xs:element name="RelatingActor" type="ifc:IfcActor" nillable="true"/>
					<xs:element name="ActingRole" type="ifc:IfcActorRole" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssignsToControl" type="ifc:IfcRelAssignsToControl" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
	<xs:complexType name="IfcRelAssignsToControl">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssigns">
				<xs:sequence>
					<xs:element name="RelatingControl" type="ifc:IfcControl" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssignsToGroup" type="ifc:IfcRelAssignsToGroup" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
	<xs:complexType name="IfcRelAssignsToGroup">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssigns">
				<xs:sequence>
					<xs:element name="RelatingGroup" type="ifc:IfcGroup" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssignsToGroupByFactor" type="ifc:IfcRelAssignsToGroupByFactor" substitutionGroup="ifc:IfcRelAssignsToGroup" nillable="true"/>
	<xs:complexType name="IfcRelAssignsToGroupByFactor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssignsToGroup">
				<xs:attribute name="Factor" type="ifc:IfcRatioMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssignsToProcess" type="ifc:IfcRelAssignsToProcess" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
	<xs:complexType name="IfcRelAssignsToProcess">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssigns">
				<xs:sequence>
					<xs:element name="RelatingProcess">
						<xs:complexType>
							<xs:group ref="ifc:IfcProcessSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="QuantityInProcess" type="ifc:IfcMeasureWithUnit" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssignsToProduct" type="ifc:IfcRelAssignsToProduct" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
	<xs:complexType name="IfcRelAssignsToProduct">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssigns">
				<xs:sequence>
					<xs:element name="RelatingProduct">
						<xs:complexType>
							<xs:group ref="ifc:IfcProductSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssignsToResource" type="ifc:IfcRelAssignsToResource" substitutionGroup="ifc:IfcRelAssigns" nillable="true"/>
	<xs:complexType name="IfcRelAssignsToResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssigns">
				<xs:sequence>
					<xs:element name="RelatingResource">
						<xs:complexType>
							<xs:group ref="ifc:IfcResourceSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociates" type="ifc:IfcRelAssociates" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
	<xs:complexType name="IfcRelAssociates" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelationship">
				<xs:sequence>
					<xs:element name="RelatedObjects">
						<xs:complexType>
							<xs:group ref="ifc:IfcDefinitionSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDefinitionSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesApproval" type="ifc:IfcRelAssociatesApproval" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesApproval">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingApproval" type="ifc:IfcApproval" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesClassification" type="ifc:IfcRelAssociatesClassification" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesClassification">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingClassification">
						<xs:complexType>
							<xs:group ref="ifc:IfcClassificationSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesConstraint" type="ifc:IfcRelAssociatesConstraint" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesConstraint">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingConstraint" type="ifc:IfcConstraint" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Intent" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesDocument" type="ifc:IfcRelAssociatesDocument" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesDocument">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingDocument">
						<xs:complexType>
							<xs:group ref="ifc:IfcDocumentSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesLibrary" type="ifc:IfcRelAssociatesLibrary" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesLibrary">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingLibrary">
						<xs:complexType>
							<xs:group ref="ifc:IfcLibrarySelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesMaterial" type="ifc:IfcRelAssociatesMaterial" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesMaterial">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingMaterial">
						<xs:complexType>
							<xs:group ref="ifc:IfcMaterialSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelAssociatesProfileDef" type="ifc:IfcRelAssociatesProfileDef" substitutionGroup="ifc:IfcRelAssociates" nillable="true"/>
	<xs:complexType name="IfcRelAssociatesProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelAssociates">
				<xs:sequence>
					<xs:element name="RelatingProfileDef" type="ifc:IfcProfileDef" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnects" type="ifc:IfcRelConnects" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
	<xs:complexType name="IfcRelConnects" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelationship"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsElements" type="ifc:IfcRelConnectsElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelConnectsElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="ConnectionGeometry" type="ifc:IfcConnectionGeometry" minOccurs="0" nillable="true"/>
					<xs:element name="RelatingElement" type="ifc:IfcElement" nillable="true"/>
					<xs:element name="RelatedElement" type="ifc:IfcElement" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsPathElements" type="ifc:IfcRelConnectsPathElements" substitutionGroup="ifc:IfcRelConnectsElements" nillable="true"/>
	<xs:complexType name="IfcRelConnectsPathElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnectsElements">
				<xs:attribute name="RelatingPriorities" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcInteger"/>
							</xs:simpleType>
							<xs:minLength value="0"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="RelatedPriorities" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcInteger"/>
							</xs:simpleType>
							<xs:minLength value="0"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="RelatedConnectionType" type="ifc:IfcConnectionTypeEnum" use="optional"/>
				<xs:attribute name="RelatingConnectionType" type="ifc:IfcConnectionTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsPortToElement" type="ifc:IfcRelConnectsPortToElement" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelConnectsPortToElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingPort" type="ifc:IfcPort" nillable="true"/>
					<xs:element name="RelatedElement" type="ifc:IfcDistributionElement" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsPorts" type="ifc:IfcRelConnectsPorts" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelConnectsPorts">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingPort" type="ifc:IfcPort" nillable="true"/>
					<xs:element name="RelatedPort" type="ifc:IfcPort" nillable="true"/>
					<xs:element name="RealizingElement" type="ifc:IfcElement" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsStructuralActivity" type="ifc:IfcRelConnectsStructuralActivity" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelConnectsStructuralActivity">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingElement">
						<xs:complexType>
							<xs:group ref="ifc:IfcStructuralActivityAssignmentSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedStructuralActivity" type="ifc:IfcStructuralActivity" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsStructuralMember" type="ifc:IfcRelConnectsStructuralMember" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelConnectsStructuralMember">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingStructuralMember" type="ifc:IfcStructuralMember" nillable="true"/>
					<xs:element name="RelatedStructuralConnection" type="ifc:IfcStructuralConnection" nillable="true"/>
					<xs:element name="AppliedCondition" type="ifc:IfcBoundaryCondition" minOccurs="0" nillable="true"/>
					<xs:element name="AdditionalConditions" type="ifc:IfcStructuralConnectionCondition" minOccurs="0" nillable="true"/>
					<xs:element name="ConditionCoordinateSystem" type="ifc:IfcAxis2Placement3D" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="SupportedLength" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsWithEccentricity" type="ifc:IfcRelConnectsWithEccentricity" substitutionGroup="ifc:IfcRelConnectsStructuralMember" nillable="true"/>
	<xs:complexType name="IfcRelConnectsWithEccentricity">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnectsStructuralMember">
				<xs:sequence>
					<xs:element name="ConnectionConstraint" type="ifc:IfcConnectionGeometry" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelConnectsWithRealizingElements" type="ifc:IfcRelConnectsWithRealizingElements" substitutionGroup="ifc:IfcRelConnectsElements" nillable="true"/>
	<xs:complexType name="IfcRelConnectsWithRealizingElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnectsElements">
				<xs:sequence>
					<xs:element name="RealizingElements">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcElement" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcElement"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ConnectionType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelContainedInSpatialStructure" type="ifc:IfcRelContainedInSpatialStructure" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelContainedInSpatialStructure">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatedElements">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProduct" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProduct"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelCoversBldgElements" type="ifc:IfcRelCoversBldgElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelCoversBldgElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingBuildingElement" type="ifc:IfcElement" nillable="true"/>
					<xs:element name="RelatedCoverings">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCovering" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCovering"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelCoversSpaces" type="ifc:IfcRelCoversSpaces" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelCoversSpaces">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingSpace" type="ifc:IfcSpace" nillable="true"/>
					<xs:element name="RelatedCoverings">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcCovering" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcCovering"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelDeclares" type="ifc:IfcRelDeclares" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
	<xs:complexType name="IfcRelDeclares">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelationship">
				<xs:sequence>
					<xs:element name="RelatedDefinitions">
						<xs:complexType>
							<xs:group ref="ifc:IfcDefinitionSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDefinitionSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelDecomposes" type="ifc:IfcRelDecomposes" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
	<xs:complexType name="IfcRelDecomposes" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelationship"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelDefines" type="ifc:IfcRelDefines" abstract="true" substitutionGroup="ifc:IfcRelationship" nillable="true"/>
	<xs:complexType name="IfcRelDefines" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelationship"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelDefinesByObject" type="ifc:IfcRelDefinesByObject" substitutionGroup="ifc:IfcRelDefines" nillable="true"/>
	<xs:complexType name="IfcRelDefinesByObject">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDefines">
				<xs:sequence>
					<xs:element name="RelatedObjects">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcObject" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcObject"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelDefinesByProperties" type="ifc:IfcRelDefinesByProperties" substitutionGroup="ifc:IfcRelDefines" nillable="true"/>
	<xs:complexType name="IfcRelDefinesByProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDefines">
				<xs:sequence>
					<xs:element name="RelatingPropertyDefinition">
						<xs:complexType>
							<xs:group ref="ifc:IfcPropertySetDefinitionSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelDefinesByTemplate" type="ifc:IfcRelDefinesByTemplate" substitutionGroup="ifc:IfcRelDefines" nillable="true"/>
	<xs:complexType name="IfcRelDefinesByTemplate">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDefines">
				<xs:sequence>
					<xs:element name="RelatedPropertySets">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPropertySetDefinition" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPropertySetDefinition"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatingTemplate" type="ifc:IfcPropertySetTemplate" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelDefinesByType" type="ifc:IfcRelDefinesByType" substitutionGroup="ifc:IfcRelDefines" nillable="true"/>
	<xs:complexType name="IfcRelDefinesByType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDefines">
				<xs:sequence>
					<xs:element name="RelatingType" type="ifc:IfcTypeObject" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelFillsElement" type="ifc:IfcRelFillsElement" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelFillsElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatedBuildingElement" type="ifc:IfcElement" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelFlowControlElements" type="ifc:IfcRelFlowControlElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelFlowControlElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatedControlElements">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcDistributionControlElement" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcDistributionControlElement"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatingFlowElement" type="ifc:IfcDistributionFlowElement" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelInterferesElements" type="ifc:IfcRelInterferesElements" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelInterferesElements">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingElement">
						<xs:complexType>
							<xs:group ref="ifc:IfcInterferenceSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedElement">
						<xs:complexType>
							<xs:group ref="ifc:IfcInterferenceSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="InterferenceGeometry" type="ifc:IfcConnectionGeometry" minOccurs="0" nillable="true"/>
					<xs:element name="InterferenceSpace" type="ifc:IfcSpatialZone" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="InterferenceType" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="ImpliedOrder" type="ifc:IfcLogical" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelNests" type="ifc:IfcRelNests" substitutionGroup="ifc:IfcRelDecomposes" nillable="true"/>
	<xs:complexType name="IfcRelNests">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDecomposes">
				<xs:sequence>
					<xs:element name="RelatedObjects">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcObjectDefinition" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcObjectDefinition"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelPositions" type="ifc:IfcRelPositions" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelPositions">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingPositioningElement" type="ifc:IfcPositioningElement" nillable="true"/>
					<xs:element name="RelatedProducts">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProduct" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProduct"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelProjectsElement" type="ifc:IfcRelProjectsElement" substitutionGroup="ifc:IfcRelDecomposes" nillable="true"/>
	<xs:complexType name="IfcRelProjectsElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDecomposes">
				<xs:sequence>
					<xs:element name="RelatedFeatureElement" type="ifc:IfcFeatureElementAddition" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelReferencedInSpatialStructure" type="ifc:IfcRelReferencedInSpatialStructure" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelReferencedInSpatialStructure">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatedElements">
						<xs:complexType>
							<xs:group ref="ifc:IfcSpatialReferenceSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSpatialReferenceSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelSequence" type="ifc:IfcRelSequence" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelSequence">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingProcess" type="ifc:IfcProcess" nillable="true"/>
					<xs:element name="RelatedProcess" type="ifc:IfcProcess" nillable="true"/>
					<xs:element name="TimeLag" type="ifc:IfcLagTime" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="SequenceType" type="ifc:IfcSequenceEnum" use="optional"/>
				<xs:attribute name="UserDefinedSequenceType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelServicesBuildings" type="ifc:IfcRelServicesBuildings" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelServicesBuildings">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingSystem" type="ifc:IfcSystem" nillable="true"/>
					<xs:element name="RelatedBuildings">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcSpatialElement" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSpatialElement"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelSpaceBoundary" type="ifc:IfcRelSpaceBoundary" substitutionGroup="ifc:IfcRelConnects" nillable="true"/>
	<xs:complexType name="IfcRelSpaceBoundary">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelConnects">
				<xs:sequence>
					<xs:element name="RelatingSpace">
						<xs:complexType>
							<xs:group ref="ifc:IfcSpaceBoundarySelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatedBuildingElement" type="ifc:IfcElement" nillable="true"/>
					<xs:element name="ConnectionGeometry" type="ifc:IfcConnectionGeometry" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="PhysicalOrVirtualBoundary" type="ifc:IfcPhysicalOrVirtualEnum" use="optional"/>
				<xs:attribute name="InternalOrExternalBoundary" type="ifc:IfcInternalOrExternalEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelSpaceBoundary1stLevel" type="ifc:IfcRelSpaceBoundary1stLevel" substitutionGroup="ifc:IfcRelSpaceBoundary" nillable="true"/>
	<xs:complexType name="IfcRelSpaceBoundary1stLevel">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelSpaceBoundary">
				<xs:sequence>
					<xs:element name="ParentBoundary" type="ifc:IfcRelSpaceBoundary1stLevel" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelSpaceBoundary2ndLevel" type="ifc:IfcRelSpaceBoundary2ndLevel" substitutionGroup="ifc:IfcRelSpaceBoundary1stLevel" nillable="true"/>
	<xs:complexType name="IfcRelSpaceBoundary2ndLevel">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelSpaceBoundary1stLevel">
				<xs:sequence>
					<xs:element name="CorrespondingBoundary" type="ifc:IfcRelSpaceBoundary2ndLevel" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelVoidsElement" type="ifc:IfcRelVoidsElement" substitutionGroup="ifc:IfcRelDecomposes" nillable="true"/>
	<xs:complexType name="IfcRelVoidsElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRelDecomposes">
				<xs:sequence>
					<xs:element name="RelatedOpeningElement" type="ifc:IfcFeatureElementSubtraction" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRelationship" type="ifc:IfcRelationship" abstract="true" substitutionGroup="ifc:IfcRoot" nillable="true"/>
	<xs:complexType name="IfcRelationship" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRoot"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcReparametrisedCompositeCurveSegment" type="ifc:IfcReparametrisedCompositeCurveSegment" substitutionGroup="ifc:IfcCompositeCurveSegment" nillable="true"/>
	<xs:complexType name="IfcReparametrisedCompositeCurveSegment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCompositeCurveSegment">
				<xs:attribute name="ParamLength" type="ifc:IfcParameterValue" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRepresentation" type="ifc:IfcRepresentation" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcRepresentation" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="ContextOfItems" type="ifc:IfcRepresentationContext" nillable="true"/>
					<xs:element name="Items">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRepresentationItem" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRepresentationItem"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="RepresentationIdentifier" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="RepresentationType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRepresentationContext" type="ifc:IfcRepresentationContext" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcRepresentationContext" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="ContextIdentifier" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="ContextType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRepresentationItem" type="ifc:IfcRepresentationItem" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcRepresentationItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="StyledByItem" type="ifc:IfcStyledItem" nillable="true" minOccurs="0" maxOccurs="1"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRepresentationMap" type="ifc:IfcRepresentationMap" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcRepresentationMap">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="MappingOrigin">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="MappedRepresentation" type="ifc:IfcRepresentation" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcResource" type="ifc:IfcResource" abstract="true" substitutionGroup="ifc:IfcObject" nillable="true"/>
	<xs:complexType name="IfcResource" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObject">
				<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcResourceApprovalRelationship" type="ifc:IfcResourceApprovalRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
	<xs:complexType name="IfcResourceApprovalRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:IfcResourceLevelRelationship">
				<xs:sequence>
					<xs:element name="RelatedResourceObjects">
						<xs:complexType>
							<xs:group ref="ifc:IfcResourceObjectSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcResourceObjectSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="RelatingApproval" type="ifc:IfcApproval" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcResourceConstraintRelationship" type="ifc:IfcResourceConstraintRelationship" substitutionGroup="ifc:IfcResourceLevelRelationship" nillable="true"/>
	<xs:complexType name="IfcResourceConstraintRelationship">
		<xs:complexContent>
			<xs:extension base="ifc:IfcResourceLevelRelationship">
				<xs:sequence>
					<xs:element name="RelatingConstraint" type="ifc:IfcConstraint" nillable="true"/>
					<xs:element name="RelatedResourceObjects">
						<xs:complexType>
							<xs:group ref="ifc:IfcResourceObjectSelect" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcResourceObjectSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcResourceLevelRelationship" type="ifc:IfcResourceLevelRelationship" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcResourceLevelRelationship" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcResourceTime" type="ifc:IfcResourceTime" substitutionGroup="ifc:IfcSchedulingTime" nillable="true"/>
	<xs:complexType name="IfcResourceTime">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSchedulingTime">
				<xs:attribute name="ScheduleWork" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="ScheduleUsage" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
				<xs:attribute name="ScheduleStart" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="ScheduleFinish" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="ScheduleContour" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="LevelingDelay" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="IsOverAllocated" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="StatusTime" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="ActualWork" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="ActualUsage" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
				<xs:attribute name="ActualStart" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="ActualFinish" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="RemainingWork" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="RemainingUsage" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
				<xs:attribute name="Completion" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRevolvedAreaSolid" type="ifc:IfcRevolvedAreaSolid" substitutionGroup="ifc:IfcSweptAreaSolid" nillable="true"/>
	<xs:complexType name="IfcRevolvedAreaSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSweptAreaSolid">
				<xs:sequence>
					<xs:element name="Axis" type="ifc:IfcAxis1Placement" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Angle" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRevolvedAreaSolidTapered" type="ifc:IfcRevolvedAreaSolidTapered" substitutionGroup="ifc:IfcRevolvedAreaSolid" nillable="true"/>
	<xs:complexType name="IfcRevolvedAreaSolidTapered">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRevolvedAreaSolid">
				<xs:sequence>
					<xs:element name="EndSweptArea" type="ifc:IfcProfileDef" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRightCircularCone" type="ifc:IfcRightCircularCone" substitutionGroup="ifc:IfcCsgPrimitive3D" nillable="true"/>
	<xs:complexType name="IfcRightCircularCone">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCsgPrimitive3D">
				<xs:attribute name="Height" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="BottomRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRightCircularCylinder" type="ifc:IfcRightCircularCylinder" substitutionGroup="ifc:IfcCsgPrimitive3D" nillable="true"/>
	<xs:complexType name="IfcRightCircularCylinder">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCsgPrimitive3D">
				<xs:attribute name="Height" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRigidOperation" type="ifc:IfcRigidOperation" substitutionGroup="ifc:IfcCoordinateOperation" nillable="true"/>
	<xs:complexType name="IfcRigidOperation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCoordinateOperation">
				<xs:sequence>
					<xs:element name="FirstCoordinate">
						<xs:complexType>
							<xs:group ref="ifc:IfcMeasureValue"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SecondCoordinate">
						<xs:complexType>
							<xs:group ref="ifc:IfcMeasureValue"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Height" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRoad" type="ifc:IfcRoad" substitutionGroup="ifc:IfcFacility" nillable="true"/>
	<xs:complexType name="IfcRoad">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacility">
				<xs:attribute name="PredefinedType" type="ifc:IfcRoadTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRoadPart" type="ifc:IfcRoadPart" substitutionGroup="ifc:IfcFacilityPart" nillable="true"/>
	<xs:complexType name="IfcRoadPart">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFacilityPart">
				<xs:attribute name="PredefinedType" type="ifc:IfcRoadPartTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRoof" type="ifc:IfcRoof" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcRoof">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcRoofTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRoofType" type="ifc:IfcRoofType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcRoofType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcRoofTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRoot" type="ifc:IfcRoot" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcRoot" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="OwnerHistory" type="ifc:IfcOwnerHistory" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="GlobalId" type="ifc:IfcGloballyUniqueId" use="optional"/>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcRoundedRectangleProfileDef" type="ifc:IfcRoundedRectangleProfileDef" substitutionGroup="ifc:IfcRectangleProfileDef" nillable="true"/>
	<xs:complexType name="IfcRoundedRectangleProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRectangleProfileDef">
				<xs:attribute name="RoundingRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="IfcSIUnit-temp" abstract="true">
		<xs:complexContent>
			<xs:restriction base="ifc:IfcNamedUnit">
				<xs:attribute name="UnitType" type="ifc:IfcUnitEnum" use="optional"/>
			</xs:restriction>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSIUnit" type="ifc:IfcSIUnit" substitutionGroup="ifc:IfcNamedUnit" nillable="true"/>
	<xs:complexType name="IfcSIUnit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSIUnit-temp">
				<xs:attribute name="Prefix" type="ifc:IfcSIPrefix" use="optional"/>
				<xs:attribute name="Name" type="ifc:IfcSIUnitName" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSanitaryTerminal" type="ifc:IfcSanitaryTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcSanitaryTerminal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcSanitaryTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSanitaryTerminalType" type="ifc:IfcSanitaryTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcSanitaryTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSanitaryTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSchedulingTime" type="ifc:IfcSchedulingTime" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcSchedulingTime" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="DataOrigin" type="ifc:IfcDataOriginEnum" use="optional"/>
				<xs:attribute name="UserDefinedDataOrigin" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSeamCurve" type="ifc:IfcSeamCurve" substitutionGroup="ifc:IfcSurfaceCurve" nillable="true"/>
	<xs:complexType name="IfcSeamCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurfaceCurve"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSecondOrderPolynomialSpiral" type="ifc:IfcSecondOrderPolynomialSpiral" substitutionGroup="ifc:IfcSpiral" nillable="true"/>
	<xs:complexType name="IfcSecondOrderPolynomialSpiral">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpiral">
				<xs:attribute name="QuadraticTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="LinearTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="ConstantTerm" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSectionProperties" type="ifc:IfcSectionProperties" substitutionGroup="ifc:IfcPreDefinedProperties" nillable="true"/>
	<xs:complexType name="IfcSectionProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedProperties">
				<xs:sequence>
					<xs:element name="StartProfile" type="ifc:IfcProfileDef" nillable="true"/>
					<xs:element name="EndProfile" type="ifc:IfcProfileDef" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="SectionType" type="ifc:IfcSectionTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSectionReinforcementProperties" type="ifc:IfcSectionReinforcementProperties" substitutionGroup="ifc:IfcPreDefinedProperties" nillable="true"/>
	<xs:complexType name="IfcSectionReinforcementProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedProperties">
				<xs:sequence>
					<xs:element name="SectionDefinition" type="ifc:IfcSectionProperties" nillable="true"/>
					<xs:element name="CrossSectionReinforcementDefinitions">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcReinforcementBarProperties" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcReinforcementBarProperties"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="LongitudinalStartPosition" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="LongitudinalEndPosition" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="TransversePosition" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="ReinforcementRole" type="ifc:IfcReinforcingBarRoleEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSectionedSolid" type="ifc:IfcSectionedSolid" abstract="true" substitutionGroup="ifc:IfcSolidModel" nillable="true"/>
	<xs:complexType name="IfcSectionedSolid" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSolidModel">
				<xs:sequence>
					<xs:element name="Directrix" type="ifc:IfcCurve" nillable="true"/>
					<xs:element name="CrossSections">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProfileDef" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProfileDef"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSectionedSolidHorizontal" type="ifc:IfcSectionedSolidHorizontal" substitutionGroup="ifc:IfcSectionedSolid" nillable="true"/>
	<xs:complexType name="IfcSectionedSolidHorizontal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSectionedSolid">
				<xs:sequence>
					<xs:element name="CrossSectionPositions">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcAxis2PlacementLinear" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAxis2PlacementLinear"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSectionedSpine" type="ifc:IfcSectionedSpine" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcSectionedSpine">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="SpineCurve" type="ifc:IfcCompositeCurve" nillable="true"/>
					<xs:element name="CrossSections">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcProfileDef" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcProfileDef"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="CrossSectionPositions">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcAxis2Placement3D" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAxis2Placement3D"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSectionedSurface" type="ifc:IfcSectionedSurface" substitutionGroup="ifc:IfcSurface" nillable="true"/>
	<xs:complexType name="IfcSectionedSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurface">
				<xs:sequence>
					<xs:element name="Directrix" type="ifc:IfcCurve" nillable="true"/>
					<xs:element name="CrossSectionPositions">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcAxis2PlacementLinear" minOccurs="2" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcAxis2PlacementLinear"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</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="ifc:itemType" fixed="ifc:IfcProfileDef"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSegment" type="ifc:IfcSegment" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcSegment" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:attribute name="Transition" type="ifc:IfcTransitionCode" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSegmentedReferenceCurve" type="ifc:IfcSegmentedReferenceCurve" substitutionGroup="ifc:IfcCompositeCurve" nillable="true"/>
	<xs:complexType name="IfcSegmentedReferenceCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCompositeCurve">
				<xs:sequence>
					<xs:element name="BaseCurve" type="ifc:IfcBoundedCurve" nillable="true"/>
					<xs:element name="EndPoint" type="ifc:IfcPlacement" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSensor" type="ifc:IfcSensor" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
	<xs:complexType name="IfcSensor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcSensorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSensorType" type="ifc:IfcSensorType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcSensorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSensorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSeventhOrderPolynomialSpiral" type="ifc:IfcSeventhOrderPolynomialSpiral" substitutionGroup="ifc:IfcSpiral" nillable="true"/>
	<xs:complexType name="IfcSeventhOrderPolynomialSpiral">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpiral">
				<xs:attribute name="SepticTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="SexticTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="QuinticTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="QuarticTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="CubicTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="QuadraticTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="LinearTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="ConstantTerm" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcShadingDevice" type="ifc:IfcShadingDevice" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcShadingDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcShadingDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcShadingDeviceType" type="ifc:IfcShadingDeviceType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcShadingDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcShadingDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcShapeAspect" type="ifc:IfcShapeAspect" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcShapeAspect">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="ShapeRepresentations">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcShapeModel" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcShapeModel"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="ProductDefinitional" type="ifc:IfcLogical" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcShapeModel" type="ifc:IfcShapeModel" abstract="true" substitutionGroup="ifc:IfcRepresentation" nillable="true"/>
	<xs:complexType name="IfcShapeModel" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentation"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcShapeRepresentation" type="ifc:IfcShapeRepresentation" substitutionGroup="ifc:IfcShapeModel" nillable="true"/>
	<xs:complexType name="IfcShapeRepresentation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcShapeModel"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcShellBasedSurfaceModel" type="ifc:IfcShellBasedSurfaceModel" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcShellBasedSurfaceModel">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="SbsmBoundary">
						<xs:complexType>
							<xs:group ref="ifc:IfcShell" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcShell"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSign" type="ifc:IfcSign" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcSign">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent">
				<xs:attribute name="PredefinedType" type="ifc:IfcSignTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSignType" type="ifc:IfcSignType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcSignType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSignTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSignal" type="ifc:IfcSignal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcSignal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcSignalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSignalType" type="ifc:IfcSignalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcSignalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSignalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSimpleProperty" type="ifc:IfcSimpleProperty" abstract="true" substitutionGroup="ifc:IfcProperty" nillable="true"/>
	<xs:complexType name="IfcSimpleProperty" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProperty"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSimplePropertyTemplate" type="ifc:IfcSimplePropertyTemplate" substitutionGroup="ifc:IfcPropertyTemplate" nillable="true"/>
	<xs:complexType name="IfcSimplePropertyTemplate">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPropertyTemplate">
				<xs:sequence>
					<xs:element name="Enumerators" type="ifc:IfcPropertyEnumeration" minOccurs="0" nillable="true"/>
					<xs:element name="PrimaryUnit" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SecondaryUnit" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="TemplateType" type="ifc:IfcSimplePropertyTemplateTypeEnum" use="optional"/>
				<xs:attribute name="PrimaryMeasureType" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="SecondaryMeasureType" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Expression" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="AccessState" type="ifc:IfcStateEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSineSpiral" type="ifc:IfcSineSpiral" substitutionGroup="ifc:IfcSpiral" nillable="true"/>
	<xs:complexType name="IfcSineSpiral">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpiral">
				<xs:attribute name="SineTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="LinearTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="ConstantTerm" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSite" type="ifc:IfcSite" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
	<xs:complexType name="IfcSite">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialStructureElement">
				<xs:sequence>
					<xs:element name="SiteAddress" type="ifc:IfcPostalAddress" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="RefLatitude" type="ifc:IfcCompoundPlaneAngleMeasure" use="optional"/>
				<xs:attribute name="RefLongitude" type="ifc:IfcCompoundPlaneAngleMeasure" use="optional"/>
				<xs:attribute name="RefElevation" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="LandTitleNumber" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSlab" type="ifc:IfcSlab" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcSlab">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcSlabTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSlabType" type="ifc:IfcSlabType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcSlabType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSlabTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSlippageConnectionCondition" type="ifc:IfcSlippageConnectionCondition" substitutionGroup="ifc:IfcStructuralConnectionCondition" nillable="true"/>
	<xs:complexType name="IfcSlippageConnectionCondition">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralConnectionCondition">
				<xs:attribute name="SlippageX" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="SlippageY" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="SlippageZ" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSolarDevice" type="ifc:IfcSolarDevice" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcSolarDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcSolarDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSolarDeviceType" type="ifc:IfcSolarDeviceType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcSolarDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSolarDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSolidModel" type="ifc:IfcSolidModel" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcSolidModel" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpace" type="ifc:IfcSpace" substitutionGroup="ifc:IfcSpatialStructureElement" nillable="true"/>
	<xs:complexType name="IfcSpace">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialStructureElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcSpaceTypeEnum" use="optional"/>
				<xs:attribute name="ElevationWithFlooring" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpaceHeater" type="ifc:IfcSpaceHeater" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcSpaceHeater">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcSpaceHeaterTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpaceHeaterType" type="ifc:IfcSpaceHeaterType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcSpaceHeaterType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSpaceHeaterTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpaceType" type="ifc:IfcSpaceType" substitutionGroup="ifc:IfcSpatialStructureElementType" nillable="true"/>
	<xs:complexType name="IfcSpaceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialStructureElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSpaceTypeEnum" use="optional"/>
				<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpatialElement" type="ifc:IfcSpatialElement" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcSpatialElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct">
				<xs:sequence>
					<xs:element name="ContainsElements" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRelContainedInSpatialStructure" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelContainedInSpatialStructure"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ReferencesElements" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRelReferencedInSpatialStructure" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRelReferencedInSpatialStructure"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpatialElementType" type="ifc:IfcSpatialElementType" abstract="true" substitutionGroup="ifc:IfcTypeProduct" nillable="true"/>
	<xs:complexType name="IfcSpatialElementType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeProduct">
				<xs:attribute name="ElementType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpatialStructureElement" type="ifc:IfcSpatialStructureElement" abstract="true" substitutionGroup="ifc:IfcSpatialElement" nillable="true"/>
	<xs:complexType name="IfcSpatialStructureElement" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialElement">
				<xs:attribute name="CompositionType" type="ifc:IfcElementCompositionEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpatialStructureElementType" type="ifc:IfcSpatialStructureElementType" abstract="true" substitutionGroup="ifc:IfcSpatialElementType" nillable="true"/>
	<xs:complexType name="IfcSpatialStructureElementType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpatialZone" type="ifc:IfcSpatialZone" substitutionGroup="ifc:IfcSpatialElement" nillable="true"/>
	<xs:complexType name="IfcSpatialZone">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcSpatialZoneTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpatialZoneType" type="ifc:IfcSpatialZoneType" substitutionGroup="ifc:IfcSpatialElementType" nillable="true"/>
	<xs:complexType name="IfcSpatialZoneType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpatialElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSpatialZoneTypeEnum" use="optional"/>
				<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSphere" type="ifc:IfcSphere" substitutionGroup="ifc:IfcCsgPrimitive3D" nillable="true"/>
	<xs:complexType name="IfcSphere">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCsgPrimitive3D">
				<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSphericalSurface" type="ifc:IfcSphericalSurface" substitutionGroup="ifc:IfcElementarySurface" nillable="true"/>
	<xs:complexType name="IfcSphericalSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementarySurface">
				<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSpiral" type="ifc:IfcSpiral" abstract="true" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcSpiral" 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="IfcStackTerminal" type="ifc:IfcStackTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcStackTerminal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcStackTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStackTerminalType" type="ifc:IfcStackTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcStackTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcStackTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStair" type="ifc:IfcStair" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcStair">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcStairTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStairFlight" type="ifc:IfcStairFlight" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcStairFlight">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="NumberOfRisers" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="NumberOfTreads" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="RiserHeight" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="TreadLength" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcStairFlightTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStairFlightType" type="ifc:IfcStairFlightType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcStairFlightType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcStairFlightTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStairType" type="ifc:IfcStairType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcStairType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcStairTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralAction" type="ifc:IfcStructuralAction" abstract="true" substitutionGroup="ifc:IfcStructuralActivity" nillable="true"/>
	<xs:complexType name="IfcStructuralAction" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralActivity">
				<xs:attribute name="DestabilizingLoad" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralActivity" type="ifc:IfcStructuralActivity" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcStructuralActivity" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct">
				<xs:sequence>
					<xs:element name="AppliedLoad" type="ifc:IfcStructuralLoad" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="GlobalOrLocal" type="ifc:IfcGlobalOrLocalEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralAnalysisModel" type="ifc:IfcStructuralAnalysisModel" substitutionGroup="ifc:IfcSystem" nillable="true"/>
	<xs:complexType name="IfcStructuralAnalysisModel">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSystem">
				<xs:sequence>
					<xs:element name="OrientationOf2DPlane" type="ifc:IfcAxis2Placement3D" minOccurs="0" nillable="true"/>
					<xs:element name="LoadedBy" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcStructuralLoadGroup" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcStructuralLoadGroup"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="HasResults" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcStructuralResultGroup" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcStructuralResultGroup"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SharedPlacement" type="ifc:IfcObjectPlacement" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="PredefinedType" type="ifc:IfcAnalysisModelTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralConnection" type="ifc:IfcStructuralConnection" abstract="true" substitutionGroup="ifc:IfcStructuralItem" nillable="true"/>
	<xs:complexType name="IfcStructuralConnection" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralItem">
				<xs:sequence>
					<xs:element name="AppliedCondition" type="ifc:IfcBoundaryCondition" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralConnectionCondition" type="ifc:IfcStructuralConnectionCondition" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcStructuralConnectionCondition" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralCurveAction" type="ifc:IfcStructuralCurveAction" substitutionGroup="ifc:IfcStructuralAction" nillable="true"/>
	<xs:complexType name="IfcStructuralCurveAction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralAction">
				<xs:attribute name="ProjectedOrTrue" type="ifc:IfcProjectedOrTrueLengthEnum" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcStructuralCurveActivityTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralCurveConnection" type="ifc:IfcStructuralCurveConnection" substitutionGroup="ifc:IfcStructuralConnection" nillable="true"/>
	<xs:complexType name="IfcStructuralCurveConnection">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralConnection">
				<xs:sequence>
					<xs:element name="AxisDirection" type="ifc:IfcDirection" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralCurveMember" type="ifc:IfcStructuralCurveMember" substitutionGroup="ifc:IfcStructuralMember" nillable="true"/>
	<xs:complexType name="IfcStructuralCurveMember">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralMember">
				<xs:sequence>
					<xs:element name="Axis" type="ifc:IfcDirection" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="PredefinedType" type="ifc:IfcStructuralCurveMemberTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralCurveMemberVarying" type="ifc:IfcStructuralCurveMemberVarying" substitutionGroup="ifc:IfcStructuralCurveMember" nillable="true"/>
	<xs:complexType name="IfcStructuralCurveMemberVarying">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralCurveMember"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralCurveReaction" type="ifc:IfcStructuralCurveReaction" substitutionGroup="ifc:IfcStructuralReaction" nillable="true"/>
	<xs:complexType name="IfcStructuralCurveReaction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralReaction">
				<xs:attribute name="PredefinedType" type="ifc:IfcStructuralCurveActivityTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralItem" type="ifc:IfcStructuralItem" abstract="true" substitutionGroup="ifc:IfcProduct" nillable="true"/>
	<xs:complexType name="IfcStructuralItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProduct"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLinearAction" type="ifc:IfcStructuralLinearAction" substitutionGroup="ifc:IfcStructuralCurveAction" nillable="true"/>
	<xs:complexType name="IfcStructuralLinearAction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralCurveAction"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoad" type="ifc:IfcStructuralLoad" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcStructuralLoad" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadCase" type="ifc:IfcStructuralLoadCase" substitutionGroup="ifc:IfcStructuralLoadGroup" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadCase">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadGroup">
				<xs:attribute name="SelfWeightCoefficients" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcRatioMeasure"/>
							</xs:simpleType>
							<xs:minLength value="3"/>
							<xs:maxLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadConfiguration" type="ifc:IfcStructuralLoadConfiguration" substitutionGroup="ifc:IfcStructuralLoad" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadConfiguration">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoad">
				<xs:sequence>
					<xs:element name="Values">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcStructuralLoadOrResult" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcStructuralLoadOrResult"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Locations" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcLengthMeasure-wrapper" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcLengthMeasure-wrapper"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadGroup" type="ifc:IfcStructuralLoadGroup" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadGroup">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup">
				<xs:attribute name="PredefinedType" type="ifc:IfcLoadGroupTypeEnum" use="optional"/>
				<xs:attribute name="ActionType" type="ifc:IfcActionTypeEnum" use="optional"/>
				<xs:attribute name="ActionSource" type="ifc:IfcActionSourceTypeEnum" use="optional"/>
				<xs:attribute name="Coefficient" type="ifc:IfcRatioMeasure" use="optional"/>
				<xs:attribute name="Purpose" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadLinearForce" type="ifc:IfcStructuralLoadLinearForce" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadLinearForce">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadStatic">
				<xs:attribute name="LinearForceX" type="ifc:IfcLinearForceMeasure" use="optional"/>
				<xs:attribute name="LinearForceY" type="ifc:IfcLinearForceMeasure" use="optional"/>
				<xs:attribute name="LinearForceZ" type="ifc:IfcLinearForceMeasure" use="optional"/>
				<xs:attribute name="LinearMomentX" type="ifc:IfcLinearMomentMeasure" use="optional"/>
				<xs:attribute name="LinearMomentY" type="ifc:IfcLinearMomentMeasure" use="optional"/>
				<xs:attribute name="LinearMomentZ" type="ifc:IfcLinearMomentMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadOrResult" type="ifc:IfcStructuralLoadOrResult" abstract="true" substitutionGroup="ifc:IfcStructuralLoad" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadOrResult" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoad"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadPlanarForce" type="ifc:IfcStructuralLoadPlanarForce" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadPlanarForce">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadStatic">
				<xs:attribute name="PlanarForceX" type="ifc:IfcPlanarForceMeasure" use="optional"/>
				<xs:attribute name="PlanarForceY" type="ifc:IfcPlanarForceMeasure" use="optional"/>
				<xs:attribute name="PlanarForceZ" type="ifc:IfcPlanarForceMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadSingleDisplacement" type="ifc:IfcStructuralLoadSingleDisplacement" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadSingleDisplacement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadStatic">
				<xs:attribute name="DisplacementX" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="DisplacementY" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="DisplacementZ" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="RotationalDisplacementRX" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
				<xs:attribute name="RotationalDisplacementRY" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
				<xs:attribute name="RotationalDisplacementRZ" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadSingleDisplacementDistortion" type="ifc:IfcStructuralLoadSingleDisplacementDistortion" substitutionGroup="ifc:IfcStructuralLoadSingleDisplacement" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadSingleDisplacementDistortion">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadSingleDisplacement">
				<xs:attribute name="Distortion" type="ifc:IfcCurvatureMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadSingleForce" type="ifc:IfcStructuralLoadSingleForce" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadSingleForce">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadStatic">
				<xs:attribute name="ForceX" type="ifc:IfcForceMeasure" use="optional"/>
				<xs:attribute name="ForceY" type="ifc:IfcForceMeasure" use="optional"/>
				<xs:attribute name="ForceZ" type="ifc:IfcForceMeasure" use="optional"/>
				<xs:attribute name="MomentX" type="ifc:IfcTorqueMeasure" use="optional"/>
				<xs:attribute name="MomentY" type="ifc:IfcTorqueMeasure" use="optional"/>
				<xs:attribute name="MomentZ" type="ifc:IfcTorqueMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadSingleForceWarping" type="ifc:IfcStructuralLoadSingleForceWarping" substitutionGroup="ifc:IfcStructuralLoadSingleForce" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadSingleForceWarping">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadSingleForce">
				<xs:attribute name="WarpingMoment" type="ifc:IfcWarpingMomentMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadStatic" type="ifc:IfcStructuralLoadStatic" abstract="true" substitutionGroup="ifc:IfcStructuralLoadOrResult" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadStatic" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadOrResult"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralLoadTemperature" type="ifc:IfcStructuralLoadTemperature" substitutionGroup="ifc:IfcStructuralLoadStatic" nillable="true"/>
	<xs:complexType name="IfcStructuralLoadTemperature">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadStatic">
				<xs:attribute name="DeltaTConstant" type="ifc:IfcThermodynamicTemperatureMeasure" use="optional"/>
				<xs:attribute name="DeltaTY" type="ifc:IfcThermodynamicTemperatureMeasure" use="optional"/>
				<xs:attribute name="DeltaTZ" type="ifc:IfcThermodynamicTemperatureMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralMember" type="ifc:IfcStructuralMember" abstract="true" substitutionGroup="ifc:IfcStructuralItem" nillable="true"/>
	<xs:complexType name="IfcStructuralMember" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralPlanarAction" type="ifc:IfcStructuralPlanarAction" substitutionGroup="ifc:IfcStructuralSurfaceAction" nillable="true"/>
	<xs:complexType name="IfcStructuralPlanarAction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralSurfaceAction"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralPointAction" type="ifc:IfcStructuralPointAction" substitutionGroup="ifc:IfcStructuralAction" nillable="true"/>
	<xs:complexType name="IfcStructuralPointAction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralAction"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralPointConnection" type="ifc:IfcStructuralPointConnection" substitutionGroup="ifc:IfcStructuralConnection" nillable="true"/>
	<xs:complexType name="IfcStructuralPointConnection">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralConnection">
				<xs:sequence>
					<xs:element name="ConditionCoordinateSystem" type="ifc:IfcAxis2Placement3D" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralPointReaction" type="ifc:IfcStructuralPointReaction" substitutionGroup="ifc:IfcStructuralReaction" nillable="true"/>
	<xs:complexType name="IfcStructuralPointReaction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralReaction"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralReaction" type="ifc:IfcStructuralReaction" abstract="true" substitutionGroup="ifc:IfcStructuralActivity" nillable="true"/>
	<xs:complexType name="IfcStructuralReaction" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralActivity"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralResultGroup" type="ifc:IfcStructuralResultGroup" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcStructuralResultGroup">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup">
				<xs:sequence>
					<xs:element name="ResultForLoadGroup" type="ifc:IfcStructuralLoadGroup" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="TheoryType" type="ifc:IfcAnalysisTheoryTypeEnum" use="optional"/>
				<xs:attribute name="IsLinear" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralSurfaceAction" type="ifc:IfcStructuralSurfaceAction" substitutionGroup="ifc:IfcStructuralAction" nillable="true"/>
	<xs:complexType name="IfcStructuralSurfaceAction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralAction">
				<xs:attribute name="ProjectedOrTrue" type="ifc:IfcProjectedOrTrueLengthEnum" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcStructuralSurfaceActivityTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralSurfaceConnection" type="ifc:IfcStructuralSurfaceConnection" substitutionGroup="ifc:IfcStructuralConnection" nillable="true"/>
	<xs:complexType name="IfcStructuralSurfaceConnection">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralConnection"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralSurfaceMember" type="ifc:IfcStructuralSurfaceMember" substitutionGroup="ifc:IfcStructuralMember" nillable="true"/>
	<xs:complexType name="IfcStructuralSurfaceMember">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralMember">
				<xs:attribute name="PredefinedType" type="ifc:IfcStructuralSurfaceMemberTypeEnum" use="optional"/>
				<xs:attribute name="Thickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralSurfaceMemberVarying" type="ifc:IfcStructuralSurfaceMemberVarying" substitutionGroup="ifc:IfcStructuralSurfaceMember" nillable="true"/>
	<xs:complexType name="IfcStructuralSurfaceMemberVarying">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralSurfaceMember"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStructuralSurfaceReaction" type="ifc:IfcStructuralSurfaceReaction" substitutionGroup="ifc:IfcStructuralReaction" nillable="true"/>
	<xs:complexType name="IfcStructuralSurfaceReaction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralReaction">
				<xs:attribute name="PredefinedType" type="ifc:IfcStructuralSurfaceActivityTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStyleModel" type="ifc:IfcStyleModel" abstract="true" substitutionGroup="ifc:IfcRepresentation" nillable="true"/>
	<xs:complexType name="IfcStyleModel" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentation"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStyledItem" type="ifc:IfcStyledItem" substitutionGroup="ifc:IfcRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcStyledItem">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentationItem">
				<xs:sequence>
					<xs:element name="Styles">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPresentationStyle" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPresentationStyle"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcStyledRepresentation" type="ifc:IfcStyledRepresentation" substitutionGroup="ifc:IfcStyleModel" nillable="true"/>
	<xs:complexType name="IfcStyledRepresentation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStyleModel"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSubContractResource" type="ifc:IfcSubContractResource" substitutionGroup="ifc:IfcConstructionResource" nillable="true"/>
	<xs:complexType name="IfcSubContractResource">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResource">
				<xs:attribute name="PredefinedType" type="ifc:IfcSubContractResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSubContractResourceType" type="ifc:IfcSubContractResourceType" substitutionGroup="ifc:IfcConstructionResourceType" nillable="true"/>
	<xs:complexType name="IfcSubContractResourceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcConstructionResourceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSubContractResourceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSubedge" type="ifc:IfcSubedge" substitutionGroup="ifc:IfcEdge" nillable="true"/>
	<xs:complexType name="IfcSubedge">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEdge">
				<xs:sequence>
					<xs:element name="ParentEdge" type="ifc:IfcEdge" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurface" type="ifc:IfcSurface" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcSurface" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceCurve" type="ifc:IfcSurfaceCurve" substitutionGroup="ifc:IfcCurve" nillable="true"/>
	<xs:complexType name="IfcSurfaceCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcCurve">
				<xs:sequence>
					<xs:element name="Curve3D" type="ifc:IfcCurve" nillable="true"/>
					<xs:element name="AssociatedGeometry">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPcurve" maxOccurs="2"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPcurve"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="MasterRepresentation" type="ifc:IfcPreferredSurfaceCurveRepresentation" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceCurveSweptAreaSolid" type="ifc:IfcSurfaceCurveSweptAreaSolid" substitutionGroup="ifc:IfcDirectrixCurveSweptAreaSolid" nillable="true"/>
	<xs:complexType name="IfcSurfaceCurveSweptAreaSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDirectrixCurveSweptAreaSolid">
				<xs:sequence>
					<xs:element name="ReferenceSurface" type="ifc:IfcSurface" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceFeature" type="ifc:IfcSurfaceFeature" substitutionGroup="ifc:IfcFeatureElement" nillable="true"/>
	<xs:complexType name="IfcSurfaceFeature">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcSurfaceFeatureTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceOfLinearExtrusion" type="ifc:IfcSurfaceOfLinearExtrusion" substitutionGroup="ifc:IfcSweptSurface" nillable="true"/>
	<xs:complexType name="IfcSurfaceOfLinearExtrusion">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSweptSurface">
				<xs:sequence>
					<xs:element name="ExtrudedDirection" type="ifc:IfcDirection" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Depth" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceOfRevolution" type="ifc:IfcSurfaceOfRevolution" substitutionGroup="ifc:IfcSweptSurface" nillable="true"/>
	<xs:complexType name="IfcSurfaceOfRevolution">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSweptSurface">
				<xs:sequence>
					<xs:element name="AxisPosition" type="ifc:IfcAxis1Placement" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceReinforcementArea" type="ifc:IfcSurfaceReinforcementArea" substitutionGroup="ifc:IfcStructuralLoadOrResult" nillable="true"/>
	<xs:complexType name="IfcSurfaceReinforcementArea">
		<xs:complexContent>
			<xs:extension base="ifc:IfcStructuralLoadOrResult">
				<xs:attribute name="SurfaceReinforcement1" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLengthMeasure"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
							<xs:maxLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="SurfaceReinforcement2" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLengthMeasure"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
							<xs:maxLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="ShearReinforcement" type="ifc:IfcRatioMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyle" type="ifc:IfcSurfaceStyle" substitutionGroup="ifc:IfcPresentationStyle" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationStyle">
				<xs:sequence>
					<xs:element name="Styles">
						<xs:complexType>
							<xs:group ref="ifc:IfcSurfaceStyleElementSelect" maxOccurs="5"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSurfaceStyleElementSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Side" type="ifc:IfcSurfaceSide" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyleLighting" type="ifc:IfcSurfaceStyleLighting" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyleLighting">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:sequence>
					<xs:element name="DiffuseTransmissionColour" type="ifc:IfcColourRgb" nillable="true"/>
					<xs:element name="DiffuseReflectionColour" type="ifc:IfcColourRgb" nillable="true"/>
					<xs:element name="TransmissionColour" type="ifc:IfcColourRgb" nillable="true"/>
					<xs:element name="ReflectanceColour" type="ifc:IfcColourRgb" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyleRefraction" type="ifc:IfcSurfaceStyleRefraction" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyleRefraction">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:attribute name="RefractionIndex" type="ifc:IfcReal" use="optional"/>
				<xs:attribute name="DispersionFactor" type="ifc:IfcReal" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyleRendering" type="ifc:IfcSurfaceStyleRendering" substitutionGroup="ifc:IfcSurfaceStyleShading" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyleRendering">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurfaceStyleShading">
				<xs:sequence>
					<xs:element name="DiffuseColour" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcColourOrFactor"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="TransmissionColour" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcColourOrFactor"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="DiffuseTransmissionColour" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcColourOrFactor"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ReflectionColour" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcColourOrFactor"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SpecularColour" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcColourOrFactor"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="SpecularHighlight" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcSpecularHighlightSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ReflectanceMethod" type="ifc:IfcReflectanceMethodEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyleShading" type="ifc:IfcSurfaceStyleShading" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyleShading">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:sequence>
					<xs:element name="SurfaceColour" type="ifc:IfcColourRgb" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Transparency" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceStyleWithTextures" type="ifc:IfcSurfaceStyleWithTextures" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcSurfaceStyleWithTextures">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:sequence>
					<xs:element name="Textures">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcSurfaceTexture" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSurfaceTexture"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSurfaceTexture" type="ifc:IfcSurfaceTexture" abstract="true" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcSurfaceTexture" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:sequence>
					<xs:element name="TextureTransform" type="ifc:IfcCartesianTransformationOperator2D" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="RepeatS" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="RepeatT" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="Mode" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="Parameter" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcIdentifier"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSweptAreaSolid" type="ifc:IfcSweptAreaSolid" abstract="true" substitutionGroup="ifc:IfcSolidModel" nillable="true"/>
	<xs:complexType name="IfcSweptAreaSolid" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSolidModel">
				<xs:sequence>
					<xs:element name="SweptArea" type="ifc:IfcProfileDef" nillable="true"/>
					<xs:element name="Position" type="ifc:IfcAxis2Placement3D" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSweptDiskSolid" type="ifc:IfcSweptDiskSolid" substitutionGroup="ifc:IfcSolidModel" nillable="true"/>
	<xs:complexType name="IfcSweptDiskSolid">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSolidModel">
				<xs:sequence>
					<xs:element name="Directrix" type="ifc:IfcCurve" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Radius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="InnerRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="StartParam" type="ifc:IfcParameterValue" use="optional"/>
				<xs:attribute name="EndParam" type="ifc:IfcParameterValue" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSweptDiskSolidPolygonal" type="ifc:IfcSweptDiskSolidPolygonal" substitutionGroup="ifc:IfcSweptDiskSolid" nillable="true"/>
	<xs:complexType name="IfcSweptDiskSolidPolygonal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSweptDiskSolid">
				<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSweptSurface" type="ifc:IfcSweptSurface" abstract="true" substitutionGroup="ifc:IfcSurface" nillable="true"/>
	<xs:complexType name="IfcSweptSurface" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSurface">
				<xs:sequence>
					<xs:element name="SweptCurve" type="ifc:IfcProfileDef" nillable="true"/>
					<xs:element name="Position" type="ifc:IfcAxis2Placement3D" minOccurs="0" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSwitchingDevice" type="ifc:IfcSwitchingDevice" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
	<xs:complexType name="IfcSwitchingDevice">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowController">
				<xs:attribute name="PredefinedType" type="ifc:IfcSwitchingDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSwitchingDeviceType" type="ifc:IfcSwitchingDeviceType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcSwitchingDeviceType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSwitchingDeviceTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSystem" type="ifc:IfcSystem" substitutionGroup="ifc:IfcGroup" nillable="true"/>
	<xs:complexType name="IfcSystem">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGroup"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSystemFurnitureElement" type="ifc:IfcSystemFurnitureElement" substitutionGroup="ifc:IfcFurnishingElement" nillable="true"/>
	<xs:complexType name="IfcSystemFurnitureElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFurnishingElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcSystemFurnitureElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcSystemFurnitureElementType" type="ifc:IfcSystemFurnitureElementType" substitutionGroup="ifc:IfcFurnishingElementType" nillable="true"/>
	<xs:complexType name="IfcSystemFurnitureElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFurnishingElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcSystemFurnitureElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTShapeProfileDef" type="ifc:IfcTShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcTShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="WebThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeEdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="WebEdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="WebSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
				<xs:attribute name="FlangeSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTable" type="ifc:IfcTable" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcTable">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Rows" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcTableRow" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTableRow"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Columns" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcTableColumn" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTableColumn"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTableColumn" type="ifc:IfcTableColumn" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcTableColumn">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Unit" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ReferencePath" type="ifc:IfcReference" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Identifier" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTableRow" type="ifc:IfcTableRow" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcTableRow">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="RowCells" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="IsHeading" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTank" type="ifc:IfcTank" substitutionGroup="ifc:IfcFlowStorageDevice" nillable="true"/>
	<xs:complexType name="IfcTank">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowStorageDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcTankTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTankType" type="ifc:IfcTankType" substitutionGroup="ifc:IfcFlowStorageDeviceType" nillable="true"/>
	<xs:complexType name="IfcTankType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowStorageDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcTankTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTask" type="ifc:IfcTask" substitutionGroup="ifc:IfcProcess" nillable="true"/>
	<xs:complexType name="IfcTask">
		<xs:complexContent>
			<xs:extension base="ifc:IfcProcess">
				<xs:sequence>
					<xs:element name="TaskTime" type="ifc:IfcTaskTime" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Status" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="WorkMethod" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="IsMilestone" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="Priority" type="ifc:IfcInteger" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcTaskTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTaskTime" type="ifc:IfcTaskTime" substitutionGroup="ifc:IfcSchedulingTime" nillable="true"/>
	<xs:complexType name="IfcTaskTime">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSchedulingTime">
				<xs:attribute name="DurationType" type="ifc:IfcTaskDurationEnum" use="optional"/>
				<xs:attribute name="ScheduleDuration" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="ScheduleStart" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="ScheduleFinish" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="EarlyStart" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="EarlyFinish" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="LateStart" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="LateFinish" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="FreeFloat" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="TotalFloat" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="IsCritical" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="StatusTime" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="ActualDuration" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="ActualStart" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="ActualFinish" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="RemainingTime" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="Completion" type="ifc:IfcPositiveRatioMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTaskTimeRecurring" type="ifc:IfcTaskTimeRecurring" substitutionGroup="ifc:IfcTaskTime" nillable="true"/>
	<xs:complexType name="IfcTaskTimeRecurring">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTaskTime">
				<xs:sequence>
					<xs:element name="Recurrence" type="ifc:IfcRecurrencePattern" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTaskType" type="ifc:IfcTaskType" substitutionGroup="ifc:IfcTypeProcess" nillable="true"/>
	<xs:complexType name="IfcTaskType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeProcess">
				<xs:attribute name="PredefinedType" type="ifc:IfcTaskTypeEnum" use="optional"/>
				<xs:attribute name="WorkMethod" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTelecomAddress" type="ifc:IfcTelecomAddress" substitutionGroup="ifc:IfcAddress" nillable="true"/>
	<xs:complexType name="IfcTelecomAddress">
		<xs:complexContent>
			<xs:extension base="ifc:IfcAddress">
				<xs:attribute name="TelephoneNumbers" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLabel"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="FacsimileNumbers" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLabel"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="PagerNumber" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="ElectronicMailAddresses" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLabel"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="WWWHomePageURL" type="ifc:IfcURIReference" use="optional"/>
				<xs:attribute name="MessagingIDs" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcURIReference"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTendon" type="ifc:IfcTendon" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
	<xs:complexType name="IfcTendon">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcTendonTypeEnum" use="optional"/>
				<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="CrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
				<xs:attribute name="TensionForce" type="ifc:IfcForceMeasure" use="optional"/>
				<xs:attribute name="PreStress" type="ifc:IfcPressureMeasure" use="optional"/>
				<xs:attribute name="FrictionCoefficient" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="AnchorageSlip" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="MinCurvatureRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTendonAnchor" type="ifc:IfcTendonAnchor" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
	<xs:complexType name="IfcTendonAnchor">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcTendonAnchorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTendonAnchorType" type="ifc:IfcTendonAnchorType" substitutionGroup="ifc:IfcReinforcingElementType" nillable="true"/>
	<xs:complexType name="IfcTendonAnchorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcTendonAnchorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTendonConduit" type="ifc:IfcTendonConduit" substitutionGroup="ifc:IfcReinforcingElement" nillable="true"/>
	<xs:complexType name="IfcTendonConduit">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcTendonConduitTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTendonConduitType" type="ifc:IfcTendonConduitType" substitutionGroup="ifc:IfcReinforcingElementType" nillable="true"/>
	<xs:complexType name="IfcTendonConduitType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcTendonConduitTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTendonType" type="ifc:IfcTendonType" substitutionGroup="ifc:IfcReinforcingElementType" nillable="true"/>
	<xs:complexType name="IfcTendonType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcReinforcingElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcTendonTypeEnum" use="optional"/>
				<xs:attribute name="NominalDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="CrossSectionArea" type="ifc:IfcAreaMeasure" use="optional"/>
				<xs:attribute name="SheathDiameter" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTessellatedFaceSet" type="ifc:IfcTessellatedFaceSet" abstract="true" substitutionGroup="ifc:IfcTessellatedItem" nillable="true"/>
	<xs:complexType name="IfcTessellatedFaceSet" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTessellatedItem">
				<xs:sequence>
					<xs:element name="Coordinates" type="ifc:IfcCartesianPointList3D" nillable="true"/>
					<xs:element name="HasColours" type="ifc:IfcIndexedColourMap" nillable="true" minOccurs="0" maxOccurs="1"/>
					<xs:element name="HasTextures" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcIndexedTextureMap" minOccurs="0" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcIndexedTextureMap"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTessellatedItem" type="ifc:IfcTessellatedItem" abstract="true" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcTessellatedItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextLiteral" type="ifc:IfcTextLiteral" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcTextLiteral">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Placement">
						<xs:complexType>
							<xs:group ref="ifc:IfcAxis2Placement"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Literal" type="ifc:IfcPresentableText" use="optional"/>
				<xs:attribute name="Path" type="ifc:IfcTextPath" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextLiteralWithExtent" type="ifc:IfcTextLiteralWithExtent" substitutionGroup="ifc:IfcTextLiteral" nillable="true"/>
	<xs:complexType name="IfcTextLiteralWithExtent">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTextLiteral">
				<xs:sequence>
					<xs:element name="Extent" type="ifc:IfcPlanarExtent" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="BoxAlignment" type="ifc:IfcBoxAlignment" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextStyle" type="ifc:IfcTextStyle" substitutionGroup="ifc:IfcPresentationStyle" nillable="true"/>
	<xs:complexType name="IfcTextStyle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationStyle">
				<xs:sequence>
					<xs:element name="TextCharacterAppearance" type="ifc:IfcTextStyleForDefinedFont" minOccurs="0" nillable="true"/>
					<xs:element name="TextStyle" type="ifc:IfcTextStyleTextModel" minOccurs="0" nillable="true"/>
					<xs:element name="TextFontStyle">
						<xs:complexType>
							<xs:group ref="ifc:IfcTextFontSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ModelOrDraughting" type="ifc:IfcBoolean" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextStyleFontModel" type="ifc:IfcTextStyleFontModel" substitutionGroup="ifc:IfcPreDefinedTextFont" nillable="true"/>
	<xs:complexType name="IfcTextStyleFontModel">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedTextFont">
				<xs:sequence>
					<xs:element name="FontFamily">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcTextFontName-wrapper" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTextFontName-wrapper"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="FontSize">
						<xs:complexType>
							<xs:group ref="ifc:IfcSizeSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="FontStyle" type="ifc:IfcFontStyle" use="optional"/>
				<xs:attribute name="FontVariant" type="ifc:IfcFontVariant" use="optional"/>
				<xs:attribute name="FontWeight" type="ifc:IfcFontWeight" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextStyleForDefinedFont" type="ifc:IfcTextStyleForDefinedFont" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcTextStyleForDefinedFont">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:sequence>
					<xs:element name="Colour">
						<xs:complexType>
							<xs:group ref="ifc:IfcColour"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="BackgroundColour" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcColour"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextStyleTextModel" type="ifc:IfcTextStyleTextModel" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcTextStyleTextModel">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:sequence>
					<xs:element name="TextIndent" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcSizeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LetterSpacing" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcSizeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="WordSpacing" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcSizeSelect"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="LineHeight" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcSizeSelect"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="TextAlign" type="ifc:IfcTextAlignment" use="optional"/>
				<xs:attribute name="TextDecoration" type="ifc:IfcTextDecoration" use="optional"/>
				<xs:attribute name="TextTransform" type="ifc:IfcTextTransformation" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureCoordinate" type="ifc:IfcTextureCoordinate" abstract="true" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcTextureCoordinate" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:sequence>
					<xs:element name="Maps">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcSurfaceTexture" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcSurfaceTexture"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureCoordinateGenerator" type="ifc:IfcTextureCoordinateGenerator" substitutionGroup="ifc:IfcTextureCoordinate" nillable="true"/>
	<xs:complexType name="IfcTextureCoordinateGenerator">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTextureCoordinate">
				<xs:attribute name="Mode" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Parameter" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcReal"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureCoordinateIndices" type="ifc:IfcTextureCoordinateIndices" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcTextureCoordinateIndices">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="TexCoordsOf" type="ifc:IfcIndexedPolygonalFace" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="TexCoordIndex" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcPositiveInteger"/>
							</xs:simpleType>
							<xs:minLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureCoordinateIndicesWithVoids" type="ifc:IfcTextureCoordinateIndicesWithVoids" substitutionGroup="ifc:IfcTextureCoordinateIndices" nillable="true"/>
	<xs:complexType name="IfcTextureCoordinateIndicesWithVoids">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTextureCoordinateIndices">
				<xs:attribute name="InnerTexCoordIndices" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcPositiveInteger"/>
							</xs:simpleType>
							<xs:minLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureMap" type="ifc:IfcTextureMap" substitutionGroup="ifc:IfcTextureCoordinate" nillable="true"/>
	<xs:complexType name="IfcTextureMap">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTextureCoordinate">
				<xs:sequence>
					<xs:element name="Vertices">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcTextureVertex" minOccurs="3" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTextureVertex"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="MappedTo" type="ifc:IfcFace" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureVertex" type="ifc:IfcTextureVertex" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcTextureVertex">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:attribute name="Coordinates" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcParameterValue"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
							<xs:maxLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTextureVertexList" type="ifc:IfcTextureVertexList" substitutionGroup="ifc:IfcPresentationItem" nillable="true"/>
	<xs:complexType name="IfcTextureVertexList">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPresentationItem">
				<xs:attribute name="TexCoordsList" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcParameterValue"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcThirdOrderPolynomialSpiral" type="ifc:IfcThirdOrderPolynomialSpiral" substitutionGroup="ifc:IfcSpiral" nillable="true"/>
	<xs:complexType name="IfcThirdOrderPolynomialSpiral">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSpiral">
				<xs:attribute name="CubicTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="QuadraticTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="LinearTerm" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="ConstantTerm" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTimePeriod" type="ifc:IfcTimePeriod" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcTimePeriod">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:attribute name="StartTime" type="ifc:IfcTime" use="optional"/>
				<xs:attribute name="EndTime" type="ifc:IfcTime" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTimeSeries" type="ifc:IfcTimeSeries" abstract="true" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcTimeSeries" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Unit" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Name" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Description" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="StartTime" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="EndTime" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="TimeSeriesDataType" type="ifc:IfcTimeSeriesDataTypeEnum" use="optional"/>
				<xs:attribute name="DataOrigin" type="ifc:IfcDataOriginEnum" use="optional"/>
				<xs:attribute name="UserDefinedDataOrigin" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTimeSeriesValue" type="ifc:IfcTimeSeriesValue" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcTimeSeriesValue">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="ListValues">
						<xs:complexType>
							<xs:group ref="ifc:IfcValue" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcValue"/>
							<xs:attribute ref="ifc:cType" fixed="list"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTopologicalRepresentationItem" type="ifc:IfcTopologicalRepresentationItem" abstract="true" substitutionGroup="ifc:IfcRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcTopologicalRepresentationItem" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTopologyRepresentation" type="ifc:IfcTopologyRepresentation" substitutionGroup="ifc:IfcShapeModel" nillable="true"/>
	<xs:complexType name="IfcTopologyRepresentation">
		<xs:complexContent>
			<xs:extension base="ifc:IfcShapeModel"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcToroidalSurface" type="ifc:IfcToroidalSurface" substitutionGroup="ifc:IfcElementarySurface" nillable="true"/>
	<xs:complexType name="IfcToroidalSurface">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementarySurface">
				<xs:attribute name="MajorRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="MinorRadius" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTrackElement" type="ifc:IfcTrackElement" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcTrackElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcTrackElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTrackElementType" type="ifc:IfcTrackElementType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcTrackElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcTrackElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTransformer" type="ifc:IfcTransformer" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcTransformer">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcTransformerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTransformerType" type="ifc:IfcTransformerType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcTransformerType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcTransformerTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTransportElement" type="ifc:IfcTransportElement" substitutionGroup="ifc:IfcTransportationDevice" nillable="true"/>
	<xs:complexType name="IfcTransportElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTransportationDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcTransportElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTransportElementType" type="ifc:IfcTransportElementType" substitutionGroup="ifc:IfcTransportationDeviceType" nillable="true"/>
	<xs:complexType name="IfcTransportElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTransportationDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcTransportElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTransportationDevice" type="ifc:IfcTransportationDevice" abstract="true" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcTransportationDevice" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTransportationDeviceType" type="ifc:IfcTransportationDeviceType" abstract="true" substitutionGroup="ifc:IfcElementType" nillable="true"/>
	<xs:complexType name="IfcTransportationDeviceType" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementType"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTrapeziumProfileDef" type="ifc:IfcTrapeziumProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcTrapeziumProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="BottomXDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="TopXDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="YDim" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="TopXOffset" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTriangulatedFaceSet" type="ifc:IfcTriangulatedFaceSet" substitutionGroup="ifc:IfcTessellatedFaceSet" nillable="true"/>
	<xs:complexType name="IfcTriangulatedFaceSet">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTessellatedFaceSet">
				<xs:attribute name="Normals" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcParameterValue"/>
							</xs:simpleType>
							<xs:minLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="Closed" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="CoordIndex" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcPositiveInteger"/>
							</xs:simpleType>
							<xs:minLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
				<xs:attribute name="PnIndex" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcPositiveInteger"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTriangulatedIrregularNetwork" type="ifc:IfcTriangulatedIrregularNetwork" substitutionGroup="ifc:IfcTriangulatedFaceSet" nillable="true"/>
	<xs:complexType name="IfcTriangulatedIrregularNetwork">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTriangulatedFaceSet">
				<xs:attribute name="Flags" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcInteger"/>
							</xs:simpleType>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTrimmedCurve" type="ifc:IfcTrimmedCurve" substitutionGroup="ifc:IfcBoundedCurve" nillable="true"/>
	<xs:complexType name="IfcTrimmedCurve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBoundedCurve">
				<xs:sequence>
					<xs:element name="BasisCurve" type="ifc:IfcCurve" nillable="true"/>
					<xs:element name="Trim1">
						<xs:complexType>
							<xs:group ref="ifc:IfcTrimmingSelect" maxOccurs="2"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTrimmingSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="Trim2">
						<xs:complexType>
							<xs:group ref="ifc:IfcTrimmingSelect" maxOccurs="2"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcTrimmingSelect"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="SenseAgreement" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="MasterRepresentation" type="ifc:IfcTrimmingPreference" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTubeBundle" type="ifc:IfcTubeBundle" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcTubeBundle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcTubeBundleTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTubeBundleType" type="ifc:IfcTubeBundleType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcTubeBundleType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcTubeBundleTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTypeObject" type="ifc:IfcTypeObject" substitutionGroup="ifc:IfcObjectDefinition" nillable="true"/>
	<xs:complexType name="IfcTypeObject">
		<xs:complexContent>
			<xs:extension base="ifc:IfcObjectDefinition">
				<xs:sequence>
					<xs:element name="HasPropertySets" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPropertySetDefinition" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPropertySetDefinition"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="ApplicableOccurrence" type="ifc:IfcIdentifier" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTypeProcess" type="ifc:IfcTypeProcess" abstract="true" substitutionGroup="ifc:IfcTypeObject" nillable="true"/>
	<xs:complexType name="IfcTypeProcess" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeObject">
				<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="ProcessType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTypeProduct" type="ifc:IfcTypeProduct" substitutionGroup="ifc:IfcTypeObject" nillable="true"/>
	<xs:complexType name="IfcTypeProduct">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeObject">
				<xs:sequence>
					<xs:element name="RepresentationMaps" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcRepresentationMap" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcRepresentationMap"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="Tag" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcTypeResource" type="ifc:IfcTypeResource" abstract="true" substitutionGroup="ifc:IfcTypeObject" nillable="true"/>
	<xs:complexType name="IfcTypeResource" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTypeObject">
				<xs:attribute name="Identification" type="ifc:IfcIdentifier" use="optional"/>
				<xs:attribute name="LongDescription" type="ifc:IfcText" use="optional"/>
				<xs:attribute name="ResourceType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcUShapeProfileDef" type="ifc:IfcUShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcUShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="WebThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="EdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeSlope" type="ifc:IfcPlaneAngleMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcUnitAssignment" type="ifc:IfcUnitAssignment" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcUnitAssignment">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="Units">
						<xs:complexType>
							<xs:group ref="ifc:IfcUnit" maxOccurs="unbounded"/>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcUnit"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcUnitaryControlElement" type="ifc:IfcUnitaryControlElement" substitutionGroup="ifc:IfcDistributionControlElement" nillable="true"/>
	<xs:complexType name="IfcUnitaryControlElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcUnitaryControlElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcUnitaryControlElementType" type="ifc:IfcUnitaryControlElementType" substitutionGroup="ifc:IfcDistributionControlElementType" nillable="true"/>
	<xs:complexType name="IfcUnitaryControlElementType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcDistributionControlElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcUnitaryControlElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcUnitaryEquipment" type="ifc:IfcUnitaryEquipment" substitutionGroup="ifc:IfcEnergyConversionDevice" nillable="true"/>
	<xs:complexType name="IfcUnitaryEquipment">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcUnitaryEquipmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcUnitaryEquipmentType" type="ifc:IfcUnitaryEquipmentType" substitutionGroup="ifc:IfcEnergyConversionDeviceType" nillable="true"/>
	<xs:complexType name="IfcUnitaryEquipmentType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcEnergyConversionDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcUnitaryEquipmentTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcValve" type="ifc:IfcValve" substitutionGroup="ifc:IfcFlowController" nillable="true"/>
	<xs:complexType name="IfcValve">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowController">
				<xs:attribute name="PredefinedType" type="ifc:IfcValveTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcValveType" type="ifc:IfcValveType" substitutionGroup="ifc:IfcFlowControllerType" nillable="true"/>
	<xs:complexType name="IfcValveType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowControllerType">
				<xs:attribute name="PredefinedType" type="ifc:IfcValveTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVector" type="ifc:IfcVector" substitutionGroup="ifc:IfcGeometricRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcVector">
		<xs:complexContent>
			<xs:extension base="ifc:IfcGeometricRepresentationItem">
				<xs:sequence>
					<xs:element name="Orientation" type="ifc:IfcDirection" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="Magnitude" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVehicle" type="ifc:IfcVehicle" substitutionGroup="ifc:IfcTransportationDevice" nillable="true"/>
	<xs:complexType name="IfcVehicle">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTransportationDevice">
				<xs:attribute name="PredefinedType" type="ifc:IfcVehicleTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVehicleType" type="ifc:IfcVehicleType" substitutionGroup="ifc:IfcTransportationDeviceType" nillable="true"/>
	<xs:complexType name="IfcVehicleType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTransportationDeviceType">
				<xs:attribute name="PredefinedType" type="ifc:IfcVehicleTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVertex" type="ifc:IfcVertex" substitutionGroup="ifc:IfcTopologicalRepresentationItem" nillable="true"/>
	<xs:complexType name="IfcVertex">
		<xs:complexContent>
			<xs:extension base="ifc:IfcTopologicalRepresentationItem"/>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVertexLoop" type="ifc:IfcVertexLoop" substitutionGroup="ifc:IfcLoop" nillable="true"/>
	<xs:complexType name="IfcVertexLoop">
		<xs:complexContent>
			<xs:extension base="ifc:IfcLoop">
				<xs:sequence>
					<xs:element name="LoopVertex" type="ifc:IfcVertex" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVertexPoint" type="ifc:IfcVertexPoint" substitutionGroup="ifc:IfcVertex" nillable="true"/>
	<xs:complexType name="IfcVertexPoint">
		<xs:complexContent>
			<xs:extension base="ifc:IfcVertex">
				<xs:sequence>
					<xs:element name="VertexGeometry" type="ifc:IfcPoint" nillable="true"/>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVibrationDamper" type="ifc:IfcVibrationDamper" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcVibrationDamper">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent">
				<xs:attribute name="PredefinedType" type="ifc:IfcVibrationDamperTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVibrationDamperType" type="ifc:IfcVibrationDamperType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcVibrationDamperType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcVibrationDamperTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVibrationIsolator" type="ifc:IfcVibrationIsolator" substitutionGroup="ifc:IfcElementComponent" nillable="true"/>
	<xs:complexType name="IfcVibrationIsolator">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponent">
				<xs:attribute name="PredefinedType" type="ifc:IfcVibrationIsolatorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVibrationIsolatorType" type="ifc:IfcVibrationIsolatorType" substitutionGroup="ifc:IfcElementComponentType" nillable="true"/>
	<xs:complexType name="IfcVibrationIsolatorType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElementComponentType">
				<xs:attribute name="PredefinedType" type="ifc:IfcVibrationIsolatorTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVirtualElement" type="ifc:IfcVirtualElement" substitutionGroup="ifc:IfcElement" nillable="true"/>
	<xs:complexType name="IfcVirtualElement">
		<xs:complexContent>
			<xs:extension base="ifc:IfcElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcVirtualElementTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVirtualGridIntersection" type="ifc:IfcVirtualGridIntersection" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcVirtualGridIntersection">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="IntersectingAxes">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcGridAxis" minOccurs="2" maxOccurs="2"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcGridAxis"/>
							<xs:attribute ref="ifc:cType" fixed="list-unique"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="OffsetDistances" use="optional">
					<xs:simpleType>
						<xs:restriction>
							<xs:simpleType>
								<xs:list itemType="ifc:IfcLengthMeasure"/>
							</xs:simpleType>
							<xs:minLength value="2"/>
							<xs:maxLength value="3"/>
						</xs:restriction>
					</xs:simpleType>
				</xs:attribute>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcVoidingFeature" type="ifc:IfcVoidingFeature" substitutionGroup="ifc:IfcFeatureElementSubtraction" nillable="true"/>
	<xs:complexType name="IfcVoidingFeature">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFeatureElementSubtraction">
				<xs:attribute name="PredefinedType" type="ifc:IfcVoidingFeatureTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWall" type="ifc:IfcWall" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcWall">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="PredefinedType" type="ifc:IfcWallTypeEnum" use="optional"/>
			</xs:extension>
		</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:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcWallType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcWallTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWasteTerminal" type="ifc:IfcWasteTerminal" substitutionGroup="ifc:IfcFlowTerminal" nillable="true"/>
	<xs:complexType name="IfcWasteTerminal">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminal">
				<xs:attribute name="PredefinedType" type="ifc:IfcWasteTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWasteTerminalType" type="ifc:IfcWasteTerminalType" substitutionGroup="ifc:IfcFlowTerminalType" nillable="true"/>
	<xs:complexType name="IfcWasteTerminalType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcFlowTerminalType">
				<xs:attribute name="PredefinedType" type="ifc:IfcWasteTerminalTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWellKnownText" type="ifc:IfcWellKnownText" substitutionGroup="ifc:Entity" nillable="true"/>
	<xs:complexType name="IfcWellKnownText">
		<xs:complexContent>
			<xs:extension base="ifc:Entity">
				<xs:sequence>
					<xs:element name="CoordinateReferenceSystem" type="ifc:IfcCoordinateReferenceSystem" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="WellKnownText" type="ifc:IfcWellKnownTextLiteral" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWindow" type="ifc:IfcWindow" substitutionGroup="ifc:IfcBuiltElement" nillable="true"/>
	<xs:complexType name="IfcWindow">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElement">
				<xs:attribute name="OverallHeight" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="OverallWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="PredefinedType" type="ifc:IfcWindowTypeEnum" use="optional"/>
				<xs:attribute name="PartitioningType" type="ifc:IfcWindowTypePartitioningEnum" use="optional"/>
				<xs:attribute name="UserDefinedPartitioningType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWindowLiningProperties" type="ifc:IfcWindowLiningProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
	<xs:complexType name="IfcWindowLiningProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedPropertySet">
				<xs:sequence>
					<xs:element name="ShapeAspectStyle" type="ifc:IfcShapeAspect" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="LiningDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="LiningThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="TransomThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="MullionThickness" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="FirstTransomOffset" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="SecondTransomOffset" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="FirstMullionOffset" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="SecondMullionOffset" type="ifc:IfcNormalisedRatioMeasure" use="optional"/>
				<xs:attribute name="LiningOffset" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="LiningToPanelOffsetX" type="ifc:IfcLengthMeasure" use="optional"/>
				<xs:attribute name="LiningToPanelOffsetY" type="ifc:IfcLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWindowPanelProperties" type="ifc:IfcWindowPanelProperties" substitutionGroup="ifc:IfcPreDefinedPropertySet" nillable="true"/>
	<xs:complexType name="IfcWindowPanelProperties">
		<xs:complexContent>
			<xs:extension base="ifc:IfcPreDefinedPropertySet">
				<xs:sequence>
					<xs:element name="ShapeAspectStyle" type="ifc:IfcShapeAspect" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="OperationType" type="ifc:IfcWindowPanelOperationEnum" use="optional"/>
				<xs:attribute name="PanelPosition" type="ifc:IfcWindowPanelPositionEnum" use="optional"/>
				<xs:attribute name="FrameDepth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FrameThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWindowType" type="ifc:IfcWindowType" substitutionGroup="ifc:IfcBuiltElementType" nillable="true"/>
	<xs:complexType name="IfcWindowType">
		<xs:complexContent>
			<xs:extension base="ifc:IfcBuiltElementType">
				<xs:attribute name="PredefinedType" type="ifc:IfcWindowTypeEnum" use="optional"/>
				<xs:attribute name="PartitioningType" type="ifc:IfcWindowTypePartitioningEnum" use="optional"/>
				<xs:attribute name="ParameterTakesPrecedence" type="ifc:IfcBoolean" use="optional"/>
				<xs:attribute name="UserDefinedPartitioningType" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWorkCalendar" type="ifc:IfcWorkCalendar" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcWorkCalendar">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="WorkingTimes" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcWorkTime" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcWorkTime"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
					<xs:element name="ExceptionTimes" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcWorkTime" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcWorkTime"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="PredefinedType" type="ifc:IfcWorkCalendarTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWorkControl" type="ifc:IfcWorkControl" abstract="true" substitutionGroup="ifc:IfcControl" nillable="true"/>
	<xs:complexType name="IfcWorkControl" abstract="true">
		<xs:complexContent>
			<xs:extension base="ifc:IfcControl">
				<xs:sequence>
					<xs:element name="Creators" minOccurs="0" nillable="true">
						<xs:complexType>
							<xs:sequence>
								<xs:element ref="ifc:IfcPerson" maxOccurs="unbounded"/>
							</xs:sequence>
							<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPerson"/>
							<xs:attribute ref="ifc:cType" fixed="set"/>
							<xs:attribute ref="ifc:arraySize" use="optional"/>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
				<xs:attribute name="CreationDate" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="Purpose" type="ifc:IfcLabel" use="optional"/>
				<xs:attribute name="Duration" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="TotalFloat" type="ifc:IfcDuration" use="optional"/>
				<xs:attribute name="StartTime" type="ifc:IfcDateTime" use="optional"/>
				<xs:attribute name="FinishTime" type="ifc:IfcDateTime" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWorkPlan" type="ifc:IfcWorkPlan" substitutionGroup="ifc:IfcWorkControl" nillable="true"/>
	<xs:complexType name="IfcWorkPlan">
		<xs:complexContent>
			<xs:extension base="ifc:IfcWorkControl">
				<xs:attribute name="PredefinedType" type="ifc:IfcWorkPlanTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWorkSchedule" type="ifc:IfcWorkSchedule" substitutionGroup="ifc:IfcWorkControl" nillable="true"/>
	<xs:complexType name="IfcWorkSchedule">
		<xs:complexContent>
			<xs:extension base="ifc:IfcWorkControl">
				<xs:attribute name="PredefinedType" type="ifc:IfcWorkScheduleTypeEnum" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcWorkTime" type="ifc:IfcWorkTime" substitutionGroup="ifc:IfcSchedulingTime" nillable="true"/>
	<xs:complexType name="IfcWorkTime">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSchedulingTime">
				<xs:sequence>
					<xs:element name="RecurrencePattern" type="ifc:IfcRecurrencePattern" minOccurs="0" nillable="true"/>
				</xs:sequence>
				<xs:attribute name="StartDate" type="ifc:IfcDate" use="optional"/>
				<xs:attribute name="FinishDate" type="ifc:IfcDate" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcZShapeProfileDef" type="ifc:IfcZShapeProfileDef" substitutionGroup="ifc:IfcParameterizedProfileDef" nillable="true"/>
	<xs:complexType name="IfcZShapeProfileDef">
		<xs:complexContent>
			<xs:extension base="ifc:IfcParameterizedProfileDef">
				<xs:attribute name="Depth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeWidth" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="WebThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FlangeThickness" type="ifc:IfcPositiveLengthMeasure" use="optional"/>
				<xs:attribute name="FilletRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
				<xs:attribute name="EdgeRadius" type="ifc:IfcNonNegativeLengthMeasure" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:element name="IfcZone" type="ifc:IfcZone" substitutionGroup="ifc:IfcSystem" nillable="true"/>
	<xs:complexType name="IfcZone">
		<xs:complexContent>
			<xs:extension base="ifc:IfcSystem">
				<xs:attribute name="LongName" type="ifc:IfcLabel" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:group name="IfcActorSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcOrganization"/>
			<xs:element ref="ifc:IfcPerson"/>
			<xs:element ref="ifc:IfcPersonAndOrganization"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcAppliedValueSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcAbsorbedDoseMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAccelerationMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAmountOfSubstanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAngularVelocityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAreaDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAreaMeasure-wrapper"/>
			<xs:element ref="ifc:IfcBinary-wrapper"/>
			<xs:element ref="ifc:IfcBoolean-wrapper"/>
			<xs:element ref="ifc:IfcComplexNumber-wrapper"/>
			<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcContextDependentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcCountMeasure-wrapper"/>
			<xs:element ref="ifc:IfcCurvatureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDate-wrapper"/>
			<xs:element ref="ifc:IfcDateTime-wrapper"/>
			<xs:element ref="ifc:IfcDescriptiveMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDoseEquivalentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDuration-wrapper"/>
			<xs:element ref="ifc:IfcDynamicViscosityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricCapacitanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricChargeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricConductanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricCurrentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricResistanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricVoltageMeasure-wrapper"/>
			<xs:element ref="ifc:IfcEnergyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcFrequencyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcHeatFluxDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcHeatingValueMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIdentifier-wrapper"/>
			<xs:element ref="ifc:IfcIlluminanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcInductanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcInteger-wrapper"/>
			<xs:element ref="ifc:IfcIntegerCountRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIonConcentrationMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIsothermalMoistureCapacityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcKinematicViscosityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLabel-wrapper"/>
			<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearMomentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearStiffnessMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearVelocityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLogical-wrapper"/>
			<xs:element ref="ifc:IfcLuminousFluxMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLuminousIntensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMagneticFluxDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMagneticFluxMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassFlowRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassPerLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMeasureWithUnit"/>
			<xs:element ref="ifc:IfcModulusOfElasticityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMoistureDiffusivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMolecularWeightMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMomentOfInertiaMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMonetaryMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNonNegativeLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNumericMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPHMeasure-wrapper"/>
			<xs:element ref="ifc:IfcParameterValue-wrapper"/>
			<xs:element ref="ifc:IfcPlanarForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositiveInteger-wrapper"/>
			<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositivePlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPowerMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPressureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRadioActivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcReal-wrapper"/>
			<xs:element ref="ifc:IfcReference"/>
			<xs:element ref="ifc:IfcRotationalFrequencyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRotationalMassMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRotationalStiffnessMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSectionModulusMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSectionalAreaIntegralMeasure-wrapper"/>
			<xs:element ref="ifc:IfcShearModulusMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSolidAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPowerLevelMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPowerMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPressureLevelMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPressureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSpecificHeatCapacityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTemperatureGradientMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTemperatureRateOfChangeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcText-wrapper"/>
			<xs:element ref="ifc:IfcThermalAdmittanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalConductivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalExpansionCoefficientMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalResistanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalTransmittanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermodynamicTemperatureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTime-wrapper"/>
			<xs:element ref="ifc:IfcTimeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTimeStamp-wrapper"/>
			<xs:element ref="ifc:IfcTorqueMeasure-wrapper"/>
			<xs:element ref="ifc:IfcURIReference-wrapper"/>
			<xs:element ref="ifc:IfcVaporPermeabilityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcVolumeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcVolumetricFlowRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcWarpingConstantMeasure-wrapper"/>
			<xs:element ref="ifc:IfcWarpingMomentMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcAxis2Placement">
		<xs:choice>
			<xs:element ref="ifc:IfcAxis2Placement2D"/>
			<xs:element ref="ifc:IfcAxis2Placement3D"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcBendingParameterSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcBooleanOperand">
		<xs:choice>
			<xs:element ref="ifc:IfcBooleanResult"/>
			<xs:element ref="ifc:IfcCsgPrimitive3D"/>
			<xs:element ref="ifc:IfcHalfSpaceSolid"/>
			<xs:element ref="ifc:IfcSolidModel"/>
			<xs:element ref="ifc:IfcTessellatedFaceSet"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcClassificationReferenceSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcClassification"/>
			<xs:element ref="ifc:IfcClassificationReference"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcClassificationSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcClassification"/>
			<xs:element ref="ifc:IfcClassificationReference"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcColour">
		<xs:choice>
			<xs:element ref="ifc:IfcColourSpecification"/>
			<xs:element ref="ifc:IfcPreDefinedColour"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcColourOrFactor">
		<xs:choice>
			<xs:element ref="ifc:IfcColourRgb"/>
			<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcCoordinateReferenceSystemSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcCoordinateReferenceSystem"/>
			<xs:element ref="ifc:IfcGeometricRepresentationContext"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcCsgSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcBooleanResult"/>
			<xs:element ref="ifc:IfcCsgPrimitive3D"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcCurveFontOrScaledCurveFontSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcCurveStyleFont"/>
			<xs:element ref="ifc:IfcCurveStyleFontAndScaling"/>
			<xs:element ref="ifc:IfcPreDefinedCurveFont"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcCurveMeasureSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcParameterValue-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcCurveOnSurface">
		<xs:choice>
			<xs:element ref="ifc:IfcCompositeCurveOnSurface"/>
			<xs:element ref="ifc:IfcPcurve"/>
			<xs:element ref="ifc:IfcSurfaceCurve"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcCurveOrEdgeCurve">
		<xs:choice>
			<xs:element ref="ifc:IfcBoundedCurve"/>
			<xs:element ref="ifc:IfcEdgeCurve"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcCurveStyleFontSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcCurveStyleFont"/>
			<xs:element ref="ifc:IfcPreDefinedCurveFont"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcDefinitionSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcObjectDefinition"/>
			<xs:element ref="ifc:IfcPropertyDefinition"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcDerivedMeasureValue">
		<xs:choice>
			<xs:element ref="ifc:IfcAbsorbedDoseMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAccelerationMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAngularVelocityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAreaDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcCurvatureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDoseEquivalentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDynamicViscosityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricCapacitanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricChargeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricConductanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricResistanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricVoltageMeasure-wrapper"/>
			<xs:element ref="ifc:IfcEnergyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcFrequencyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcHeatFluxDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcHeatingValueMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIlluminanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcInductanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIntegerCountRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIonConcentrationMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIsothermalMoistureCapacityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcKinematicViscosityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearMomentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearStiffnessMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearVelocityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLuminousFluxMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMagneticFluxDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMagneticFluxMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassFlowRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassPerLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfElasticityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMoistureDiffusivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMolecularWeightMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMomentOfInertiaMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMonetaryMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPHMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPlanarForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPowerMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPressureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRadioActivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRotationalFrequencyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRotationalMassMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRotationalStiffnessMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSectionModulusMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSectionalAreaIntegralMeasure-wrapper"/>
			<xs:element ref="ifc:IfcShearModulusMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPowerLevelMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPowerMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPressureLevelMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPressureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSpecificHeatCapacityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTemperatureGradientMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTemperatureRateOfChangeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalAdmittanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalConductivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalExpansionCoefficientMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalResistanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalTransmittanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTorqueMeasure-wrapper"/>
			<xs:element ref="ifc:IfcVaporPermeabilityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcVolumetricFlowRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcWarpingConstantMeasure-wrapper"/>
			<xs:element ref="ifc:IfcWarpingMomentMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcDocumentSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcDocumentInformation"/>
			<xs:element ref="ifc:IfcDocumentReference"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcFillStyleSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcColourSpecification"/>
			<xs:element ref="ifc:IfcExternallyDefinedHatchStyle"/>
			<xs:element ref="ifc:IfcFillAreaStyleHatching"/>
			<xs:element ref="ifc:IfcFillAreaStyleTiles"/>
			<xs:element ref="ifc:IfcPreDefinedColour"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcGeometricSetSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcCurve"/>
			<xs:element ref="ifc:IfcPoint"/>
			<xs:element ref="ifc:IfcSurface"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcGridPlacementDirectionSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcDirection"/>
			<xs:element ref="ifc:IfcVirtualGridIntersection"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcHatchLineDistanceSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcVector"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcInterferenceSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcElement"/>
			<xs:element ref="ifc:IfcSpatialElement"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcLayeredItem">
		<xs:choice>
			<xs:element ref="ifc:IfcRepresentation"/>
			<xs:element ref="ifc:IfcRepresentationItem"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcLibrarySelect">
		<xs:choice>
			<xs:element ref="ifc:IfcLibraryInformation"/>
			<xs:element ref="ifc:IfcLibraryReference"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcLightDistributionDataSourceSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcExternalReference"/>
			<xs:element ref="ifc:IfcLightIntensityDistribution"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcMaterialSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcMaterialDefinition"/>
			<xs:element ref="ifc:IfcMaterialList"/>
			<xs:element ref="ifc:IfcMaterialUsageDefinition"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcMeasureValue">
		<xs:choice>
			<xs:element ref="ifc:IfcAmountOfSubstanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAreaMeasure-wrapper"/>
			<xs:element ref="ifc:IfcComplexNumber-wrapper"/>
			<xs:element ref="ifc:IfcContextDependentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcCountMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDescriptiveMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricCurrentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLuminousIntensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNonNegativeLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNumericMeasure-wrapper"/>
			<xs:element ref="ifc:IfcParameterValue-wrapper"/>
			<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositivePlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSolidAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermodynamicTemperatureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTimeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcVolumeMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcMetricValueSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcAbsorbedDoseMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAccelerationMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAmountOfSubstanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAngularVelocityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAppliedValue"/>
			<xs:element ref="ifc:IfcAreaDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAreaMeasure-wrapper"/>
			<xs:element ref="ifc:IfcBinary-wrapper"/>
			<xs:element ref="ifc:IfcBoolean-wrapper"/>
			<xs:element ref="ifc:IfcComplexNumber-wrapper"/>
			<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcContextDependentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcCountMeasure-wrapper"/>
			<xs:element ref="ifc:IfcCurvatureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDate-wrapper"/>
			<xs:element ref="ifc:IfcDateTime-wrapper"/>
			<xs:element ref="ifc:IfcDescriptiveMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDoseEquivalentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDuration-wrapper"/>
			<xs:element ref="ifc:IfcDynamicViscosityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricCapacitanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricChargeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricConductanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricCurrentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricResistanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricVoltageMeasure-wrapper"/>
			<xs:element ref="ifc:IfcEnergyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcFrequencyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcHeatFluxDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcHeatingValueMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIdentifier-wrapper"/>
			<xs:element ref="ifc:IfcIlluminanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcInductanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcInteger-wrapper"/>
			<xs:element ref="ifc:IfcIntegerCountRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIonConcentrationMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIsothermalMoistureCapacityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcKinematicViscosityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLabel-wrapper"/>
			<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearMomentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearStiffnessMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearVelocityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLogical-wrapper"/>
			<xs:element ref="ifc:IfcLuminousFluxMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLuminousIntensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMagneticFluxDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMagneticFluxMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassFlowRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassPerLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMeasureWithUnit"/>
			<xs:element ref="ifc:IfcModulusOfElasticityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMoistureDiffusivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMolecularWeightMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMomentOfInertiaMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMonetaryMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNonNegativeLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNumericMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPHMeasure-wrapper"/>
			<xs:element ref="ifc:IfcParameterValue-wrapper"/>
			<xs:element ref="ifc:IfcPlanarForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositiveInteger-wrapper"/>
			<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositivePlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPowerMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPressureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRadioActivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcReal-wrapper"/>
			<xs:element ref="ifc:IfcReference"/>
			<xs:element ref="ifc:IfcRotationalFrequencyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRotationalMassMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRotationalStiffnessMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSectionModulusMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSectionalAreaIntegralMeasure-wrapper"/>
			<xs:element ref="ifc:IfcShearModulusMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSolidAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPowerLevelMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPowerMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPressureLevelMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPressureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSpecificHeatCapacityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTable"/>
			<xs:element ref="ifc:IfcTemperatureGradientMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTemperatureRateOfChangeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcText-wrapper"/>
			<xs:element ref="ifc:IfcThermalAdmittanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalConductivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalExpansionCoefficientMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalResistanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalTransmittanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermodynamicTemperatureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTime-wrapper"/>
			<xs:element ref="ifc:IfcTimeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTimeSeries"/>
			<xs:element ref="ifc:IfcTimeStamp-wrapper"/>
			<xs:element ref="ifc:IfcTorqueMeasure-wrapper"/>
			<xs:element ref="ifc:IfcURIReference-wrapper"/>
			<xs:element ref="ifc:IfcVaporPermeabilityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcVolumeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcVolumetricFlowRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcWarpingConstantMeasure-wrapper"/>
			<xs:element ref="ifc:IfcWarpingMomentMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcModulusOfRotationalSubgradeReactionSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcBoolean-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcModulusOfSubgradeReactionSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcBoolean-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcModulusOfTranslationalSubgradeReactionSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcBoolean-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcObjectReferenceSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcAddress"/>
			<xs:element ref="ifc:IfcAppliedValue"/>
			<xs:element ref="ifc:IfcExternalReference"/>
			<xs:element ref="ifc:IfcMaterialDefinition"/>
			<xs:element ref="ifc:IfcOrganization"/>
			<xs:element ref="ifc:IfcPerson"/>
			<xs:element ref="ifc:IfcPersonAndOrganization"/>
			<xs:element ref="ifc:IfcTable"/>
			<xs:element ref="ifc:IfcTimeSeries"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcPointOrVertexPoint">
		<xs:choice>
			<xs:element ref="ifc:IfcPoint"/>
			<xs:element ref="ifc:IfcVertexPoint"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcProcessSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcProcess"/>
			<xs:element ref="ifc:IfcTypeProcess"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcProductRepresentationSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcProductDefinitionShape"/>
			<xs:element ref="ifc:IfcRepresentationMap"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcProductSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcProduct"/>
			<xs:element ref="ifc:IfcTypeProduct"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcPropertySetDefinitionSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcPropertySetDefinition"/>
			<xs:element ref="ifc:IfcPropertySetDefinitionSet-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcResourceObjectSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcActorRole"/>
			<xs:element ref="ifc:IfcAppliedValue"/>
			<xs:element ref="ifc:IfcApproval"/>
			<xs:element ref="ifc:IfcConstraint"/>
			<xs:element ref="ifc:IfcContextDependentUnit"/>
			<xs:element ref="ifc:IfcConversionBasedUnit"/>
			<xs:element ref="ifc:IfcExternalInformation"/>
			<xs:element ref="ifc:IfcExternalReference"/>
			<xs:element ref="ifc:IfcMaterialDefinition"/>
			<xs:element ref="ifc:IfcOrganization"/>
			<xs:element ref="ifc:IfcPerson"/>
			<xs:element ref="ifc:IfcPersonAndOrganization"/>
			<xs:element ref="ifc:IfcPhysicalQuantity"/>
			<xs:element ref="ifc:IfcProfileDef"/>
			<xs:element ref="ifc:IfcPropertyAbstraction"/>
			<xs:element ref="ifc:IfcShapeAspect"/>
			<xs:element ref="ifc:IfcTimeSeries"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcResourceSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcResource"/>
			<xs:element ref="ifc:IfcTypeResource"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcRotationalStiffnessSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcBoolean-wrapper"/>
			<xs:element ref="ifc:IfcRotationalStiffnessMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcSegmentIndexSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcArcIndex-wrapper"/>
			<xs:element ref="ifc:IfcLineIndex-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcShell">
		<xs:choice>
			<xs:element ref="ifc:IfcClosedShell"/>
			<xs:element ref="ifc:IfcOpenShell"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcSimpleValue">
		<xs:choice>
			<xs:element ref="ifc:IfcBinary-wrapper"/>
			<xs:element ref="ifc:IfcBoolean-wrapper"/>
			<xs:element ref="ifc:IfcDate-wrapper"/>
			<xs:element ref="ifc:IfcDateTime-wrapper"/>
			<xs:element ref="ifc:IfcDuration-wrapper"/>
			<xs:element ref="ifc:IfcIdentifier-wrapper"/>
			<xs:element ref="ifc:IfcInteger-wrapper"/>
			<xs:element ref="ifc:IfcLabel-wrapper"/>
			<xs:element ref="ifc:IfcLogical-wrapper"/>
			<xs:element ref="ifc:IfcPositiveInteger-wrapper"/>
			<xs:element ref="ifc:IfcReal-wrapper"/>
			<xs:element ref="ifc:IfcText-wrapper"/>
			<xs:element ref="ifc:IfcTime-wrapper"/>
			<xs:element ref="ifc:IfcTimeStamp-wrapper"/>
			<xs:element ref="ifc:IfcURIReference-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcSizeSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcDescriptiveMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcSolidOrShell">
		<xs:choice>
			<xs:element ref="ifc:IfcClosedShell"/>
			<xs:element ref="ifc:IfcSolidModel"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcSpaceBoundarySelect">
		<xs:choice>
			<xs:element ref="ifc:IfcExternalSpatialElement"/>
			<xs:element ref="ifc:IfcSpace"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcSpatialReferenceSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcGroup"/>
			<xs:element ref="ifc:IfcProduct"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcSpecularHighlightSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcSpecularExponent-wrapper"/>
			<xs:element ref="ifc:IfcSpecularRoughness-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcStructuralActivityAssignmentSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcElement"/>
			<xs:element ref="ifc:IfcStructuralItem"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcSurfaceOrFaceSurface">
		<xs:choice>
			<xs:element ref="ifc:IfcFaceBasedSurfaceModel"/>
			<xs:element ref="ifc:IfcFaceSurface"/>
			<xs:element ref="ifc:IfcSurface"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcSurfaceStyleElementSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcExternallyDefinedSurfaceStyle"/>
			<xs:element ref="ifc:IfcSurfaceStyleLighting"/>
			<xs:element ref="ifc:IfcSurfaceStyleRefraction"/>
			<xs:element ref="ifc:IfcSurfaceStyleShading"/>
			<xs:element ref="ifc:IfcSurfaceStyleWithTextures"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcTextFontSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcExternallyDefinedTextFont"/>
			<xs:element ref="ifc:IfcPreDefinedTextFont"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcTimeOrRatioSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcDuration-wrapper"/>
			<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcTranslationalStiffnessSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcBoolean-wrapper"/>
			<xs:element ref="ifc:IfcLinearStiffnessMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcTrimmingSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcCartesianPoint"/>
			<xs:element ref="ifc:IfcParameterValue-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcUnit">
		<xs:choice>
			<xs:element ref="ifc:IfcDerivedUnit"/>
			<xs:element ref="ifc:IfcMonetaryUnit"/>
			<xs:element ref="ifc:IfcNamedUnit"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcValue">
		<xs:choice>
			<xs:element ref="ifc:IfcAbsorbedDoseMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAccelerationMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAmountOfSubstanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAngularVelocityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAreaDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcAreaMeasure-wrapper"/>
			<xs:element ref="ifc:IfcBinary-wrapper"/>
			<xs:element ref="ifc:IfcBoolean-wrapper"/>
			<xs:element ref="ifc:IfcComplexNumber-wrapper"/>
			<xs:element ref="ifc:IfcCompoundPlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcContextDependentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcCountMeasure-wrapper"/>
			<xs:element ref="ifc:IfcCurvatureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDate-wrapper"/>
			<xs:element ref="ifc:IfcDateTime-wrapper"/>
			<xs:element ref="ifc:IfcDescriptiveMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDoseEquivalentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcDuration-wrapper"/>
			<xs:element ref="ifc:IfcDynamicViscosityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricCapacitanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricChargeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricConductanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricCurrentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricResistanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcElectricVoltageMeasure-wrapper"/>
			<xs:element ref="ifc:IfcEnergyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcFrequencyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcHeatFluxDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcHeatingValueMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIdentifier-wrapper"/>
			<xs:element ref="ifc:IfcIlluminanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcInductanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcInteger-wrapper"/>
			<xs:element ref="ifc:IfcIntegerCountRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIonConcentrationMeasure-wrapper"/>
			<xs:element ref="ifc:IfcIsothermalMoistureCapacityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcKinematicViscosityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLabel-wrapper"/>
			<xs:element ref="ifc:IfcLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearMomentMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearStiffnessMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLinearVelocityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLogical-wrapper"/>
			<xs:element ref="ifc:IfcLuminousFluxMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLuminousIntensityDistributionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcLuminousIntensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMagneticFluxDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMagneticFluxMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassDensityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassFlowRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMassPerLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfElasticityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfLinearSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfRotationalSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcModulusOfSubgradeReactionMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMoistureDiffusivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMolecularWeightMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMomentOfInertiaMeasure-wrapper"/>
			<xs:element ref="ifc:IfcMonetaryMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNonNegativeLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNormalisedRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcNumericMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPHMeasure-wrapper"/>
			<xs:element ref="ifc:IfcParameterValue-wrapper"/>
			<xs:element ref="ifc:IfcPlanarForceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositiveInteger-wrapper"/>
			<xs:element ref="ifc:IfcPositiveLengthMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositivePlaneAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPositiveRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPowerMeasure-wrapper"/>
			<xs:element ref="ifc:IfcPressureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRadioActivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRatioMeasure-wrapper"/>
			<xs:element ref="ifc:IfcReal-wrapper"/>
			<xs:element ref="ifc:IfcRotationalFrequencyMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRotationalMassMeasure-wrapper"/>
			<xs:element ref="ifc:IfcRotationalStiffnessMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSectionModulusMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSectionalAreaIntegralMeasure-wrapper"/>
			<xs:element ref="ifc:IfcShearModulusMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSolidAngleMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPowerLevelMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPowerMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPressureLevelMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSoundPressureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcSpecificHeatCapacityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTemperatureGradientMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTemperatureRateOfChangeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcText-wrapper"/>
			<xs:element ref="ifc:IfcThermalAdmittanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalConductivityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalExpansionCoefficientMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalResistanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermalTransmittanceMeasure-wrapper"/>
			<xs:element ref="ifc:IfcThermodynamicTemperatureMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTime-wrapper"/>
			<xs:element ref="ifc:IfcTimeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcTimeStamp-wrapper"/>
			<xs:element ref="ifc:IfcTorqueMeasure-wrapper"/>
			<xs:element ref="ifc:IfcURIReference-wrapper"/>
			<xs:element ref="ifc:IfcVaporPermeabilityMeasure-wrapper"/>
			<xs:element ref="ifc:IfcVolumeMeasure-wrapper"/>
			<xs:element ref="ifc:IfcVolumetricFlowRateMeasure-wrapper"/>
			<xs:element ref="ifc:IfcWarpingConstantMeasure-wrapper"/>
			<xs:element ref="ifc:IfcWarpingMomentMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcVectorOrDirection">
		<xs:choice>
			<xs:element ref="ifc:IfcDirection"/>
			<xs:element ref="ifc:IfcVector"/>
		</xs:choice>
	</xs:group>
	<xs:group name="IfcWarpingStiffnessSelect">
		<xs:choice>
			<xs:element ref="ifc:IfcBoolean-wrapper"/>
			<xs:element ref="ifc:IfcWarpingMomentMeasure-wrapper"/>
		</xs:choice>
	</xs:group>
	<xs:simpleType name="IfcActionRequestTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="email"/>
			<xs:enumeration value="fax"/>
			<xs:enumeration value="phone"/>
			<xs:enumeration value="post"/>
			<xs:enumeration value="verbal"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcActionSourceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="brakes"/>
			<xs:enumeration value="buoyancy"/>
			<xs:enumeration value="completion_g1"/>
			<xs:enumeration value="creep"/>
			<xs:enumeration value="current"/>
			<xs:enumeration value="dead_load_g"/>
			<xs:enumeration value="earthquake_e"/>
			<xs:enumeration value="erection"/>
			<xs:enumeration value="fire"/>
			<xs:enumeration value="ice"/>
			<xs:enumeration value="impact"/>
			<xs:enumeration value="impulse"/>
			<xs:enumeration value="lack_of_fit"/>
			<xs:enumeration value="live_load_q"/>
			<xs:enumeration value="prestressing_p"/>
			<xs:enumeration value="propping"/>
			<xs:enumeration value="rain"/>
			<xs:enumeration value="settlement_u"/>
			<xs:enumeration value="shrinkage"/>
			<xs:enumeration value="snow_s"/>
			<xs:enumeration value="system_imperfection"/>
			<xs:enumeration value="temperature_t"/>
			<xs:enumeration value="transport"/>
			<xs:enumeration value="wave"/>
			<xs:enumeration value="wind_w"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcActionTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="extraordinary_a"/>
			<xs:enumeration value="permanent_g"/>
			<xs:enumeration value="variable_q"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcActuatorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="electricactuator"/>
			<xs:enumeration value="handoperatedactuator"/>
			<xs:enumeration value="hydraulicactuator"/>
			<xs:enumeration value="pneumaticactuator"/>
			<xs:enumeration value="thermostaticactuator"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAddressTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="distributionpoint"/>
			<xs:enumeration value="home"/>
			<xs:enumeration value="office"/>
			<xs:enumeration value="site"/>
			<xs:enumeration value="userdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAirTerminalBoxTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="constantflow"/>
			<xs:enumeration value="variableflowpressuredependant"/>
			<xs:enumeration value="variableflowpressureindependant"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAirTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="diffuser"/>
			<xs:enumeration value="grille"/>
			<xs:enumeration value="louvre"/>
			<xs:enumeration value="register"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAirToAirHeatRecoveryTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="fixedplatecounterflowexchanger"/>
			<xs:enumeration value="fixedplatecrossflowexchanger"/>
			<xs:enumeration value="fixedplateparallelflowexchanger"/>
			<xs:enumeration value="heatpipe"/>
			<xs:enumeration value="rotarywheel"/>
			<xs:enumeration value="runaroundcoilloop"/>
			<xs:enumeration value="thermosiphoncoiltypeheatexchangers"/>
			<xs:enumeration value="thermosiphonsealedtubeheatexchangers"/>
			<xs:enumeration value="twintowerenthalpyrecoveryloops"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAlarmTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bell"/>
			<xs:enumeration value="breakglassbutton"/>
			<xs:enumeration value="light"/>
			<xs:enumeration value="manualpullbox"/>
			<xs:enumeration value="railwaycrocodile"/>
			<xs:enumeration value="railwaydetonator"/>
			<xs:enumeration value="siren"/>
			<xs:enumeration value="whistle"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAlignmentCantSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="blosscurve"/>
			<xs:enumeration value="constantcant"/>
			<xs:enumeration value="cosinecurve"/>
			<xs:enumeration value="helmertcurve"/>
			<xs:enumeration value="lineartransition"/>
			<xs:enumeration value="sinecurve"/>
			<xs:enumeration value="viennesebend"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAlignmentHorizontalSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="blosscurve"/>
			<xs:enumeration value="circulararc"/>
			<xs:enumeration value="clothoid"/>
			<xs:enumeration value="cosinecurve"/>
			<xs:enumeration value="cubic"/>
			<xs:enumeration value="helmertcurve"/>
			<xs:enumeration value="line"/>
			<xs:enumeration value="sinecurve"/>
			<xs:enumeration value="viennesebend"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAlignmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAlignmentVerticalSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="circulararc"/>
			<xs:enumeration value="clothoid"/>
			<xs:enumeration value="constantgradient"/>
			<xs:enumeration value="parabolicarc"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAnalysisModelTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="in_plane_loading_2d"/>
			<xs:enumeration value="loading_3d"/>
			<xs:enumeration value="out_plane_loading_2d"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAnalysisTheoryTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="first_order_theory"/>
			<xs:enumeration value="full_nonlinear_theory"/>
			<xs:enumeration value="second_order_theory"/>
			<xs:enumeration value="third_order_theory"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAnnotationTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="contourline"/>
			<xs:enumeration value="dimension"/>
			<xs:enumeration value="isobar"/>
			<xs:enumeration value="isolux"/>
			<xs:enumeration value="isotherm"/>
			<xs:enumeration value="leader"/>
			<xs:enumeration value="survey"/>
			<xs:enumeration value="symbol"/>
			<xs:enumeration value="text"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcArithmeticOperatorEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="add"/>
			<xs:enumeration value="divide"/>
			<xs:enumeration value="modulo"/>
			<xs:enumeration value="multiply"/>
			<xs:enumeration value="subtract"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAssemblyPlaceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="factory"/>
			<xs:enumeration value="site"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAudioVisualApplianceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="amplifier"/>
			<xs:enumeration value="camera"/>
			<xs:enumeration value="communicationterminal"/>
			<xs:enumeration value="display"/>
			<xs:enumeration value="microphone"/>
			<xs:enumeration value="player"/>
			<xs:enumeration value="projector"/>
			<xs:enumeration value="receiver"/>
			<xs:enumeration value="recordingequipment"/>
			<xs:enumeration value="speaker"/>
			<xs:enumeration value="switcher"/>
			<xs:enumeration value="telephone"/>
			<xs:enumeration value="tuner"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBSplineCurveForm">
		<xs:restriction base="xs:string">
			<xs:enumeration value="circular_arc"/>
			<xs:enumeration value="elliptic_arc"/>
			<xs:enumeration value="hyperbolic_arc"/>
			<xs:enumeration value="parabolic_arc"/>
			<xs:enumeration value="polyline_form"/>
			<xs:enumeration value="unspecified"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBSplineSurfaceForm">
		<xs:restriction base="xs:string">
			<xs:enumeration value="conical_surf"/>
			<xs:enumeration value="cylindrical_surf"/>
			<xs:enumeration value="generalised_cone"/>
			<xs:enumeration value="plane_surf"/>
			<xs:enumeration value="quadric_surf"/>
			<xs:enumeration value="ruled_surf"/>
			<xs:enumeration value="spherical_surf"/>
			<xs:enumeration value="surf_of_linear_extrusion"/>
			<xs:enumeration value="surf_of_revolution"/>
			<xs:enumeration value="toroidal_surf"/>
			<xs:enumeration value="unspecified"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBeamTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="beam"/>
			<xs:enumeration value="cornice"/>
			<xs:enumeration value="diaphragm"/>
			<xs:enumeration value="edgebeam"/>
			<xs:enumeration value="girder_segment"/>
			<xs:enumeration value="hatstone"/>
			<xs:enumeration value="hollowcore"/>
			<xs:enumeration value="joist"/>
			<xs:enumeration value="lintel"/>
			<xs:enumeration value="piercap"/>
			<xs:enumeration value="spandrel"/>
			<xs:enumeration value="t_beam"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBearingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cylindrical"/>
			<xs:enumeration value="disk"/>
			<xs:enumeration value="elastomeric"/>
			<xs:enumeration value="guide"/>
			<xs:enumeration value="pot"/>
			<xs:enumeration value="rocker"/>
			<xs:enumeration value="roller"/>
			<xs:enumeration value="spherical"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBenchmarkEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="equalto"/>
			<xs:enumeration value="greaterthan"/>
			<xs:enumeration value="greaterthanorequalto"/>
			<xs:enumeration value="includedin"/>
			<xs:enumeration value="includes"/>
			<xs:enumeration value="lessthan"/>
			<xs:enumeration value="lessthanorequalto"/>
			<xs:enumeration value="notequalto"/>
			<xs:enumeration value="notincludedin"/>
			<xs:enumeration value="notincludes"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBoilerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="steam"/>
			<xs:enumeration value="water"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBooleanOperator">
		<xs:restriction base="xs:string">
			<xs:enumeration value="difference"/>
			<xs:enumeration value="intersection"/>
			<xs:enumeration value="union"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBridgePartTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="abutment"/>
			<xs:enumeration value="deck"/>
			<xs:enumeration value="deck_segment"/>
			<xs:enumeration value="foundation"/>
			<xs:enumeration value="pier"/>
			<xs:enumeration value="pier_segment"/>
			<xs:enumeration value="pylon"/>
			<xs:enumeration value="substructure"/>
			<xs:enumeration value="superstructure"/>
			<xs:enumeration value="surfacestructure"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBridgeTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="arched"/>
			<xs:enumeration value="cable_stayed"/>
			<xs:enumeration value="cantilever"/>
			<xs:enumeration value="culvert"/>
			<xs:enumeration value="framework"/>
			<xs:enumeration value="girder"/>
			<xs:enumeration value="suspension"/>
			<xs:enumeration value="truss"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBuildingElementPartTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="apron"/>
			<xs:enumeration value="armourunit"/>
			<xs:enumeration value="insulation"/>
			<xs:enumeration value="precastpanel"/>
			<xs:enumeration value="safetycage"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBuildingElementProxyTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="complex"/>
			<xs:enumeration value="element"/>
			<xs:enumeration value="partial"/>
			<xs:enumeration value="provisionforspace"/>
			<xs:enumeration value="provisionforvoid"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBuildingSystemTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="fenestration"/>
			<xs:enumeration value="foundation"/>
			<xs:enumeration value="loadbearing"/>
			<xs:enumeration value="outershell"/>
			<xs:enumeration value="shading"/>
			<xs:enumeration value="transport"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBuiltSystemTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="erosionprevention"/>
			<xs:enumeration value="fenestration"/>
			<xs:enumeration value="foundation"/>
			<xs:enumeration value="loadbearing"/>
			<xs:enumeration value="mooring"/>
			<xs:enumeration value="outershell"/>
			<xs:enumeration value="prestressing"/>
			<xs:enumeration value="railwayline"/>
			<xs:enumeration value="railwaytrack"/>
			<xs:enumeration value="reinforcing"/>
			<xs:enumeration value="shading"/>
			<xs:enumeration value="trackcircuit"/>
			<xs:enumeration value="transport"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcBurnerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCableCarrierFittingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bend"/>
			<xs:enumeration value="connector"/>
			<xs:enumeration value="cross"/>
			<xs:enumeration value="junction"/>
			<xs:enumeration value="reducer"/>
			<xs:enumeration value="tee"/>
			<xs:enumeration value="transition"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCableCarrierSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cablebracket"/>
			<xs:enumeration value="cableladdersegment"/>
			<xs:enumeration value="cabletraysegment"/>
			<xs:enumeration value="cabletrunkingsegment"/>
			<xs:enumeration value="catenarywire"/>
			<xs:enumeration value="conduitsegment"/>
			<xs:enumeration value="dropper"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCableFittingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="connector"/>
			<xs:enumeration value="entry"/>
			<xs:enumeration value="exit"/>
			<xs:enumeration value="fanout"/>
			<xs:enumeration value="junction"/>
			<xs:enumeration value="transition"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCableSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="busbarsegment"/>
			<xs:enumeration value="cablesegment"/>
			<xs:enumeration value="conductorsegment"/>
			<xs:enumeration value="contactwiresegment"/>
			<xs:enumeration value="coresegment"/>
			<xs:enumeration value="fibersegment"/>
			<xs:enumeration value="fibertube"/>
			<xs:enumeration value="opticalcablesegment"/>
			<xs:enumeration value="stitchwire"/>
			<xs:enumeration value="wirepairsegment"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCaissonFoundationTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="caisson"/>
			<xs:enumeration value="well"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcChangeActionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="added"/>
			<xs:enumeration value="deleted"/>
			<xs:enumeration value="modified"/>
			<xs:enumeration value="nochange"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcChillerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="aircooled"/>
			<xs:enumeration value="heatrecovery"/>
			<xs:enumeration value="watercooled"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcChimneyTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCoilTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="dxcoolingcoil"/>
			<xs:enumeration value="electricheatingcoil"/>
			<xs:enumeration value="gasheatingcoil"/>
			<xs:enumeration value="hydroniccoil"/>
			<xs:enumeration value="steamheatingcoil"/>
			<xs:enumeration value="watercoolingcoil"/>
			<xs:enumeration value="waterheatingcoil"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcColumnTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="column"/>
			<xs:enumeration value="pierstem"/>
			<xs:enumeration value="pierstem_segment"/>
			<xs:enumeration value="pilaster"/>
			<xs:enumeration value="standcolumn"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCommunicationsApplianceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="antenna"/>
			<xs:enumeration value="automaton"/>
			<xs:enumeration value="computer"/>
			<xs:enumeration value="fax"/>
			<xs:enumeration value="gateway"/>
			<xs:enumeration value="intelligentperipheral"/>
			<xs:enumeration value="ipnetworkequipment"/>
			<xs:enumeration value="linesideelectronicunit"/>
			<xs:enumeration value="modem"/>
			<xs:enumeration value="networkappliance"/>
			<xs:enumeration value="networkbridge"/>
			<xs:enumeration value="networkhub"/>
			<xs:enumeration value="opticallineterminal"/>
			<xs:enumeration value="opticalnetworkunit"/>
			<xs:enumeration value="printer"/>
			<xs:enumeration value="radioblockcenter"/>
			<xs:enumeration value="repeater"/>
			<xs:enumeration value="router"/>
			<xs:enumeration value="scanner"/>
			<xs:enumeration value="telecommand"/>
			<xs:enumeration value="telephonyexchange"/>
			<xs:enumeration value="transitioncomponent"/>
			<xs:enumeration value="transponder"/>
			<xs:enumeration value="transportequipment"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcComplexPropertyTemplateTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="p_complex"/>
			<xs:enumeration value="q_complex"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCompressorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="booster"/>
			<xs:enumeration value="dynamic"/>
			<xs:enumeration value="hermetic"/>
			<xs:enumeration value="opentype"/>
			<xs:enumeration value="reciprocating"/>
			<xs:enumeration value="rollingpiston"/>
			<xs:enumeration value="rotary"/>
			<xs:enumeration value="rotaryvane"/>
			<xs:enumeration value="scroll"/>
			<xs:enumeration value="semihermetic"/>
			<xs:enumeration value="singlescrew"/>
			<xs:enumeration value="singlestage"/>
			<xs:enumeration value="trochoidal"/>
			<xs:enumeration value="twinscrew"/>
			<xs:enumeration value="weldedshellhermetic"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCondenserTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="aircooled"/>
			<xs:enumeration value="evaporativecooled"/>
			<xs:enumeration value="watercooled"/>
			<xs:enumeration value="watercooledbrazedplate"/>
			<xs:enumeration value="watercooledshellcoil"/>
			<xs:enumeration value="watercooledshelltube"/>
			<xs:enumeration value="watercooledtubeintube"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcConnectionTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="atend"/>
			<xs:enumeration value="atpath"/>
			<xs:enumeration value="atstart"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcConstraintEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="advisory"/>
			<xs:enumeration value="hard"/>
			<xs:enumeration value="soft"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcConstructionEquipmentResourceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="demolishing"/>
			<xs:enumeration value="earthmoving"/>
			<xs:enumeration value="erecting"/>
			<xs:enumeration value="heating"/>
			<xs:enumeration value="lighting"/>
			<xs:enumeration value="paving"/>
			<xs:enumeration value="pumping"/>
			<xs:enumeration value="transporting"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcConstructionMaterialResourceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="aggregates"/>
			<xs:enumeration value="concrete"/>
			<xs:enumeration value="drywall"/>
			<xs:enumeration value="fuel"/>
			<xs:enumeration value="gypsum"/>
			<xs:enumeration value="masonry"/>
			<xs:enumeration value="metal"/>
			<xs:enumeration value="plastic"/>
			<xs:enumeration value="wood"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcConstructionProductResourceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="assembly"/>
			<xs:enumeration value="formwork"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcControllerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="floating"/>
			<xs:enumeration value="multiposition"/>
			<xs:enumeration value="programmable"/>
			<xs:enumeration value="proportional"/>
			<xs:enumeration value="twoposition"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcConveyorSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="beltconveyor"/>
			<xs:enumeration value="bucketconveyor"/>
			<xs:enumeration value="chuteconveyor"/>
			<xs:enumeration value="screwconveyor"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCooledBeamTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="active"/>
			<xs:enumeration value="passive"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCoolingTowerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="mechanicalforceddraft"/>
			<xs:enumeration value="mechanicalinduceddraft"/>
			<xs:enumeration value="naturaldraft"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCostItemTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCostScheduleTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="budget"/>
			<xs:enumeration value="costplan"/>
			<xs:enumeration value="estimate"/>
			<xs:enumeration value="pricedbillofquantities"/>
			<xs:enumeration value="scheduleofrates"/>
			<xs:enumeration value="tender"/>
			<xs:enumeration value="unpricedbillofquantities"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCourseTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="armour"/>
			<xs:enumeration value="ballastbed"/>
			<xs:enumeration value="core"/>
			<xs:enumeration value="filter"/>
			<xs:enumeration value="pavement"/>
			<xs:enumeration value="protection"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCoveringTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ceiling"/>
			<xs:enumeration value="cladding"/>
			<xs:enumeration value="coping"/>
			<xs:enumeration value="flooring"/>
			<xs:enumeration value="insulation"/>
			<xs:enumeration value="membrane"/>
			<xs:enumeration value="molding"/>
			<xs:enumeration value="roofing"/>
			<xs:enumeration value="skirtingboard"/>
			<xs:enumeration value="sleeving"/>
			<xs:enumeration value="topping"/>
			<xs:enumeration value="wrapping"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCrewResourceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="office"/>
			<xs:enumeration value="site"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCurtainWallTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcCurveInterpolationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="linear"/>
			<xs:enumeration value="log_linear"/>
			<xs:enumeration value="log_log"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDamperTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="backdraftdamper"/>
			<xs:enumeration value="balancingdamper"/>
			<xs:enumeration value="blastdamper"/>
			<xs:enumeration value="controldamper"/>
			<xs:enumeration value="firedamper"/>
			<xs:enumeration value="firesmokedamper"/>
			<xs:enumeration value="fumehoodexhaust"/>
			<xs:enumeration value="gravitydamper"/>
			<xs:enumeration value="gravityreliefdamper"/>
			<xs:enumeration value="reliefdamper"/>
			<xs:enumeration value="smokedamper"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDataOriginEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="measured"/>
			<xs:enumeration value="predicted"/>
			<xs:enumeration value="simulated"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDerivedUnitEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="accelerationunit"/>
			<xs:enumeration value="angularvelocityunit"/>
			<xs:enumeration value="areadensityunit"/>
			<xs:enumeration value="compoundplaneangleunit"/>
			<xs:enumeration value="curvatureunit"/>
			<xs:enumeration value="dynamicviscosityunit"/>
			<xs:enumeration value="heatfluxdensityunit"/>
			<xs:enumeration value="heatingvalueunit"/>
			<xs:enumeration value="integercountrateunit"/>
			<xs:enumeration value="ionconcentrationunit"/>
			<xs:enumeration value="isothermalmoisturecapacityunit"/>
			<xs:enumeration value="kinematicviscosityunit"/>
			<xs:enumeration value="linearforceunit"/>
			<xs:enumeration value="linearmomentunit"/>
			<xs:enumeration value="linearstiffnessunit"/>
			<xs:enumeration value="linearvelocityunit"/>
			<xs:enumeration value="luminousintensitydistributionunit"/>
			<xs:enumeration value="massdensityunit"/>
			<xs:enumeration value="massflowrateunit"/>
			<xs:enumeration value="massperlengthunit"/>
			<xs:enumeration value="modulusofelasticityunit"/>
			<xs:enumeration value="modulusoflinearsubgradereactionunit"/>
			<xs:enumeration value="modulusofrotationalsubgradereactionunit"/>
			<xs:enumeration value="modulusofsubgradereactionunit"/>
			<xs:enumeration value="moisturediffusivityunit"/>
			<xs:enumeration value="molecularweightunit"/>
			<xs:enumeration value="momentofinertiaunit"/>
			<xs:enumeration value="phunit"/>
			<xs:enumeration value="planarforceunit"/>
			<xs:enumeration value="rotationalfrequencyunit"/>
			<xs:enumeration value="rotationalmassunit"/>
			<xs:enumeration value="rotationalstiffnessunit"/>
			<xs:enumeration value="sectionareaintegralunit"/>
			<xs:enumeration value="sectionmodulusunit"/>
			<xs:enumeration value="shearmodulusunit"/>
			<xs:enumeration value="soundpowerlevelunit"/>
			<xs:enumeration value="soundpowerunit"/>
			<xs:enumeration value="soundpressurelevelunit"/>
			<xs:enumeration value="soundpressureunit"/>
			<xs:enumeration value="specificheatcapacityunit"/>
			<xs:enumeration value="temperaturegradientunit"/>
			<xs:enumeration value="temperaturerateofchangeunit"/>
			<xs:enumeration value="thermaladmittanceunit"/>
			<xs:enumeration value="thermalconductanceunit"/>
			<xs:enumeration value="thermalexpansioncoefficientunit"/>
			<xs:enumeration value="thermalresistanceunit"/>
			<xs:enumeration value="thermaltransmittanceunit"/>
			<xs:enumeration value="torqueunit"/>
			<xs:enumeration value="vaporpermeabilityunit"/>
			<xs:enumeration value="volumetricflowrateunit"/>
			<xs:enumeration value="warpingconstantunit"/>
			<xs:enumeration value="warpingmomentunit"/>
			<xs:enumeration value="userdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDirectionSenseEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="negative"/>
			<xs:enumeration value="positive"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDiscreteAccessoryTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="anchorplate"/>
			<xs:enumeration value="birdprotection"/>
			<xs:enumeration value="bracket"/>
			<xs:enumeration value="cablearranger"/>
			<xs:enumeration value="elastic_cushion"/>
			<xs:enumeration value="expansion_joint_device"/>
			<xs:enumeration value="filler"/>
			<xs:enumeration value="flashing"/>
			<xs:enumeration value="insulator"/>
			<xs:enumeration value="lock"/>
			<xs:enumeration value="panel_strengthening"/>
			<xs:enumeration value="pointmachinemountingdevice"/>
			<xs:enumeration value="point_machine_locking_device"/>
			<xs:enumeration value="railbrace"/>
			<xs:enumeration value="railpad"/>
			<xs:enumeration value="rail_lubrication"/>
			<xs:enumeration value="rail_mechanical_equipment"/>
			<xs:enumeration value="shoe"/>
			<xs:enumeration value="slidingchair"/>
			<xs:enumeration value="soundabsorption"/>
			<xs:enumeration value="tensioningequipment"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDistributionBoardTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="consumerunit"/>
			<xs:enumeration value="dispatchingboard"/>
			<xs:enumeration value="distributionboard"/>
			<xs:enumeration value="distributionframe"/>
			<xs:enumeration value="motorcontrolcentre"/>
			<xs:enumeration value="switchboard"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDistributionChamberElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="formedduct"/>
			<xs:enumeration value="inspectionchamber"/>
			<xs:enumeration value="inspectionpit"/>
			<xs:enumeration value="manhole"/>
			<xs:enumeration value="meterchamber"/>
			<xs:enumeration value="sump"/>
			<xs:enumeration value="trench"/>
			<xs:enumeration value="valvechamber"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDistributionPortTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cable"/>
			<xs:enumeration value="cablecarrier"/>
			<xs:enumeration value="duct"/>
			<xs:enumeration value="pipe"/>
			<xs:enumeration value="wireless"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDistributionSystemEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="airconditioning"/>
			<xs:enumeration value="audiovisual"/>
			<xs:enumeration value="catenary_system"/>
			<xs:enumeration value="chemical"/>
			<xs:enumeration value="chilledwater"/>
			<xs:enumeration value="communication"/>
			<xs:enumeration value="compressedair"/>
			<xs:enumeration value="condenserwater"/>
			<xs:enumeration value="control"/>
			<xs:enumeration value="conveying"/>
			<xs:enumeration value="data"/>
			<xs:enumeration value="disposal"/>
			<xs:enumeration value="domesticcoldwater"/>
			<xs:enumeration value="domestichotwater"/>
			<xs:enumeration value="drainage"/>
			<xs:enumeration value="earthing"/>
			<xs:enumeration value="electrical"/>
			<xs:enumeration value="electroacoustic"/>
			<xs:enumeration value="exhaust"/>
			<xs:enumeration value="fireprotection"/>
			<xs:enumeration value="fixedtransmissionnetwork"/>
			<xs:enumeration value="fuel"/>
			<xs:enumeration value="gas"/>
			<xs:enumeration value="hazardous"/>
			<xs:enumeration value="heating"/>
			<xs:enumeration value="lighting"/>
			<xs:enumeration value="lightningprotection"/>
			<xs:enumeration value="mobilenetwork"/>
			<xs:enumeration value="monitoringsystem"/>
			<xs:enumeration value="municipalsolidwaste"/>
			<xs:enumeration value="oil"/>
			<xs:enumeration value="operational"/>
			<xs:enumeration value="operationaltelephonysystem"/>
			<xs:enumeration value="overhead_contactline_system"/>
			<xs:enumeration value="powergeneration"/>
			<xs:enumeration value="rainwater"/>
			<xs:enumeration value="refrigeration"/>
			<xs:enumeration value="return_circuit"/>
			<xs:enumeration value="security"/>
			<xs:enumeration value="sewage"/>
			<xs:enumeration value="signal"/>
			<xs:enumeration value="stormwater"/>
			<xs:enumeration value="telephone"/>
			<xs:enumeration value="tv"/>
			<xs:enumeration value="vacuum"/>
			<xs:enumeration value="vent"/>
			<xs:enumeration value="ventilation"/>
			<xs:enumeration value="wastewater"/>
			<xs:enumeration value="watersupply"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDocumentConfidentialityEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="confidential"/>
			<xs:enumeration value="personal"/>
			<xs:enumeration value="public"/>
			<xs:enumeration value="restricted"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDocumentStatusEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="draft"/>
			<xs:enumeration value="final"/>
			<xs:enumeration value="finaldraft"/>
			<xs:enumeration value="revision"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDoorPanelOperationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="double_acting"/>
			<xs:enumeration value="fixedpanel"/>
			<xs:enumeration value="folding"/>
			<xs:enumeration value="revolving"/>
			<xs:enumeration value="rollingup"/>
			<xs:enumeration value="sliding"/>
			<xs:enumeration value="swinging"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDoorPanelPositionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="left"/>
			<xs:enumeration value="middle"/>
			<xs:enumeration value="right"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDoorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="boom_barrier"/>
			<xs:enumeration value="door"/>
			<xs:enumeration value="gate"/>
			<xs:enumeration value="trapdoor"/>
			<xs:enumeration value="turnstile"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDoorTypeOperationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="double_door_double_swing"/>
			<xs:enumeration value="double_door_folding"/>
			<xs:enumeration value="double_door_lifting_vertical"/>
			<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_door_sliding"/>
			<xs:enumeration value="double_swing_left"/>
			<xs:enumeration value="double_swing_right"/>
			<xs:enumeration value="folding_to_left"/>
			<xs:enumeration value="folding_to_right"/>
			<xs:enumeration value="lifting_horizontal"/>
			<xs:enumeration value="lifting_vertical_left"/>
			<xs:enumeration value="lifting_vertical_right"/>
			<xs:enumeration value="revolving"/>
			<xs:enumeration value="revolving_vertical"/>
			<xs:enumeration value="rollingup"/>
			<xs:enumeration value="single_swing_left"/>
			<xs:enumeration value="single_swing_right"/>
			<xs:enumeration value="sliding_to_left"/>
			<xs:enumeration value="sliding_to_right"/>
			<xs:enumeration value="swing_fixed_left"/>
			<xs:enumeration value="swing_fixed_right"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDuctFittingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bend"/>
			<xs:enumeration value="connector"/>
			<xs:enumeration value="entry"/>
			<xs:enumeration value="exit"/>
			<xs:enumeration value="junction"/>
			<xs:enumeration value="obstruction"/>
			<xs:enumeration value="transition"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDuctSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="flexiblesegment"/>
			<xs:enumeration value="rigidsegment"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcDuctSilencerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="flatoval"/>
			<xs:enumeration value="rectangular"/>
			<xs:enumeration value="round"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcEarthworksCutTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="base_excavation"/>
			<xs:enumeration value="cut"/>
			<xs:enumeration value="dredging"/>
			<xs:enumeration value="excavation"/>
			<xs:enumeration value="overexcavation"/>
			<xs:enumeration value="pavementmilling"/>
			<xs:enumeration value="stepexcavation"/>
			<xs:enumeration value="topsoilremoval"/>
			<xs:enumeration value="trench"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcEarthworksFillTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="backfill"/>
			<xs:enumeration value="counterweight"/>
			<xs:enumeration value="embankment"/>
			<xs:enumeration value="slopefill"/>
			<xs:enumeration value="subgrade"/>
			<xs:enumeration value="subgradebed"/>
			<xs:enumeration value="transitionsection"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricApplianceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="dishwasher"/>
			<xs:enumeration value="electriccooker"/>
			<xs:enumeration value="freestandingelectricheater"/>
			<xs:enumeration value="freestandingfan"/>
			<xs:enumeration value="freestandingwatercooler"/>
			<xs:enumeration value="freestandingwaterheater"/>
			<xs:enumeration value="freezer"/>
			<xs:enumeration value="fridge_freezer"/>
			<xs:enumeration value="handdryer"/>
			<xs:enumeration value="kitchenmachine"/>
			<xs:enumeration value="microwave"/>
			<xs:enumeration value="photocopier"/>
			<xs:enumeration value="refrigerator"/>
			<xs:enumeration value="tumbledryer"/>
			<xs:enumeration value="vendingmachine"/>
			<xs:enumeration value="washingmachine"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricDistributionBoardTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="consumerunit"/>
			<xs:enumeration value="distributionboard"/>
			<xs:enumeration value="motorcontrolcentre"/>
			<xs:enumeration value="switchboard"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricFlowStorageDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="battery"/>
			<xs:enumeration value="capacitor"/>
			<xs:enumeration value="capacitorbank"/>
			<xs:enumeration value="compensator"/>
			<xs:enumeration value="harmonicfilter"/>
			<xs:enumeration value="inductor"/>
			<xs:enumeration value="inductorbank"/>
			<xs:enumeration value="recharger"/>
			<xs:enumeration value="ups"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricFlowTreatmentDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="electronicfilter"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricGeneratorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="chp"/>
			<xs:enumeration value="enginegenerator"/>
			<xs:enumeration value="standalone"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricMotorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="dc"/>
			<xs:enumeration value="induction"/>
			<xs:enumeration value="polyphase"/>
			<xs:enumeration value="reluctancesynchronous"/>
			<xs:enumeration value="synchronous"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricTimeControlTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="relay"/>
			<xs:enumeration value="timeclock"/>
			<xs:enumeration value="timedelay"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcElementAssemblyTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="abutment"/>
			<xs:enumeration value="accessory_assembly"/>
			<xs:enumeration value="arch"/>
			<xs:enumeration value="beam_grid"/>
			<xs:enumeration value="braced_frame"/>
			<xs:enumeration value="cross_bracing"/>
			<xs:enumeration value="deck"/>
			<xs:enumeration value="dilatationpanel"/>
			<xs:enumeration value="entranceworks"/>
			<xs:enumeration value="girder"/>
			<xs:enumeration value="grid"/>
			<xs:enumeration value="mast"/>
			<xs:enumeration value="pier"/>
			<xs:enumeration value="pylon"/>
			<xs:enumeration value="rail_mechanical_equipment_assembly"/>
			<xs:enumeration value="reinforcement_unit"/>
			<xs:enumeration value="rigid_frame"/>
			<xs:enumeration value="shelter"/>
			<xs:enumeration value="signalassembly"/>
			<xs:enumeration value="slab_field"/>
			<xs:enumeration value="sumpbuster"/>
			<xs:enumeration value="supportingassembly"/>
			<xs:enumeration value="suspensionassembly"/>
			<xs:enumeration value="trackpanel"/>
			<xs:enumeration value="traction_switching_assembly"/>
			<xs:enumeration value="traffic_calming_device"/>
			<xs:enumeration value="truss"/>
			<xs:enumeration value="turnoutpanel"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcElementCompositionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="complex"/>
			<xs:enumeration value="element"/>
			<xs:enumeration value="partial"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcEngineTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="externalcombustion"/>
			<xs:enumeration value="internalcombustion"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcEvaporativeCoolerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="directevaporativeairwasher"/>
			<xs:enumeration value="directevaporativepackagedrotaryaircooler"/>
			<xs:enumeration value="directevaporativerandommediaaircooler"/>
			<xs:enumeration value="directevaporativerigidmediaaircooler"/>
			<xs:enumeration value="directevaporativeslingerspackagedaircooler"/>
			<xs:enumeration value="indirectdirectcombination"/>
			<xs:enumeration value="indirectevaporativecoolingtowerorcoilcooler"/>
			<xs:enumeration value="indirectevaporativepackageaircooler"/>
			<xs:enumeration value="indirectevaporativewetcoil"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcEvaporatorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="directexpansion"/>
			<xs:enumeration value="directexpansionbrazedplate"/>
			<xs:enumeration value="directexpansionshellandtube"/>
			<xs:enumeration value="directexpansiontubeintube"/>
			<xs:enumeration value="floodedshellandtube"/>
			<xs:enumeration value="shellandcoil"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcEventTriggerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="eventcomplex"/>
			<xs:enumeration value="eventmessage"/>
			<xs:enumeration value="eventrule"/>
			<xs:enumeration value="eventtime"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcEventTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="endevent"/>
			<xs:enumeration value="intermediateevent"/>
			<xs:enumeration value="startevent"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcExternalSpatialElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="external"/>
			<xs:enumeration value="external_earth"/>
			<xs:enumeration value="external_fire"/>
			<xs:enumeration value="external_water"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFacilityPartCommonTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="aboveground"/>
			<xs:enumeration value="belowground"/>
			<xs:enumeration value="junction"/>
			<xs:enumeration value="levelcrossing"/>
			<xs:enumeration value="segment"/>
			<xs:enumeration value="substructure"/>
			<xs:enumeration value="superstructure"/>
			<xs:enumeration value="terminal"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFacilityUsageEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="lateral"/>
			<xs:enumeration value="longitudinal"/>
			<xs:enumeration value="region"/>
			<xs:enumeration value="vertical"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFanTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="centrifugalairfoil"/>
			<xs:enumeration value="centrifugalbackwardinclinedcurved"/>
			<xs:enumeration value="centrifugalforwardcurved"/>
			<xs:enumeration value="centrifugalradial"/>
			<xs:enumeration value="propelloraxial"/>
			<xs:enumeration value="tubeaxial"/>
			<xs:enumeration value="vaneaxial"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFastenerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="glue"/>
			<xs:enumeration value="mortar"/>
			<xs:enumeration value="weld"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFilterTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="airparticlefilter"/>
			<xs:enumeration value="compressedairfilter"/>
			<xs:enumeration value="odorfilter"/>
			<xs:enumeration value="oilfilter"/>
			<xs:enumeration value="strainer"/>
			<xs:enumeration value="waterfilter"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFireSuppressionTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="breechinginlet"/>
			<xs:enumeration value="firehydrant"/>
			<xs:enumeration value="firemonitor"/>
			<xs:enumeration value="hosereel"/>
			<xs:enumeration value="sprinkler"/>
			<xs:enumeration value="sprinklerdeflector"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFlowDirectionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="sink"/>
			<xs:enumeration value="source"/>
			<xs:enumeration value="sourceandsink"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFlowInstrumentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ammeter"/>
			<xs:enumeration value="combined"/>
			<xs:enumeration value="frequencymeter"/>
			<xs:enumeration value="phaseanglemeter"/>
			<xs:enumeration value="powerfactormeter"/>
			<xs:enumeration value="pressuregauge"/>
			<xs:enumeration value="thermometer"/>
			<xs:enumeration value="voltmeter"/>
			<xs:enumeration value="voltmeter_peak"/>
			<xs:enumeration value="voltmeter_rms"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFlowMeterTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="energymeter"/>
			<xs:enumeration value="gasmeter"/>
			<xs:enumeration value="oilmeter"/>
			<xs:enumeration value="watermeter"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFootingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="caisson_foundation"/>
			<xs:enumeration value="footing_beam"/>
			<xs:enumeration value="pad_footing"/>
			<xs:enumeration value="pile_cap"/>
			<xs:enumeration value="strip_footing"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcFurnitureTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bed"/>
			<xs:enumeration value="chair"/>
			<xs:enumeration value="desk"/>
			<xs:enumeration value="filecabinet"/>
			<xs:enumeration value="shelf"/>
			<xs:enumeration value="sofa"/>
			<xs:enumeration value="table"/>
			<xs:enumeration value="technicalcabinet"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcGeographicElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="soil_boring_point"/>
			<xs:enumeration value="terrain"/>
			<xs:enumeration value="vegetation"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcGeometricProjectionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="elevation_view"/>
			<xs:enumeration value="graph_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="sketch_view"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcGeotechnicalStratumTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="solid"/>
			<xs:enumeration value="void"/>
			<xs:enumeration value="water"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcGlobalOrLocalEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="global_coords"/>
			<xs:enumeration value="local_coords"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcGridTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="irregular"/>
			<xs:enumeration value="radial"/>
			<xs:enumeration value="rectangular"/>
			<xs:enumeration value="triangular"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcHeatExchangerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="plate"/>
			<xs:enumeration value="shellandtube"/>
			<xs:enumeration value="turnoutheating"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcHumidifierTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="adiabaticairwasher"/>
			<xs:enumeration value="adiabaticatomizing"/>
			<xs:enumeration value="adiabaticcompressedairnozzle"/>
			<xs:enumeration value="adiabaticpan"/>
			<xs:enumeration value="adiabaticrigidmedia"/>
			<xs:enumeration value="adiabaticultrasonic"/>
			<xs:enumeration value="adiabaticwettedelement"/>
			<xs:enumeration value="assistedbutane"/>
			<xs:enumeration value="assistedelectric"/>
			<xs:enumeration value="assistednaturalgas"/>
			<xs:enumeration value="assistedpropane"/>
			<xs:enumeration value="assistedsteam"/>
			<xs:enumeration value="steaminjection"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcImpactProtectionDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bumper"/>
			<xs:enumeration value="crashcushion"/>
			<xs:enumeration value="dampingsystem"/>
			<xs:enumeration value="fender"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcInterceptorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cyclonic"/>
			<xs:enumeration value="grease"/>
			<xs:enumeration value="oil"/>
			<xs:enumeration value="petrol"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcInternalOrExternalEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="external"/>
			<xs:enumeration value="external_earth"/>
			<xs:enumeration value="external_fire"/>
			<xs:enumeration value="external_water"/>
			<xs:enumeration value="internal"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcInventoryTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="assetinventory"/>
			<xs:enumeration value="furnitureinventory"/>
			<xs:enumeration value="spaceinventory"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcJunctionBoxTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="data"/>
			<xs:enumeration value="power"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcKerbTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcKnotType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="piecewise_bezier_knots"/>
			<xs:enumeration value="quasi_uniform_knots"/>
			<xs:enumeration value="uniform_knots"/>
			<xs:enumeration value="unspecified"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLaborResourceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="administration"/>
			<xs:enumeration value="carpentry"/>
			<xs:enumeration value="cleaning"/>
			<xs:enumeration value="concrete"/>
			<xs:enumeration value="drywall"/>
			<xs:enumeration value="electric"/>
			<xs:enumeration value="finishing"/>
			<xs:enumeration value="flooring"/>
			<xs:enumeration value="general"/>
			<xs:enumeration value="hvac"/>
			<xs:enumeration value="landscaping"/>
			<xs:enumeration value="masonry"/>
			<xs:enumeration value="painting"/>
			<xs:enumeration value="paving"/>
			<xs:enumeration value="plumbing"/>
			<xs:enumeration value="roofing"/>
			<xs:enumeration value="sitegrading"/>
			<xs:enumeration value="steelwork"/>
			<xs:enumeration value="surveying"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLampTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="compactfluorescent"/>
			<xs:enumeration value="fluorescent"/>
			<xs:enumeration value="halogen"/>
			<xs:enumeration value="highpressuremercury"/>
			<xs:enumeration value="highpressuresodium"/>
			<xs:enumeration value="led"/>
			<xs:enumeration value="metalhalide"/>
			<xs:enumeration value="oled"/>
			<xs:enumeration value="tungstenfilament"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLayerSetDirectionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="axis1"/>
			<xs:enumeration value="axis2"/>
			<xs:enumeration value="axis3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLightDistributionCurveEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="type_a"/>
			<xs:enumeration value="type_b"/>
			<xs:enumeration value="type_c"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLightEmissionSourceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="compactfluorescent"/>
			<xs:enumeration value="fluorescent"/>
			<xs:enumeration value="highpressuremercury"/>
			<xs:enumeration value="highpressuresodium"/>
			<xs:enumeration value="lightemittingdiode"/>
			<xs:enumeration value="lowpressuresodium"/>
			<xs:enumeration value="lowvoltagehalogen"/>
			<xs:enumeration value="mainvoltagehalogen"/>
			<xs:enumeration value="metalhalide"/>
			<xs:enumeration value="tungstenfilament"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLightFixtureTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="directionsource"/>
			<xs:enumeration value="pointsource"/>
			<xs:enumeration value="securitylighting"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLiquidTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="hosereel"/>
			<xs:enumeration value="loadingarm"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLoadGroupTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="load_case"/>
			<xs:enumeration value="load_combination"/>
			<xs:enumeration value="load_group"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLogicalOperatorEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="logicaland"/>
			<xs:enumeration value="logicalnotand"/>
			<xs:enumeration value="logicalnotor"/>
			<xs:enumeration value="logicalor"/>
			<xs:enumeration value="logicalxor"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcMarineFacilityTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="barrierbeach"/>
			<xs:enumeration value="breakwater"/>
			<xs:enumeration value="canal"/>
			<xs:enumeration value="drydock"/>
			<xs:enumeration value="floatingdock"/>
			<xs:enumeration value="hydrolift"/>
			<xs:enumeration value="jetty"/>
			<xs:enumeration value="launchrecovery"/>
			<xs:enumeration value="marinedefence"/>
			<xs:enumeration value="navigationalchannel"/>
			<xs:enumeration value="port"/>
			<xs:enumeration value="quay"/>
			<xs:enumeration value="revetment"/>
			<xs:enumeration value="shiplift"/>
			<xs:enumeration value="shiplock"/>
			<xs:enumeration value="shipyard"/>
			<xs:enumeration value="slipway"/>
			<xs:enumeration value="waterway"/>
			<xs:enumeration value="waterwayshiplift"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcMarinePartTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="abovewaterline"/>
			<xs:enumeration value="anchorage"/>
			<xs:enumeration value="approachchannel"/>
			<xs:enumeration value="belowwaterline"/>
			<xs:enumeration value="berthingstructure"/>
			<xs:enumeration value="chamber"/>
			<xs:enumeration value="cill_level"/>
			<xs:enumeration value="copelevel"/>
			<xs:enumeration value="core"/>
			<xs:enumeration value="crest"/>
			<xs:enumeration value="gatehead"/>
			<xs:enumeration value="gudingstructure"/>
			<xs:enumeration value="highwaterline"/>
			<xs:enumeration value="landfield"/>
			<xs:enumeration value="leewardside"/>
			<xs:enumeration value="lowwaterline"/>
			<xs:enumeration value="manufacturing"/>
			<xs:enumeration value="navigationalarea"/>
			<xs:enumeration value="protection"/>
			<xs:enumeration value="shiptransfer"/>
			<xs:enumeration value="storagearea"/>
			<xs:enumeration value="vehicleservicing"/>
			<xs:enumeration value="waterfield"/>
			<xs:enumeration value="weatherside"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcMechanicalFastenerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="anchorbolt"/>
			<xs:enumeration value="bolt"/>
			<xs:enumeration value="chain"/>
			<xs:enumeration value="coupler"/>
			<xs:enumeration value="dowel"/>
			<xs:enumeration value="nail"/>
			<xs:enumeration value="nailplate"/>
			<xs:enumeration value="railfastening"/>
			<xs:enumeration value="railjoint"/>
			<xs:enumeration value="rivet"/>
			<xs:enumeration value="rope"/>
			<xs:enumeration value="screw"/>
			<xs:enumeration value="shearconnector"/>
			<xs:enumeration value="staple"/>
			<xs:enumeration value="studshearconnector"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcMedicalDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="airstation"/>
			<xs:enumeration value="feedairunit"/>
			<xs:enumeration value="oxygengenerator"/>
			<xs:enumeration value="oxygenplant"/>
			<xs:enumeration value="vacuumstation"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcMemberTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="arch_segment"/>
			<xs:enumeration value="brace"/>
			<xs:enumeration value="chord"/>
			<xs:enumeration value="collar"/>
			<xs:enumeration value="member"/>
			<xs:enumeration value="mullion"/>
			<xs:enumeration value="plate"/>
			<xs:enumeration value="post"/>
			<xs:enumeration value="purlin"/>
			<xs:enumeration value="rafter"/>
			<xs:enumeration value="stay_cable"/>
			<xs:enumeration value="stiffening_rib"/>
			<xs:enumeration value="stringer"/>
			<xs:enumeration value="structuralcable"/>
			<xs:enumeration value="strut"/>
			<xs:enumeration value="stud"/>
			<xs:enumeration value="suspender"/>
			<xs:enumeration value="suspension_cable"/>
			<xs:enumeration value="tiebar"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcMobileTelecommunicationsApplianceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="accesspoint"/>
			<xs:enumeration value="basebandunit"/>
			<xs:enumeration value="basetransceiverstation"/>
			<xs:enumeration value="e_utran_node_b"/>
			<xs:enumeration value="gateway_gprs_support_node"/>
			<xs:enumeration value="masterunit"/>
			<xs:enumeration value="mobileswitchingcenter"/>
			<xs:enumeration value="mscserver"/>
			<xs:enumeration value="packetcontrolunit"/>
			<xs:enumeration value="remoteradiounit"/>
			<xs:enumeration value="remoteunit"/>
			<xs:enumeration value="service_gprs_support_node"/>
			<xs:enumeration value="subscriberserver"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcMooringDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bollard"/>
			<xs:enumeration value="linetensioner"/>
			<xs:enumeration value="magneticdevice"/>
			<xs:enumeration value="mooringhooks"/>
			<xs:enumeration value="vacuumdevice"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcMotorConnectionTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="beltdrive"/>
			<xs:enumeration value="coupling"/>
			<xs:enumeration value="directdrive"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcNavigationElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="beacon"/>
			<xs:enumeration value="buoy"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcObjectiveEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="codecompliance"/>
			<xs:enumeration value="codewaiver"/>
			<xs:enumeration value="designintent"/>
			<xs:enumeration value="external"/>
			<xs:enumeration value="healthandsafety"/>
			<xs:enumeration value="mergeconflict"/>
			<xs:enumeration value="modelview"/>
			<xs:enumeration value="parameter"/>
			<xs:enumeration value="requirement"/>
			<xs:enumeration value="specification"/>
			<xs:enumeration value="triggercondition"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcOccupantTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="assignee"/>
			<xs:enumeration value="assignor"/>
			<xs:enumeration value="lessee"/>
			<xs:enumeration value="lessor"/>
			<xs:enumeration value="lettingagent"/>
			<xs:enumeration value="owner"/>
			<xs:enumeration value="tenant"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcOpeningElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="opening"/>
			<xs:enumeration value="recess"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcOutletTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="audiovisualoutlet"/>
			<xs:enumeration value="communicationsoutlet"/>
			<xs:enumeration value="dataoutlet"/>
			<xs:enumeration value="poweroutlet"/>
			<xs:enumeration value="telephoneoutlet"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPavementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="flexible"/>
			<xs:enumeration value="rigid"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPerformanceHistoryTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPermeableCoveringOperationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="grill"/>
			<xs:enumeration value="louver"/>
			<xs:enumeration value="screen"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPermitTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="access"/>
			<xs:enumeration value="building"/>
			<xs:enumeration value="work"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPhysicalOrVirtualEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="physical"/>
			<xs:enumeration value="virtual"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPileConstructionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cast_in_place"/>
			<xs:enumeration value="composite"/>
			<xs:enumeration value="precast_concrete"/>
			<xs:enumeration value="prefab_steel"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPileTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bored"/>
			<xs:enumeration value="cohesion"/>
			<xs:enumeration value="driven"/>
			<xs:enumeration value="friction"/>
			<xs:enumeration value="jetgrouting"/>
			<xs:enumeration value="support"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPipeFittingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bend"/>
			<xs:enumeration value="connector"/>
			<xs:enumeration value="entry"/>
			<xs:enumeration value="exit"/>
			<xs:enumeration value="junction"/>
			<xs:enumeration value="obstruction"/>
			<xs:enumeration value="transition"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPipeSegmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="culvert"/>
			<xs:enumeration value="flexiblesegment"/>
			<xs:enumeration value="gutter"/>
			<xs:enumeration value="rigidsegment"/>
			<xs:enumeration value="spool"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPlateTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="base_plate"/>
			<xs:enumeration value="cover_plate"/>
			<xs:enumeration value="curtain_panel"/>
			<xs:enumeration value="flange_plate"/>
			<xs:enumeration value="gusset_plate"/>
			<xs:enumeration value="sheet"/>
			<xs:enumeration value="splice_plate"/>
			<xs:enumeration value="stiffener_plate"/>
			<xs:enumeration value="web_plate"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPreferredSurfaceCurveRepresentation">
		<xs:restriction base="xs:string">
			<xs:enumeration value="curve3d"/>
			<xs:enumeration value="pcurve_s1"/>
			<xs:enumeration value="pcurve_s2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcProcedureTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="advice_caution"/>
			<xs:enumeration value="advice_note"/>
			<xs:enumeration value="advice_warning"/>
			<xs:enumeration value="calibration"/>
			<xs:enumeration value="diagnostic"/>
			<xs:enumeration value="shutdown"/>
			<xs:enumeration value="startup"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcProfileTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="area"/>
			<xs:enumeration value="curve"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcProjectOrderTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="changeorder"/>
			<xs:enumeration value="maintenanceworkorder"/>
			<xs:enumeration value="moveorder"/>
			<xs:enumeration value="purchaseorder"/>
			<xs:enumeration value="workorder"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcProjectedOrTrueLengthEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="projected_length"/>
			<xs:enumeration value="true_length"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcProjectionElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="blister"/>
			<xs:enumeration value="deviator"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPropertySetTemplateTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="pset_materialdriven"/>
			<xs:enumeration value="pset_occurrencedriven"/>
			<xs:enumeration value="pset_performancedriven"/>
			<xs:enumeration value="pset_profiledriven"/>
			<xs:enumeration value="pset_typedrivenonly"/>
			<xs:enumeration value="pset_typedrivenoverride"/>
			<xs:enumeration value="qto_occurrencedriven"/>
			<xs:enumeration value="qto_typedrivenonly"/>
			<xs:enumeration value="qto_typedrivenoverride"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcProtectiveDeviceTrippingUnitTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="electromagnetic"/>
			<xs:enumeration value="electronic"/>
			<xs:enumeration value="residualcurrent"/>
			<xs:enumeration value="thermal"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcProtectiveDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="anti_arcing_device"/>
			<xs:enumeration value="circuitbreaker"/>
			<xs:enumeration value="earthingswitch"/>
			<xs:enumeration value="earthleakagecircuitbreaker"/>
			<xs:enumeration value="fusedisconnector"/>
			<xs:enumeration value="residualcurrentcircuitbreaker"/>
			<xs:enumeration value="residualcurrentswitch"/>
			<xs:enumeration value="sparkgap"/>
			<xs:enumeration value="varistor"/>
			<xs:enumeration value="voltagelimiter"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcPumpTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="circulator"/>
			<xs:enumeration value="endsuction"/>
			<xs:enumeration value="splitcase"/>
			<xs:enumeration value="submersiblepump"/>
			<xs:enumeration value="sumppump"/>
			<xs:enumeration value="verticalinline"/>
			<xs:enumeration value="verticalturbine"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRailTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="blade"/>
			<xs:enumeration value="checkrail"/>
			<xs:enumeration value="guardrail"/>
			<xs:enumeration value="rackrail"/>
			<xs:enumeration value="rail"/>
			<xs:enumeration value="stockrail"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRailingTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="balustrade"/>
			<xs:enumeration value="fence"/>
			<xs:enumeration value="guardrail"/>
			<xs:enumeration value="handrail"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRailwayPartTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="abovetrack"/>
			<xs:enumeration value="dilationtrack"/>
			<xs:enumeration value="lineside"/>
			<xs:enumeration value="linesidepart"/>
			<xs:enumeration value="plaintrack"/>
			<xs:enumeration value="substructure"/>
			<xs:enumeration value="track"/>
			<xs:enumeration value="trackpart"/>
			<xs:enumeration value="turnouttrack"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRailwayTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRampFlightTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="spiral"/>
			<xs:enumeration value="straight"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRampTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="half_turn_ramp"/>
			<xs:enumeration value="quarter_turn_ramp"/>
			<xs:enumeration value="spiral_ramp"/>
			<xs:enumeration value="straight_run_ramp"/>
			<xs:enumeration value="two_quarter_turn_ramp"/>
			<xs:enumeration value="two_straight_run_ramp"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRecurrenceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="by_day_count"/>
			<xs:enumeration value="by_weekday_count"/>
			<xs:enumeration value="daily"/>
			<xs:enumeration value="monthly_by_day_of_month"/>
			<xs:enumeration value="monthly_by_position"/>
			<xs:enumeration value="weekly"/>
			<xs:enumeration value="yearly_by_day_of_month"/>
			<xs:enumeration value="yearly_by_position"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcReferentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="boundary"/>
			<xs:enumeration value="intersection"/>
			<xs:enumeration value="kilopoint"/>
			<xs:enumeration value="landmark"/>
			<xs:enumeration value="milepoint"/>
			<xs:enumeration value="position"/>
			<xs:enumeration value="referencemarker"/>
			<xs:enumeration value="station"/>
			<xs:enumeration value="superelevationevent"/>
			<xs:enumeration value="widthevent"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcReflectanceMethodEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="blinn"/>
			<xs:enumeration value="flat"/>
			<xs:enumeration value="glass"/>
			<xs:enumeration value="matt"/>
			<xs:enumeration value="metal"/>
			<xs:enumeration value="mirror"/>
			<xs:enumeration value="phong"/>
			<xs:enumeration value="physical"/>
			<xs:enumeration value="plastic"/>
			<xs:enumeration value="strauss"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcReinforcedSoilTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="dynamicallycompacted"/>
			<xs:enumeration value="grouted"/>
			<xs:enumeration value="replaced"/>
			<xs:enumeration value="rollercompacted"/>
			<xs:enumeration value="surchargepreloaded"/>
			<xs:enumeration value="verticallydrained"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcReinforcingBarRoleEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="anchoring"/>
			<xs:enumeration value="edge"/>
			<xs:enumeration value="ligature"/>
			<xs:enumeration value="main"/>
			<xs:enumeration value="punching"/>
			<xs:enumeration value="ring"/>
			<xs:enumeration value="shear"/>
			<xs:enumeration value="stud"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcReinforcingBarSurfaceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="plain"/>
			<xs:enumeration value="textured"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcReinforcingBarTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="anchoring"/>
			<xs:enumeration value="edge"/>
			<xs:enumeration value="ligature"/>
			<xs:enumeration value="main"/>
			<xs:enumeration value="punching"/>
			<xs:enumeration value="ring"/>
			<xs:enumeration value="shear"/>
			<xs:enumeration value="spacebar"/>
			<xs:enumeration value="stud"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcReinforcingMeshTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRoadPartTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bicyclecrossing"/>
			<xs:enumeration value="bus_stop"/>
			<xs:enumeration value="carriageway"/>
			<xs:enumeration value="centralisland"/>
			<xs:enumeration value="centralreserve"/>
			<xs:enumeration value="hardshoulder"/>
			<xs:enumeration value="intersection"/>
			<xs:enumeration value="layby"/>
			<xs:enumeration value="parkingbay"/>
			<xs:enumeration value="passingbay"/>
			<xs:enumeration value="pedestrian_crossing"/>
			<xs:enumeration value="railwaycrossing"/>
			<xs:enumeration value="refugeisland"/>
			<xs:enumeration value="roadsegment"/>
			<xs:enumeration value="roadside"/>
			<xs:enumeration value="roadsidepart"/>
			<xs:enumeration value="roadwayplateau"/>
			<xs:enumeration value="roundabout"/>
			<xs:enumeration value="shoulder"/>
			<xs:enumeration value="sidewalk"/>
			<xs:enumeration value="softshoulder"/>
			<xs:enumeration value="tollplaza"/>
			<xs:enumeration value="trafficisland"/>
			<xs:enumeration value="trafficlane"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRoadTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRoleEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="architect"/>
			<xs:enumeration value="buildingoperator"/>
			<xs:enumeration value="buildingowner"/>
			<xs:enumeration value="civilengineer"/>
			<xs:enumeration value="client"/>
			<xs:enumeration value="commissioningengineer"/>
			<xs:enumeration value="constructionmanager"/>
			<xs:enumeration value="consultant"/>
			<xs:enumeration value="contractor"/>
			<xs:enumeration value="costengineer"/>
			<xs:enumeration value="electricalengineer"/>
			<xs:enumeration value="engineer"/>
			<xs:enumeration value="facilitiesmanager"/>
			<xs:enumeration value="fieldconstructionmanager"/>
			<xs:enumeration value="manufacturer"/>
			<xs:enumeration value="mechanicalengineer"/>
			<xs:enumeration value="owner"/>
			<xs:enumeration value="projectmanager"/>
			<xs:enumeration value="reseller"/>
			<xs:enumeration value="structuralengineer"/>
			<xs:enumeration value="subcontractor"/>
			<xs:enumeration value="supplier"/>
			<xs:enumeration value="userdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcRoofTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="barrel_roof"/>
			<xs:enumeration value="butterfly_roof"/>
			<xs:enumeration value="dome_roof"/>
			<xs:enumeration value="flat_roof"/>
			<xs:enumeration value="freeform"/>
			<xs:enumeration value="gable_roof"/>
			<xs:enumeration value="gambrel_roof"/>
			<xs:enumeration value="hipped_gable_roof"/>
			<xs:enumeration value="hip_roof"/>
			<xs:enumeration value="mansard_roof"/>
			<xs:enumeration value="pavilion_roof"/>
			<xs:enumeration value="rainbow_roof"/>
			<xs:enumeration value="shed_roof"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSIPrefix">
		<xs:restriction base="xs:string">
			<xs:enumeration value="atto"/>
			<xs:enumeration value="centi"/>
			<xs:enumeration value="deca"/>
			<xs:enumeration value="deci"/>
			<xs:enumeration value="exa"/>
			<xs:enumeration value="femto"/>
			<xs:enumeration value="giga"/>
			<xs:enumeration value="hecto"/>
			<xs:enumeration value="kilo"/>
			<xs:enumeration value="mega"/>
			<xs:enumeration value="micro"/>
			<xs:enumeration value="milli"/>
			<xs:enumeration value="nano"/>
			<xs:enumeration value="peta"/>
			<xs:enumeration value="pico"/>
			<xs:enumeration value="tera"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSIUnitName">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ampere"/>
			<xs:enumeration value="becquerel"/>
			<xs:enumeration value="candela"/>
			<xs:enumeration value="coulomb"/>
			<xs:enumeration value="cubic_metre"/>
			<xs:enumeration value="degree_celsius"/>
			<xs:enumeration value="farad"/>
			<xs:enumeration value="gram"/>
			<xs:enumeration value="gray"/>
			<xs:enumeration value="henry"/>
			<xs:enumeration value="hertz"/>
			<xs:enumeration value="joule"/>
			<xs:enumeration value="kelvin"/>
			<xs:enumeration value="lumen"/>
			<xs:enumeration value="lux"/>
			<xs:enumeration value="metre"/>
			<xs:enumeration value="mole"/>
			<xs:enumeration value="newton"/>
			<xs:enumeration value="ohm"/>
			<xs:enumeration value="pascal"/>
			<xs:enumeration value="radian"/>
			<xs:enumeration value="second"/>
			<xs:enumeration value="siemens"/>
			<xs:enumeration value="sievert"/>
			<xs:enumeration value="square_metre"/>
			<xs:enumeration value="steradian"/>
			<xs:enumeration value="tesla"/>
			<xs:enumeration value="volt"/>
			<xs:enumeration value="watt"/>
			<xs:enumeration value="weber"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSanitaryTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bath"/>
			<xs:enumeration value="bidet"/>
			<xs:enumeration value="cistern"/>
			<xs:enumeration value="sanitaryfountain"/>
			<xs:enumeration value="shower"/>
			<xs:enumeration value="sink"/>
			<xs:enumeration value="toiletpan"/>
			<xs:enumeration value="urinal"/>
			<xs:enumeration value="washhandbasin"/>
			<xs:enumeration value="wcseat"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSectionTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="tapered"/>
			<xs:enumeration value="uniform"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSensorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="co2sensor"/>
			<xs:enumeration value="conductancesensor"/>
			<xs:enumeration value="contactsensor"/>
			<xs:enumeration value="cosensor"/>
			<xs:enumeration value="earthquakesensor"/>
			<xs:enumeration value="firesensor"/>
			<xs:enumeration value="flowsensor"/>
			<xs:enumeration value="foreignobjectdetectionsensor"/>
			<xs:enumeration value="frostsensor"/>
			<xs:enumeration value="gassensor"/>
			<xs:enumeration value="heatsensor"/>
			<xs:enumeration value="humiditysensor"/>
			<xs:enumeration value="identifiersensor"/>
			<xs:enumeration value="ionconcentrationsensor"/>
			<xs:enumeration value="levelsensor"/>
			<xs:enumeration value="lightsensor"/>
			<xs:enumeration value="moisturesensor"/>
			<xs:enumeration value="movementsensor"/>
			<xs:enumeration value="obstaclesensor"/>
			<xs:enumeration value="phsensor"/>
			<xs:enumeration value="pressuresensor"/>
			<xs:enumeration value="radiationsensor"/>
			<xs:enumeration value="radioactivitysensor"/>
			<xs:enumeration value="rainsensor"/>
			<xs:enumeration value="smokesensor"/>
			<xs:enumeration value="snowdepthsensor"/>
			<xs:enumeration value="soundsensor"/>
			<xs:enumeration value="temperaturesensor"/>
			<xs:enumeration value="trainsensor"/>
			<xs:enumeration value="turnoutclosuresensor"/>
			<xs:enumeration value="wheelsensor"/>
			<xs:enumeration value="windsensor"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSequenceEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="finish_finish"/>
			<xs:enumeration value="finish_start"/>
			<xs:enumeration value="start_finish"/>
			<xs:enumeration value="start_start"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcShadingDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="awning"/>
			<xs:enumeration value="jalousie"/>
			<xs:enumeration value="shutter"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSignTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="marker"/>
			<xs:enumeration value="mirror"/>
			<xs:enumeration value="pictoral"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSignalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="audio"/>
			<xs:enumeration value="mixed"/>
			<xs:enumeration value="visual"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSimplePropertyTemplateTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="p_boundedvalue"/>
			<xs:enumeration value="p_enumeratedvalue"/>
			<xs:enumeration value="p_listvalue"/>
			<xs:enumeration value="p_referencevalue"/>
			<xs:enumeration value="p_singlevalue"/>
			<xs:enumeration value="p_tablevalue"/>
			<xs:enumeration value="q_area"/>
			<xs:enumeration value="q_count"/>
			<xs:enumeration value="q_length"/>
			<xs:enumeration value="q_number"/>
			<xs:enumeration value="q_time"/>
			<xs:enumeration value="q_volume"/>
			<xs:enumeration value="q_weight"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSlabTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="approach_slab"/>
			<xs:enumeration value="baseslab"/>
			<xs:enumeration value="floor"/>
			<xs:enumeration value="landing"/>
			<xs:enumeration value="paving"/>
			<xs:enumeration value="roof"/>
			<xs:enumeration value="sidewalk"/>
			<xs:enumeration value="trackslab"/>
			<xs:enumeration value="wearing"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSolarDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="solarcollector"/>
			<xs:enumeration value="solarpanel"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSpaceHeaterTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="convector"/>
			<xs:enumeration value="radiator"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSpaceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="berth"/>
			<xs:enumeration value="external"/>
			<xs:enumeration value="gfa"/>
			<xs:enumeration value="internal"/>
			<xs:enumeration value="parking"/>
			<xs:enumeration value="space"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSpatialZoneTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="construction"/>
			<xs:enumeration value="firesafety"/>
			<xs:enumeration value="interference"/>
			<xs:enumeration value="lighting"/>
			<xs:enumeration value="occupancy"/>
			<xs:enumeration value="reservation"/>
			<xs:enumeration value="security"/>
			<xs:enumeration value="thermal"/>
			<xs:enumeration value="transport"/>
			<xs:enumeration value="ventilation"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcStackTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="birdcage"/>
			<xs:enumeration value="cowl"/>
			<xs:enumeration value="rainwaterhopper"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcStairFlightTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="curved"/>
			<xs:enumeration value="freeform"/>
			<xs:enumeration value="spiral"/>
			<xs:enumeration value="straight"/>
			<xs:enumeration value="winder"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcStairTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="curved_run_stair"/>
			<xs:enumeration value="double_return_stair"/>
			<xs:enumeration value="half_turn_stair"/>
			<xs:enumeration value="half_winding_stair"/>
			<xs:enumeration value="ladder"/>
			<xs:enumeration value="quarter_turn_stair"/>
			<xs:enumeration value="quarter_winding_stair"/>
			<xs:enumeration value="spiral_stair"/>
			<xs:enumeration value="straight_run_stair"/>
			<xs:enumeration value="three_quarter_turn_stair"/>
			<xs:enumeration value="three_quarter_winding_stair"/>
			<xs:enumeration value="two_curved_run_stair"/>
			<xs:enumeration value="two_quarter_turn_stair"/>
			<xs:enumeration value="two_quarter_winding_stair"/>
			<xs:enumeration value="two_straight_run_stair"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcStateEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="locked"/>
			<xs:enumeration value="readonly"/>
			<xs:enumeration value="readonlylocked"/>
			<xs:enumeration value="readwrite"/>
			<xs:enumeration value="readwritelocked"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcStructuralCurveActivityTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="const"/>
			<xs:enumeration value="discrete"/>
			<xs:enumeration value="equidistant"/>
			<xs:enumeration value="linear"/>
			<xs:enumeration value="parabola"/>
			<xs:enumeration value="polygonal"/>
			<xs:enumeration value="sinus"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcStructuralCurveMemberTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cable"/>
			<xs:enumeration value="compression_member"/>
			<xs:enumeration value="pin_joined_member"/>
			<xs:enumeration value="rigid_joined_member"/>
			<xs:enumeration value="tension_member"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcStructuralSurfaceActivityTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bilinear"/>
			<xs:enumeration value="const"/>
			<xs:enumeration value="discrete"/>
			<xs:enumeration value="isocontour"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcStructuralSurfaceMemberTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bending_element"/>
			<xs:enumeration value="membrane_element"/>
			<xs:enumeration value="shell"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSubContractResourceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="purchase"/>
			<xs:enumeration value="work"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSurfaceFeatureTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="defect"/>
			<xs:enumeration value="hatchmarking"/>
			<xs:enumeration value="linemarking"/>
			<xs:enumeration value="mark"/>
			<xs:enumeration value="nonskidsurfacing"/>
			<xs:enumeration value="pavementsurfacemarking"/>
			<xs:enumeration value="rumblestrip"/>
			<xs:enumeration value="symbolmarking"/>
			<xs:enumeration value="tag"/>
			<xs:enumeration value="transverserumblestrip"/>
			<xs:enumeration value="treatment"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSurfaceSide">
		<xs:restriction base="xs:string">
			<xs:enumeration value="both"/>
			<xs:enumeration value="negative"/>
			<xs:enumeration value="positive"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSwitchingDeviceTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="contactor"/>
			<xs:enumeration value="dimmerswitch"/>
			<xs:enumeration value="emergencystop"/>
			<xs:enumeration value="keypad"/>
			<xs:enumeration value="momentaryswitch"/>
			<xs:enumeration value="relay"/>
			<xs:enumeration value="selectorswitch"/>
			<xs:enumeration value="starter"/>
			<xs:enumeration value="start_and_stop_equipment"/>
			<xs:enumeration value="switchdisconnector"/>
			<xs:enumeration value="toggleswitch"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcSystemFurnitureElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="panel"/>
			<xs:enumeration value="subrack"/>
			<xs:enumeration value="worksurface"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTankTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="basin"/>
			<xs:enumeration value="breakpressure"/>
			<xs:enumeration value="expansion"/>
			<xs:enumeration value="feedandexpansion"/>
			<xs:enumeration value="oilretentiontray"/>
			<xs:enumeration value="pressurevessel"/>
			<xs:enumeration value="storage"/>
			<xs:enumeration value="vessel"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTaskDurationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="elapsedtime"/>
			<xs:enumeration value="worktime"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTaskTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="adjustment"/>
			<xs:enumeration value="attendance"/>
			<xs:enumeration value="calibration"/>
			<xs:enumeration value="construction"/>
			<xs:enumeration value="demolition"/>
			<xs:enumeration value="dismantle"/>
			<xs:enumeration value="disposal"/>
			<xs:enumeration value="emergency"/>
			<xs:enumeration value="inspection"/>
			<xs:enumeration value="installation"/>
			<xs:enumeration value="logistic"/>
			<xs:enumeration value="maintenance"/>
			<xs:enumeration value="move"/>
			<xs:enumeration value="operation"/>
			<xs:enumeration value="removal"/>
			<xs:enumeration value="renovation"/>
			<xs:enumeration value="safety"/>
			<xs:enumeration value="shutdown"/>
			<xs:enumeration value="startup"/>
			<xs:enumeration value="testing"/>
			<xs:enumeration value="troubleshooting"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTendonAnchorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="coupler"/>
			<xs:enumeration value="fixed_end"/>
			<xs:enumeration value="tensioning_end"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTendonConduitTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="coupler"/>
			<xs:enumeration value="diabolo"/>
			<xs:enumeration value="duct"/>
			<xs:enumeration value="grouting_duct"/>
			<xs:enumeration value="trumpet"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTendonTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bar"/>
			<xs:enumeration value="coated"/>
			<xs:enumeration value="strand"/>
			<xs:enumeration value="wire"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTextPath">
		<xs:restriction base="xs:string">
			<xs:enumeration value="down"/>
			<xs:enumeration value="left"/>
			<xs:enumeration value="right"/>
			<xs:enumeration value="up"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTimeSeriesDataTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="continuous"/>
			<xs:enumeration value="discrete"/>
			<xs:enumeration value="discretebinary"/>
			<xs:enumeration value="piecewisebinary"/>
			<xs:enumeration value="piecewiseconstant"/>
			<xs:enumeration value="piecewisecontinuous"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTrackElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="blockingdevice"/>
			<xs:enumeration value="derailer"/>
			<xs:enumeration value="frog"/>
			<xs:enumeration value="half_set_of_blades"/>
			<xs:enumeration value="sleeper"/>
			<xs:enumeration value="speedregulator"/>
			<xs:enumeration value="trackendofalignment"/>
			<xs:enumeration value="vehiclestop"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTransformerTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="chopper"/>
			<xs:enumeration value="combined"/>
			<xs:enumeration value="current"/>
			<xs:enumeration value="frequency"/>
			<xs:enumeration value="inverter"/>
			<xs:enumeration value="rectifier"/>
			<xs:enumeration value="voltage"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTransitionCode">
		<xs:restriction base="xs:string">
			<xs:enumeration value="continuous"/>
			<xs:enumeration value="contsamegradient"/>
			<xs:enumeration value="contsamegradientsamecurvature"/>
			<xs:enumeration value="discontinuous"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTransportElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="craneway"/>
			<xs:enumeration value="elevator"/>
			<xs:enumeration value="escalator"/>
			<xs:enumeration value="haulinggear"/>
			<xs:enumeration value="liftinggear"/>
			<xs:enumeration value="movingwalkway"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTrimmingPreference">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cartesian"/>
			<xs:enumeration value="parameter"/>
			<xs:enumeration value="unspecified"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcTubeBundleTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="finned"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcUnitEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="absorbeddoseunit"/>
			<xs:enumeration value="amountofsubstanceunit"/>
			<xs:enumeration value="areaunit"/>
			<xs:enumeration value="doseequivalentunit"/>
			<xs:enumeration value="electriccapacitanceunit"/>
			<xs:enumeration value="electricchargeunit"/>
			<xs:enumeration value="electricconductanceunit"/>
			<xs:enumeration value="electriccurrentunit"/>
			<xs:enumeration value="electricresistanceunit"/>
			<xs:enumeration value="electricvoltageunit"/>
			<xs:enumeration value="energyunit"/>
			<xs:enumeration value="forceunit"/>
			<xs:enumeration value="frequencyunit"/>
			<xs:enumeration value="illuminanceunit"/>
			<xs:enumeration value="inductanceunit"/>
			<xs:enumeration value="lengthunit"/>
			<xs:enumeration value="luminousfluxunit"/>
			<xs:enumeration value="luminousintensityunit"/>
			<xs:enumeration value="magneticfluxdensityunit"/>
			<xs:enumeration value="magneticfluxunit"/>
			<xs:enumeration value="massunit"/>
			<xs:enumeration value="planeangleunit"/>
			<xs:enumeration value="powerunit"/>
			<xs:enumeration value="pressureunit"/>
			<xs:enumeration value="radioactivityunit"/>
			<xs:enumeration value="solidangleunit"/>
			<xs:enumeration value="thermodynamictemperatureunit"/>
			<xs:enumeration value="timeunit"/>
			<xs:enumeration value="volumeunit"/>
			<xs:enumeration value="userdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcUnitaryControlElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="alarmpanel"/>
			<xs:enumeration value="basestationcontroller"/>
			<xs:enumeration value="combined"/>
			<xs:enumeration value="controlpanel"/>
			<xs:enumeration value="gasdetectionpanel"/>
			<xs:enumeration value="humidistat"/>
			<xs:enumeration value="indicatorpanel"/>
			<xs:enumeration value="mimicpanel"/>
			<xs:enumeration value="thermostat"/>
			<xs:enumeration value="weatherstation"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcUnitaryEquipmentTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="airconditioningunit"/>
			<xs:enumeration value="airhandler"/>
			<xs:enumeration value="dehumidifier"/>
			<xs:enumeration value="rooftopunit"/>
			<xs:enumeration value="splitsystem"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcValveTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="airrelease"/>
			<xs:enumeration value="antivacuum"/>
			<xs:enumeration value="changeover"/>
			<xs:enumeration value="check"/>
			<xs:enumeration value="commissioning"/>
			<xs:enumeration value="diverting"/>
			<xs:enumeration value="doublecheck"/>
			<xs:enumeration value="doubleregulating"/>
			<xs:enumeration value="drawoffcock"/>
			<xs:enumeration value="faucet"/>
			<xs:enumeration value="flushing"/>
			<xs:enumeration value="gascock"/>
			<xs:enumeration value="gastap"/>
			<xs:enumeration value="isolating"/>
			<xs:enumeration value="mixing"/>
			<xs:enumeration value="pressurereducing"/>
			<xs:enumeration value="pressurerelief"/>
			<xs:enumeration value="regulating"/>
			<xs:enumeration value="safetycutoff"/>
			<xs:enumeration value="steamtrap"/>
			<xs:enumeration value="stopcock"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcVehicleTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cargo"/>
			<xs:enumeration value="rollingstock"/>
			<xs:enumeration value="vehicle"/>
			<xs:enumeration value="vehicleair"/>
			<xs:enumeration value="vehiclemarine"/>
			<xs:enumeration value="vehicletracked"/>
			<xs:enumeration value="vehiclewheeled"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcVibrationDamperTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="axial_yield"/>
			<xs:enumeration value="bending_yield"/>
			<xs:enumeration value="friction"/>
			<xs:enumeration value="rubber"/>
			<xs:enumeration value="shear_yield"/>
			<xs:enumeration value="viscous"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcVibrationIsolatorTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="base"/>
			<xs:enumeration value="compression"/>
			<xs:enumeration value="spring"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcVirtualElementTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="boundary"/>
			<xs:enumeration value="clearance"/>
			<xs:enumeration value="provisionforvoid"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcVoidingFeatureTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="chamfer"/>
			<xs:enumeration value="cutout"/>
			<xs:enumeration value="edge"/>
			<xs:enumeration value="hole"/>
			<xs:enumeration value="miter"/>
			<xs:enumeration value="notch"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcWallTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="elementedwall"/>
			<xs:enumeration value="movable"/>
			<xs:enumeration value="parapet"/>
			<xs:enumeration value="partitioning"/>
			<xs:enumeration value="plumbingwall"/>
			<xs:enumeration value="polygonal"/>
			<xs:enumeration value="retainingwall"/>
			<xs:enumeration value="shear"/>
			<xs:enumeration value="solidwall"/>
			<xs:enumeration value="standard"/>
			<xs:enumeration value="wavewall"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcWasteTerminalTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="floortrap"/>
			<xs:enumeration value="floorwaste"/>
			<xs:enumeration value="gullysump"/>
			<xs:enumeration value="gullytrap"/>
			<xs:enumeration value="roofdrain"/>
			<xs:enumeration value="wastedisposalunit"/>
			<xs:enumeration value="wastetrap"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcWindowPanelOperationEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bottomhung"/>
			<xs:enumeration value="fixedcasement"/>
			<xs:enumeration value="otheroperation"/>
			<xs:enumeration value="pivothorizontal"/>
			<xs:enumeration value="pivotvertical"/>
			<xs:enumeration value="removablecasement"/>
			<xs:enumeration value="sidehunglefthand"/>
			<xs:enumeration value="sidehungrighthand"/>
			<xs:enumeration value="slidinghorizontal"/>
			<xs:enumeration value="slidingvertical"/>
			<xs:enumeration value="tiltandturnlefthand"/>
			<xs:enumeration value="tiltandturnrighthand"/>
			<xs:enumeration value="tophung"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcWindowPanelPositionEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="bottom"/>
			<xs:enumeration value="left"/>
			<xs:enumeration value="middle"/>
			<xs:enumeration value="right"/>
			<xs:enumeration value="top"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcWindowTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="lightdome"/>
			<xs:enumeration value="skylight"/>
			<xs:enumeration value="window"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcWindowTypePartitioningEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="double_panel_horizontal"/>
			<xs:enumeration value="double_panel_vertical"/>
			<xs:enumeration value="single_panel"/>
			<xs:enumeration value="triple_panel_bottom"/>
			<xs:enumeration value="triple_panel_horizontal"/>
			<xs:enumeration value="triple_panel_left"/>
			<xs:enumeration value="triple_panel_right"/>
			<xs:enumeration value="triple_panel_top"/>
			<xs:enumeration value="triple_panel_vertical"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcWorkCalendarTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="firstshift"/>
			<xs:enumeration value="secondshift"/>
			<xs:enumeration value="thirdshift"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcWorkPlanTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="actual"/>
			<xs:enumeration value="baseline"/>
			<xs:enumeration value="planned"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcWorkScheduleTypeEnum">
		<xs:restriction base="xs:string">
			<xs:enumeration value="actual"/>
			<xs:enumeration value="baseline"/>
			<xs:enumeration value="planned"/>
			<xs:enumeration value="userdefined"/>
			<xs:enumeration value="notdefined"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAbsorbedDoseMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcAccelerationMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcAmountOfSubstanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcAngularVelocityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:complexType name="IfcArcIndex">
		<xs:simpleContent>
			<xs:extension base="ifc:List-IfcArcIndex">
				<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPositiveInteger"/>
				<xs:attribute ref="ifc:cType" fixed="list"/>
				<xs:attribute ref="ifc:arraySize" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="List-IfcArcIndex">
		<xs:restriction>
			<xs:simpleType>
				<xs:list itemType="ifc:IfcPositiveInteger"/>
			</xs:simpleType>
			<xs:minLength value="3"/>
			<xs:maxLength value="3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcAreaDensityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcAreaMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:complexType name="IfcBinary">
		<xs:simpleContent>
			<xs:extension base="ifc:hexBinary"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="IfcBoolean">
		<xs:restriction base="xs:boolean"/>
	</xs:simpleType>
	<xs:simpleType name="IfcBoxAlignment">
		<xs:restriction base="ifc:IfcLabel"/>
	</xs:simpleType>
	<xs:simpleType name="IfcCardinalPointReference">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:complexType name="IfcComplexNumber">
		<xs:simpleContent>
			<xs:extension base="ifc:List-IfcComplexNumber">
				<xs:attribute ref="ifc:itemType" fixed="xs:double"/>
				<xs:attribute ref="ifc:cType" fixed="array"/>
				<xs:attribute ref="ifc:arraySize" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="List-IfcComplexNumber">
		<xs:restriction>
			<xs:simpleType>
				<xs:list itemType="xs:double"/>
			</xs:simpleType>
			<xs:minLength value="2"/>
			<xs:maxLength value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="IfcCompoundPlaneAngleMeasure">
		<xs:simpleContent>
			<xs:extension base="ifc:List-IfcCompoundPlaneAngleMeasure">
				<xs:attribute ref="ifc:itemType" fixed="xs:long"/>
				<xs:attribute ref="ifc:cType" fixed="list"/>
				<xs:attribute ref="ifc:arraySize" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="List-IfcCompoundPlaneAngleMeasure">
		<xs:restriction>
			<xs:simpleType>
				<xs:list itemType="xs:long"/>
			</xs:simpleType>
			<xs:minLength value="3"/>
			<xs:maxLength value="4"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcContextDependentMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcCountMeasure">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:simpleType name="IfcCurvatureMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcDate">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcDateTime">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcDayInMonthNumber">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:simpleType name="IfcDayInWeekNumber">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:simpleType name="IfcDescriptiveMeasure">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcDimensionCount">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:simpleType name="IfcDoseEquivalentMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcDuration">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcDynamicViscosityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricCapacitanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricChargeMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricConductanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricCurrentMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricResistanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcElectricVoltageMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcEnergyMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcFontStyle">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcFontVariant">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcFontWeight">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcForceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcFrequencyMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcGloballyUniqueId">
		<xs:restriction base="xs:normalizedString">
			<xs:minLength value="22"/>
			<xs:maxLength value="22"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcHeatFluxDensityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcHeatingValueMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcIdentifier">
		<xs:restriction base="xs:normalizedString">
			<xs:maxLength value="255"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcIlluminanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcInductanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcInteger">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:simpleType name="IfcIntegerCountRateMeasure">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:simpleType name="IfcIonConcentrationMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcIsothermalMoistureCapacityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcKinematicViscosityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcLabel">
		<xs:restriction base="xs:normalizedString">
			<xs:maxLength value="255"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLanguageId">
		<xs:restriction base="ifc:IfcIdentifier"/>
	</xs:simpleType>
	<xs:simpleType name="IfcLengthMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:complexType name="IfcLineIndex">
		<xs:simpleContent>
			<xs:extension base="ifc:List-IfcLineIndex">
				<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPositiveInteger"/>
				<xs:attribute ref="ifc:cType" fixed="list"/>
				<xs:attribute ref="ifc:arraySize" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="List-IfcLineIndex">
		<xs:restriction>
			<xs:simpleType>
				<xs:list itemType="ifc:IfcPositiveInteger"/>
			</xs:simpleType>
			<xs:minLength value="2"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="IfcLinearForceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcLinearMomentMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcLinearStiffnessMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcLinearVelocityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcLogical">
		<xs:restriction base="ifc:logical"/>
	</xs:simpleType>
	<xs:simpleType name="IfcLuminousFluxMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcLuminousIntensityDistributionMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcLuminousIntensityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMagneticFluxDensityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMagneticFluxMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMassDensityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMassFlowRateMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMassMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMassPerLengthMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcModulusOfElasticityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcModulusOfLinearSubgradeReactionMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcModulusOfRotationalSubgradeReactionMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcModulusOfSubgradeReactionMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMoistureDiffusivityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMolecularWeightMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMomentOfInertiaMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMonetaryMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcMonthInYearNumber">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:simpleType name="IfcNonNegativeLengthMeasure">
		<xs:restriction base="ifc:IfcLengthMeasure"/>
	</xs:simpleType>
	<xs:simpleType name="IfcNormalisedRatioMeasure">
		<xs:restriction base="ifc:IfcRatioMeasure"/>
	</xs:simpleType>
	<xs:simpleType name="IfcNumericMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcPHMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcParameterValue">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcPlanarForceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcPlaneAngleMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcPositiveInteger">
		<xs:restriction base="ifc:IfcInteger"/>
	</xs:simpleType>
	<xs:simpleType name="IfcPositiveLengthMeasure">
		<xs:restriction base="ifc:IfcLengthMeasure"/>
	</xs:simpleType>
	<xs:simpleType name="IfcPositivePlaneAngleMeasure">
		<xs:restriction base="ifc:IfcPlaneAngleMeasure"/>
	</xs:simpleType>
	<xs:simpleType name="IfcPositiveRatioMeasure">
		<xs:restriction base="ifc:IfcRatioMeasure"/>
	</xs:simpleType>
	<xs:simpleType name="IfcPowerMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcPresentableText">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcPressureMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:complexType name="IfcPropertySetDefinitionSet">
		<xs:sequence>
			<xs:element ref="ifc:IfcPropertySetDefinition" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute ref="ifc:itemType" fixed="ifc:IfcPropertySetDefinition"/>
		<xs:attribute ref="ifc:cType" fixed="set"/>
		<xs:attribute ref="ifc:arraySize" use="optional"/>
	</xs:complexType>
	<xs:simpleType name="IfcRadioActivityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcRatioMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcReal">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcRotationalFrequencyMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcRotationalMassMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcRotationalStiffnessMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcSectionModulusMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcSectionalAreaIntegralMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcShearModulusMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcSolidAngleMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcSoundPowerLevelMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcSoundPowerMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcSoundPressureLevelMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcSoundPressureMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcSpecificHeatCapacityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcSpecularExponent">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcSpecularRoughness">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcStrippedOptional">
		<xs:restriction base="xs:boolean"/>
	</xs:simpleType>
	<xs:simpleType name="IfcTemperatureGradientMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcTemperatureRateOfChangeMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcText">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcTextAlignment">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcTextDecoration">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcTextFontName">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcTextTransformation">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcThermalAdmittanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcThermalConductivityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcThermalExpansionCoefficientMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcThermalResistanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcThermalTransmittanceMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcThermodynamicTemperatureMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcTime">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcTimeMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcTimeStamp">
		<xs:restriction base="xs:long"/>
	</xs:simpleType>
	<xs:simpleType name="IfcTorqueMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcURIReference">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:simpleType name="IfcVaporPermeabilityMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcVolumeMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcVolumetricFlowRateMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcWarpingConstantMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcWarpingMomentMeasure">
		<xs:restriction base="xs:double"/>
	</xs:simpleType>
	<xs:simpleType name="IfcWellKnownTextLiteral">
		<xs:restriction base="xs:normalizedString"/>
	</xs:simpleType>
	<xs:element name="Entity" type="ifc:Entity" abstract="true" nillable="true"/>
	<xs:complexType name="Entity" abstract="true">
		<xs:attribute name="href" type="xs:anyURI" use="optional"/>
		<xs:attribute name="ref" type="xs:IDREF" use="optional"/>
		<xs:attributeGroup ref="ifc:instanceAttributes"/>
	</xs:complexType>
	<xs:attributeGroup name="instanceAttributes">
		<xs:attribute name="id" type="xs:ID" use="optional"/>
		<xs:attribute name="path" type="xs:NMTOKENS" use="optional"/>
		<xs:attribute name="pos" use="optional">
			<xs:simpleType>
				<xs:restriction>
					<xs:simpleType>
						<xs:list itemType="xs:integer"/>
					</xs:simpleType>
					<xs:minLength value="1"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:attribute>
	</xs:attributeGroup>
	<xs:attribute name="arraySize">
		<xs:simpleType>
			<xs:restriction>
				<xs:simpleType>
					<xs:list itemType="xs:integer"/>
				</xs:simpleType>
				<xs:minLength value="1"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:attribute>
	<xs:attribute name="itemType">
		<xs:simpleType>
			<xs:list itemType="xs:QName"/>
		</xs:simpleType>
	</xs:attribute>
	<xs:attribute name="cType">
		<xs:simpleType>
			<xs:list itemType="ifc:aggregateType"/>
		</xs:simpleType>
	</xs:attribute>
	<xs:simpleType name="aggregateType">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="array"/>
			<xs:enumeration value="list"/>
			<xs:enumeration value="set"/>
			<xs:enumeration value="bag"/>
			<xs:enumeration value="array-unique"/>
			<xs:enumeration value="array-optional"/>
			<xs:enumeration value="array-optional-unique"/>
			<xs:enumeration value="list-unique"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="hexBinary">
		<xs:simpleContent>
			<xs:extension base="xs:hexBinary">
				<xs:attribute name="extraBits" type="xs:integer" use="optional"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="logical">
		<xs:restriction base="xs:normalizedString">
			<xs:enumeration value="false"/>
			<xs:enumeration value="true"/>
			<xs:enumeration value="unknown"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="Seq-IfcPositiveInteger">
		<xs:restriction>
			<xs:simpleType>
				<xs:list itemType="ifc:IfcPositiveInteger"/>
			</xs:simpleType>
			<xs:minLength value="3"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="IfcAbsorbedDoseMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAbsorbedDoseMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcAccelerationMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAccelerationMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcAmountOfSubstanceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAmountOfSubstanceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcAngularVelocityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAngularVelocityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcArcIndex-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcArcIndex">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcAreaDensityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAreaDensityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcAreaMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcAreaMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcBinary-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcBinary">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcBoolean-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcBoolean">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcComplexNumber-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcComplexNumber">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcCompoundPlaneAngleMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCompoundPlaneAngleMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcContextDependentMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcContextDependentMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcCountMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCountMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcCurvatureMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcCurvatureMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcDate-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDate">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcDateTime-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDateTime">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcDescriptiveMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDescriptiveMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcDoseEquivalentMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDoseEquivalentMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcDuration-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDuration">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcDynamicViscosityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcDynamicViscosityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcElectricCapacitanceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricCapacitanceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcElectricChargeMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricChargeMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcElectricConductanceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricConductanceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcElectricCurrentMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricCurrentMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcElectricResistanceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricResistanceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcElectricVoltageMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcElectricVoltageMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcEnergyMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcEnergyMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcForceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcForceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcFrequencyMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcFrequencyMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcHeatFluxDensityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcHeatFluxDensityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcHeatingValueMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcHeatingValueMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcIdentifier-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcIdentifier">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcIlluminanceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcIlluminanceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcInductanceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcInductanceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcInteger-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcInteger">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcIntegerCountRateMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcIntegerCountRateMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcIonConcentrationMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcIonConcentrationMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcIsothermalMoistureCapacityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcIsothermalMoistureCapacityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcKinematicViscosityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcKinematicViscosityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLabel-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLabel">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLengthMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLengthMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLineIndex-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLineIndex">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLinearForceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLinearForceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLinearMomentMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLinearMomentMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLinearStiffnessMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLinearStiffnessMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLinearVelocityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLinearVelocityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLogical-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLogical">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLuminousFluxMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLuminousFluxMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLuminousIntensityDistributionMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLuminousIntensityDistributionMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcLuminousIntensityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcLuminousIntensityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcMagneticFluxDensityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMagneticFluxDensityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcMagneticFluxMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMagneticFluxMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcMassDensityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMassDensityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcMassFlowRateMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMassFlowRateMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcMassMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMassMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcMassPerLengthMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMassPerLengthMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcModulusOfElasticityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcModulusOfElasticityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcModulusOfLinearSubgradeReactionMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcModulusOfLinearSubgradeReactionMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcModulusOfRotationalSubgradeReactionMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcModulusOfRotationalSubgradeReactionMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcModulusOfSubgradeReactionMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcModulusOfSubgradeReactionMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcMoistureDiffusivityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMoistureDiffusivityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcMolecularWeightMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMolecularWeightMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcMomentOfInertiaMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMomentOfInertiaMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcMonetaryMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcMonetaryMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcNonNegativeLengthMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcNonNegativeLengthMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcNormalisedRatioMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcNormalisedRatioMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcNumericMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcNumericMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcPHMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPHMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcParameterValue-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcParameterValue">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcPlanarForceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPlanarForceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcPlaneAngleMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPlaneAngleMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcPositiveInteger-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPositiveInteger">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcPositiveLengthMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPositiveLengthMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcPositivePlaneAngleMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPositivePlaneAngleMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcPositiveRatioMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPositiveRatioMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcPowerMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPowerMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcPressureMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcPressureMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcPropertySetDefinitionSet-wrapper" nillable="true">
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="ifc:IfcPropertySetDefinitionSet">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcRadioActivityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRadioActivityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcRatioMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRatioMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcReal-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcReal">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcRotationalFrequencyMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRotationalFrequencyMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcRotationalMassMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRotationalMassMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcRotationalStiffnessMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcRotationalStiffnessMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcSectionModulusMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSectionModulusMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcSectionalAreaIntegralMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSectionalAreaIntegralMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcShearModulusMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcShearModulusMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcSolidAngleMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSolidAngleMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcSoundPowerLevelMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSoundPowerLevelMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcSoundPowerMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSoundPowerMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcSoundPressureLevelMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSoundPressureLevelMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcSoundPressureMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSoundPressureMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcSpecificHeatCapacityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSpecificHeatCapacityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcSpecularExponent-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSpecularExponent">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcSpecularRoughness-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcSpecularRoughness">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcTemperatureGradientMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTemperatureGradientMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcTemperatureRateOfChangeMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTemperatureRateOfChangeMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcText-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcText">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcTextFontName-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTextFontName">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcThermalAdmittanceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalAdmittanceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcThermalConductivityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalConductivityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcThermalExpansionCoefficientMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalExpansionCoefficientMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcThermalResistanceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalResistanceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcThermalTransmittanceMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermalTransmittanceMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcThermodynamicTemperatureMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcThermodynamicTemperatureMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcTime-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTime">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcTimeMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTimeMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcTimeStamp-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTimeStamp">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcTorqueMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcTorqueMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcURIReference-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcURIReference">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcVaporPermeabilityMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcVaporPermeabilityMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcVolumeMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcVolumeMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcVolumetricFlowRateMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcVolumetricFlowRateMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcWarpingConstantMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWarpingConstantMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="IfcWarpingMomentMeasure-wrapper" nillable="true">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="ifc:IfcWarpingMomentMeasure">
					<xs:attributeGroup ref="ifc:instanceAttributes"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
</xs:schema>
