(*
Copyright by:
buildingSMART Alliance, 2013

Any technical documentation made available by buildingSMART Alliance
is the copyrighted work of buildingSMART Alliance and is owned by the 
buildingSMART Alliance. It may be photocopied, used in software development, 
or translated into another computer language without prior written consent from 
buildingSMART Alliance provided that full attribution is given. 
Prior written consent is required if changes are made to the technical specification.

This material is delivered to you as is and buildingSMART Alliance makes 
no warranty of any kind with regard to it, including, but not limited to, the implied 
warranties as to its accuracy or fitness for a particular purpose. Any use of the 
technical documentation or the information contained therein is at the risk of the user. 
Documentation may include technical or other inaccuracies or typographical errors. 
buildingSMART Alliance shall not be liable for errors contained therein or 
for incidental consequential damages in connection with the furnishing, performance or use 
of the material. The information contained in this document is subject to change without notice.

Issue date:
Wednesday, October 30, 2013

*)

SCHEMA WSie;

TYPE IfcStrippedOptional = BOOLEAN;
END_TYPE;

TYPE IfcAreaMeasure = REAL;
END_TYPE;

TYPE IfcBoolean = BOOLEAN;
END_TYPE;

TYPE IfcCompoundPlaneAngleMeasure = LIST [3:4] OF INTEGER;
END_TYPE;

TYPE IfcCountMeasure = NUMBER;
END_TYPE;

TYPE IfcDate = STRING;
END_TYPE;

TYPE IfcDateTime = STRING;
END_TYPE;

TYPE IfcDimensionCount = INTEGER;
END_TYPE;

TYPE IfcElectricCurrentMeasure = REAL;
END_TYPE;

TYPE IfcEnergyMeasure = REAL;
END_TYPE;

TYPE IfcGloballyUniqueId = STRING(22) FIXED;
END_TYPE;

TYPE IfcIdentifier = STRING(255);
END_TYPE;

TYPE IfcInteger = INTEGER;
END_TYPE;

TYPE IfcLabel = STRING(255);
END_TYPE;

TYPE IfcLengthMeasure = REAL;
END_TYPE;

TYPE IfcLinearVelocityMeasure = REAL;
END_TYPE;

TYPE IfcLogical = LOGICAL;
END_TYPE;

TYPE IfcMassFlowRateMeasure = REAL;
END_TYPE;

TYPE IfcMassMeasure = REAL;
END_TYPE;

TYPE IfcMonetaryMeasure = REAL;
END_TYPE;

TYPE IfcNonNegativeLengthMeasure = IfcLengthMeasure;
END_TYPE;

TYPE IfcNormalisedRatioMeasure = IfcRatioMeasure;
END_TYPE;

TYPE IfcPlanarForceMeasure = REAL;
END_TYPE;

TYPE IfcPlaneAngleMeasure = REAL;
END_TYPE;

TYPE IfcPositiveLengthMeasure = IfcLengthMeasure;
END_TYPE;

TYPE IfcPositivePlaneAngleMeasure = IfcPlaneAngleMeasure;
END_TYPE;

TYPE IfcPositiveRatioMeasure = IfcRatioMeasure;
END_TYPE;

TYPE IfcPowerMeasure = REAL;
END_TYPE;

TYPE IfcPresentableText = STRING;
END_TYPE;

TYPE IfcPressureMeasure = REAL;
END_TYPE;

TYPE IfcReal = REAL;
END_TYPE;

TYPE IfcText = STRING;
END_TYPE;

TYPE IfcThermalTransmittanceMeasure = REAL;
END_TYPE;

TYPE IfcThermodynamicTemperatureMeasure = REAL;
END_TYPE;

TYPE IfcTime = STRING;
END_TYPE;

TYPE IfcTimeMeasure = REAL;
END_TYPE;

TYPE IfcTimeStamp = INTEGER;
END_TYPE;

TYPE IfcVolumeMeasure = REAL;
END_TYPE;

TYPE IfcVolumetricFlowRateMeasure = REAL;
END_TYPE;

TYPE IfcBoilerTypeEnum = ENUMERATION OF
	(WATER
	,STEAM
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcBooleanOperator = ENUMERATION OF
	(UNION
	,INTERSECTION
	,DIFFERENCE);
END_TYPE;

TYPE IfcChangeActionEnum = ENUMERATION OF
	(NOCHANGE
	,MODIFIED
	,ADDED
	,DELETED
	,NOTDEFINED);
END_TYPE;

TYPE IfcConnectionTypeEnum = ENUMERATION OF
	(ATPATH
	,ATSTART
	,ATEND
	,NOTDEFINED);
END_TYPE;

TYPE IfcDataOriginEnum = ENUMERATION OF
	(MEASURED
	,PREDICTED
	,SIMULATED
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcDirectionSenseEnum = ENUMERATION OF
	(POSITIVE
	,NEGATIVE);
END_TYPE;

TYPE IfcDistributionPortTypeEnum = ENUMERATION OF
	(CABLE
	,CABLECARRIER
	,DUCT
	,PIPE
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcDistributionSystemEnum = ENUMERATION OF
	(AIRCONDITIONING
	,AUDIOVISUAL
	,CHEMICAL
	,CHILLEDWATER
	,COMMUNICATION
	,COMPRESSEDAIR
	,CONDENSERWATER
	,CONTROL
	,CONVEYING
	,DATA
	,DISPOSAL
	,DOMESTICCOLDWATER
	,DOMESTICHOTWATER
	,DRAINAGE
	,EARTHING
	,ELECTRICAL
	,ELECTROACOUSTIC
	,EXHAUST
	,FIREPROTECTION
	,FUEL
	,GAS
	,HAZARDOUS
	,HEATING
	,LIGHTING
	,LIGHTNINGPROTECTION
	,MUNICIPALSOLIDWASTE
	,OIL
	,OPERATIONAL
	,POWERGENERATION
	,RAINWATER
	,REFRIGERATION
	,SECURITY
	,SEWAGE
	,SIGNAL
	,STORMWATER
	,TELEPHONE
	,TV
	,VACUUM
	,VENT
	,VENTILATION
	,WASTEWATER
	,WATERSUPPLY
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcElectricApplianceTypeEnum = ENUMERATION OF
	(DISHWASHER
	,ELECTRICCOOKER
	,FREESTANDINGELECTRICHEATER
	,FREESTANDINGFAN
	,FREESTANDINGWATERHEATER
	,FREESTANDINGWATERCOOLER
	,FREEZER
	,FRIDGE_FREEZER
	,HANDDRYER
	,KITCHENMACHINE
	,MICROWAVE
	,PHOTOCOPIER
	,REFRIGERATOR
	,TUMBLEDRYER
	,VENDINGMACHINE
	,WASHINGMACHINE
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcFilterTypeEnum = ENUMERATION OF
	(AIRPARTICLEFILTER
	,COMPRESSEDAIRFILTER
	,ODORFILTER
	,OILFILTER
	,STRAINER
	,WATERFILTER
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcFlowDirectionEnum = ENUMERATION OF
	(SOURCE
	,SINK
	,SOURCEANDSINK
	,NOTDEFINED);
END_TYPE;

TYPE IfcFlowMeterTypeEnum = ENUMERATION OF
	(ENERGYMETER
	,GASMETER
	,OILMETER
	,WATERMETER
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcInternalOrExternalEnum = ENUMERATION OF
	(INTERNAL
	,EXTERNAL
	,EXTERNAL_EARTH
	,EXTERNAL_WATER
	,EXTERNAL_FIRE
	,NOTDEFINED);
END_TYPE;

TYPE IfcLayerSetDirectionEnum = ENUMERATION OF
	(AXIS1
	,AXIS2
	,AXIS3);
END_TYPE;

TYPE IfcMemberTypeEnum = ENUMERATION OF
	(BRACE
	,CHORD
	,COLLAR
	,MEMBER
	,MULLION
	,PLATE
	,POST
	,PURLIN
	,RAFTER
	,STRINGER
	,STRUT
	,STUD
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcPhysicalOrVirtualEnum = ENUMERATION OF
	(PHYSICAL
	,VIRTUAL
	,NOTDEFINED);
END_TYPE;

TYPE IfcPipeFittingTypeEnum = ENUMERATION OF
	(BEND
	,CONNECTOR
	,ENTRY
	,EXIT
	,JUNCTION
	,OBSTRUCTION
	,TRANSITION
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcPipeSegmentTypeEnum = ENUMERATION OF
	(CULVERT
	,FLEXIBLESEGMENT
	,RIGIDSEGMENT
	,GUTTER
	,SPOOL
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcProfileTypeEnum = ENUMERATION OF
	(CURVE
	,AREA);
END_TYPE;

TYPE IfcPumpTypeEnum = ENUMERATION OF
	(CIRCULATOR
	,ENDSUCTION
	,SPLITCASE
	,SUBMERSIBLEPUMP
	,SUMPPUMP
	,VERTICALINLINE
	,VERTICALTURBINE
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcRecurrenceTypeEnum = ENUMERATION OF
	(DAILY
	,WEEKLY
	,MONTHLY_BY_DAY_OF_MONTH
	,MONTHLY_BY_POSITION
	,BY_DAY_COUNT
	,BY_WEEKDAY_COUNT
	,YEARLY_BY_DAY_OF_MONTH
	,YEARLY_BY_POSITION);
END_TYPE;

TYPE IfcRoleEnum = ENUMERATION OF
	(SUPPLIER
	,MANUFACTURER
	,CONTRACTOR
	,SUBCONTRACTOR
	,ARCHITECT
	,STRUCTURALENGINEER
	,COSTENGINEER
	,CLIENT
	,BUILDINGOWNER
	,BUILDINGOPERATOR
	,MECHANICALENGINEER
	,ELECTRICALENGINEER
	,PROJECTMANAGER
	,FACILITIESMANAGER
	,CIVILENGINEER
	,COMMISSIONINGENGINEER
	,ENGINEER
	,OWNER
	,CONSULTANT
	,CONSTRUCTIONMANAGER
	,FIELDCONSTRUCTIONMANAGER
	,RESELLER
	,USERDEFINED);
END_TYPE;

TYPE IfcSIPrefix = ENUMERATION OF
	(EXA
	,PETA
	,TERA
	,GIGA
	,MEGA
	,KILO
	,HECTO
	,DECA
	,DECI
	,CENTI
	,MILLI
	,MICRO
	,NANO
	,PICO
	,FEMTO
	,ATTO);
END_TYPE;

TYPE IfcSIUnitName = ENUMERATION OF
	(AMPERE
	,BECQUEREL
	,CANDELA
	,COULOMB
	,CUBIC_METRE
	,DEGREE_CELSIUS
	,FARAD
	,GRAM
	,GRAY
	,HENRY
	,HERTZ
	,JOULE
	,KELVIN
	,LUMEN
	,LUX
	,METRE
	,MOLE
	,NEWTON
	,OHM
	,PASCAL
	,RADIAN
	,SECOND
	,SIEMENS
	,SIEVERT
	,SQUARE_METRE
	,STERADIAN
	,TESLA
	,VOLT
	,WATT
	,WEBER);
END_TYPE;

TYPE IfcSanitaryTerminalTypeEnum = ENUMERATION OF
	(BATH
	,BIDET
	,CISTERN
	,SHOWER
	,SINK
	,SANITARYFOUNTAIN
	,TOILETPAN
	,URINAL
	,WASHHANDBASIN
	,WCSEAT
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcSlabTypeEnum = ENUMERATION OF
	(FLOOR
	,ROOF
	,LANDING
	,BASESLAB
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcSolarDeviceTypeEnum = ENUMERATION OF
	(SOLARCOLLECTOR
	,SOLARPANEL
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcSpaceTypeEnum = ENUMERATION OF
	(SPACE
	,PARKING
	,GFA
	,INTERNAL
	,EXTERNAL
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcStateEnum = ENUMERATION OF
	(READWRITE
	,READONLY
	,LOCKED
	,READWRITELOCKED
	,READONLYLOCKED);
END_TYPE;

TYPE IfcSubContractResourceTypeEnum = ENUMERATION OF
	(PURCHASE
	,WORK
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcSurfaceSide = ENUMERATION OF
	(POSITIVE
	,NEGATIVE
	,BOTH);
END_TYPE;

TYPE IfcSystemFurnitureElementTypeEnum = ENUMERATION OF
	(PANEL
	,WORKSURFACE
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcTextPath = ENUMERATION OF
	(LEFT
	,RIGHT
	,UP
	,DOWN);
END_TYPE;

TYPE IfcTimeSeriesDataTypeEnum = ENUMERATION OF
	(CONTINUOUS
	,DISCRETE
	,DISCRETEBINARY
	,PIECEWISEBINARY
	,PIECEWISECONSTANT
	,PIECEWISECONTINUOUS
	,NOTDEFINED);
END_TYPE;

TYPE IfcUnitEnum = ENUMERATION OF
	(ABSORBEDDOSEUNIT
	,AMOUNTOFSUBSTANCEUNIT
	,AREAUNIT
	,DOSEEQUIVALENTUNIT
	,ELECTRICCAPACITANCEUNIT
	,ELECTRICCHARGEUNIT
	,ELECTRICCONDUCTANCEUNIT
	,ELECTRICCURRENTUNIT
	,ELECTRICRESISTANCEUNIT
	,ELECTRICVOLTAGEUNIT
	,ENERGYUNIT
	,FORCEUNIT
	,FREQUENCYUNIT
	,ILLUMINANCEUNIT
	,INDUCTANCEUNIT
	,LENGTHUNIT
	,LUMINOUSFLUXUNIT
	,LUMINOUSINTENSITYUNIT
	,MAGNETICFLUXDENSITYUNIT
	,MAGNETICFLUXUNIT
	,MASSUNIT
	,PLANEANGLEUNIT
	,POWERUNIT
	,PRESSUREUNIT
	,RADIOACTIVITYUNIT
	,SOLIDANGLEUNIT
	,THERMODYNAMICTEMPERATUREUNIT
	,TIMEUNIT
	,VOLUMEUNIT
	,USERDEFINED);
END_TYPE;

TYPE IfcValveTypeEnum = ENUMERATION OF
	(AIRRELEASE
	,ANTIVACUUM
	,CHANGEOVER
	,CHECK
	,COMMISSIONING
	,DIVERTING
	,DRAWOFFCOCK
	,DOUBLECHECK
	,DOUBLEREGULATING
	,FAUCET
	,FLUSHING
	,GASCOCK
	,GASTAP
	,ISOLATING
	,MIXING
	,PRESSUREREDUCING
	,PRESSURERELIEF
	,REGULATING
	,SAFETYCUTOFF
	,STEAMTRAP
	,STOPCOCK
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcWallTypeEnum = ENUMERATION OF
	(MOVABLE
	,PARAPET
	,PARTITIONING
	,PLUMBINGWALL
	,SHEAR
	,SOLIDWALL
	,STANDARD
	,POLYGONAL
	,ELEMENTEDWALL
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcWasteTerminalTypeEnum = ENUMERATION OF
	(FLOORTRAP
	,FLOORWASTE
	,GULLYSUMP
	,GULLYTRAP
	,ROOFDRAIN
	,WASTEDISPOSALUNIT
	,WASTETRAP
	,USERDEFINED
	,NOTDEFINED);
END_TYPE;

TYPE IfcActorSelect = SELECT
	(IfcOrganization
	,IfcPerson
	,IfcPersonAndOrganization);
END_TYPE;

TYPE IfcAppliedValueSelect = SELECT
	(IfcMeasureWithUnit
	,IfcValue);
END_TYPE;

TYPE IfcAxis2Placement = SELECT
	(IfcAxis2Placement3D);
END_TYPE;

TYPE IfcBooleanOperand = SELECT
	(IfcBooleanResult
	,IfcSolidModel);
END_TYPE;

TYPE IfcClassificationReferenceSelect = SELECT
	(IfcClassification
	,IfcClassificationReference);
END_TYPE;

TYPE IfcClassificationSelect = SELECT
	(IfcClassification
	,IfcClassificationReference);
END_TYPE;

TYPE IfcCsgSelect = SELECT
	(IfcBooleanResult);
END_TYPE;

TYPE IfcCurveOrEdgeCurve = SELECT
	(IfcBoundedCurve);
END_TYPE;

TYPE IfcDefinitionSelect = SELECT
	(IfcObjectDefinition
	,IfcPropertyDefinition);
END_TYPE;

TYPE IfcFillStyleSelect = SELECT
);
END_TYPE;

TYPE IfcGeometricSetSelect = SELECT
	(IfcCurve
	,IfcPoint
	,IfcSurface);
END_TYPE;

TYPE IfcLayeredItem = SELECT
	(IfcRepresentation
	,IfcRepresentationItem);
END_TYPE;

TYPE IfcMaterialSelect = SELECT
	(IfcMaterialDefinition
	,IfcMaterialUsageDefinition);
END_TYPE;

TYPE IfcObjectReferenceSelect = SELECT
	(IfcAddress
	,IfcAppliedValue
	,IfcExternalReference
	,IfcMaterialDefinition
	,IfcOrganization
	,IfcPerson
	,IfcPersonAndOrganization
	,IfcTimeSeries);
END_TYPE;

TYPE IfcProcessSelect = SELECT
	(IfcProcess);
END_TYPE;

TYPE IfcProductSelect = SELECT
	(IfcProduct
	,IfcTypeProduct);
END_TYPE;

TYPE IfcPropertySetDefinitionSelect = SELECT
	(IfcPropertySetDefinition);
END_TYPE;

TYPE IfcResourceSelect = SELECT
	(IfcResource
	,IfcTypeResource);
END_TYPE;

TYPE IfcShell = SELECT
	(IfcClosedShell);
END_TYPE;

TYPE IfcSpaceBoundarySelect = SELECT
	(IfcSpace);
END_TYPE;

TYPE IfcStyleAssignmentSelect = SELECT
	(IfcPresentationStyle);
END_TYPE;

TYPE IfcSurfaceStyleElementSelect = SELECT
);
END_TYPE;

TYPE IfcUnit = SELECT
	(IfcNamedUnit);
END_TYPE;

TYPE IfcValue = SELECT
);
END_TYPE;

ENTITY IfcActor
 SUPERTYPE OF (IfcOccupant)
 SUBTYPE OF (IfcObject);
	TheActor : IfcActorSelect;
 INVERSE
	IsActingUpon : SET [0:?] OF IfcRelAssignsToActor FOR RelatingActor;
END_ENTITY;

ENTITY IfcActorRole;
	Role : IfcRoleEnum;
	UserDefinedRole : OPTIONAL IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcAddress
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcPostalAddress
    ,IfcTelecomAddress));
	Purpose : OPTIONAL IfcStrippedOptional;
	Description : OPTIONAL IfcStrippedOptional;
	UserDefinedPurpose : OPTIONAL IfcStrippedOptional;
 INVERSE
	OfPerson : SET [0:?] OF IfcPerson FOR Addresses;
	OfOrganization : SET [0:?] OF IfcOrganization FOR Addresses;
END_ENTITY;

ENTITY IfcAdvancedBrep
 SUBTYPE OF (IfcManifoldSolidBrep);
END_ENTITY;

ENTITY IfcAnnotationFillArea
 SUBTYPE OF (IfcGeometricRepresentationItem);
	OuterBoundary : IfcCurve;
	InnerBoundaries : OPTIONAL SET [1:?] OF IfcStrippedOptional;
END_ENTITY;

ENTITY IfcApplication;
	ApplicationDeveloper : IfcOrganization;
	Version : IfcLabel;
	ApplicationFullName : IfcLabel;
	ApplicationIdentifier : IfcIdentifier;
END_ENTITY;

ENTITY IfcAppliedValue
 SUPERTYPE OF (IfcCostValue);
	Name : OPTIONAL IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
	AppliedValue : OPTIONAL IfcAppliedValueSelect;
	UnitBasis : OPTIONAL IfcMeasureWithUnit;
	ApplicableDate : OPTIONAL IfcStrippedOptional;
	FixedUntilDate : OPTIONAL IfcStrippedOptional;
	Category : OPTIONAL IfcStrippedOptional;
	Condition : OPTIONAL IfcStrippedOptional;
	ArithmeticOperator : OPTIONAL IfcStrippedOptional;
	Components : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
END_ENTITY;

ENTITY IfcAxis1Placement
 SUBTYPE OF (IfcPlacement);
	Axis : OPTIONAL IfcStrippedOptional;
 DERIVE
	Z : IfcDirection := NVL (IfcNormalise(Axis), IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcDirection([0.0,0.0,1.0]));
END_ENTITY;

ENTITY IfcAxis2Placement3D
 SUBTYPE OF (IfcPlacement);
	Axis : OPTIONAL IfcDirection;
	RefDirection : OPTIONAL IfcDirection;
 DERIVE
	P : LIST [3:3] OF IfcDirection := IfcBuildAxes(Axis, RefDirection);
END_ENTITY;

ENTITY IfcBeam
 SUBTYPE OF (IfcBuildingElement);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcBoiler
 SUBTYPE OF (IfcEnergyConversionDevice);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcBoilerType
 SUBTYPE OF (IfcEnergyConversionDeviceType);
	PredefinedType : IfcBoilerTypeEnum;
END_ENTITY;

ENTITY IfcBooleanClippingResult
 SUBTYPE OF (IfcBooleanResult);
END_ENTITY;

ENTITY IfcBooleanResult
 SUPERTYPE OF (IfcBooleanClippingResult)
 SUBTYPE OF (IfcGeometricRepresentationItem);
	Operator : IfcBooleanOperator;
	FirstOperand : IfcBooleanOperand;
	SecondOperand : IfcBooleanOperand;
 DERIVE
	Dim : IfcDimensionCount := FirstOperand.Dim;
END_ENTITY;

ENTITY IfcBoundedCurve
 ABSTRACT SUPERTYPE OF (IfcPolyline)
 SUBTYPE OF (IfcCurve);
END_ENTITY;

ENTITY IfcBoundedSurface
 ABSTRACT
 SUBTYPE OF (IfcSurface);
END_ENTITY;

ENTITY IfcBuilding
 SUBTYPE OF (IfcSpatialStructureElement);
	ElevationOfRefHeight : OPTIONAL IfcLengthMeasure;
	ElevationOfTerrain : OPTIONAL IfcLengthMeasure;
	BuildingAddress : OPTIONAL IfcPostalAddress;
END_ENTITY;

ENTITY IfcBuildingElement
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcBeam
    ,IfcCovering
    ,IfcMember
    ,IfcPlate
    ,IfcSlab
    ,IfcWall))
 SUBTYPE OF (IfcElement);
END_ENTITY;

ENTITY IfcBuildingElementPart
 SUBTYPE OF (IfcElementComponent);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcBuildingElementType
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcMemberType
    ,IfcSlabType
    ,IfcWallType))
 SUBTYPE OF (IfcElementType);
END_ENTITY;

ENTITY IfcBuildingStorey
 SUBTYPE OF (IfcSpatialStructureElement);
	Elevation : OPTIONAL IfcLengthMeasure;
END_ENTITY;

ENTITY IfcCartesianPoint
 SUBTYPE OF (IfcPoint);
	Coordinates : LIST [1:3] OF IfcLengthMeasure;
 DERIVE
	Dim : IfcDimensionCount := HIINDEX(Coordinates);
END_ENTITY;

ENTITY IfcCartesianTransformationOperator
 ABSTRACT
 SUBTYPE OF (IfcGeometricRepresentationItem);
	Axis1 : OPTIONAL IfcStrippedOptional;
	Axis2 : OPTIONAL IfcStrippedOptional;
	LocalOrigin : IfcCartesianPoint;
	Scale : OPTIONAL IfcStrippedOptional;
 DERIVE
	Scl : REAL := NVL(Scale, 1.0);
	Dim : IfcDimensionCount := LocalOrigin.Dim;
END_ENTITY;

ENTITY IfcClassification
 SUBTYPE OF (IfcExternalInformation);
	Source : OPTIONAL IfcLabel;
	Edition : OPTIONAL IfcStrippedOptional;
	EditionDate : OPTIONAL IfcStrippedOptional;
	Name : IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
	Location : OPTIONAL IfcStrippedOptional;
	ReferenceTokens : OPTIONAL LIST [1:?] OF IfcIdentifier;
 INVERSE
	ClassificationForObjects : SET [0:?] OF IfcRelAssociatesClassification FOR RelatingClassification;
	HasReferences : SET [0:?] OF IfcClassificationReference FOR ReferencedSource;
END_ENTITY;

ENTITY IfcClassificationReference
 SUBTYPE OF (IfcExternalReference);
	ReferencedSource : OPTIONAL IfcClassificationReferenceSelect;
	Description : OPTIONAL IfcStrippedOptional;
	Sort : OPTIONAL IfcStrippedOptional;
 INVERSE
	ClassificationRefForObjects : SET [0:?] OF IfcRelAssociatesClassification FOR RelatingClassification;
	HasReferences : SET [0:?] OF IfcClassificationReference FOR ReferencedSource;
END_ENTITY;

ENTITY IfcClosedShell
 SUBTYPE OF (IfcConnectedFaceSet);
END_ENTITY;

ENTITY IfcConnectedFaceSet
 SUPERTYPE OF (IfcClosedShell)
 SUBTYPE OF (IfcTopologicalRepresentationItem);
	CfsFaces : SET [1:?] OF IfcFace;
END_ENTITY;

ENTITY IfcConnectionCurveGeometry
 SUBTYPE OF (IfcConnectionGeometry);
	CurveOnRelatingElement : IfcCurveOrEdgeCurve;
	CurveOnRelatedElement : OPTIONAL IfcCurveOrEdgeCurve;
END_ENTITY;

ENTITY IfcConnectionGeometry
 ABSTRACT SUPERTYPE OF (IfcConnectionCurveGeometry);
END_ENTITY;

ENTITY IfcConstructionProductResource
 SUBTYPE OF (IfcConstructionResource);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcConstructionResource
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcConstructionProductResource
    ,IfcSubContractResource))
 SUBTYPE OF (IfcResource);
	Usage : OPTIONAL IfcStrippedOptional;
	BaseCosts : OPTIONAL LIST [1:?] OF IfcAppliedValue;
	BaseQuantity : OPTIONAL IfcPhysicalQuantity;
END_ENTITY;

ENTITY IfcConstructionResourceType
 ABSTRACT SUPERTYPE OF (IfcSubContractResourceType)
 SUBTYPE OF (IfcTypeResource);
	BaseCosts : OPTIONAL LIST [1:?] OF IfcAppliedValue;
	BaseQuantity : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcContext
 ABSTRACT SUPERTYPE OF (IfcProject)
 SUBTYPE OF (IfcObjectDefinition);
	ObjectType : OPTIONAL IfcStrippedOptional;
	LongName : OPTIONAL IfcStrippedOptional;
	Phase : OPTIONAL IfcStrippedOptional;
	RepresentationContexts : OPTIONAL SET [1:?] OF IfcRepresentationContext;
	UnitsInContext : OPTIONAL IfcUnitAssignment;
 INVERSE
	IsDefinedBy : SET [0:?] OF IfcRelDefinesByProperties FOR RelatedObjects;
	Declares : SET [0:?] OF IfcRelDeclares FOR RelatingContext;
END_ENTITY;

ENTITY IfcControl
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcCostItem
    ,IfcCostSchedule
    ,IfcPerformanceHistory
    ,IfcWorkCalendar
    ,IfcWorkControl))
 SUBTYPE OF (IfcObject);
	Identification : OPTIONAL IfcStrippedOptional;
 INVERSE
	Controls : SET [0:?] OF IfcRelAssignsToControl FOR RelatingControl;
END_ENTITY;

ENTITY IfcConversionBasedUnit
 SUPERTYPE OF (IfcConversionBasedUnitWithOffset)
 SUBTYPE OF (IfcNamedUnit);
	Name : IfcLabel;
	ConversionFactor : IfcMeasureWithUnit;
END_ENTITY;

ENTITY IfcConversionBasedUnitWithOffset
 SUBTYPE OF (IfcConversionBasedUnit);
	ConversionOffset : IfcReal;
END_ENTITY;

ENTITY IfcCostItem
 SUBTYPE OF (IfcControl);
	PredefinedType : OPTIONAL IfcStrippedOptional;
	CostValues : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
	CostQuantities : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
END_ENTITY;

ENTITY IfcCostSchedule
 SUBTYPE OF (IfcControl);
	PredefinedType : OPTIONAL IfcStrippedOptional;
	Status : OPTIONAL IfcStrippedOptional;
	SubmittedOn : OPTIONAL IfcStrippedOptional;
	UpdateDate : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcCostValue
 SUBTYPE OF (IfcAppliedValue);
END_ENTITY;

ENTITY IfcCovering
 SUBTYPE OF (IfcBuildingElement);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcCsgSolid
 SUBTYPE OF (IfcSolidModel);
	TreeRootExpression : IfcCsgSelect;
END_ENTITY;

ENTITY IfcCurve
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcBoundedCurve
    ,IfcLine))
 SUBTYPE OF (IfcGeometricRepresentationItem);
 DERIVE
	Dim : IfcDimensionCount := IfcCurveDim(SELF);
END_ENTITY;

ENTITY IfcCurveStyle
 SUBTYPE OF (IfcPresentationStyle);
	CurveFont : OPTIONAL IfcStrippedOptional;
	CurveWidth : OPTIONAL IfcStrippedOptional;
	CurveColour : OPTIONAL IfcStrippedOptional;
	ModelOrDraughting : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcDimensionalExponents;
	LengthExponent : IfcStrippedOptional;
	MassExponent : IfcStrippedOptional;
	TimeExponent : IfcStrippedOptional;
	ElectricCurrentExponent : IfcStrippedOptional;
	ThermodynamicTemperatureExponent : IfcStrippedOptional;
	AmountOfSubstanceExponent : IfcStrippedOptional;
	LuminousIntensityExponent : IfcStrippedOptional;
END_ENTITY;

ENTITY IfcDirection
 SUBTYPE OF (IfcGeometricRepresentationItem);
	DirectionRatios : LIST [2:3] OF IfcStrippedOptional;
 DERIVE
	Dim : IfcDimensionCount := HIINDEX(DirectionRatios);
END_ENTITY;

ENTITY IfcDistributionCircuit
 SUBTYPE OF (IfcDistributionSystem);
END_ENTITY;

ENTITY IfcDistributionElement
 SUPERTYPE OF (IfcDistributionFlowElement)
 SUBTYPE OF (IfcElement);
 INVERSE
	HasPorts : SET [0:?] OF IfcRelConnectsPortToElement FOR RelatedElement;
END_ENTITY;

ENTITY IfcDistributionElementType
 SUPERTYPE OF (IfcDistributionFlowElementType)
 SUBTYPE OF (IfcElementType);
END_ENTITY;

ENTITY IfcDistributionFlowElement
 SUPERTYPE OF (ONEOF
    (IfcEnergyConversionDevice
    ,IfcFlowController
    ,IfcFlowFitting
    ,IfcFlowMovingDevice
    ,IfcFlowSegment
    ,IfcFlowTerminal
    ,IfcFlowTreatmentDevice))
 SUBTYPE OF (IfcDistributionElement);
END_ENTITY;

ENTITY IfcDistributionFlowElementType
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcEnergyConversionDeviceType
    ,IfcFlowControllerType
    ,IfcFlowFittingType
    ,IfcFlowMovingDeviceType
    ,IfcFlowSegmentType
    ,IfcFlowTerminalType
    ,IfcFlowTreatmentDeviceType))
 SUBTYPE OF (IfcDistributionElementType);
END_ENTITY;

ENTITY IfcDistributionPort
 SUBTYPE OF (IfcPort);
	FlowDirection : OPTIONAL IfcFlowDirectionEnum;
	PredefinedType : OPTIONAL IfcDistributionPortTypeEnum;
	SystemType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcDistributionSystem
 SUPERTYPE OF (IfcDistributionCircuit)
 SUBTYPE OF (IfcSystem);
	LongName : OPTIONAL IfcStrippedOptional;
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcElectricAppliance
 SUBTYPE OF (IfcFlowTerminal);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcElectricApplianceType
 SUBTYPE OF (IfcFlowTerminalType);
	PredefinedType : IfcElectricApplianceTypeEnum;
END_ENTITY;

ENTITY IfcElement
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcBuildingElement
    ,IfcDistributionElement
    ,IfcElementComponent
    ,IfcFeatureElement
    ,IfcFurnishingElement))
 SUBTYPE OF (IfcProduct);
	Tag : OPTIONAL IfcStrippedOptional;
 INVERSE
	ConnectedTo : SET [0:?] OF IfcRelConnectsElements FOR RelatingElement;
	IsInterferedByElements : SET [0:?] OF IfcRelInterferesElements FOR RelatedElement;
	InterferesElements : SET [0:?] OF IfcRelInterferesElements FOR RelatingElement;
	HasOpenings : SET [0:?] OF IfcRelVoidsElement FOR RelatingBuildingElement;
	ProvidesBoundaries : SET [0:?] OF IfcRelSpaceBoundary FOR RelatedBuildingElement;
	ConnectedFrom : SET [0:?] OF IfcRelConnectsElements FOR RelatedElement;
	ContainedInStructure : SET [0:1] OF IfcRelContainedInSpatialStructure FOR RelatedElements;
END_ENTITY;

ENTITY IfcElementComponent
 ABSTRACT SUPERTYPE OF (IfcBuildingElementPart)
 SUBTYPE OF (IfcElement);
END_ENTITY;

ENTITY IfcElementQuantity
 SUBTYPE OF (IfcQuantitySet);
	MethodOfMeasurement : OPTIONAL IfcStrippedOptional;
	Quantities : SET [1:?] OF IfcPhysicalQuantity;
END_ENTITY;

ENTITY IfcElementType
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcBuildingElementType
    ,IfcDistributionElementType
    ,IfcFurnishingElementType))
 SUBTYPE OF (IfcTypeProduct);
	ElementType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcEnergyConversionDevice
 SUPERTYPE OF (ONEOF
    (IfcBoiler
    ,IfcSolarDevice))
 SUBTYPE OF (IfcDistributionFlowElement);
END_ENTITY;

ENTITY IfcEnergyConversionDeviceType
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcBoilerType
    ,IfcSolarDeviceType))
 SUBTYPE OF (IfcDistributionFlowElementType);
END_ENTITY;

ENTITY IfcExtendedProperties
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcMaterialProperties
    ,IfcProfileProperties))
 SUBTYPE OF (IfcPropertyAbstraction);
	Name : OPTIONAL IfcStrippedOptional;
	Description : OPTIONAL IfcStrippedOptional;
	Properties : SET [1:?] OF IfcProperty;
END_ENTITY;

ENTITY IfcExternalInformation
 ABSTRACT SUPERTYPE OF (IfcClassification);
END_ENTITY;

ENTITY IfcExternalReference
 ABSTRACT SUPERTYPE OF (IfcClassificationReference);
	Location : OPTIONAL IfcStrippedOptional;
	Identification : OPTIONAL IfcIdentifier;
	Name : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcExtrudedAreaSolid
 SUBTYPE OF (IfcSweptAreaSolid);
	ExtrudedDirection : IfcDirection;
	Depth : IfcPositiveLengthMeasure;
END_ENTITY;

ENTITY IfcFace
 SUBTYPE OF (IfcTopologicalRepresentationItem);
	Bounds : SET [1:?] OF IfcFaceBound;
END_ENTITY;

ENTITY IfcFaceBasedSurfaceModel
 SUBTYPE OF (IfcGeometricRepresentationItem);
	FbsmFaces : SET [1:?] OF IfcConnectedFaceSet;
 DERIVE
	Dim : IfcDimensionCount := 3;
END_ENTITY;

ENTITY IfcFaceBound
 SUBTYPE OF (IfcTopologicalRepresentationItem);
	Bound : IfcLoop;
	Orientation : IfcStrippedOptional;
END_ENTITY;

ENTITY IfcFacetedBrep
 SUBTYPE OF (IfcManifoldSolidBrep);
END_ENTITY;

ENTITY IfcFeatureElement
 ABSTRACT SUPERTYPE OF (IfcFeatureElementSubtraction)
 SUBTYPE OF (IfcElement);
END_ENTITY;

ENTITY IfcFeatureElementSubtraction
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcOpeningElement
    ,IfcVoidingFeature))
 SUBTYPE OF (IfcFeatureElement);
 INVERSE
	VoidsElements : IfcRelVoidsElement FOR RelatedOpeningElement;
END_ENTITY;

ENTITY IfcFillAreaStyle
 SUBTYPE OF (IfcPresentationStyle);
	FillStyles : SET [1:?] OF IfcFillStyleSelect;
	ModelorDraughting : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcFilter
 SUBTYPE OF (IfcFlowTreatmentDevice);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcFilterType
 SUBTYPE OF (IfcFlowTreatmentDeviceType);
	PredefinedType : IfcFilterTypeEnum;
END_ENTITY;

ENTITY IfcFlowController
 SUPERTYPE OF (ONEOF
    (IfcFlowMeter
    ,IfcValve))
 SUBTYPE OF (IfcDistributionFlowElement);
END_ENTITY;

ENTITY IfcFlowControllerType
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcFlowMeterType
    ,IfcValveType))
 SUBTYPE OF (IfcDistributionFlowElementType);
END_ENTITY;

ENTITY IfcFlowFitting
 SUPERTYPE OF (IfcPipeFitting)
 SUBTYPE OF (IfcDistributionFlowElement);
END_ENTITY;

ENTITY IfcFlowFittingType
 ABSTRACT SUPERTYPE OF (IfcPipeFittingType)
 SUBTYPE OF (IfcDistributionFlowElementType);
END_ENTITY;

ENTITY IfcFlowMeter
 SUBTYPE OF (IfcFlowController);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcFlowMeterType
 SUBTYPE OF (IfcFlowControllerType);
	PredefinedType : IfcFlowMeterTypeEnum;
END_ENTITY;

ENTITY IfcFlowMovingDevice
 SUPERTYPE OF (IfcPump)
 SUBTYPE OF (IfcDistributionFlowElement);
END_ENTITY;

ENTITY IfcFlowMovingDeviceType
 ABSTRACT SUPERTYPE OF (IfcPumpType)
 SUBTYPE OF (IfcDistributionFlowElementType);
END_ENTITY;

ENTITY IfcFlowSegment
 SUPERTYPE OF (IfcPipeSegment)
 SUBTYPE OF (IfcDistributionFlowElement);
END_ENTITY;

ENTITY IfcFlowSegmentType
 ABSTRACT SUPERTYPE OF (IfcPipeSegmentType)
 SUBTYPE OF (IfcDistributionFlowElementType);
END_ENTITY;

ENTITY IfcFlowTerminal
 SUPERTYPE OF (ONEOF
    (IfcElectricAppliance
    ,IfcSanitaryTerminal
    ,IfcWasteTerminal))
 SUBTYPE OF (IfcDistributionFlowElement);
END_ENTITY;

ENTITY IfcFlowTerminalType
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcElectricApplianceType
    ,IfcSanitaryTerminalType
    ,IfcWasteTerminalType))
 SUBTYPE OF (IfcDistributionFlowElementType);
END_ENTITY;

ENTITY IfcFlowTreatmentDevice
 SUPERTYPE OF (IfcFilter)
 SUBTYPE OF (IfcDistributionFlowElement);
END_ENTITY;

ENTITY IfcFlowTreatmentDeviceType
 ABSTRACT SUPERTYPE OF (IfcFilterType)
 SUBTYPE OF (IfcDistributionFlowElementType);
END_ENTITY;

ENTITY IfcFurnishingElement
 SUPERTYPE OF (IfcSystemFurnitureElement)
 SUBTYPE OF (IfcElement);
END_ENTITY;

ENTITY IfcFurnishingElementType
 SUPERTYPE OF (IfcSystemFurnitureElementType)
 SUBTYPE OF (IfcElementType);
END_ENTITY;

ENTITY IfcGeometricCurveSet
 SUBTYPE OF (IfcGeometricSet);
END_ENTITY;

ENTITY IfcGeometricRepresentationContext
 SUBTYPE OF (IfcRepresentationContext);
	CoordinateSpaceDimension : IfcDimensionCount;
	Precision : OPTIONAL IfcStrippedOptional;
	WorldCoordinateSystem : IfcAxis2Placement;
	TrueNorth : OPTIONAL IfcDirection;
END_ENTITY;

ENTITY IfcGeometricRepresentationItem
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcAnnotationFillArea
    ,IfcBooleanResult
    ,IfcCartesianTransformationOperator
    ,IfcCurve
    ,IfcDirection
    ,IfcFaceBasedSurfaceModel
    ,IfcGeometricSet
    ,IfcPlacement
    ,IfcPoint
    ,IfcShellBasedSurfaceModel
    ,IfcSolidModel
    ,IfcSurface
    ,IfcTessellatedItem
    ,IfcTextLiteral
    ,IfcVector))
 SUBTYPE OF (IfcRepresentationItem);
END_ENTITY;

ENTITY IfcGeometricSet
 SUPERTYPE OF (IfcGeometricCurveSet)
 SUBTYPE OF (IfcGeometricRepresentationItem);
	Elements : SET [1:?] OF IfcGeometricSetSelect;
 DERIVE
	Dim : IfcDimensionCount := Elements[1].Dim;
END_ENTITY;

ENTITY IfcGroup
 SUPERTYPE OF (IfcSystem)
 SUBTYPE OF (IfcObject);
 INVERSE
	IsGroupedBy : SET [0:?] OF IfcRelAssignsToGroup FOR RelatingGroup;
END_ENTITY;

ENTITY IfcIrregularTimeSeries
 SUBTYPE OF (IfcTimeSeries);
	Values : LIST [1:?] OF IfcIrregularTimeSeriesValue;
END_ENTITY;

ENTITY IfcIrregularTimeSeriesValue;
	TimeStamp : IfcDateTime;
	ListValues : LIST [1:?] OF IfcValue;
END_ENTITY;

ENTITY IfcLine
 SUBTYPE OF (IfcCurve);
	Pnt : IfcCartesianPoint;
	Dir : IfcVector;
END_ENTITY;

ENTITY IfcLocalPlacement
 SUBTYPE OF (IfcObjectPlacement);
	PlacementRelTo : OPTIONAL IfcObjectPlacement;
	RelativePlacement : IfcAxis2Placement;
END_ENTITY;

ENTITY IfcLoop
 SUBTYPE OF (IfcTopologicalRepresentationItem);
END_ENTITY;

ENTITY IfcManifoldSolidBrep
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcAdvancedBrep
    ,IfcFacetedBrep))
 SUBTYPE OF (IfcSolidModel);
	Outer : IfcClosedShell;
END_ENTITY;

ENTITY IfcMappedItem
 SUBTYPE OF (IfcRepresentationItem);
	MappingSource : IfcRepresentationMap;
	MappingTarget : IfcCartesianTransformationOperator;
END_ENTITY;

ENTITY IfcMaterial
 SUBTYPE OF (IfcMaterialDefinition);
	Name : IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
	Category : OPTIONAL IfcStrippedOptional;
 INVERSE
	HasRepresentation : SET [0:1] OF IfcMaterialDefinitionRepresentation FOR RepresentedMaterial;
END_ENTITY;

ENTITY IfcMaterialConstituent
 SUBTYPE OF (IfcMaterialDefinition);
	Name : OPTIONAL IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
	Material : IfcMaterial;
	Fraction : OPTIONAL IfcStrippedOptional;
	Category : OPTIONAL IfcStrippedOptional;
 INVERSE
	ToMaterialConstituentSet : IfcMaterialConstituentSet FOR MaterialConstituents;
END_ENTITY;

ENTITY IfcMaterialConstituentSet
 SUBTYPE OF (IfcMaterialDefinition);
	Name : OPTIONAL IfcStrippedOptional;
	Description : OPTIONAL IfcStrippedOptional;
	MaterialConstituents : OPTIONAL SET [1:?] OF IfcMaterialConstituent;
END_ENTITY;

ENTITY IfcMaterialDefinition
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcMaterial
    ,IfcMaterialConstituent
    ,IfcMaterialConstituentSet
    ,IfcMaterialLayer
    ,IfcMaterialLayerSet
    ,IfcMaterialProfile
    ,IfcMaterialProfileSet));
 INVERSE
	AssociatedTo : SET [0:?] OF IfcRelAssociatesMaterial FOR RelatingMaterial;
	HasProperties : SET [0:?] OF IfcMaterialProperties FOR Material;
END_ENTITY;

ENTITY IfcMaterialDefinitionRepresentation
 SUBTYPE OF (IfcProductRepresentation);
	RepresentedMaterial : IfcMaterial;
END_ENTITY;

ENTITY IfcMaterialLayer
 SUBTYPE OF (IfcMaterialDefinition);
	Material : OPTIONAL IfcMaterial;
	LayerThickness : IfcNonNegativeLengthMeasure;
	IsVentilated : OPTIONAL IfcStrippedOptional;
	Name : OPTIONAL IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
	Category : OPTIONAL IfcStrippedOptional;
	Priority : OPTIONAL IfcStrippedOptional;
 INVERSE
	ToMaterialLayerSet : IfcMaterialLayerSet FOR MaterialLayers;
END_ENTITY;

ENTITY IfcMaterialLayerSet
 SUBTYPE OF (IfcMaterialDefinition);
	MaterialLayers : LIST [1:?] OF IfcMaterialLayer;
	LayerSetName : OPTIONAL IfcStrippedOptional;
	Description : OPTIONAL IfcStrippedOptional;
 DERIVE
	TotalThickness : IfcLengthMeasure := IfcMlsTotalThickness(SELF);
END_ENTITY;

ENTITY IfcMaterialLayerSetUsage
 SUBTYPE OF (IfcMaterialUsageDefinition);
	ForLayerSet : IfcMaterialLayerSet;
	LayerSetDirection : IfcLayerSetDirectionEnum;
	DirectionSense : IfcDirectionSenseEnum;
	OffsetFromReferenceLine : IfcLengthMeasure;
	ReferenceExtent : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcMaterialProfile
 SUBTYPE OF (IfcMaterialDefinition);
	Name : OPTIONAL IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
	Material : OPTIONAL IfcMaterial;
	Profile : IfcProfileDef;
	Priority : OPTIONAL IfcStrippedOptional;
	Category : OPTIONAL IfcStrippedOptional;
 INVERSE
	ToMaterialProfileSet : IfcMaterialProfileSet FOR MaterialProfiles;
END_ENTITY;

ENTITY IfcMaterialProfileSet
 SUBTYPE OF (IfcMaterialDefinition);
	Name : OPTIONAL IfcStrippedOptional;
	Description : OPTIONAL IfcStrippedOptional;
	MaterialProfiles : LIST [1:?] OF IfcMaterialProfile;
	CompositeProfile : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcMaterialProfileSetUsage
 SUBTYPE OF (IfcMaterialUsageDefinition);
	ForProfileSet : IfcMaterialProfileSet;
	CardinalPoint : OPTIONAL IfcStrippedOptional;
	ReferenceExtent : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcMaterialProperties
 SUBTYPE OF (IfcExtendedProperties);
	Material : IfcMaterialDefinition;
END_ENTITY;

ENTITY IfcMaterialUsageDefinition
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcMaterialLayerSetUsage
    ,IfcMaterialProfileSetUsage));
 INVERSE
	AssociatedTo : SET [1:?] OF IfcRelAssociatesMaterial FOR RelatingMaterial;
END_ENTITY;

ENTITY IfcMeasureWithUnit;
	ValueComponent : IfcValue;
	UnitComponent : IfcUnit;
END_ENTITY;

ENTITY IfcMember
 SUBTYPE OF (IfcBuildingElement);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcMemberType
 SUBTYPE OF (IfcBuildingElementType);
	PredefinedType : IfcMemberTypeEnum;
END_ENTITY;

ENTITY IfcNamedUnit
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcConversionBasedUnit
    ,IfcSIUnit));
	Dimensions : IfcDimensionalExponents;
	UnitType : IfcUnitEnum;
END_ENTITY;

ENTITY IfcObject
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcActor
    ,IfcControl
    ,IfcGroup
    ,IfcProcess
    ,IfcProduct
    ,IfcResource))
 SUBTYPE OF (IfcObjectDefinition);
	ObjectType : OPTIONAL IfcStrippedOptional;
 INVERSE
	IsDeclaredBy : SET [0:1] OF IfcRelDefinesByObject FOR RelatedObjects;
	Declares : SET [0:?] OF IfcRelDefinesByObject FOR RelatingObject;
	IsTypedBy : SET [0:1] OF IfcRelDefinesByType FOR RelatedObjects;
	IsDefinedBy : SET [0:?] OF IfcRelDefinesByProperties FOR RelatedObjects;
END_ENTITY;

ENTITY IfcObjectDefinition
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcContext
    ,IfcObject
    ,IfcTypeObject))
 SUBTYPE OF (IfcRoot);
 INVERSE
	HasAssignments : SET [0:?] OF IfcRelAssigns FOR RelatedObjects;
	Nests : SET [0:1] OF IfcRelNests FOR RelatedObjects;
	IsNestedBy : SET [0:?] OF IfcRelNests FOR RelatingObject;
	HasContext : SET [0:1] OF IfcRelDeclares FOR RelatedDefinitions;
	IsDecomposedBy : SET [0:?] OF IfcRelAggregates FOR RelatingObject;
	Decomposes : SET [0:1] OF IfcRelAggregates FOR RelatedObjects;
	HasAssociations : SET [0:?] OF IfcRelAssociates FOR RelatedObjects;
END_ENTITY;

ENTITY IfcObjectPlacement
 ABSTRACT SUPERTYPE OF (IfcLocalPlacement);
 INVERSE
	PlacesObject : SET [0:?] OF IfcProduct FOR ObjectPlacement;
	ReferencedByPlacements : SET [0:?] OF IfcLocalPlacement FOR PlacementRelTo;
END_ENTITY;

ENTITY IfcOccupant
 SUBTYPE OF (IfcActor);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcOpeningElement
 SUPERTYPE OF (IfcOpeningStandardCase)
 SUBTYPE OF (IfcFeatureElementSubtraction);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcOpeningStandardCase
 SUBTYPE OF (IfcOpeningElement);
END_ENTITY;

ENTITY IfcOrganization;
	Identification : OPTIONAL IfcIdentifier;
	Name : IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
	Roles : OPTIONAL LIST [1:?] OF IfcActorRole;
	Addresses : OPTIONAL LIST [1:?] OF IfcAddress;
 INVERSE
	Engages : SET [0:?] OF IfcPersonAndOrganization FOR TheOrganization;
END_ENTITY;

ENTITY IfcOwnerHistory;
	OwningUser : IfcPersonAndOrganization;
	OwningApplication : IfcApplication;
	State : OPTIONAL IfcStateEnum;
	ChangeAction : OPTIONAL IfcChangeActionEnum;
	LastModifiedDate : OPTIONAL IfcStrippedOptional;
	LastModifyingUser : OPTIONAL IfcStrippedOptional;
	LastModifyingApplication : OPTIONAL IfcStrippedOptional;
	CreationDate : IfcTimeStamp;
END_ENTITY;

ENTITY IfcPerformanceHistory
 SUBTYPE OF (IfcControl);
	LifeCyclePhase : IfcLabel;
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPerson;
	Identification : OPTIONAL IfcStrippedOptional;
	FamilyName : OPTIONAL IfcStrippedOptional;
	GivenName : OPTIONAL IfcStrippedOptional;
	MiddleNames : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
	PrefixTitles : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
	SuffixTitles : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
	Roles : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
	Addresses : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
 INVERSE
	EngagedIn : SET [0:?] OF IfcPersonAndOrganization FOR ThePerson;
END_ENTITY;

ENTITY IfcPersonAndOrganization;
	ThePerson : IfcPerson;
	TheOrganization : IfcOrganization;
	Roles : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPhysicalQuantity
 ABSTRACT SUPERTYPE OF (IfcPhysicalSimpleQuantity);
	Name : IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPhysicalSimpleQuantity
 ABSTRACT SUPERTYPE OF (IfcQuantityCount)
 SUBTYPE OF (IfcPhysicalQuantity);
	Unit : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPipeFitting
 SUBTYPE OF (IfcFlowFitting);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPipeFittingType
 SUBTYPE OF (IfcFlowFittingType);
	PredefinedType : IfcPipeFittingTypeEnum;
END_ENTITY;

ENTITY IfcPipeSegment
 SUBTYPE OF (IfcFlowSegment);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPipeSegmentType
 SUBTYPE OF (IfcFlowSegmentType);
	PredefinedType : IfcPipeSegmentTypeEnum;
END_ENTITY;

ENTITY IfcPlacement
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcAxis1Placement
    ,IfcAxis2Placement3D))
 SUBTYPE OF (IfcGeometricRepresentationItem);
	Location : IfcCartesianPoint;
 DERIVE
	Dim : IfcDimensionCount := Location.Dim;
END_ENTITY;

ENTITY IfcPlate
 SUBTYPE OF (IfcBuildingElement);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPoint
 ABSTRACT SUPERTYPE OF (IfcCartesianPoint)
 SUBTYPE OF (IfcGeometricRepresentationItem);
END_ENTITY;

ENTITY IfcPolyline
 SUBTYPE OF (IfcBoundedCurve);
	Points : LIST [2:?] OF IfcCartesianPoint;
END_ENTITY;

ENTITY IfcPort
 ABSTRACT SUPERTYPE OF (IfcDistributionPort)
 SUBTYPE OF (IfcProduct);
 INVERSE
	ContainedIn : SET [0:1] OF IfcRelConnectsPortToElement FOR RelatingPort;
	ConnectedFrom : SET [0:1] OF IfcRelConnectsPorts FOR RelatedPort;
	ConnectedTo : SET [0:1] OF IfcRelConnectsPorts FOR RelatingPort;
END_ENTITY;

ENTITY IfcPostalAddress
 SUBTYPE OF (IfcAddress);
	InternalLocation : OPTIONAL IfcStrippedOptional;
	AddressLines : OPTIONAL LIST [1:?] OF IfcLabel;
	PostalBox : OPTIONAL IfcStrippedOptional;
	Town : OPTIONAL IfcLabel;
	Region : OPTIONAL IfcLabel;
	PostalCode : OPTIONAL IfcLabel;
	Country : OPTIONAL IfcLabel;
END_ENTITY;

ENTITY IfcPresentationLayerAssignment;
	Name : IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
	AssignedItems : SET [1:?] OF IfcLayeredItem;
	Identifier : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPresentationStyle
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcCurveStyle
    ,IfcFillAreaStyle
    ,IfcSurfaceStyle));
	Name : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcProcess
 ABSTRACT SUPERTYPE OF (IfcTask)
 SUBTYPE OF (IfcObject);
	Identification : OPTIONAL IfcStrippedOptional;
	LongDescription : OPTIONAL IfcStrippedOptional;
 INVERSE
	OperatesOn : SET [0:?] OF IfcRelAssignsToProcess FOR RelatingProcess;
END_ENTITY;

ENTITY IfcProduct
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcElement
    ,IfcPort
    ,IfcSpatialElement))
 SUBTYPE OF (IfcObject);
	ObjectPlacement : OPTIONAL IfcObjectPlacement;
	Representation : OPTIONAL IfcProductRepresentation;
 INVERSE
	ReferencedBy : SET [0:?] OF IfcRelAssignsToProduct FOR RelatingProduct;
END_ENTITY;

ENTITY IfcProductDefinitionShape
 SUBTYPE OF (IfcProductRepresentation);
 INVERSE
	ShapeOfProduct : SET [1:?] OF IfcProduct FOR Representation;
	HasShapeAspects : SET [0:?] OF IfcShapeAspect FOR PartOfProductDefinitionShape;
END_ENTITY;

ENTITY IfcProductRepresentation
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcMaterialDefinitionRepresentation
    ,IfcProductDefinitionShape));
	Name : OPTIONAL IfcStrippedOptional;
	Description : OPTIONAL IfcStrippedOptional;
	Representations : LIST [1:?] OF IfcRepresentation;
END_ENTITY;

ENTITY IfcProfileDef;
	ProfileType : IfcProfileTypeEnum;
	ProfileName : OPTIONAL IfcStrippedOptional;
 INVERSE
	HasProperties : SET [0:?] OF IfcProfileProperties FOR ProfileDefinition;
END_ENTITY;

ENTITY IfcProfileProperties
 SUBTYPE OF (IfcExtendedProperties);
	ProfileDefinition : IfcProfileDef;
END_ENTITY;

ENTITY IfcProject
 SUBTYPE OF (IfcContext);
END_ENTITY;

ENTITY IfcProperty
 ABSTRACT SUPERTYPE OF (IfcSimpleProperty)
 SUBTYPE OF (IfcPropertyAbstraction);
	Name : IfcIdentifier;
	Description : OPTIONAL IfcStrippedOptional;
 INVERSE
	PartOfPset : SET [0:?] OF IfcPropertySet FOR HasProperties;
END_ENTITY;

ENTITY IfcPropertyAbstraction
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcExtendedProperties
    ,IfcProperty));
END_ENTITY;

ENTITY IfcPropertyBoundedValue
 SUBTYPE OF (IfcSimpleProperty);
	UpperBoundValue : OPTIONAL IfcStrippedOptional;
	LowerBoundValue : OPTIONAL IfcStrippedOptional;
	Unit : OPTIONAL IfcStrippedOptional;
	SetPointValue : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPropertyDefinition
 ABSTRACT SUPERTYPE OF (IfcPropertySetDefinition)
 SUBTYPE OF (IfcRoot);
 INVERSE
	HasContext : SET [0:1] OF IfcRelDeclares FOR RelatedDefinitions;
	HasAssociations : SET [0:?] OF IfcRelAssociates FOR RelatedObjects;
END_ENTITY;

ENTITY IfcPropertyEnumeratedValue
 SUBTYPE OF (IfcSimpleProperty);
	EnumerationValues : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
	EnumerationReference : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPropertyReferenceValue
 SUBTYPE OF (IfcSimpleProperty);
	UsageName : OPTIONAL IfcStrippedOptional;
	PropertyReference : OPTIONAL IfcObjectReferenceSelect;
END_ENTITY;

ENTITY IfcPropertySet
 SUBTYPE OF (IfcPropertySetDefinition);
	HasProperties : SET [1:?] OF IfcProperty;
END_ENTITY;

ENTITY IfcPropertySetDefinition
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcPropertySet
    ,IfcQuantitySet))
 SUBTYPE OF (IfcPropertyDefinition);
 INVERSE
	DefinesType : SET [0:?] OF IfcTypeObject FOR HasPropertySets;
	DefinesOccurrence : SET [0:1] OF IfcRelDefinesByProperties FOR RelatingPropertyDefinition;
END_ENTITY;

ENTITY IfcPropertySingleValue
 SUBTYPE OF (IfcSimpleProperty);
	NominalValue : OPTIONAL IfcStrippedOptional;
	Unit : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPropertyTableValue
 SUBTYPE OF (IfcSimpleProperty);
	DefiningValues : OPTIONAL LIST [1:?] OF UNIQUE IfcStrippedOptional;
	DefinedValues : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
	Expression : OPTIONAL IfcStrippedOptional;
	DefiningUnit : OPTIONAL IfcStrippedOptional;
	DefinedUnit : OPTIONAL IfcStrippedOptional;
	CurveInterpolation : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPump
 SUBTYPE OF (IfcFlowMovingDevice);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcPumpType
 SUBTYPE OF (IfcFlowMovingDeviceType);
	PredefinedType : IfcPumpTypeEnum;
END_ENTITY;

ENTITY IfcQuantityCount
 SUBTYPE OF (IfcPhysicalSimpleQuantity);
	CountValue : IfcCountMeasure;
	Formula : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcQuantitySet
 ABSTRACT SUPERTYPE OF (IfcElementQuantity)
 SUBTYPE OF (IfcPropertySetDefinition);
END_ENTITY;

ENTITY IfcRecurrencePattern;
	RecurrenceType : IfcRecurrenceTypeEnum;
	DayComponent : OPTIONAL SET [1:?] OF IfcStrippedOptional;
	WeekdayComponent : OPTIONAL SET [1:?] OF IfcStrippedOptional;
	MonthComponent : OPTIONAL SET [1:?] OF IfcStrippedOptional;
	Position : OPTIONAL IfcStrippedOptional;
	Interval : OPTIONAL IfcStrippedOptional;
	Occurrences : OPTIONAL IfcStrippedOptional;
	TimePeriods : OPTIONAL LIST [1:?] OF IfcTimePeriod;
END_ENTITY;

ENTITY IfcRelAggregates
 SUBTYPE OF (IfcRelDecomposes);
	RelatingObject : IfcObjectDefinition;
	RelatedObjects : SET [1:?] OF IfcObjectDefinition;
END_ENTITY;

ENTITY IfcRelAssigns
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcRelAssignsToActor
    ,IfcRelAssignsToControl
    ,IfcRelAssignsToGroup
    ,IfcRelAssignsToProcess
    ,IfcRelAssignsToProduct
    ,IfcRelAssignsToResource))
 SUBTYPE OF (IfcRelationship);
	RelatedObjects : SET [1:?] OF IfcObjectDefinition;
	RelatedObjectsType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcRelAssignsToActor
 SUBTYPE OF (IfcRelAssigns);
	RelatingActor : IfcActor;
	ActingRole : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcRelAssignsToControl
 SUBTYPE OF (IfcRelAssigns);
	RelatingControl : IfcControl;
END_ENTITY;

ENTITY IfcRelAssignsToGroup
 SUBTYPE OF (IfcRelAssigns);
	RelatingGroup : IfcGroup;
END_ENTITY;

ENTITY IfcRelAssignsToProcess
 SUBTYPE OF (IfcRelAssigns);
	RelatingProcess : IfcProcessSelect;
	QuantityInProcess : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcRelAssignsToProduct
 SUBTYPE OF (IfcRelAssigns);
	RelatingProduct : IfcProductSelect;
END_ENTITY;

ENTITY IfcRelAssignsToResource
 SUBTYPE OF (IfcRelAssigns);
	RelatingResource : IfcResourceSelect;
END_ENTITY;

ENTITY IfcRelAssociates
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcRelAssociatesClassification
    ,IfcRelAssociatesMaterial))
 SUBTYPE OF (IfcRelationship);
	RelatedObjects : SET [1:?] OF IfcDefinitionSelect;
END_ENTITY;

ENTITY IfcRelAssociatesClassification
 SUBTYPE OF (IfcRelAssociates);
	RelatingClassification : IfcClassificationSelect;
END_ENTITY;

ENTITY IfcRelAssociatesMaterial
 SUBTYPE OF (IfcRelAssociates);
	RelatingMaterial : IfcMaterialSelect;
END_ENTITY;

ENTITY IfcRelConnects
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcRelConnectsElements
    ,IfcRelConnectsPortToElement
    ,IfcRelConnectsPorts
    ,IfcRelContainedInSpatialStructure
    ,IfcRelInterferesElements
    ,IfcRelSpaceBoundary))
 SUBTYPE OF (IfcRelationship);
END_ENTITY;

ENTITY IfcRelConnectsElements
 SUPERTYPE OF (IfcRelConnectsPathElements)
 SUBTYPE OF (IfcRelConnects);
	ConnectionGeometry : OPTIONAL IfcConnectionGeometry;
	RelatingElement : IfcElement;
	RelatedElement : IfcElement;
END_ENTITY;

ENTITY IfcRelConnectsPathElements
 SUBTYPE OF (IfcRelConnectsElements);
	RelatingPriorities : LIST [0:?] OF IfcStrippedOptional;
	RelatedPriorities : LIST [0:?] OF IfcStrippedOptional;
	RelatedConnectionType : IfcConnectionTypeEnum;
	RelatingConnectionType : IfcConnectionTypeEnum;
END_ENTITY;

ENTITY IfcRelConnectsPortToElement
 SUBTYPE OF (IfcRelConnects);
	RelatingPort : IfcPort;
	RelatedElement : IfcDistributionElement;
END_ENTITY;

ENTITY IfcRelConnectsPorts
 SUBTYPE OF (IfcRelConnects);
	RelatingPort : IfcPort;
	RelatedPort : IfcPort;
	RealizingElement : OPTIONAL IfcElement;
END_ENTITY;

ENTITY IfcRelContainedInSpatialStructure
 SUBTYPE OF (IfcRelConnects);
	RelatedElements : SET [1:?] OF IfcProduct;
	RelatingStructure : IfcSpatialElement;
END_ENTITY;

ENTITY IfcRelDeclares
 SUBTYPE OF (IfcRelationship);
	RelatingContext : IfcContext;
	RelatedDefinitions : SET [1:?] OF IfcDefinitionSelect;
END_ENTITY;

ENTITY IfcRelDecomposes
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcRelAggregates
    ,IfcRelNests
    ,IfcRelVoidsElement))
 SUBTYPE OF (IfcRelationship);
END_ENTITY;

ENTITY IfcRelDefines
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcRelDefinesByObject
    ,IfcRelDefinesByProperties
    ,IfcRelDefinesByType))
 SUBTYPE OF (IfcRelationship);
END_ENTITY;

ENTITY IfcRelDefinesByObject
 SUBTYPE OF (IfcRelDefines);
	RelatedObjects : SET [1:?] OF IfcObject;
	RelatingObject : IfcObject;
END_ENTITY;

ENTITY IfcRelDefinesByProperties
 SUBTYPE OF (IfcRelDefines);
	RelatedObjects : SET [1:1] OF IfcObjectDefinition;
	RelatingPropertyDefinition : IfcPropertySetDefinitionSelect;
END_ENTITY;

ENTITY IfcRelDefinesByType
 SUBTYPE OF (IfcRelDefines);
	RelatedObjects : SET [1:?] OF IfcObject;
	RelatingType : IfcTypeObject;
END_ENTITY;

ENTITY IfcRelInterferesElements
 SUBTYPE OF (IfcRelConnects);
	RelatingElement : IfcElement;
	RelatedElement : IfcElement;
	InterferenceGeometry : OPTIONAL IfcStrippedOptional;
	InterferenceType : OPTIONAL IfcStrippedOptional;
	ImpliedOrder : IfcStrippedOptional;
END_ENTITY;

ENTITY IfcRelNests
 SUBTYPE OF (IfcRelDecomposes);
	RelatingObject : IfcObjectDefinition;
	RelatedObjects : LIST [1:?] OF IfcObjectDefinition;
END_ENTITY;

ENTITY IfcRelSpaceBoundary
 SUBTYPE OF (IfcRelConnects);
	RelatingSpace : IfcSpaceBoundarySelect;
	RelatedBuildingElement : IfcElement;
	ConnectionGeometry : OPTIONAL IfcStrippedOptional;
	PhysicalOrVirtualBoundary : IfcPhysicalOrVirtualEnum;
	InternalOrExternalBoundary : IfcInternalOrExternalEnum;
END_ENTITY;

ENTITY IfcRelVoidsElement
 SUBTYPE OF (IfcRelDecomposes);
	RelatingBuildingElement : IfcElement;
	RelatedOpeningElement : IfcFeatureElementSubtraction;
END_ENTITY;

ENTITY IfcRelationship
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcRelAssigns
    ,IfcRelAssociates
    ,IfcRelConnects
    ,IfcRelDeclares
    ,IfcRelDecomposes
    ,IfcRelDefines))
 SUBTYPE OF (IfcRoot);
END_ENTITY;

ENTITY IfcRepresentation
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcShapeModel
    ,IfcStyleModel));
	ContextOfItems : IfcRepresentationContext;
	RepresentationIdentifier : OPTIONAL IfcLabel;
	RepresentationType : OPTIONAL IfcLabel;
	Items : SET [1:?] OF IfcRepresentationItem;
 INVERSE
	RepresentationMap : SET [0:1] OF IfcRepresentationMap FOR MappedRepresentation;
	LayerAssignments : SET [0:?] OF IfcPresentationLayerAssignment FOR AssignedItems;
	OfProductRepresentation : SET [0:?] OF IfcProductRepresentation FOR Representations;
END_ENTITY;

ENTITY IfcRepresentationContext
 ABSTRACT SUPERTYPE OF (IfcGeometricRepresentationContext);
	ContextIdentifier : OPTIONAL IfcLabel;
	ContextType : OPTIONAL IfcLabel;
 INVERSE
	RepresentationsInContext : SET [0:?] OF IfcRepresentation FOR ContextOfItems;
END_ENTITY;

ENTITY IfcRepresentationItem
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcGeometricRepresentationItem
    ,IfcMappedItem
    ,IfcStyledItem
    ,IfcTopologicalRepresentationItem));
 INVERSE
	LayerAssignment : SET [0:1] OF IfcPresentationLayerAssignment FOR AssignedItems;
	StyledByItem : SET [0:1] OF IfcStyledItem FOR Item;
END_ENTITY;

ENTITY IfcRepresentationMap;
	MappingOrigin : IfcAxis2Placement;
	MappedRepresentation : IfcRepresentation;
 INVERSE
	HasShapeAspects : SET [0:?] OF IfcShapeAspect FOR PartOfProductDefinitionShape;
	MapUsage : SET [0:?] OF IfcMappedItem FOR MappingSource;
END_ENTITY;

ENTITY IfcResource
 ABSTRACT SUPERTYPE OF (IfcConstructionResource)
 SUBTYPE OF (IfcObject);
	Identification : OPTIONAL IfcStrippedOptional;
	LongDescription : OPTIONAL IfcStrippedOptional;
 INVERSE
	ResourceOf : SET [0:?] OF IfcRelAssignsToResource FOR RelatingResource;
END_ENTITY;

ENTITY IfcRevolvedAreaSolid
 SUBTYPE OF (IfcSweptAreaSolid);
	Axis : IfcAxis1Placement;
	Angle : IfcPlaneAngleMeasure;
 DERIVE
	AxisLine : IfcLine := IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcCurve() || IfcLine(Axis.Location, 
  IfcRepresentationItem() || IfcGeometricRepresentationItem () || IfcVector(Axis.Z,1.0));
END_ENTITY;

ENTITY IfcRoot
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcObjectDefinition
    ,IfcPropertyDefinition
    ,IfcRelationship));
	GlobalId : IfcGloballyUniqueId;
	OwnerHistory : OPTIONAL IfcOwnerHistory;
	Name : OPTIONAL IfcLabel;
	Description : OPTIONAL IfcText;
END_ENTITY;

ENTITY IfcSIUnit
 SUBTYPE OF (IfcNamedUnit);
	Prefix : OPTIONAL IfcSIPrefix;
	Name : IfcSIUnitName;
 DERIVE
	SELF\IfcNamedUnit.Dimensions : IfcDimensionalExponents := IfcDimensionsForSiUnit (SELF.Name);
END_ENTITY;

ENTITY IfcSanitaryTerminal
 SUBTYPE OF (IfcFlowTerminal);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcSanitaryTerminalType
 SUBTYPE OF (IfcFlowTerminalType);
	PredefinedType : IfcSanitaryTerminalTypeEnum;
END_ENTITY;

ENTITY IfcSchedulingTime
 ABSTRACT SUPERTYPE OF (IfcWorkTime);
	Name : OPTIONAL IfcStrippedOptional;
	DataOrigin : OPTIONAL IfcStrippedOptional;
	UserDefinedDataOrigin : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcShapeAspect;
	ShapeRepresentations : LIST [1:?] OF IfcShapeModel;
	Name : OPTIONAL IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
	ProductDefinitional : IfcStrippedOptional;
	PartOfProductDefinitionShape : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcShapeModel
 ABSTRACT SUPERTYPE OF (IfcShapeRepresentation)
 SUBTYPE OF (IfcRepresentation);
 INVERSE
	OfShapeAspect : SET [0:1] OF IfcShapeAspect FOR ShapeRepresentations;
END_ENTITY;

ENTITY IfcShapeRepresentation
 SUBTYPE OF (IfcShapeModel);
END_ENTITY;

ENTITY IfcShellBasedSurfaceModel
 SUBTYPE OF (IfcGeometricRepresentationItem);
	SbsmBoundary : SET [1:?] OF IfcShell;
 DERIVE
	Dim : IfcDimensionCount := 3;
END_ENTITY;

ENTITY IfcSimpleProperty
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcPropertyBoundedValue
    ,IfcPropertyEnumeratedValue
    ,IfcPropertyReferenceValue
    ,IfcPropertySingleValue
    ,IfcPropertyTableValue))
 SUBTYPE OF (IfcProperty);
END_ENTITY;

ENTITY IfcSite
 SUBTYPE OF (IfcSpatialStructureElement);
	RefLatitude : OPTIONAL IfcCompoundPlaneAngleMeasure;
	RefLongitude : OPTIONAL IfcCompoundPlaneAngleMeasure;
	RefElevation : OPTIONAL IfcLengthMeasure;
	LandTitleNumber : OPTIONAL IfcLabel;
	SiteAddress : OPTIONAL IfcPostalAddress;
END_ENTITY;

ENTITY IfcSlab
 SUPERTYPE OF (ONEOF
    (IfcSlabElementedCase
    ,IfcSlabStandardCase))
 SUBTYPE OF (IfcBuildingElement);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcSlabElementedCase
 SUBTYPE OF (IfcSlab);
END_ENTITY;

ENTITY IfcSlabStandardCase
 SUBTYPE OF (IfcSlab);
END_ENTITY;

ENTITY IfcSlabType
 SUBTYPE OF (IfcBuildingElementType);
	PredefinedType : IfcSlabTypeEnum;
END_ENTITY;

ENTITY IfcSolarDevice
 SUBTYPE OF (IfcEnergyConversionDevice);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcSolarDeviceType
 SUBTYPE OF (IfcEnergyConversionDeviceType);
	PredefinedType : IfcSolarDeviceTypeEnum;
END_ENTITY;

ENTITY IfcSolidModel
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcCsgSolid
    ,IfcManifoldSolidBrep
    ,IfcSweptAreaSolid
    ,IfcSweptDiskSolid))
 SUBTYPE OF (IfcGeometricRepresentationItem);
 DERIVE
	Dim : IfcDimensionCount := 3;
END_ENTITY;

ENTITY IfcSpace
 SUBTYPE OF (IfcSpatialStructureElement);
	PredefinedType : OPTIONAL IfcStrippedOptional;
	ElevationWithFlooring : OPTIONAL IfcStrippedOptional;
 INVERSE
	BoundedBy : SET [0:?] OF IfcRelSpaceBoundary FOR RelatingSpace;
END_ENTITY;

ENTITY IfcSpaceType
 SUBTYPE OF (IfcSpatialStructureElementType);
	PredefinedType : IfcSpaceTypeEnum;
	LongName : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcSpatialElement
 ABSTRACT SUPERTYPE OF (IfcSpatialStructureElement)
 SUBTYPE OF (IfcProduct);
	LongName : OPTIONAL IfcStrippedOptional;
 INVERSE
	ContainsElements : SET [0:?] OF IfcRelContainedInSpatialStructure FOR RelatingStructure;
END_ENTITY;

ENTITY IfcSpatialElementType
 ABSTRACT SUPERTYPE OF (IfcSpatialStructureElementType)
 SUBTYPE OF (IfcTypeProduct);
	ElementType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcSpatialStructureElement
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcBuilding
    ,IfcBuildingStorey
    ,IfcSite
    ,IfcSpace))
 SUBTYPE OF (IfcSpatialElement);
	CompositionType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcSpatialStructureElementType
 ABSTRACT SUPERTYPE OF (IfcSpaceType)
 SUBTYPE OF (IfcSpatialElementType);
END_ENTITY;

ENTITY IfcStyleModel
 ABSTRACT SUPERTYPE OF (IfcStyledRepresentation)
 SUBTYPE OF (IfcRepresentation);
END_ENTITY;

ENTITY IfcStyledItem
 SUBTYPE OF (IfcRepresentationItem);
	Item : OPTIONAL IfcStrippedOptional;
	Styles : SET [1:?] OF IfcStyleAssignmentSelect;
	Name : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcStyledRepresentation
 SUBTYPE OF (IfcStyleModel);
END_ENTITY;

ENTITY IfcSubContractResource
 SUBTYPE OF (IfcConstructionResource);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcSubContractResourceType
 SUBTYPE OF (IfcConstructionResourceType);
	PredefinedType : IfcSubContractResourceTypeEnum;
END_ENTITY;

ENTITY IfcSurface
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcBoundedSurface
    ,IfcSweptSurface))
 SUBTYPE OF (IfcGeometricRepresentationItem);
 DERIVE
	Dim : IfcDimensionCount := 3;
END_ENTITY;

ENTITY IfcSurfaceStyle
 SUBTYPE OF (IfcPresentationStyle);
	Side : IfcSurfaceSide;
	Styles : SET [1:5] OF IfcSurfaceStyleElementSelect;
END_ENTITY;

ENTITY IfcSweptAreaSolid
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcExtrudedAreaSolid
    ,IfcRevolvedAreaSolid))
 SUBTYPE OF (IfcSolidModel);
	SweptArea : IfcProfileDef;
	Position : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcSweptDiskSolid
 SUBTYPE OF (IfcSolidModel);
	Directrix : IfcCurve;
	Radius : IfcPositiveLengthMeasure;
	InnerRadius : OPTIONAL IfcStrippedOptional;
	StartParam : OPTIONAL IfcStrippedOptional;
	EndParam : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcSweptSurface
 ABSTRACT
 SUBTYPE OF (IfcSurface);
	SweptCurve : IfcProfileDef;
	Position : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcSystem
 SUPERTYPE OF (IfcDistributionSystem)
 SUBTYPE OF (IfcGroup);
END_ENTITY;

ENTITY IfcSystemFurnitureElement
 SUBTYPE OF (IfcFurnishingElement);
	PredefinedType : OPTIONAL IfcSystemFurnitureElementTypeEnum;
END_ENTITY;

ENTITY IfcSystemFurnitureElementType
 SUBTYPE OF (IfcFurnishingElementType);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcTask
 SUBTYPE OF (IfcProcess);
	Status : OPTIONAL IfcStrippedOptional;
	WorkMethod : OPTIONAL IfcStrippedOptional;
	IsMilestone : IfcStrippedOptional;
	Priority : OPTIONAL IfcStrippedOptional;
	TaskTime : OPTIONAL IfcStrippedOptional;
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcTelecomAddress
 SUBTYPE OF (IfcAddress);
	TelephoneNumbers : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
	FacsimileNumbers : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
	PagerNumber : OPTIONAL IfcStrippedOptional;
	ElectronicMailAddresses : OPTIONAL LIST [1:?] OF IfcLabel;
	WWWHomePageURL : OPTIONAL IfcStrippedOptional;
	MessagingIDs : OPTIONAL LIST [1:?] OF IfcStrippedOptional;
END_ENTITY;

ENTITY IfcTessellatedItem
 ABSTRACT
 SUBTYPE OF (IfcGeometricRepresentationItem);
END_ENTITY;

ENTITY IfcTextLiteral
 SUBTYPE OF (IfcGeometricRepresentationItem);
	Literal : IfcPresentableText;
	Placement : IfcAxis2Placement;
	Path : IfcTextPath;
END_ENTITY;

ENTITY IfcTimePeriod;
	StartTime : IfcTime;
	EndTime : IfcTime;
END_ENTITY;

ENTITY IfcTimeSeries
 ABSTRACT SUPERTYPE OF (IfcIrregularTimeSeries);
	Name : IfcLabel;
	Description : OPTIONAL IfcStrippedOptional;
	StartTime : IfcDateTime;
	EndTime : IfcDateTime;
	TimeSeriesDataType : IfcTimeSeriesDataTypeEnum;
	DataOrigin : IfcDataOriginEnum;
	UserDefinedDataOrigin : OPTIONAL IfcStrippedOptional;
	Unit : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcTopologicalRepresentationItem
 ABSTRACT SUPERTYPE OF (ONEOF
    (IfcConnectedFaceSet
    ,IfcFace
    ,IfcFaceBound
    ,IfcLoop))
 SUBTYPE OF (IfcRepresentationItem);
END_ENTITY;

ENTITY IfcTypeObject
 SUPERTYPE OF (ONEOF
    (IfcTypeProduct
    ,IfcTypeResource))
 SUBTYPE OF (IfcObjectDefinition);
	ApplicableOccurrence : OPTIONAL IfcStrippedOptional;
	HasPropertySets : OPTIONAL SET [1:?] OF IfcPropertySetDefinition;
 INVERSE
	Types : SET [0:1] OF IfcRelDefinesByType FOR RelatingType;
END_ENTITY;

ENTITY IfcTypeProduct
 SUPERTYPE OF (ONEOF
    (IfcElementType
    ,IfcSpatialElementType))
 SUBTYPE OF (IfcTypeObject);
	RepresentationMaps : OPTIONAL LIST [1:?] OF UNIQUE IfcRepresentationMap;
	Tag : OPTIONAL IfcStrippedOptional;
 INVERSE
	ReferencedBy : SET [0:?] OF IfcRelAssignsToProduct FOR RelatingProduct;
END_ENTITY;

ENTITY IfcTypeResource
 ABSTRACT SUPERTYPE OF (IfcConstructionResourceType)
 SUBTYPE OF (IfcTypeObject);
	Identification : OPTIONAL IfcStrippedOptional;
	LongDescription : OPTIONAL IfcStrippedOptional;
	ResourceType : OPTIONAL IfcStrippedOptional;
 INVERSE
	ResourceOf : SET [0:?] OF IfcRelAssignsToResource FOR RelatingResource;
END_ENTITY;

ENTITY IfcUnitAssignment;
	Units : SET [1:?] OF IfcUnit;
END_ENTITY;

ENTITY IfcValve
 SUBTYPE OF (IfcFlowController);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcValveType
 SUBTYPE OF (IfcFlowControllerType);
	PredefinedType : IfcValveTypeEnum;
END_ENTITY;

ENTITY IfcVector
 SUBTYPE OF (IfcGeometricRepresentationItem);
	Orientation : IfcDirection;
	Magnitude : IfcLengthMeasure;
 DERIVE
	Dim : IfcDimensionCount := Orientation.Dim;
END_ENTITY;

ENTITY IfcVoidingFeature
 SUBTYPE OF (IfcFeatureElementSubtraction);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcWall
 SUPERTYPE OF (ONEOF
    (IfcWallElementedCase
    ,IfcWallStandardCase))
 SUBTYPE OF (IfcBuildingElement);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcWallElementedCase
 SUBTYPE OF (IfcWall);
END_ENTITY;

ENTITY IfcWallStandardCase
 SUBTYPE OF (IfcWall);
END_ENTITY;

ENTITY IfcWallType
 SUBTYPE OF (IfcBuildingElementType);
	PredefinedType : IfcWallTypeEnum;
END_ENTITY;

ENTITY IfcWasteTerminal
 SUBTYPE OF (IfcFlowTerminal);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcWasteTerminalType
 SUBTYPE OF (IfcFlowTerminalType);
	PredefinedType : IfcWasteTerminalTypeEnum;
END_ENTITY;

ENTITY IfcWorkCalendar
 SUBTYPE OF (IfcControl);
	WorkingTimes : OPTIONAL SET [1:?] OF IfcWorkTime;
	ExceptionTimes : OPTIONAL SET [1:?] OF IfcStrippedOptional;
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcWorkControl
 ABSTRACT SUPERTYPE OF (IfcWorkPlan)
 SUBTYPE OF (IfcControl);
	CreationDate : IfcDateTime;
	Creators : OPTIONAL SET [1:?] OF IfcStrippedOptional;
	Purpose : OPTIONAL IfcStrippedOptional;
	Duration : OPTIONAL IfcStrippedOptional;
	TotalFloat : OPTIONAL IfcStrippedOptional;
	StartTime : IfcDateTime;
	FinishTime : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcWorkPlan
 SUBTYPE OF (IfcWorkControl);
	PredefinedType : OPTIONAL IfcStrippedOptional;
END_ENTITY;

ENTITY IfcWorkTime
 SUBTYPE OF (IfcSchedulingTime);
	RecurrencePattern : OPTIONAL IfcRecurrencePattern;
	Start : OPTIONAL IfcDate;
	Finish : OPTIONAL IfcDate;
END_ENTITY;

RULE IfcRepresentationContextSameWCS FOR
	(IfcGeometricRepresentationContext);
LOCAL
  IsDifferent  : LOGICAL := FALSE;
END_LOCAL;
  IF (SIZEOF(IfcGeometricRepresentationContext) > 1)
  THEN
    REPEAT i := 2 TO HIINDEX(IfcGeometricRepresentationContext);
      IF (IfcGeometricRepresentationContext[1].WorldCoordinateSystem :<>: IfcGeometricRepresentationContext[i].WorldCoordinateSystem)
      THEN
        IsDifferent := (NOT(IfcSameValidPrecision(IfcGeometricRepresentationContext[1].Precision,
                                                  IfcGeometricRepresentationContext[i].Precision)))
                    OR (NOT(IfcSameAxis2Placement(IfcGeometricRepresentationContext[1].WorldCoordinateSystem,
                                                  IfcGeometricRepresentationContext[i].WorldCoordinateSystem,
                                                  IfcGeometricRepresentationContext[1].Precision)));
        IF (IsDifferent = TRUE) THEN
          ESCAPE;
        END_IF;
      END_IF;
    END_REPEAT;
  END_IF;
    WHERE
      WR1 : IsDifferent = FALSE;
END_RULE;

RULE IfcSingleProjectInstance FOR
	(IfcProject);

    WHERE
      WR1 : SIZEOF(IfcProject) <= 1;
END_RULE;

END_SCHEMA;
