// generated via source generation from ids-lib.codegen using Xbim.PropertySets 6.0.11.0
using System.Collections.Generic;

namespace IdsLib.IfcSchema;

/// <summary>
/// For reference see IdsLib.codegen.IfcSchema_PropertiesGenerator
/// </summary>
public partial class PropertySetInfo
{
	static IEnumerable<PropertySetInfo> GetPropertiesIFC2x3()
	{
		yield return new PropertySetInfo("Pset_ActionRequest", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RequestSourceType", new [] { "Email", "Fax", "Phone", "Post", "Verbal", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of sources through which a request can be made."},
			new EnumerationPropertyType("Status", new [] { "Hold", "NoAction", "Schedule", "Urgent", "Other", "NotKnown", "Unset" } ) { Definition = "The status currently assigned to the request where:\nHold = wait to see if further requests are received before deciding on action,\nNoAction = no action is required on this request,\nSchedule = plan action to take place as part of maintenance or other task planning/scheduling,\nUrgent = take action immediately."},
			new SingleValuePropertyType("RequestComments", "IfcText") { Definition = "Comments that may be made on the request."},
			new SingleValuePropertyType("RequestDescription", "IfcText") { Definition = "The request description as provided."},
			new SingleValuePropertyType("RequestSourceLabel", "IfcLabel") { Definition = "A specific name or label that further qualifies the identity of a request source. In the event of an email, this may be the email address."} },
				new [] { "IfcActionRequest" });
		yield return new PropertySetInfo("Pset_ActorCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Category", "IfcLabel") { Definition = "Designation of the category into which the actors in the population belong."},
			new SingleValuePropertyType("NumberOfActors", "IfcCountMeasure") { Definition = "The number of actors that are to be dealt with together in the population."},
			new SingleValuePropertyType("SkillLevel", "IfcLabel") { Definition = "Skill level exhibited by the actor and which indicates an extent of their capability to perform actions on the artefacts upon which they can act."} },
				new [] { "IfcActor" });
		yield return new PropertySetInfo("Pset_ActuatorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FailPosition", new [] { "FailOpen", "FailClosed", "NotKnown", "Unset" } ) { Definition = "Specifies the required fail-safe position of the actuator."},
			new SingleValuePropertyType("ManualOverride", "IfcBoolean") { Definition = "Identifies whether hand-operated operation is provided as an override (= TRUE) or not (= FALSE). Note that this value should be set to FALSE by default in the case of a Hand Operated Actuator."} },
				new [] { "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_ActuatorTypeElectricActuator", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectricActuatorType", new [] { "MotorDrive", "Magnetic", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that identifies electric actuator as defined by its operational principle. "},
			new SingleValuePropertyType("ActuatorInputPower", "IfcPowerMeasure") { Definition = "Maximum input power requirement "} },
				new [] { "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_ActuatorTypeHydraulicActuator", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InputFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum hydraulic flowrate requirement. "},
			new SingleValuePropertyType("InputPressure", "IfcPressureMeasure") { Definition = "Maximum design pressure for the actuator."} },
				new [] { "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_ActuatorTypeLinearActuation", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Force", "IfcForceMeasure") { Definition = "Indicates the maximum close-off force for the actuator."},
			new SingleValuePropertyType("Stroke", "IfcLengthMeasure") { Definition = "Indicates the maximum distance the actuator must traverse."} },
				new [] { "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_ActuatorTypePneumaticActuator", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InputFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum input control air flowrate requirement "},
			new SingleValuePropertyType("InputPressure", "IfcPressureMeasure") { Definition = "Maximum input control air pressure requirement "} },
				new [] { "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_ActuatorTypeRotationalActuation", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("RangeAngle", "IfcPlaneAngleMeasure") { Definition = "Indicates the maximum rotation the actuator must traverse."},
			new SingleValuePropertyType("Torque", "IfcTorqueMeasure") { Definition = "Indicates the maximum close-off torque for the actuator."} },
				new [] { "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_AirSideSystemInformation", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirSideSystemDistributionType", new [] { "SINGLEDUCT", "DUALDUCT", "MULTIZONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "This enumeration defines the basic types of air side systems (e.g., SingleDuct, DualDuct, Multizone, etc.) "},
			new EnumerationPropertyType("AirSideSystemType", new [] { "CONSTANTVOLUME", "CONSTANTVOLUMESINGLEZONE", "CONSTANTVOLUMEMULTIPLEZONEREHEAT", "CONSTANTVOLUMEBYPASS", "VARIABLEAIRVOLUME", "VARIABLEAIRVOLUMEREHEAT", "VARIABLEAIRVOLUMEINDUCTION", "VARIABLEAIRVOLUMEFANPOWERED", "VARIABLEAIRVOLUMEDUALCONDUIT", "VARIABLEAIRVOLUMEVARIABLEDIFFUSERS", "VARIABLEAIRVOLUMEVARIABLETEMPERATURE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "This enumeration specifies the basic types of possible air side systems (e.g., Constant Volume, Variable Volume, etc.) "},
			new SingleValuePropertyType("AirflowSensible", "IfcVolumetricFlowRateMeasure") { Definition = "The air flowrate required to satisfy the sensible peak loads. "},
			new SingleValuePropertyType("ApplianceDiversity", "IfcPositiveRatioMeasure") { Definition = "Diversity of appliance load. "},
			new SingleValuePropertyType("CoolingTemperatureDelta", "IfcThermodynamicTemperatureMeasure") { Definition = "Cooling temperature difference for calculating space air flow rates "},
			new SingleValuePropertyType("Description", "IfcLabel") { Definition = "The description of the air side system."},
			new SingleValuePropertyType("EnergyGainSensible", "IfcPowerMeasure") { Definition = "The sum of total energy gains for the spaces served by the system during the peak cooling conditions, plus any system-level sensible energy gains. "},
			new SingleValuePropertyType("EnergyGainTotal", "IfcPowerMeasure") { Definition = "The total amount of energy gains for the spaces served by the system during the peak cooling conditions, plus any system-level total energy gains. "},
			new SingleValuePropertyType("EnergyLoss", "IfcPowerMeasure") { Definition = "The sum of energy losses for the spaces served by the system during the peak heating conditions. "},
			new SingleValuePropertyType("FanPower", "IfcPowerMeasure") { Definition = "Fan motor loads contributing to the cooling load. "},
			new SingleValuePropertyType("HeatingTemperatureDelta", "IfcThermodynamicTemperatureMeasure") { Definition = "Heating temperature difference for calculating space air flow rates "},
			new SingleValuePropertyType("InfiltrationDiversitySummer", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Summer infiltration. "},
			new SingleValuePropertyType("InfiltrationDiversityWinter", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Winter infiltration. "},
			new SingleValuePropertyType("LightingDiversity", "IfcPositiveRatioMeasure") { Definition = "Lighting diversity. "},
			new SingleValuePropertyType("LoadSafetyFactor", "IfcPositiveRatioMeasure") { Definition = "Load safety factor. "},
			new SingleValuePropertyType("Name", "IfcLabel") { Definition = "The name of the air side system "},
			new SingleValuePropertyType("TotalAirflow", "IfcVolumetricFlowRateMeasure") { Definition = "The total design supply air flowrate required for the system for either heating or cooling conditions, whichever is greater. "},
			new SingleValuePropertyType("Ventilation", "IfcVolumetricFlowRateMeasure") { Definition = "Required outside air ventilation. "} },
				new [] { "IfcSpatialStructureElement", "IfcSystem" });
		yield return new PropertySetInfo("Pset_AirTerminalBoxPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_AirTerminalBoxTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ArrangementType", new [] { "SINGLEDUCT", "DUALDUCT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Terminal box arrangement.\nSingleDuct: Terminal box receives warm or cold air from a single air supply duct.\nDualDuct: Terminal box receives warm and cold air from separate air supply ducts."},
			new EnumerationPropertyType("ReheatType", new [] { "ELECTRICALREHEAT", "WATERCOILREHEAT", "STEAMCOILREHEAT", "GASREHEAT", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Terminal box reheat type."},
			new SingleValuePropertyType("AirflowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Range of airflow that can be delivered."},
			new SingleValuePropertyType("AirPressureRange", "IfcPressureMeasure") { Definition = "Allowable air static pressure range at the entrance of the air terminal box."},
			new SingleValuePropertyType("HasFan", "IfcBoolean") { Definition = "Terminal box has a fan inside (fan powered box)."},
			new SingleValuePropertyType("HasReturnAir", "IfcBoolean") { Definition = "Terminal box has return air mixed with supply air from duct work."},
			new SingleValuePropertyType("HasSoundAttenuator", "IfcBoolean") { Definition = "Terminal box has a sound attenuator."},
			new SingleValuePropertyType("HousingThickness", "IfcLengthMeasure") { Definition = "Air terminal box housing material thickness."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal airflow rate."},
			new SingleValuePropertyType("NominalDamperDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal damper diameter."},
			new SingleValuePropertyType("NominalInletAirPressure", "IfcPressureMeasure") { Definition = "Nominal airflow inlet static pressure."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operational range of the ambient air temperature."},
			new SingleValuePropertyType("ReturnAirFractionRange", "IfcPositiveRatioMeasure") { Definition = "Allowable return air fraction range as a fraction of discharge airflow."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of the air terminal box."} },
				new [] { "IfcAirTerminalBoxType" });
		yield return new PropertySetInfo("Pset_AirTerminalPHistory", new IPropertyTypeInfo[] {
			new TableValuePropertyType("CenterlineAirVelocity", "IfcLinearVelocityMeasure", "IfcLengthMeasure") { Definition = "Centerline air velocity versus distance from the diffuser and temperature differential; a function of distance from diffuser and temperature difference between supply air and room air."},
			new TableValuePropertyType("InductionRatio", "IfcReal", "IfcLengthMeasure") { Definition = "Induction ratio versus distance from the diffuser and its discharge direction; induction ratio (or entrainment ratio) is the ratio of the volumetric flow rate in the jet to the volumetric flow rate at the air terminal"} },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_AirTerminalTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CoreType", new [] { "SHUTTERBLADE", "CURVEDBLADE", "REMOVABLE", "REVERSIBLE", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the way the core of the AirTerminal is constructed."},
			new EnumerationPropertyType("DischargeDirection", new [] { "PARALLEL", "PERPENDICULAR", "ADJUSTABLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Discharge direction of the air terminal.\nParallel: discharges parallel to mounting surface designed so that flow attaches to the surface.\nPerpendicular:  discharges away from mounting surface.\nAdjustable: both parallel and perpendicular discharge."},
			new EnumerationPropertyType("FinishType", new [] { "ANNODIZED", "PAINTED", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of finish for the air terminal."},
			new EnumerationPropertyType("FlowControlType", new [] { "DAMPER", "BELLOWS", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of flow control element that may be included as a part of the construction of the air terminal."},
			new EnumerationPropertyType("FlowPattern", new [] { "LINEARSINGLE", "LINEARDOUBLE", "LINEARFOURWAY", "RADIAL", "SWIRL", "DISPLACMENT", "COMPACTJET", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Flow pattern"},
			new EnumerationPropertyType("MountingType", new [] { "SURFACE", "FLATFLUSH", "LAYIN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The way the air terminal is mounted to the ceiling, wall, etc.\nSurface type is mounted to the surface of something (e.g., wall, duct, etc.).\nFlat flush type is mounted flat and flush with a surface.\nLay-in type is mounted in a lay-in type ceiling (e.g., a dropped ceiling grid)."},
			new EnumerationPropertyType("Shape", new [] { "ROUND", "RECTANGULAR", "SQUARE", "SLOT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Shape of the air terminal. Slot is typically a long narrow supply device with an aspect ratio generally greater than 10 to 1."},
			new SingleValuePropertyType("AirDiffusionPerformanceIndex", "IfcReal") { Definition = "The Air Diffusion Performance Index (ADPI) is used for cooling mode conditions. If several measurements of air velocity and air temperature are made throughout the occupied zone of a space, the ADPI is the percentage of locations where measurements were taken that meet the specifications for effective draft temperature and air velocity."},
			new SingleValuePropertyType("AirFlowrateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Air flowrate range within which the air terminal is designed to operate."},
			new SingleValuePropertyType("CoreSetHorizontal", "IfcPlaneAngleMeasure") { Definition = "Degree of horizontal (in the X-axis of the LocalPlacement) blade set from the centerline."},
			new SingleValuePropertyType("CoreSetVertical", "IfcPlaneAngleMeasure") { Definition = "Degree of vertical (in the Y-axis of the LocalPlacement) blade set from the centerline."},
			new SingleValuePropertyType("EffectiveArea", "IfcAreaMeasure") { Definition = "Effective discharge area of the air terminal."},
			new SingleValuePropertyType("FinishColor", "IfcLabel") { Definition = "The finish color for the air terminal."},
			new SingleValuePropertyType("HasIntegralControl", "IfcBoolean") { Definition = "If TRUE, a self powered temperature control is included in the AirTerminal."},
			new SingleValuePropertyType("HasSoundAttenuator", "IfcBoolean") { Definition = "If TRUE, the air terminal has sound attenuation."},
			new SingleValuePropertyType("HasThermalInsulation", "IfcBoolean") { Definition = "If TRUE, the air terminal has thermal insulation."},
			new SingleValuePropertyType("NeckArea", "IfcAreaMeasure") { Definition = "Neck area of the air terminal."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature range within which the air terminal is designed to operate."},
			new SingleValuePropertyType("ThrowLength", "IfcLengthMeasure") { Definition = "The horizontal or vertical axial distance an airstream travels after leaving an AirTerminal before the maximum stream velocity is reduced to a specified terminal velocity under isothermal conditions at the upper value of the AirFlowrateRange."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of the air terminal."},
			new TableValuePropertyType("AirFlowrateVersusFlowControlElement", "IfcVolumetricFlowRateMeasure", "IfcPositiveRatioMeasure") { Definition = "Air flowrate versus flow control element position at nominal pressure drop."} },
				new [] { "IfcAirTerminalType" });
		yield return new PropertySetInfo("Pset_AirTerminalTypeRectangular", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FaceType", new [] { "FOURWAYPATTERN", "SINGLEDEFLECTION", "DOUBLEDEFLECTION", "SIGHTPROOF", "EGGCRATE", "PERFORATED", "LOUVERED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies how the terminal face of an AirTerminal is constructed."} },
				new [] { "IfcAirTerminalType" });
		yield return new PropertySetInfo("Pset_AirTerminalTypeRound", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FaceType", new [] { "FOURWAYPATTERN", "SINGLEDEFLECTION", "DOUBLEDEFLECTION", "SIGHTPROOF", "EGGCRATE", "PERFORATED", "LOUVERED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies how the terminal face of an AirTerminal is constructed."} },
				new [] { "IfcAirTerminalType" });
		yield return new PropertySetInfo("Pset_AirTerminalTypeSlot", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfSlots", "IfcInteger") { Definition = "Number of slots."},
			new SingleValuePropertyType("SlotLength", "IfcPositiveLengthMeasure") { Definition = "Slot length."},
			new SingleValuePropertyType("SlotWidth", "IfcPositiveLengthMeasure") { Definition = "Slot width."} },
				new [] { "IfcAirTerminalType" });
		yield return new PropertySetInfo("Pset_AirTerminalTypeSquare", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FaceType", new [] { "FOURWAYPATTERN", "SINGLEDEFLECTION", "DOUBLEDEFLECTION", "SIGHTPROOF", "EGGCRATE", "PERFORATED", "LOUVERED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies how the terminal face of an AirTerminal is constructed."} },
				new [] { "IfcAirTerminalType" });
		yield return new PropertySetInfo("Pset_AirToAirHeatRecoveryPHist", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_AirToAirHeatRecoveryTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("HeatTransferTypeEnum", new [] { "SENSIBLE", "LATENT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of heat transfer between the two air streams."},
			new SingleValuePropertyType("HasDefrost", "IfcBoolean") { Definition = "has the heat exchanger has defrost function or not"},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range"},
			new SingleValuePropertyType("PrimaryAirflowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "possible range of primary airflow that can be delivered "},
			new SingleValuePropertyType("SecondaryAirflowRateRange", "IfcPressureMeasure") { Definition = "possible range of secondary airflow that can be delivered "},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") },
				new [] { "IfcAirToAirHeatRecoveryType" });
		yield return new PropertySetInfo("Pset_AnalogInput", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EventEnable", new [] { "To-OffNormal", "To-Fault", "To-Normal", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the type of event enabling"},
			new EnumerationPropertyType("NotifyType", new [] { "Alarm", "Event", "AcknowledgeNotification", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the notification type"},
			new SingleValuePropertyType("Deadband", "IfcReal") { Definition = "The deadband value for the analog input."},
			new SingleValuePropertyType("HighLimit", "IfcReal") { Definition = "The high limit value for the analog input."},
			new SingleValuePropertyType("HighLimitEnable", "IfcBoolean") { Definition = "Is high limit validation enabled (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("LowLimit", "IfcReal") { Definition = "The low limit value for the analog input."},
			new SingleValuePropertyType("LowLimitEnable", "IfcBoolean") { Definition = "Is low limit validation enabled (TRUE) or not (FALSE)."} },
				new [] { "IfcDistributionControlElement" });
		yield return new PropertySetInfo("Pset_AnalogOutput", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EventEnable", new [] { "To-OffNormal", "To-Fault", "To-Normal", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the type of event enabling"},
			new EnumerationPropertyType("NotifyType", new [] { "Alarm", "Event", "AcknowledgeNotification", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the notification type"},
			new SingleValuePropertyType("Deadband", "IfcReal") { Definition = "The deadband value for the analog output."},
			new SingleValuePropertyType("HighLimit", "IfcReal") { Definition = "The high limit value for the analog output."},
			new SingleValuePropertyType("HighLimitEnable", "IfcBoolean") { Definition = "Is high limit validation enabled (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("LowLimit", "IfcReal") { Definition = "The low limit value for the analog output."},
			new SingleValuePropertyType("LowLimitEnable", "IfcBoolean") { Definition = "Is low limit validation enabled (TRUE) or not (FALSE)."} },
				new [] { "IfcDistributionControlElement" });
		yield return new PropertySetInfo("Pset_Asset", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssetAccountingType", new [] { "Fixed", "NonFixed", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of risk from which the type required may be set."},
			new EnumerationPropertyType("AssetInsuranceType", new [] { "Personal", "Real", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of insurance rating from which the type required may be set."},
			new EnumerationPropertyType("AssetTaxType", new [] { "Capitalised", "Expensed", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of taxation group from which the type required may be set."} },
				new [] { "IfcAsset" });
		yield return new PropertySetInfo("Pset_BeamCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("Span", "IfcPositiveLengthMeasure") { Definition = "Clear span for this object.\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."} },
				new [] { "IfcBeam" });
		yield return new PropertySetInfo("Pset_BinaryInput", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AckedTransitions", new [] { "To-OffNormal", "To-Fault", "To-Normal", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the type of transition acknowledgement"},
			new EnumerationPropertyType("EventEnable", new [] { "To-OffNormal", "To-Fault", "To-Normal", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the type of event enabling"},
			new EnumerationPropertyType("FeedbackValue", new [] { "Active", "Inactive", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration defining the feedback value from the control system element"},
			new EnumerationPropertyType("Polarity", new [] { "Normal", "Reverse", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration defining the polarity"},
			new SingleValuePropertyType("ActiveText", "IfcText") { Definition = "String value to be displayed in an active, on, or running state"},
			new SingleValuePropertyType("InactiveText", "IfcText") { Definition = "String value to be displayed in an inactive, off, or idle state"} },
				new [] { "IfcDistributionControlElement" });
		yield return new PropertySetInfo("Pset_BinaryOutput", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AckedTransitions", new [] { "To-OffNormal", "To-Fault", "To-Normal", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the type of transition acknowledgement"},
			new EnumerationPropertyType("AlarmValue", new [] { "Active", "Inactive", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration defining the operating state of the control system element"},
			new EnumerationPropertyType("EventEnable", new [] { "To-OffNormal", "To-Fault", "To-Normal", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the type of event enabling"},
			new EnumerationPropertyType("Polarity", new [] { "Normal", "Reverse", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration defining the polarity"},
			new SingleValuePropertyType("ActiveText", "IfcText") { Definition = "String value to be displayed in an active, on, or running state"},
			new SingleValuePropertyType("InactiveText", "IfcText") { Definition = "String value to be displayed in an inactive, off, or idle state"} },
				new [] { "IfcDistributionControlElement" });
		yield return new PropertySetInfo("Pset_BoilerPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_BoilerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("OperatingMode", new [] { "FIXED", "TWOSTEP", "MODULATING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the operating mode of the boiler."},
			new SingleValuePropertyType("HeatOutput", "IfcReal") { Definition = "Total nominal heat output as listed by the Boiler manufacturer. For water boilers, it is a function of inlet versus outlet temperature. For steam boilers, it is a function of inlet temperature versus steam pressure."},
			new SingleValuePropertyType("HeatTransferSurfaceArea", "IfcAreaMeasure") { Definition = "Total heat transfer area of the vessel."},
			new SingleValuePropertyType("IsWaterStorageHeater", "IfcBoolean") { Definition = "This is used to identify if the boiler has storage capacity (TRUE). If FALSE, then there is no storage capacity built into the boiler, such as an instantaneous hot water heater."},
			new SingleValuePropertyType("NominalEfficiency", "IfcReal") { Definition = "The nominal efficiency of the boiler as defined by the manufacturer. For water boilers, a function of inlet versus outlet temperature. For steam boilers, a function of inlet temperature versus steam pressure."},
			new SingleValuePropertyType("NominalEnergyConsumption", "IfcPowerMeasure") { Definition = "Nominal fuel consumption rate required to produce the total boiler heat output."},
			new SingleValuePropertyType("NominalPartLoadRatio", "IfcReal") { Definition = "Allowable part load ratio range."},
			new SingleValuePropertyType("OutletTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable outlet temperature of either the water or the steam."},
			new SingleValuePropertyType("PartialLoadEfficiencyCurves", "IfcReal") { Definition = "Boiler efficiency as a function of the partial load factor; E = f (partialLaodfactor)."},
			new SingleValuePropertyType("PressureRating", "IfcPressureMeasure") { Definition = "Nominal pressure rating of the boiler as rated by ASME Boiler and Pressure Vessel Code Section IV, Rules for Construction of Heating Boilers, and Section I, Rules for Construction of Power Boilers"},
			new SingleValuePropertyType("WaterInletTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable water inlet temperature range."},
			new SingleValuePropertyType("WaterStorageCapacity", "IfcVolumeMeasure") { Definition = "Water storage capacity."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of the boiler."} },
				new [] { "IfcBoilerType" });
		yield return new PropertySetInfo("Pset_BoilerTypeSteam", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaximumOutletPressure", "IfcPressureMeasure") { Definition = "Maximum steam outlet pressure."} },
				new [] { "IfcBoilerType" });
		yield return new PropertySetInfo("Pset_BuildingCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AncillaryFireUse", "IfcLabel") { Definition = "Ancillary fire use for the building which is assigned from the fire use classification table as given by the relevant national building code."},
			new SingleValuePropertyType("BuildingID", "IfcIdentifier") { Definition = "A unique identifier assigned to a building. A temporary identifier is initially assigned at the time of making a planning application. This temporary identifier is changed to a permanent identifier when the building is registered into a statutory buildings and properties database."},
			new SingleValuePropertyType("GrossPlannedArea", "IfcAreaMeasure") { Definition = "Total planned area for the building  Used for programming the building."},
			new SingleValuePropertyType("IsLandmarked", "IfcLogical") { Definition = "This builing is listed as a historic building (TRUE), or not (FALSE), or unknown."},
			new SingleValuePropertyType("IsPermanentID", "IfcBoolean") { Definition = "Indicates whether the identity assigned to a building is permanent (= TRUE) or temporary (=FALSE)"},
			new SingleValuePropertyType("MainFireUse", "IfcLabel") { Definition = "Main fire use for the building which is assigned from the fire use classification table as given by the relevant national building code."},
			new SingleValuePropertyType("NumberOfStoreys", "IfcInteger") { Definition = "Captures the number of storeys within a building for those cases where the IfcBuildingStorey entity is not used. Note that if IfcBuilingStorey is asserted and the number of storeys in a building can be determined from it, then this approach should be used in preference to setting a property for the number of storeys."},
			new SingleValuePropertyType("OccupancyType", "IfcLabel") { Definition = "Occupancy type for this object.\nIt is defined according to the presiding national building code."},
			new SingleValuePropertyType("SprinklerProtection", "IfcBoolean") { Definition = "Indication whether this object is sprinkler protected (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SprinklerProtectionAutomatic", "IfcBoolean") { Definition = "Indication whether this object has an automatic sprinkler protection (TRUE) or not (FALSE).\nIt should only be given, if the property \"SprinklerProtection\" is set to TRUE."},
			new SingleValuePropertyType("YearOfConstruction", "IfcLabel") { Definition = "Year of construction of this building, including expected year of completion."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_BuildingElementProxyCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"} },
				new [] { "IfcBuildingElementProxy" });
		yield return new PropertySetInfo("Pset_BuildingStoreyCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AboveGround", "IfcLogical") { Definition = "Indication whether this building storey is fully above ground (TRUE), or below ground (FALSE), or partially above and below ground (UNKNOWN) - as in sloped terrain."},
			new SingleValuePropertyType("EntranceLevel", "IfcBoolean") { Definition = "Indication whether this building storey is an entrance level to the building (TRUE), or (FALSE) if otherwise."},
			new SingleValuePropertyType("GrossAreaPlanned", "IfcAreaMeasure") { Definition = "Total planned area for the building storey. Used for programming the building storey."},
			new SingleValuePropertyType("NetAreaPlanned", "IfcAreaMeasure") { Definition = "Total planned net area for the building storey. Used for programming the building storey."},
			new SingleValuePropertyType("SprinklerProtection", "IfcBoolean") { Definition = "Indication whether this object is sprinkler protected (true) or not (false)."},
			new SingleValuePropertyType("SprinklerProtectionAutomatic", "IfcBoolean") { Definition = "Indication whether this object has an automatic sprinkler protection (true) or not (false).\nIt should only be given, if the property \"SprinklerProtection\" is set to TRUE."} },
				new [] { "IfcBuildingStorey" });
		yield return new PropertySetInfo("Pset_BuildingUse", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MarketCategory", "IfcLabel") { Definition = "Category of use e.g. residential, commercial, recreation etc."},
			new SingleValuePropertyType("MarketSubCategoriesAvailableFuture", "IfcLabel") { Definition = "A list of the sub categories of property that are expected to be available in the future expressed in terms of IfcLabel"},
			new SingleValuePropertyType("MarketSubCategoriesAvailableNow", "IfcLabel") { Definition = "A list of the sub categories of property that are currently available expressed in terms of IfcLabel"},
			new SingleValuePropertyType("MarketSubCategory", "IfcLabel") { Definition = "Subset of category of use e.g. multi-family, 2 bedroom, low rise"},
			new SingleValuePropertyType("NarrativeText", "IfcText") { Definition = "Added information relating to the adjacent building use that is not appropriate to the general descriptive text associated with an entity through the inherited IfcRoot.Description"},
			new SingleValuePropertyType("PlanningControlStatus", "IfcLabel") { Definition = "Label of zoning category or class, or planning control category for the site or facility."},
			new SingleValuePropertyType("RentalRatesInCategoryFuture", "IfcMonetaryMeasure") { Definition = "Range of the cost rates for property expected to be available in the future in the required category."},
			new SingleValuePropertyType("RentalRatesInCategoryNow", "IfcMonetaryMeasure") { Definition = "Range of the cost rates for property currently available in the required category."},
			new SingleValuePropertyType("TenureModesAvailableFuture", "IfcLabel") { Definition = "A list of the tenure modes that are expected to be available in the future expressed in terms of IfcLabel"},
			new SingleValuePropertyType("TenureModesAvailableNow", "IfcLabel") { Definition = "A list of the tenure modes that are currently available expressed in terms of IfcLabel"},
			new SingleValuePropertyType("VacancyRateInCategoryFuture", "IfcPositiveRatioMeasure") { Definition = "Percentage of vacancy found in the particular category expected in the future"},
			new SingleValuePropertyType("VacancyRateInCategoryNow", "IfcPositiveRatioMeasure") { Definition = "Percentage of vacancy found in the particular category currently"} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_BuildingUseAdjacent", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MarketCategory", "IfcLabel") { Definition = "Category of use e.g. residential, commercial, recreation etc."},
			new SingleValuePropertyType("MarketSubCategory", "IfcLabel") { Definition = "Subset of category of use e.g. multi-family, 2 bedroom, low rise"},
			new SingleValuePropertyType("NarrativeText", "IfcText") { Definition = "Added information relating to the adjacent building use that is not appropriate to the general descriptive text associated with an entity through the inherited IfcRoot.Description"},
			new SingleValuePropertyType("PlanningControlStatus", "IfcLabel") { Definition = "Label of zoning category or class, or planning control category for the site or facility."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_BuildingWaterStorage", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("OneDayCoolingTowerMakeupWater", "IfcVolumeMeasure") { Definition = "The volume of water that needs to be stored to supply make up water to the cooling towers in a building for one day in the event of water supply failure."},
			new SingleValuePropertyType("OneDayEssentialWater", "IfcVolumeMeasure") { Definition = "The volume of water that needs to be stored to supply water to the building for uninterrupted water supply to essential areas for one day in the event of water supply failure. An essential area is considered to be a part of a building carrying out a critical function and that is unable to operate in the intended manner without a water supply."},
			new SingleValuePropertyType("OneDayPotableWater", "IfcVolumeMeasure") { Definition = "The volume of water that needs to be stored to supply water to the building for human use for one day in the event of water supply failure."},
			new SingleValuePropertyType("OneDayProcessOrProductionWater", "IfcVolumeMeasure") { Definition = "The volume of water that needs to be stored to supply water for process or production requirements in a building for one day in the event of water supply failure."},
			new SingleValuePropertyType("WaterStorageRatePerPerson", "IfcVolumeMeasure") { Definition = "The volume of domestic water that needs to be stored per person. "} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCableLadderSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("LadderConfiguration", "IfcText") { Definition = "Description of the configuration of the ladder structure used."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the segment"},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "The nominal length of the segment."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width of the segment"} },
				new [] { "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCableTraySegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasCover", "IfcBoolean") { Definition = "Indication of whether the cable tray has a cover (=TRUE) or not (= FALSE). By default, this value should be set to FALSE."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the segment"},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "The nominal length of the segment."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width of the segment"} },
				new [] { "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCableTrunkingSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the segment"},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "The nominal length of the segment."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width of the segment"},
			new SingleValuePropertyType("NumberOfCompartments", "IfcInteger") { Definition = "The number of separate internal compartments within the trunking"} },
				new [] { "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeConduitSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConduitShapeType", new [] { "Circular", "Oval", "Other", "NotKnown", "Unset" } ) { Definition = "The shape of the conduit segment"},
			new SingleValuePropertyType("IsRigid", "IfcBoolean") { Definition = "Indication of whether the conduit is rigid (= TRUE) or flexible (= FALSE)"},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the segment"},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "The nominal length of the segment."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width of the segment"} },
				new [] { "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeCableSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossSectionalArea", "IfcAreaMeasure") { Definition = "Cross section area of the cable"},
			new SingleValuePropertyType("MaxOperatingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximum operating temperature for the cable."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of a cable, busbar or tube or, in the case of a circular cross section, the height is not asserted. Note that this value may be used for larger sized cables whose dimensions are explicitly given."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "The nominal length of a cable, busbar or tube."},
			new SingleValuePropertyType("NominalWidthOrDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal width of a cable, busbar or tube or, in the case of a circular cross section, the diameter. Note that this value may be used for larger sized cables whose dimensions are explicitly given."},
			new SingleValuePropertyType("NormalOperatingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Normal operating temperature for the cable, busbar."},
			new SingleValuePropertyType("SheathColor", "IfcLabel") { Definition = "Colour code on cable, conductor. "} },
				new [] { "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeConductorSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectricalConductorFunction", new [] { "Phase", "Neutral", "ProtectiveGround", "Other", "NotKnown", "Unset" } ) { Definition = "Type of function for which the conductor is intended. "},
			new SingleValuePropertyType("CrossSectionalArea", "IfcAreaMeasure") { Definition = "Cross section area of the phase(s) lead(s)"},
			new SingleValuePropertyType("IsFireResistant", "IfcBoolean") { Definition = "Indication of whether the sheath is fire resistant (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("MaximumOperatingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The maximum temperature at which the sheath retains its integrity."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "The nominal length of a conductor."},
			new SingleValuePropertyType("PhaseReference", "IfcIdentifier") { Definition = "The phase identification used when the function of the conductor is a phase. In general, it is recommended that IEC recommendations for phase identification are used (L1, L2 etc.). However, other phase identifiers may be used such as by color (Red, Blue, Yellow) or by number (1, 2, 3) etc."},
			new SingleValuePropertyType("SheathColor", "IfcLabel") { Definition = "Colour code on cable, conductor. "} },
				new [] { "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_ChillerPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_ChillerTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalCapacity", "IfcPowerMeasure") { Definition = "Nominal cooling capacity of chiller at standardized conditions per ARI Standards 550-92, Centrifugal and Rotary Screw Water-Chilling Packages, and ARI Standards 590-92, Positive Displacement Compressor."},
			new SingleValuePropertyType("NominalCondensingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Chiller condensing temperature."},
			new SingleValuePropertyType("NominalEfficiency", "IfcReal") { Definition = "Nominal chiller efficiency under nominal conditions."},
			new SingleValuePropertyType("NominalEvaporatingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Chiller evaporating temperature."},
			new SingleValuePropertyType("NominalHeatRejectionRate", "IfcPowerMeasure") { Definition = "Sum of the refrigeration effect and the heat equivalent of the power input to the compressor."},
			new SingleValuePropertyType("NominalPowerConsumption", "IfcPowerMeasure") { Definition = "Nominal total power consumption."} },
				new [] { "IfcChillerType" });
		yield return new PropertySetInfo("Pset_CoilPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_CoilTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirflowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered."},
			new SingleValuePropertyType("NominalLatentCapacity", "IfcPowerMeasure") { Definition = "Nominal latent capacity."},
			new SingleValuePropertyType("NominalSensibleCapacity", "IfcPowerMeasure") { Definition = "Nominal sensible capacity."},
			new SingleValuePropertyType("NominalUA", "IfcReal") { Definition = "Nominal UA value."},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operational air temperature range."} },
				new [] { "IfcCoilType" });
		yield return new PropertySetInfo("Pset_CoilTypeHydronic", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CoilConnectionDirection", new [] { "LEFT", "RIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Coil connection direction (facing into the air stream)."},
			new EnumerationPropertyType("CoilCoolant", new [] { "WATER", "BRINE", "GLYCOL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The fluid used for heating or cooling used by the hydronic coil."},
			new EnumerationPropertyType("CoilFluidArrangement", new [] { "CROSSFLOW", "CROSSCOUNTERFLOW", "CROSSPARALLELFLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Fluid flow arrangement of the coil.\nCrossCounterFlow: Air and water flow enter in different directions.\nCrossFlow: Air and water flow are perpendicular.\nCrossParallelFlow: Air and water flow enter in same directions"},
			new SingleValuePropertyType("BypassFactor", "IfcPositiveRatioMeasure") { Definition = "Fraction of air that is bypassed by the coil (0-1)."},
			new SingleValuePropertyType("CoilFaceArea", "IfcAreaMeasure") { Definition = "Coil face area in the direction against air the flow."},
			new SingleValuePropertyType("FluidPressureRange", "IfcPressureMeasure") { Definition = "Allowable water working pressure range inside the tube"},
			new SingleValuePropertyType("HeatExchangeSurfaceArea", "IfcAreaMeasure") { Definition = "Heat exchange surface area associated with U-value."},
			new SingleValuePropertyType("PrimarySurfaceArea", "IfcAreaMeasure") { Definition = "Primary heat transfer surface area of the tubes and headers."},
			new SingleValuePropertyType("SecondarySurfaceArea", "IfcAreaMeasure") { Definition = "Secondary heat transfer surface area created by fins."},
			new SingleValuePropertyType("SensibleHeatRatio", "IfcReal") { Definition = "Air-side sensible heat ratio, or fraction of sensible heat transfer to the total heat transfer."},
			new SingleValuePropertyType("WetCoilFraction", "IfcPositiveRatioMeasure") { Definition = "Fraction of coil surface area that is wet (0-1)."},
			new TableValuePropertyType("TotalUACurves", "IfcReal", "IfcReal") { Definition = "Total UA curves, UA - air and water velocities, UA = [(C1 * AirFlowRate^0.8)^-1 + (C2 * WaterFlowRate^0.8)^-1]^-1."},
			new TableValuePropertyType("WaterPressureDropCurve", "IfcReal", "IfcReal") { Definition = "Water pressure drop curve, pressure drop – flow rate curve, WaterPressureDrop = f(WaterflowRate)."} },
				new [] { "IfcCoilType" });
		yield return new PropertySetInfo("Pset_ColumnCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. "} },
				new [] { "IfcColumn" });
		yield return new PropertySetInfo("Pset_CompressorPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FullLoadRatioCurve", "IfcReal") { Definition = "Ratio of actual power to full load power as a quadratic function of part load, at certain condensing and evaporating temperature, FracFullLoadPower = f ( PartLoadRatio)."} },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_CompressorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PowerSource", new [] { "MOTORDRIVEN", "ENGINEDRIVEN", "GASTURBINE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of power driving the compressor"},
			new EnumerationPropertyType("RefrigerantClass", new [] { "CFC", "HCFC", "HFC", "HYDROCARBONS", "AMMONIA", "CO2", "H2O", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Refrigerant class used by the compressor.\nCFC: Chlorofluorocarbons.\nHCFC: Hydrochlorofluorocarbons.\nHFC: Hydrofluorocarbons."},
			new SingleValuePropertyType("CompressorSpeed", "IfcRotationalFrequencyMeasure") { Definition = "Compressor speed"},
			new SingleValuePropertyType("HasHotGasBypass", "IfcBoolean") { Definition = "Whether or not hot gas bypass is provided for the compressor. TRUE = Yes, FALSE = No."},
			new SingleValuePropertyType("IdealCapacity", "IfcPowerMeasure") { Definition = "Compressor capacity under ideal conditions."},
			new SingleValuePropertyType("IdealShaftPower", "IfcPowerMeasure") { Definition = "Compressor shaft power under ideal conditions."},
			new SingleValuePropertyType("MaximumPartLoadRatio", "IfcPositiveRatioMeasure") { Definition = "Maximum part load ratio as a fraction of nominal capacity."},
			new SingleValuePropertyType("MinimumPartLoadRatio", "IfcPositiveRatioMeasure") { Definition = "Minimum part load ratio as a fraction of nominal capacity."},
			new SingleValuePropertyType("NominalCapacity", "IfcPowerMeasure") { Definition = "Compressor nameplate capacity."} },
				new [] { "IfcCompressorType" });
		yield return new PropertySetInfo("Pset_ConcreteElementGeneral", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ConcreteCoverAtLinks", "IfcPositiveLengthMeasure") { Definition = "The protective concrete cover at the reinforcement links according to local building regulations."},
			new SingleValuePropertyType("ConcreteCoverAtMainBars", "IfcPositiveLengthMeasure") { Definition = "The protective concrete cover at the main reinforcing bars according to local building regulations."},
			new SingleValuePropertyType("ConstructionToleranceClass", "IfcLabel") { Definition = "Classification designation of the on-site construction tolerances according to local standards."},
			new SingleValuePropertyType("ConstructionType", "IfcLabel") { Definition = "Designator for whether the concrete element is constructed on site or prefabricated. Allowed values are: 'Insitu' vs 'Precast'"},
			new SingleValuePropertyType("DimensionalAccuracyClass", "IfcLabel") { Definition = "Classification designation of the dimensional accuracy requirement according to local standards."},
			new SingleValuePropertyType("EnvironmentalClass", "IfcLabel") { Definition = "The environmental class for the concrete structure (e.g. 'Y1')"},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating given according to the national fire safety classification"},
			new SingleValuePropertyType("LifeCycleEnvironmentalLoad", "IfcText") { Definition = "Description of the life-cycle environmental load"},
			new SingleValuePropertyType("ServiceLife", "IfcTimeMeasure") { Definition = "Expected service life (usually measured in years)"},
			new SingleValuePropertyType("StructuralClass", "IfcLabel") { Definition = "The structural class defined for the concrete structure (e.g. '1')."} },
				new [] { "IfcBeam", "IfcBuildingElementPart", "IfcBuildingElementProxy", "IfcColumn", "IfcCovering", "IfcCurtainWall", "IfcDoor", "IfcFooting", "IfcMember", "IfcPile", "IfcRailing", "IfcRamp", "IfcRampFlight", "IfcRoof", "IfcSlab", "IfcStair", "IfcStairFlight", "IfcWall", "IfcWallStandardCase" });
		yield return new PropertySetInfo("Pset_ConcreteElementQuantityGeneral", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("TotalConcreteQuantity", "IfcVolumeMeasure") { Definition = "The total bulk quantity of concrete used for the precast concrete element expressed as the volume of concrete in cubic meter (m3)."} },
				new [] { "IfcBeam", "IfcBuildingElementPart", "IfcBuildingElementProxy", "IfcColumn", "IfcCovering", "IfcCurtainWall", "IfcDoor", "IfcFooting", "IfcMember", "IfcPile", "IfcRailing", "IfcRamp", "IfcRampFlight", "IfcRoof", "IfcSlab", "IfcStair", "IfcStairFlight", "IfcWall", "IfcWallStandardCase" });
		yield return new PropertySetInfo("Pset_ConcreteElementSurfaceFinishQuantityGeneral", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcBeam", "IfcBuildingElementPart", "IfcBuildingElementProxy", "IfcColumn", "IfcCovering", "IfcCurtainWall", "IfcDoor", "IfcFooting", "IfcMember", "IfcPile", "IfcRailing", "IfcRamp", "IfcRampFlight", "IfcRoof", "IfcSlab", "IfcStair", "IfcStairFlight", "IfcWall", "IfcWallStandardCase" });
		yield return new PropertySetInfo("Pset_CondenserPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_CondenserTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RefrigerantClass", new [] { "CFC", "HCFC", "HFC", "HYDROCARBONS", "AMMONIA", "CO2", "H2O", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Refrigerant class used by the condenser.\nCFC: Chlorofluorocarbons.\nHCFC: Hydrochlorofluorocarbons.\nHFC: Hydrofluorocarbons."},
			new SingleValuePropertyType("ExternalSurfaceArea", "IfcAreaMeasure") { Definition = "External surface area (both primary and secondary area)."},
			new SingleValuePropertyType("InternalRefrigerantVolume", "IfcVolumeMeasure") { Definition = "Internal volume of condenser (refrigerant side)."},
			new SingleValuePropertyType("InternalSurfaceArea", "IfcAreaMeasure") { Definition = "Internal surface area."},
			new SingleValuePropertyType("InternalWaterVolume", "IfcVolumeMeasure") { Definition = "Internal volume of condenser (water side)."},
			new SingleValuePropertyType("NominalHeatTransferArea", "IfcAreaMeasure") { Definition = "Nominal heat transfer surface area associated with nominal overall heat transfer coefficient."},
			new SingleValuePropertyType("NominalHeatTransferCoefficient", "IfcThermalTransmittanceMeasure") { Definition = "Nominal overall heat transfer coefficient associated with nominal heat transfer area."} },
				new [] { "IfcCondenserType" });
		yield return new PropertySetInfo("Pset_ControllerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "Hysteresis", "Constant", "Divide", "Integral", "Subtract", "Report", "Absolute", "Sum", "Average", "Maximum", "Minimum", "Modifier", "Product", "Split", "RunningAverage", "Inverse", "Binary", "LowerLimitControl", "LowerLimitControl", "Other", "NotKnown", "Unset" } ) { Definition = "The type of signal modification effected"},
			new SingleValuePropertyType("SignalFactor", "IfcReal") { Definition = "Factor multiplied onto offset signal"},
			new SingleValuePropertyType("SignalOffset", "IfcReal") { Definition = "Offset constant added to modfied signal"},
			new SingleValuePropertyType("SignalTime", "IfcTimeMeasure") { Definition = "Time factor used for integral and running average controllers"} },
				new [] { "IfcControllerType" });
		yield return new PropertySetInfo("Pset_ControllerTypeProportional", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "Proportional", "ProportionalIntegral", "ExponentialDelay", "Other", "NotKnown", "Unset" } ) { Definition = "The type of signal modification effected"},
			new SingleValuePropertyType("SignalFactor1", "IfcReal") { Definition = "Factor (Kp)"},
			new SingleValuePropertyType("SignalFactor2", "IfcReal") { Definition = "Factor (Ki)"},
			new SingleValuePropertyType("SignalTime1", "IfcTimeMeasure") { Definition = "Time factor used for exponential increase."},
			new SingleValuePropertyType("SignalTime2", "IfcTimeMeasure") { Definition = "Time factor used for exponential decrease."} },
				new [] { "IfcControllerType" });
		yield return new PropertySetInfo("Pset_ControllerTypeTwoPosition", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "Not", "And", "Or", "Xor", "LowerLimitSwitch", "UpperLimitSwitch", "LowerBandSwitch", "UpperBandSwitch", "Average", "Other", "NotKnown", "Unset" } ) { Definition = "The type of signal modification effected"},
			new SingleValuePropertyType("BandWidth", "IfcReal") { Definition = "Dead band for controller"} },
				new [] { "IfcControllerType" });
		yield return new PropertySetInfo("Pset_CooledBeamPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_CooledBeamPHistoryActive", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_CooledBeamTypeActive", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirFlowConfiguration", new [] { "BIDIRECTIONAL", "UNIDIRECTIONALRIGHT", "UNIDIRECTIONALLEFT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Air flow configuration type of cooled beam"},
			new EnumerationPropertyType("SupplyAirConnectionType", new [] { "STRAIGHT", "RIGHT", "LEFT", "TOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The manner in which the pipe connection is made to the cooled beam."},
			new SingleValuePropertyType("AirflowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered "},
			new SingleValuePropertyType("ConnectionSize", "IfcLengthMeasure") { Definition = "Duct connection diameter"} },
				new [] { "IfcCooledBeamType" });
		yield return new PropertySetInfo("Pset_CooledBeamTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("IntegratedLightingType", new [] { "NONE", "DIRECT", "INDIRECT", "DIRECTANDINDIRECT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Integrated lighting in cooled beam"},
			new EnumerationPropertyType("PipeConnectionEnum", new [] { "STRAIGHT", "RIGHT", "LEFT", "TOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The manner in which the pipe connection is made to the cooled beam."},
			new EnumerationPropertyType("WaterFlowControlSystemType", new [] { "NONE", "ONOFFVALVE", "2WAYVALVE", "3WAYVALVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Factory fitted waterflow control system"},
			new SingleValuePropertyType("CoilLength", "IfcLengthMeasure") { Definition = "Length of coil"},
			new SingleValuePropertyType("CoilWidth", "IfcLengthMeasure") { Definition = "Width of coil"},
			new SingleValuePropertyType("ConnectionSize", "IfcLengthMeasure") { Definition = "Pipe connection diameter"},
			new SingleValuePropertyType("FinishColor", "IfcLabel") { Definition = "Finish color for cooled beam"},
			new SingleValuePropertyType("IsFreeHanging", "IfcBoolean") { Definition = "Is it free hanging type (not mounted in a false ceiling)?"},
			new SingleValuePropertyType("NominalCoolingCapacity", "IfcPowerMeasure") { Definition = "Nominal cooling capacity"},
			new SingleValuePropertyType("NominalHeatingCapacity", "IfcPowerMeasure") { Definition = "Nominal heating capacity"},
			new SingleValuePropertyType("NominalReturnWaterTemperatureCooling", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal return water temperature (refers to nominal cooling capacity)"},
			new SingleValuePropertyType("NominalReturnWaterTemperatureHeating", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal return water temperature (refers to nominal heating capacity)"},
			new SingleValuePropertyType("NominalSupplyWaterTemperatureCooling", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal supply water temperature (refers to nominal cooling capacity)"},
			new SingleValuePropertyType("NominalSupplyWaterTemperatureHeating", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal supply water temperature (refers to nominal heating capacity)"},
			new SingleValuePropertyType("NominalSurroundingHumidityCooling", "IfcPositiveRatioMeasure") { Definition = "Nominal surrounding humidity (refers to nominal cooling capacity)"},
			new SingleValuePropertyType("NominalSurroundingTemperatureCooling", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal surrounding temperature (refers to nominal cooling capacity)"},
			new SingleValuePropertyType("NominalSurroundingTemperatureHeating", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal surrounding temperature (refers to nominal heating capacity)"},
			new SingleValuePropertyType("NominalWaterFlowCooling", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal water flow (refers to nominal cooling capacity)"},
			new SingleValuePropertyType("NominalWaterFlowHeating", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal water flow (refers to nominal heating capacity)"},
			new SingleValuePropertyType("WaterPressureRange", "IfcPressureMeasure") { Definition = "Allowable water circuit working pressure range."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of cooled beam"} },
				new [] { "IfcCooledBeamType" });
		yield return new PropertySetInfo("Pset_CoolingTowerPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_CoolingTowerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CapacityControl", new [] { "FANCYCLING", "TWOSPEEDFAN", "VARIABLESPEEDFAN", "DAMPERSCONTROL", "BYPASSVALVECONTROL", "MULTIPLESERIESPUMPS", "TWOSPEEDPUMP", "VARIABLESPEEDPUMP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "FanCycling: Fan is cycled on and off to control duty.\nTwoSpeedFan: Fan is switched between low and high speed to control duty.\nVariableSpeedFan: Fan speed is varied to control duty.\nDampersControl: Dampers modulate the air flow to control duty.\nBypassValveControl: Bypass valve modulates the water flow to control duty.\nMultipleSeriesPumps: Turn on/off multiple series pump to control duty.\nTwoSpeedPump: Switch between high/low pump speed to control duty.\nVariableSpeedPump: vary pump speed to control duty "},
			new EnumerationPropertyType("CircuitType", new [] { "OPENCIRCUIT", "CLOSEDCIRCUITWET", "CLOSEDCIRCUITDRY", "CLOSEDCIRCUITDRYWET", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "OpenCircuit: Exposes water directly to the cooling atmosphere.\nCloseCircuit: The fluid is separated from the atmosphere by a heat exchanger.\nWet: The air stream or the heat exchange surface is evaporatively cooled.\nDry: No evaporation into the air stream.\nDryWet: A combination of a dry tower and a wet tower."},
			new EnumerationPropertyType("ControlStrategy", new [] { "FIXEDEXITINGWATERTEMP", "WETBULBTEMPRESET", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "FixedExitingWaterTemp: The capacity is controlled to maintain a fixed exiting water temperature.\nWetBulbTempReset: The set-point is reset based on the wet-bulb temperature."},
			new EnumerationPropertyType("FlowArrangement", new [] { "COUNTERFLOW", "CROSSFLOW", "PARALLELFLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "CounterFlow: Air and water flow enter in different directions.\nCrossFlow: Air and water flow are perpendicular.\nParallelFlow: air and water flow enter in same directions."},
			new EnumerationPropertyType("SprayType", new [] { "SPRAYFILLED", "SPLASHTYPEFILL", "FILMTYPEFILL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "SprayFilled: Water is sprayed into airflow.\nSplashTypeFill: water cascades over successive rows of splash bars.\nFilmTypeFill: water flows in a thin layer over closely spaced sheets."},
			new SingleValuePropertyType("AmbientDesignDryBulbTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ambient design dry bulb temperature used for selecting the cooling tower. "},
			new SingleValuePropertyType("AmbientDesignWetBulbTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ambient design wet bulb temperature used for selecting the cooling tower. "},
			new SingleValuePropertyType("BasinReserveVolume", "IfcVolumeMeasure") { Definition = "Volume between operating and overflow levels in cooling tower basin."},
			new SingleValuePropertyType("LiftElevationDifference", "IfcPositiveLengthMeasure") { Definition = "Elevation difference between cooling tower sump and the top of the tower."},
			new SingleValuePropertyType("NominalCapacity", "IfcPowerMeasure") { Definition = "Nominal cooling tower capacity in terms of heat transfer rate of the cooling tower between air stream and water stream at nominal conditions."},
			new SingleValuePropertyType("NumberOfCells", "IfcInteger") { Definition = "Number of cells in one cooling tower unit."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range"},
			new SingleValuePropertyType("WaterRequirement", "IfcVolumetricFlowRateMeasure") { Definition = "Make-up water requirements."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of cooling tower."} },
				new [] { "IfcCoolingTowerType" });
		yield return new PropertySetInfo("Pset_CoveringCeiling", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FragilityRating", "IfcLabel") { Definition = "The level of fragility of the ceiling.\nIt is giving according to the national building code. "},
			new SingleValuePropertyType("Permeability", "IfcNormalisedRatioMeasure") { Definition = "Ratio of the permeability of the ceiling.\nThe ration can be used to indicate an open ceiling (that enables identification of whether ceiling construction should be considered as impeding distribution of sprinkler water, light etc. from installations within the ceiling area) ."},
			new SingleValuePropertyType("TileLength", "IfcPositiveLengthMeasure") { Definition = "Length of ceiling tiles. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. "},
			new SingleValuePropertyType("TileWidth", "IfcPositiveLengthMeasure") { Definition = "Width of ceiling tiles. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. "} },
				new [] { "IfcCovering" });
		yield return new PropertySetInfo("Pset_CoveringCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is giving according to the national building code. It indicates the sound transmission resistance of this object by an index ration (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Finish", "IfcText") { Definition = "Finish selection for this object.\nHere specification of the surface finish for informational purposes"},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("FlammabilityRating", "IfcLabel") { Definition = "Flammability Rating for this object.\nIt is given according to the national building code that governs the rating of flammability for materials."},
			new SingleValuePropertyType("FragilityRating", "IfcLabel") { Definition = "Indication on the fragility of the covering (e.g., under fire conditions).  It is given according to the national building code that might provide a classification for fragility."},
			new SingleValuePropertyType("Material", "IfcLabel") { Definition = "Main material of the covering, it should only be given, if no IfcMaterial class is assigned to the IfcCovering instance."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface,\nIt is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("TotalThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the covering, The thickness information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."} },
				new [] { "IfcCovering", "IfcCoveringType" });
		yield return new PropertySetInfo("Pset_CoveringFlooring", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasAntiStaticSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent electrostatic charge (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("HasNonSkidSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE)."} },
				new [] { "IfcCovering" });
		yield return new PropertySetInfo("Pset_CurtainWallCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is giving according to the national building code. It indicates the sound transmission resistance of this object by an index ration (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface,\nIt is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nHere the total thermal transmittance coefficient through the wall (including all materials)."} },
				new [] { "IfcCurtainWall" });
		yield return new PropertySetInfo("Pset_DamperPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_DamperTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BladeAction", new [] { "FOLDINGCURTAIN", "PARALLEL", "OPPOSED", "SINGLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Blade action."},
			new EnumerationPropertyType("BladeEdge", new [] { "CRIMPED", "UNCRIMPED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Blade edge."},
			new EnumerationPropertyType("BladeShape", new [] { "FLAT", "FABRICATEDAIRFOIL", "EXTRUDEDAIRFOIL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Blade shape. Flat means triple V-groove."},
			new EnumerationPropertyType("Operation", new [] { "AUTOMATIC", "MANUAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The operational mechanism for the damper operation."},
			new EnumerationPropertyType("Orientation", new [] { "VERTICAL", "HORIZONTAL", "VERTICALORHORIZONTAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The intended orientation for the damper as specified by the manufacturer."},
			new SingleValuePropertyType("BladeThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the damper blade."},
			new SingleValuePropertyType("CloseOffRating", "IfcPressureMeasure") { Definition = "Close off rating. "},
			new SingleValuePropertyType("FaceArea", "IfcAreaMeasure") { Definition = "Face area open to the airstream."},
			new SingleValuePropertyType("FrameDepth", "IfcPositiveLengthMeasure") { Definition = "The length (or depth) of the damper frame."},
			new SingleValuePropertyType("FrameThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the damper frame material."},
			new SingleValuePropertyType("FrameType", "IfcLabel") { Definition = "The type of frame used by the damper (e.g., Standard, Single Flange, Single Reversed Flange, Double Flange, etc.)."},
			new SingleValuePropertyType("LeakageFullyClosed", "IfcVolumetricFlowRateMeasure") { Definition = "Leakage when fully closed."},
			new SingleValuePropertyType("MaximumAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum allowable air flow rate."},
			new SingleValuePropertyType("MaximumWorkingPressure", "IfcPressureMeasure") { Definition = "Maximum working pressure."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal air flow rate."},
			new SingleValuePropertyType("NumberofBlades", "IfcInteger") { Definition = "Number of blades."},
			new SingleValuePropertyType("OpenPressureDrop", "IfcPressureMeasure") { Definition = "Total pressure drop across damper."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature range."},
			new SingleValuePropertyType("TemperatureRating", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature rating."},
			new SingleValuePropertyType("TorqueRange", "IfcTorqueMeasure") { Definition = "Torque range."},
			new TableValuePropertyType("LeakageCurve", "IfcVolumetricFlowRateMeasure", "IfcPressureMeasure") { Definition = "Leakage versus pressure drop; Leakage = f (pressure)."},
			new TableValuePropertyType("LossCoefficentCurve", "IfcReal", "IfcReal") { Definition = "Loss coefficient – blade position angle curve; ratio of pressure drop to velocity pressure versus blade angle; C = f (blade angle position)."},
			new TableValuePropertyType("RegeneratedSoundCurve", "IfcReal", "IfcVolumetricFlowRateMeasure") { Definition = "Regenerated sound versus air flow rate."} },
				new [] { "IfcDamperType" });
		yield return new PropertySetInfo("Pset_DamperTypeControlDamper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlDamperOperation", new [] { "LINEAR", "EXPONENTIAL", "IFCPOLYLINE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The inherent characteristic of the control damper operation."},
			new SingleValuePropertyType("TorqueRange", "IfcTorqueMeasure") { Definition = "Torque range: minimum operational torque to maximum allowable torque."} },
				new [] { "IfcDamperType" });
		yield return new PropertySetInfo("Pset_DamperTypeFireDamper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ActuationType", new [] { "GRAVITY", "SPRING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the different types of dampers "},
			new EnumerationPropertyType("ClosureRatingEnum", new [] { "DYNAMIC", "STATIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the closure rating for the damper "},
			new SingleValuePropertyType("FireResistanceRating", "IfcLabel") { Definition = "Measure of the fire resistance rating in hours (e.g., 1.5 hours, 2 hours, etc.). "},
			new SingleValuePropertyType("FusibleLinkTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature that the fusible link melts "} },
				new [] { "IfcDamperType" });
		yield return new PropertySetInfo("Pset_DamperTypeFireSmokeDamper", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ControlType", "IfcLabel") { Definition = "The type of control used to operate the damper (e.g., Open/Closed Indicator, Resetable Temperature Sensor, Temperature Override, etc.) "} },
				new [] { "IfcDamperType" });
		yield return new PropertySetInfo("Pset_DamperTypeSmokeDamper", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ControlType", "IfcLabel") { Definition = "The type of control used to operate the damper (e.g., Open/Closed Indicator, Resetable Temperature Sensor, Temperature Override, etc.) "} },
				new [] { "IfcDamperType" });
		yield return new PropertySetInfo("Pset_DesignPoint", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsDesignPoint", "IfcBoolean") { Definition = "Indicates whether an instance of IfcDistributionPort is to act as the design point for sprinkler hydraulic calculation (set TRUE) or not (either set FALSE or assumed to be FALSE where an instance of the property set is not assigned to an instance of IfcDistributionPort). "} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryAnchorBolt", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AnchorBoltDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the anchor bolt bar(s)."},
			new SingleValuePropertyType("AnchorBoltLength", "IfcPositiveLengthMeasure") { Definition = "The length of the anchor bolt."},
			new SingleValuePropertyType("AnchorBoltProtrusionLength", "IfcPositiveLengthMeasure") { Definition = "The length of the protruding part of the anchor bolt."},
			new SingleValuePropertyType("AnchorBoltThreadLength", "IfcPositiveLengthMeasure") { Definition = "The length of the threaded part of the anchor bolt."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryColumnShoe", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ColumnShoeBasePlateDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the column shoe base plate."},
			new SingleValuePropertyType("ColumnShoeBasePlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the column shoe base plate."},
			new SingleValuePropertyType("ColumnShoeBasePlateWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the column shoe base plate."},
			new SingleValuePropertyType("ColumnShoeCasingDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the column shoe casing."},
			new SingleValuePropertyType("ColumnShoeCasingHeight", "IfcPositiveLengthMeasure") { Definition = "The height of the column shoe casing."},
			new SingleValuePropertyType("ColumnShoeCasingWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the column shoe casing."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryCornerFixingPlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CornerFixingPlateFlangeWidthInPlaneX", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped corner plate in plane X."},
			new SingleValuePropertyType("CornerFixingPlateFlangeWidthInPlaneZ", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped corner plate in plane Z."},
			new SingleValuePropertyType("CornerFixingPlateLength", "IfcPositiveLengthMeasure") { Definition = "The length of the L-shaped corner plate."},
			new SingleValuePropertyType("CornerFixingPlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the L-shaped corner plate."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryDiagonalTrussConnector", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DiagonalTrussBaseBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the base bar."},
			new SingleValuePropertyType("DiagonalTrussCrossBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the diagonal cross-bars."},
			new SingleValuePropertyType("DiagonalTrussCrossBarSpacing", "IfcPositiveLengthMeasure") { Definition = "The spacing between diagonal cross-bar sections."},
			new SingleValuePropertyType("DiagonalTrussHeight", "IfcPositiveLengthMeasure") { Definition = "The overall height of the truss connector."},
			new SingleValuePropertyType("DiagonalTrussLength", "IfcPositiveLengthMeasure") { Definition = "The overall length of the truss connector."},
			new SingleValuePropertyType("DiagonalTrussSecondaryBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the secondary bar."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryEdgeFixingPlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EdgeFixingPlateFlangeWidthInPlaneX", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped edge plate in plane X."},
			new SingleValuePropertyType("EdgeFixingPlateFlangeWidthInPlaneZ", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped edge plate in plane Z."},
			new SingleValuePropertyType("EdgeFixingPlateLength", "IfcPositiveLengthMeasure") { Definition = "The length of the L-shaped edge plate."},
			new SingleValuePropertyType("EdgeFixingPlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the L-shaped edge plate."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryFixingSocket", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FixingSocketHeight", "IfcPositiveLengthMeasure") { Definition = "The overall height of the fixing socket."},
			new SingleValuePropertyType("FixingSocketThreadDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the thread."},
			new SingleValuePropertyType("FixingSocketThreadLength", "IfcPositiveLengthMeasure") { Definition = "The length of the threaded part of the fixing socket."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryLadderTrussConnector", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("LadderTrussBaseBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the base bar."},
			new SingleValuePropertyType("LadderTrussCrossBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the straight cross-bars."},
			new SingleValuePropertyType("LadderTrussCrossBarSpacing", "IfcPositiveLengthMeasure") { Definition = "The spacing between the straight cross-bars."},
			new SingleValuePropertyType("LadderTrussHeight", "IfcPositiveLengthMeasure") { Definition = "The overall height of the truss connector."},
			new SingleValuePropertyType("LadderTrussLength", "IfcPositiveLengthMeasure") { Definition = "The overall length of the truss connector."},
			new SingleValuePropertyType("LadderTrussSecondaryBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the secondary bar."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryStandardFixingPlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("StandardFixingPlateDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the standard fixing plate."},
			new SingleValuePropertyType("StandardFixingPlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the standard fixing plate."},
			new SingleValuePropertyType("StandardFixingPlateWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the standard fixing plate."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryWireLoop", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WireDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the wire."},
			new SingleValuePropertyType("WireEmbeddingLength", "IfcPositiveLengthMeasure") { Definition = "The length of the part of wire which is embedded in the precast concrete element."},
			new SingleValuePropertyType("WireLoopBasePlateLength", "IfcPositiveLengthMeasure") { Definition = "The length of the base plate."},
			new SingleValuePropertyType("WireLoopBasePlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the base plate."},
			new SingleValuePropertyType("WireLoopBasePlateWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the base plate."},
			new SingleValuePropertyType("WireLoopLength", "IfcPositiveLengthMeasure") { Definition = "The length of the fastening loop part of the wire."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeFormedDuct", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccessCoverLoadRating", "IfcText") { Definition = "The load rating of the access cover (which may be a value or an alphanumerically defined class rating)"},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the duct base construction\nNOTE: It is assumed that duct base will be constructed at a single thickness."},
			new SingleValuePropertyType("ClearDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the formed space in the duct."},
			new SingleValuePropertyType("ClearWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the formed space in the duct."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the duct wall construction\nNOTE: It is assumed that chamber walls will be constructed at a single thickness."} },
				new [] { "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeInspectionChamber", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccessCoverLoadRating", "IfcText") { Definition = "The load rating of the access cover (which may be a value or an alphanumerically defined class rating)"},
			new SingleValuePropertyType("AccessLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "The length of the chamber access cover or, where the plan shape of the cover is circular, the radius."},
			new SingleValuePropertyType("AccessWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the chamber access cover where the plan shape of the cover is not circular."},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber base construction\nNOTE: It is assumed that chamber base will be constructed at a single thickness."},
			new SingleValuePropertyType("ChamberLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "Length or, in the event of the shape being circular in plan, the radius of the chamber."},
			new SingleValuePropertyType("ChamberWidth", "IfcPositiveLengthMeasure") { Definition = "Width, in the event of the shape being non circular in plan."},
			new SingleValuePropertyType("InvertLevel", "IfcLengthMeasure") { Definition = "Level of the lowest part of the cross section. (BS6100 250 8001)"},
			new SingleValuePropertyType("SoffitLevel", "IfcLengthMeasure") { Definition = "Level of the highest internal part of the cross section. (BS6100 250 8002)"},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber wall construction\nNOTE: It is assumed that chamber walls will be constructed at a single thickness."},
			new SingleValuePropertyType("WithBackdrop", "IfcBoolean") { Definition = "Indicates whether the chamber has a backdrop or tumbling bay (TRUE) or not (FALSE)."} },
				new [] { "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeInspectionPit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcPositiveLengthMeasure") { Definition = "The depth of the pit."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "The length of the pit."},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The width of the pit."} },
				new [] { "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeManhole", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccessCoverLoadRating", "IfcText") { Definition = "The load rating of the access cover (which may be a value or an alphanumerically defined class rating)"},
			new SingleValuePropertyType("AccessLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "The length of the chamber access cover or, where the plan shape of the cover is circular, the radius."},
			new SingleValuePropertyType("AccessWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the chamber access cover where the plan shape of the cover is not circular."},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber base construction\nNOTE: It is assumed that chamber base will be constructed at a single thickness."},
			new SingleValuePropertyType("HasSteps", "IfcBoolean") { Definition = "Indicates whether the chamber has steps (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("InvertLevel", "IfcLengthMeasure") { Definition = "Level of the lowest part of the cross section. (BS6100 250 8001)"},
			new SingleValuePropertyType("IsShallow", "IfcBoolean") { Definition = "Indicates whether the chamber has been designed as being shallow (TRUE) or deep (FALSE)."},
			new SingleValuePropertyType("SoffitLevel", "IfcLengthMeasure") { Definition = "Level of the highest internal part of the cross section. (BS6100 250 8002)"},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber wall construction\nNOTE: It is assumed that chamber walls will be constructed at a single thickness."},
			new SingleValuePropertyType("WithBackdrop", "IfcBoolean") { Definition = "Indicates whether the chamber has a backdrop or tumbling bay (TRUE) or not (FALSE)."} },
				new [] { "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeMeterChamber", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber base construction\nNOTE: It is assumed that chamber base will be constructed at a single thickness."},
			new SingleValuePropertyType("ChamberLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "Length or, in the event of the shape being circular in plan, the radius of the chamber."},
			new SingleValuePropertyType("ChamberWidth", "IfcPositiveLengthMeasure") { Definition = "Width, in the event of the shape being non circular in plan."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber wall construction\nNOTE: It is assumed that chamber walls will be constructed at a single thickness."} },
				new [] { "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeSump", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InvertLevel", "IfcPositiveLengthMeasure") { Definition = "The lowest point in the cross section of the sump."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "The length of the sump."},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The width of the sump."} },
				new [] { "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeTrench", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcPositiveLengthMeasure") { Definition = "The depth of the trench."},
			new SingleValuePropertyType("InvertLevel", "IfcLengthMeasure") { Definition = "Level of the lowest part of the cross section. (BS6100 250 8001)"},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The width of the trench."} },
				new [] { "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeValveChamber", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber base construction\nNOTE: It is assumed that chamber base will be constructed at a single thickness."},
			new SingleValuePropertyType("ChamberLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "Length or, in the event of the shape being circular in plan, the radius of the chamber."},
			new SingleValuePropertyType("ChamberWidth", "IfcPositiveLengthMeasure") { Definition = "Width, in the event of the shape being non circular in plan."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber wall construction\nNOTE: It is assumed that chamber walls will be constructed at a single thickness."} },
				new [] { "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionFlowElementCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specific instance (e.g.  'WWS/VS1/400/001', which indicates the occurrence belongs to system WWS, subsystems VSI/400, and has the component number 001) "} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionFlowElement", "IfcEnergyConversionDevice", "IfcFlowController", "IfcFlowFitting", "IfcFlowMovingDevice", "IfcFlowSegment", "IfcFlowStorageDevice", "IfcFlowTerminal", "IfcFlowTreatmentDevice" });
		yield return new PropertySetInfo("Pset_DistributionPortDuct", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConnectionType", new [] { "BEADEDSLEEVE", "COMPRESSION", "CRIMP", "DRAWBAND", "DRIVESLIP", "FLANGED", "OUTSIDESLEEVE", "SLIPON", "SOLDERED", "SSLIP", "STANDINGSEAM", "SWEDGE", "WELDED", "OTHER", "NONE", "USERDEFINED", "NOTDEFINED" } ) { Definition = "The end-style treatment of the duct port:\nBEADEDSLEEVE: Beaded Sleeve. \nCOMPRESSION: Compression. \nCRIMP: Crimp. \nDRAWBAND: Drawband. \nDRIVESLIP: Drive slip. \nFLANGED: Flanged. \nOUTSIDESLEEVE: Outside Sleeve. \nSLIPON: Slipon. \nSOLDERED: Soldered. \nSSLIP: S-Slip. \nSTANDINGSEAM: Standing seam. \nSWEDGE: Swedge. \nWELDED: Welded. \nOTHER: Another type of end-style has been applied.\nNONE: No end-style has been applied."},
			new SingleValuePropertyType("PortNumber", "IfcInteger") { Definition = "The index of the port as it relates to the related object. Each index must be unique for any given related object."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortPipe", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConnectionType", new [] { "BRAZED", "COMPRESSION", "FLANGED", "GROOVED", "OUTSIDESLEEVE", "SOLDERED", "SWEDGE", "THREADED", "WELDED", "OTHER", "NONE", "UNSET" } ) { Definition = "The end-style treatment of the pipe port:\nBRAZED: Brazed. \nCOMPRESSION: Compression. \nFLANGED: Flanged. \nGROOVED: Grooved. \nOUTSIDESLEEVE: Outside Sleeve. \nSOLDERED: Soldered. \nSWEDGE: Swedge. \nTHREADED: Threaded. \nWELDED: Welded. \nOTHER: Another type of end-style has been applied.\nNONE: No end-style has been applied.\nUSERDEFINED: User-defined port connection type. \nNOTDEFINED: Undefined port connection type. "},
			new SingleValuePropertyType("PortNumber", "IfcInteger") { Definition = "The index of the port as it relates to the related object. Each index must be unique for any given related object."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DoorCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is giving according to the national building code. It indicates the sound transmission resistance of this object by an index ration (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere it defines an exit door in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("GlazingAreaFraction", "IfcPositiveRatioMeasure") { Definition = "Fraction of the glazing area relative to the total area of the filling element. \nIt shall be used, if the glazing area is not given separately for all panels within the filling element. "},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. \nIt is giving according to the requirements of the national building code. "},
			new SingleValuePropertyType("Infiltration", "IfcVolumetricFlowRateMeasure") { Definition = "Infiltration flowrate of outside air for the filler object based on the area of the filler object at a pressure level of 50 Pascals. It shall be used, if the length of all joints is unknown. "},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("SecurityRating", "IfcLabel") { Definition = "Index based rating system indicating security level.\nIt is giving according to the national building code."},
			new SingleValuePropertyType("SelfClosing", "IfcBoolean") { Definition = "Indication whether this object is designed to close automatically after use (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SmokeStop", "IfcBoolean") { Definition = "Indication whether the object is designed to provide a smoke stop (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nIt applies to the total door construction."} },
				new [] { "IfcDoor" });
		yield return new PropertySetInfo("Pset_DoorWindowGlazingType", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BeamRadiationTransmittance", "IfcPositiveRatioMeasure") { Definition = "Direct solar radiation transmittance that passes the glazing at normal incidence. It is a value without unit, often referred to as (Tsol). "},
			new SingleValuePropertyType("FillGas", "IfcLabel") { Definition = "Name of the gas by which the gap between two glass layers is filled. It is given for information purposes only."},
			new SingleValuePropertyType("GlassColor", "IfcLabel") { Definition = "Color (tint) selection for this glazing. It is given for information purposes only."},
			new SingleValuePropertyType("GlassLayers", "IfcCountMeasure") { Definition = "Number of glass layers within the frame. E.g. \"2\" for double glazing. "},
			new SingleValuePropertyType("GlassThickness1", "IfcPositiveLengthMeasure") { Definition = "Thickness of the first (inner) glass layer. "},
			new SingleValuePropertyType("GlassThickness2", "IfcPositiveLengthMeasure") { Definition = "Thickness of the second (intermediate or outer) glass layer."},
			new SingleValuePropertyType("GlassThickness3", "IfcPositiveLengthMeasure") { Definition = "Thickness of the third (outer) glass layer. "},
			new SingleValuePropertyType("IsCoated", "IfcBoolean") { Definition = "Indication whether the glass is coated with a material (TRUE) or not (FALSE). "},
			new SingleValuePropertyType("IsLaminated", "IfcBoolean") { Definition = "Indication whether the glass is layered with other materials (TRUE) or not (FALSE). "},
			new SingleValuePropertyType("IsTempered", "IfcBoolean") { Definition = "Indication whether the glass is tempered (TRUE) or not (FALSE) ."},
			new SingleValuePropertyType("IsWired", "IfcBoolean") { Definition = "Indication whether the glass includes a contained wire mesh to prevent break-in (TRUE) or not (FALSE) "},
			new SingleValuePropertyType("Reflectivity", "IfcPositiveRatioMeasure") { Definition = "Fraction of the visible light that is reflected by the glazing at normal incidence. It is a value without unit. "},
			new SingleValuePropertyType("SolarHeatGainTransmittance", "IfcPositiveRatioMeasure") { Definition = "Total solar heat transmittance that passes the glazing at normal incidence. It is a value without unit, often referred to as (SHGC):."},
			new SingleValuePropertyType("ThermalTransmittanceSummer", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nSummer thermal transmittance coefficient of the glazing only, often referred to as (U-value) "},
			new SingleValuePropertyType("ThermalTransmittanceWinter", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nWinter thermal transmittance coefficient of the glazing only, often referred to as (U-value) "},
			new SingleValuePropertyType("Translucency", "IfcPositiveRatioMeasure") { Definition = "Fraction of the visible light that passes the glazing at normal incidence. It is a value without unit. "} },
				new [] { "IfcDoor", "IfcWindow" });
		yield return new PropertySetInfo("Pset_DoorWindowShadingType", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ExternalShadingCoefficient", "IfcPositiveRatioMeasure") { Definition = "Radiation transmission coefficient of the outside shading device. It is a value without unit."},
			new SingleValuePropertyType("InsetShadingCoefficient", "IfcPositiveRatioMeasure") { Definition = "Radiation transmission coefficient of the shading device inside the glazing, symbol \"b-value\". It is a value without unit. "},
			new SingleValuePropertyType("InternalShadingCoefficient", "IfcPositiveRatioMeasure") { Definition = "Radiation transmission coefficient of the inside shading device, symbol \"b-value\". It is a value without unit. "} },
				new [] { "IfcDoor", "IfcWindow" });
		yield return new PropertySetInfo("Pset_DrainageCatchment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AreaDrained", "IfcAreaMeasure") { Definition = "The area measure enclosed within the catchment"} },
				new [] { "IfcSite" });
		yield return new PropertySetInfo("Pset_DrainageCulvert", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ClearDepth", "IfcLengthMeasure") { Definition = "The clear depth of the culvert"},
			new SingleValuePropertyType("InternalWidth", "IfcLengthMeasure") { Definition = "The internal width of the culvert"} },
				new [] { "IfcSystem" });
		yield return new PropertySetInfo("Pset_DrainageOutfall", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InvertLevel", "IfcLengthMeasure") { Definition = "The lowest point of the outfall"} },
				new [] { "IfcProxy" });
		yield return new PropertySetInfo("Pset_DrainageReserve", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the drainage reserve"} },
				new [] { "IfcSite" });
		yield return new PropertySetInfo("Pset_Draughting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("LayerName", "IfcIdentifier") { Definition = "Identifier of the layer name within the sending application."} },
				new [] { "IfcElement", "IfcSpatialStructureElement" });
		yield return new PropertySetInfo("Pset_DuctConnection", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ConnectionType", "IfcText") { Definition = "The connection type between duct segments or fittings and other segments or fittings. If the list contains only one value, then this connection type value applies to all ports. For more than one value in the list, the connection type value applies to the port that corresponds to the list index.The following suggested items should be utilized whenever possible for correlation with port enumerations:\nANGLE: Angle. \nBEADEDSLEEVE: Beaded Sleeve. \nBRAZED: Brazed. \nCOMPRESSION: Compression. \nCRIMP: Crimp. \nDRAWBAND: Drawband. \nDRIVESLIP: Drive slip. \nFLANGED: Flanged. \nOUTSIDESLEEVE: Outside Sleeve. \nSLIPON: Slipon. \nSOLDERED: Soldered. \nSSLIP: S-Slip. \nSTANDINGSEAM: Standing seam. \nSWEDGE: Swedge. \nWELDED: Welded. \nNONE: No connection type.\nNOTDEFINED: Undefined connection type. "} },
				new [] { "IfcDistributionElement" });
		yield return new PropertySetInfo("Pset_DuctDesignCriteria", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DuctSizingMethod", new [] { "CONSTANTFRICTION", "CONSTANTPRESSURE", "STATICREGAIN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the methodology to be used to size system components "},
			new SingleValuePropertyType("AspectRatio", "IfcReal") { Definition = "The default aspect ratio "},
			new SingleValuePropertyType("DesignName", "IfcText") { Definition = "A name for the design values "},
			new SingleValuePropertyType("FrictionLoss", "IfcReal") { Definition = "The pressure loss due to friction per unit length. (Data type = PressureMeasure/LengthMeasure) "},
			new SingleValuePropertyType("LeakageClass", "IfcPressureMeasure") { Definition = "Nominal leakage rating for the system components. "},
			new SingleValuePropertyType("MaximumVelocity", "IfcLinearVelocityMeasure") { Definition = "The maximum design velocity of the air in the duct or fitting. "},
			new SingleValuePropertyType("MinimumHeight", "IfcPositiveLengthMeasure") { Definition = "The minimum duct height for rectangular, oval or round duct "},
			new SingleValuePropertyType("MinimumWidth", "IfcPositiveLengthMeasure") { Definition = "The minimum duct width for oval or rectangular duct "},
			new SingleValuePropertyType("PressureClass", "IfcPressureMeasure") { Definition = "Nominal pressure rating of the system components. (Data type = PressureMeasure) "},
			new SingleValuePropertyType("ScrapFactor", "IfcReal") { Definition = "Sheet metal scrap factor "} },
				new [] { "IfcSystem" });
		yield return new PropertySetInfo("Pset_DuctFittingPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_DuctFittingTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EndStyleTreatment", "IfcText") { Definition = "The end-style treatment of the duct fitting manufactured. If the list contains only one value, then this end-style applies to all ports. For more than one value in the list, the end-style value applies to the port that corresponds to the list index.The following suggested items should be utilized whenever possible for correlation with port enumerations:\nANGLE: Angle. \nBEADEDSLEEVE: Beaded Sleeve. \nBRAZED: Brazed. \nCOMPRESSION: Compression. \nCRIMP: Crimp. \nDRAWBAND: Drawband. \nDRIVESLIP: Drive slip. \nFLANGED: Flanged. \nOUTSIDESLEEVE: Outside Sleeve. \nSLIPON: Slipon. \nSOLDERED: Soldered. \nSSLIP: S-Slip. \nSTANDINGSEAM: Standing seam. \nSWEDGE: Swedge. \nWELDED: Welded. \nNONE: No end-style treatment has been applied.\nNOTDEFINED: Undefined end-style type. "},
			new SingleValuePropertyType("MaterialThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the duct fitting material."},
			new SingleValuePropertyType("NominalDiameterOrWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter or width of the duct fitting. If the list contains only one value, then this nominal diameter or width applies to all ports. For more than value in the list, the nominal diameter or width value applies to the port that corresponds to the list index."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the duct fitting. Refer to NominalDiameterOrWidth for comments about interpretation of multiple items in the list."},
			new SingleValuePropertyType("PressureClass", "IfcPressureMeasure") { Definition = "Pressure classification as defined by the authority having jurisdiction (e.g., SMACNA, etc.)."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("SubType", "IfcText") { Definition = "Subtype of fitting (I.e., 5-gore, pleated, stamped, etc.) "},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."},
			new SingleValuePropertyType("UnitWeight", "IfcMassPerLengthMeasure") { Definition = "Weight per unit length."} },
				new [] { "IfcDuctFittingType" });
		yield return new PropertySetInfo("Pset_DuctSegmentPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_DuctSegmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Shape", new [] { "FLATOVAL", "RECTANGULAR", "ROUND", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Cross sectional shape. Note that this shape is uniform throughout the length of the segment. For nonuniform shapes, a transition fitting should be used instead."},
			new SingleValuePropertyType("EndStyleTreatment", "IfcText") { Definition = "The end-style treatment of the duct segment manufactured. If the list contains only one value, then this end-style applies to all ports. For more than one value in the list, the end-style value applies to the port that corresponds to the list index.The following suggested items should be utilized whenever possible for correlation with port enumerations:\nANGLE: Angle. \nBEADEDSLEEVE: Beaded Sleeve. \nBRAZED: Brazed. \nCOMPRESSION: Compression. \nCRIMP: Crimp. \nDRAWBAND: Drawband. \nDRIVESLIP: Drive slip. \nFLANGED: Flanged. \nOUTSIDESLEEVE: Outside Sleeve. \nSLIPON: Slipon. \nSOLDERED: Soldered. \nSSLIP: S-Slip. \nSTANDINGSEAM: Standing seam. \nSWEDGE: Swedge. \nWELDED: Welded. \nNONE: No end-style treatment has been applied.\nNOTDEFINED: Undefined end-style type. "},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "Length of the duct segment. If a Length attribute is provided in the occurrence property set, it supersedes this value."},
			new SingleValuePropertyType("LongitudinalSeam", "IfcText") { Definition = "The type of seam to be used along the longitudinal axis of the duct segment."},
			new SingleValuePropertyType("MaterialThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the duct segment material."},
			new SingleValuePropertyType("NominalDiameterOrWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter or width of the duct segment. If the list contains only one value, then this nominal diameter or width applies to all ports. For more than value in the list, the nominal diameter or width value applies to the port that corresponds to the list index."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the duct segment. Refer to NominalDiameterOrWidth for comments about interpretation of multiple items in the list."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("Reinforcement", "IfcLabel") { Definition = "The type of reinforcement, if any, used for the duct segment."},
			new SingleValuePropertyType("ReinforcementSpacing", "IfcPositiveLengthMeasure") { Definition = "The spacing between reinforcing elements."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."},
			new SingleValuePropertyType("UnitWeight", "IfcMassMeasure") { Definition = "Weight per unit length."},
			new SingleValuePropertyType("WorkingPressure", "IfcPressureMeasure") { Definition = "Pressure classification as defined by the authority having jurisdiction (e.g., SMACNA, etc.)."} },
				new [] { "IfcDuctSegmentType" });
		yield return new PropertySetInfo("Pset_DuctSilencerPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirPressureDropCurve", "IfcPressureMeasure") { Definition = "Air pressure drop as a function of air flow rate."} },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_DuctSilencerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Shape", new [] { "FLATOVAL", "RECTANGULAR", "ROUND", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Cross sectional shape."},
			new SingleValuePropertyType("AirFlowrateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered."},
			new SingleValuePropertyType("HasExteriorInsulation", "IfcBoolean") { Definition = "TRUE if the silencer has exterior insulation. FALSE if it does not."},
			new SingleValuePropertyType("HydraulicDiameter", "IfcLengthMeasure") { Definition = "Hydraulic diameter"},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The finished length of the silencer."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable minimum and maximum temperature."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "The weight of the silencer."},
			new SingleValuePropertyType("WorkingPressureRange", "IfcPressureMeasure") { Definition = "Allowable minimum and maximum  working pressure (relative to ambient pressure)."} },
				new [] { "IfcDuctSilencerType" });
		yield return new PropertySetInfo("Pset_ElectricalCircuit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Diversity", "IfcPositiveRatioMeasure") { Definition = "A factor that is a means of reducing the cable size on the basis that not all the connected load will be drawing current simultaneously."},
			new SingleValuePropertyType("MaximumAllowedVoltageDrop", "IfcElectricVoltageMeasure") { Definition = "The maximum voltage drop across the circuit that must not be exceeded."},
			new SingleValuePropertyType("NetImpedance", "IfcElectricResistanceMeasure") { Definition = "The maximum earth loop impedance of a circuit (typically stated as the variable Zs)"},
			new SingleValuePropertyType("NumberOfPhases", "IfcInteger") { Definition = "Number of phases within this circuit."} },
				new [] { "IfcElectricalCircuit" });
		yield return new PropertySetInfo("Pset_ElectricalDeviceCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("InsulationStandardClass", new [] { "Class0Appliance", "Class0IAppliance", "ClassIAppliance", "ClassIIAppliance", "ClassIIIAppliance", "NotKnown", "Unset" } ) { Definition = "Insulation standard classes provides basic protection information against electric shock. Defines levels of insulation required in terms of constructional requirements (creepage and clearance distances) and electrical requirements (compliance with electric strength tests). Basic insulation is considered to be shorted under single fault conditions. The actual values required depend on the working voltage to which the insulation is subjected, as well as other factors. Also indicates whether the electrical device has a protective earth connection."},
			new SingleValuePropertyType("ElectricalDeviceNominalPower", "IfcPowerMeasure") { Definition = "The output power rating that is certified for a device."},
			new SingleValuePropertyType("HasProtectiveEarth", "IfcBoolean") { Definition = "Indicates whether the electrical device has a protective earth connection (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("IP_Code", "IfcLabel") { Definition = "IEC 529 (1989) Classification of degrees of protection provided by enclosures (IP Code)"},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The maximum allowed current that a device is certified to handle."},
			new SingleValuePropertyType("NominalFrequencyRange", "IfcFrequencyMeasure") { Definition = "The upper and lower limits of frequency for which the operation of the device is certified."},
			new SingleValuePropertyType("NominalVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("NumberOfPoles", "IfcInteger") { Definition = "The number of logical connections that can be made on an electrical device."},
			new SingleValuePropertyType("PhaseAngle", "IfcPositivePlaneAngleMeasure") { Definition = "The angular difference between two waveforms of the same frequency"},
			new SingleValuePropertyType("PhaseReference", "IfcIdentifier") { Definition = "The phase identification used for the device electrical input. This should be the same phase identifier that is used for the conductor segment providing the electrical service to the device. In general, it is recommended that IEC recommendations for phase identification are used (L1, L2 etc.). However, other phase identifiers may be used such as by color (Red, Blue, Yellow) or by number (1, 2, 3) etc."},
			new SingleValuePropertyType("UsageCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that a device is actually handling or is calculated to be handling at a point in time."} },
				new [] { "IfcDistributionElement" });
		yield return new PropertySetInfo("Pset_ElectricDistributionPointCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CaseWeight", "IfcMassMeasure") { Definition = "Weight of case"},
			new SingleValuePropertyType("IsMain", "IfcBoolean") { Definition = "Identifies if the current instance is a main distribution point or topmost level in an electrical distribution hierarchy (= TRUE) or a sub-main distribution point (= FALSE)."},
			new SingleValuePropertyType("NumberOfDoors", "IfcInteger") { Definition = "Number of doors"},
			new SingleValuePropertyType("NumberOfOpenings", "IfcInteger") { Definition = "Maximum number of openings that can fit with the case for normal use. In the openings there must be nipples, so cable may run through."} },
				new [] { "IfcElectricDistributionPoint" });
		yield return new PropertySetInfo("Pset_ElectricGeneratorTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ElectricGeneratorEfficiency", "IfcPositiveRatioMeasure") { Definition = "The ratio of output capacity to intake capacity."},
			new SingleValuePropertyType("MaximumPowerOutput", "IfcPowerMeasure") { Definition = "The maximum output power rating of the engine."},
			new SingleValuePropertyType("StartCurrentFactor", "IfcReal") { Definition = "IEC. Start current factor defines how large the peek starting current will become on the engine. StartCurrentFactor is multiplied to NominalCurrent and we get the start current. "} },
				new [] { "IfcElectricGeneratorType" });
		yield return new PropertySetInfo("Pset_ElectricHeaterTypeElectricalCableHeater", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HeatOutputPerUnitLength", "IfcPowerMeasure") { Definition = "The amount of heat output per unit length of heat emitter."} },
				new [] { "IfcElectricHeaterType" });
		yield return new PropertySetInfo("Pset_ElectricHeaterTypeElectricalMatHeater", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HeatOutputPerUnitArea", "IfcPowerMeasure") { Definition = "The amount of heat output per unit area of heat emitter."} },
				new [] { "IfcElectricHeaterType" });
		yield return new PropertySetInfo("Pset_ElectricHeaterTypeElectricalPointHeater", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HeatOutput", "IfcPowerMeasure") { Definition = "The total amount of heat output by the heat emitter."} },
				new [] { "IfcElectricHeaterType" });
		yield return new PropertySetInfo("Pset_ElectricMotorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MotorEnclosureType", new [] { "OpenDripProof", "TotallyEnclosedAirOver", "TotallyEnclosedFanCooled", "TotallyEnclosedNonVentilated", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of motor enclosure from which that required may be selected."},
			new SingleValuePropertyType("ElectricMotorEfficiency", "IfcPositiveRatioMeasure") { Definition = "The ratio of output capacity to intake capacity."},
			new SingleValuePropertyType("FrameSize", "IfcLabel") { Definition = "Designation of the frame size according to the named range of frame sizes designated at the place of use or according to a given standard."},
			new SingleValuePropertyType("HasPartWinding", "IfcBoolean") { Definition = "Indication of whether the motor is single speed, i.e. has a single winding (= FALSE) or multi-speed i.e.has part winding (= TRUE) "},
			new SingleValuePropertyType("IsGuarded", "IfcBoolean") { Definition = "Indication of whether the motor enclosure is guarded (= TRUE) or not (= FALSE)"},
			new SingleValuePropertyType("LockedRotorCurrent", "IfcElectricCurrentMeasure") { Definition = "Input current when a motor armature is energized but not rotating."},
			new SingleValuePropertyType("MaximumPowerOutput", "IfcPowerMeasure") { Definition = "The maximum output power rating of the engine."},
			new SingleValuePropertyType("StartCurrentFactor", "IfcReal") { Definition = "IEC. Start current factor defines how large the peak starting current will become on the engine. StartCurrentFactor is multiplied to NominalCurrent and to give the start current. "} },
				new [] { "IfcElectricMotorType", "IfcFanType", "IfcPumpType" });
		yield return new PropertySetInfo("Pset_ElementShading", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ShadingDeviceType", new [] { "FIXED", "MOVABLE", "EXTERIOR", "INTERIOR", "OVERHANG", "SIDEFIN", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Specifies the type of shading device."},
			new SingleValuePropertyType("AverageSolarTransmittance", "IfcPositiveRatioMeasure") { Definition = "Overall or average ratio of the solar flux transmitted through a body to that incident upon it."},
			new SingleValuePropertyType("AverageVisibleTransmittance", "IfcPositiveRatioMeasure") { Definition = "Overall or average ratio of the visible spectral flux transmitted through a body to that incident upon it."},
			new SingleValuePropertyType("Azimuth", "IfcPositivePlaneAngleMeasure") { Definition = "Azimuth of the element as derived from the placement of the element shape, by convention: North = 0' and measurement is done clockwise (I.e. east = 90', if unit is grad). The calculation procedure will be specific for each type of element.  In cases of inconsistency between the geometric parameters and the azimuth property, provided in the attached property set, the geometric parameters take precedence. "},
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "The color of the surface."},
			new SingleValuePropertyType("Inclination", "IfcPositivePlaneAngleMeasure") { Definition = "Inclination of the element as derived from the placement of the element shape, by convention: Vertical = 0', horizontal = 90', if unit is grad). The calculation procedure will be specific for each type of element.  In cases of inconsistency between the geometric parameters and the azimuth property, provided in the attached property set, the geometric parameters take precedence. "},
			new SingleValuePropertyType("Reflectance", "IfcPositiveRatioMeasure") { Definition = "The ratio of reflected power to incident power."},
			new SingleValuePropertyType("Roughness", "IfcPositiveLengthMeasure") { Definition = "A measure of the vertical deviations of the surface."},
			new SingleValuePropertyType("TiltRange", "IfcPlaneAngleMeasure") { Definition = "The minimum and maximum angles of possible tilt defined in the plane perpendicular to the extrusion axis (X-Axis of the local placement). The angle shall be measured from the orientation of the Z-Axis in the local placement."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_EnergyConsumptionPHistoryElectricity", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_EnergyConsumptionPHistoryFuel", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_EnergyConsumptionPHistorySteam", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_EnergyConversionDeviceCoil", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasSoundAttentuation", "IfcBoolean") { Definition = "TRUE if the coil has sound attenuation, FALSE if it does not."} },
				new [] { "IfcEnergyConversionDevice" });
		yield return new PropertySetInfo("Pset_EnergyConversionDeviceSpaceHeaterPanel", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfPanels", "IfcInteger") { Definition = "Number of panels."} },
				new [] { "IfcEnergyConversionDevice" });
		yield return new PropertySetInfo("Pset_EnergyConversionDeviceSpaceHeaterSectional", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfSections", "IfcInteger") { Definition = "Number of vertical sections, measured in the direction of flow."} },
				new [] { "IfcEnergyConversionDevice" });
		yield return new PropertySetInfo("Pset_EvaporativeCoolerPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirPressureDropCurve", "IfcPressureMeasure") { Definition = "Air pressure drop as function of air flow rate."},
			new SingleValuePropertyType("EffectivenessTable", "IfcReal") { Definition = "Total heat transfer effectiveness curve as a function of the primary air flow rate."},
			new SingleValuePropertyType("WaterPressDropCurve", "IfcPressureMeasure") { Definition = "Water pressure drop as function of water flow rate."} },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_EvaporativeCoolerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FlowArrangement", new [] { "COUNTERFLOW", "CROSSFLOW", "PARALLELFLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "CounterFlow: Air and water flow enter in different directions.\nCrossFlow: Air and water flow are perpendicular.\nParallelFlow: Air and water flow enter in same directions."},
			new SingleValuePropertyType("HeatExchangeArea", "IfcAreaMeasure") { Definition = "Heat exchange area."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range."},
			new SingleValuePropertyType("WaterRequirement", "IfcVolumetricFlowRateMeasure") { Definition = "Make-up water requirement."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of the evaporative cooler."} },
				new [] { "IfcEvaporativeCoolerType" });
		yield return new PropertySetInfo("Pset_EvaporatorPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_EvaporatorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EvaporatorCoolant", new [] { "WATER", "BRINE", "GLYCOL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The fluid used for the coolant in the evaporator."},
			new EnumerationPropertyType("EvaporatorMediumType", new [] { "COLDLIQUID", "COLDAIR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "ColdLiquid: Evaporator is using liquid type of fluid to exchange heat with refrigerant.\nColdAir: Evaporator is using air to exchange heat with refrigerant."},
			new EnumerationPropertyType("RefrigerantClass", new [] { "CFC", "HCFC", "HFC", "HYDROCARBONS", "AMMONIA", "CO2", "H2O", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Refrigerant class used by the compressor.\nCFC: Chlorofluorocarbons.\nHCFC: Hydrochlorofluorocarbons.\nHFC: Hydrofluorocarbons."},
			new SingleValuePropertyType("ExternalSurfaceArea", "IfcAreaMeasure") { Definition = "External surface area (both primary and secondary area)."},
			new SingleValuePropertyType("InternalRefrigerantVolume", "IfcVolumeMeasure") { Definition = "Internal volume of evaporator (refrigerant side)."},
			new SingleValuePropertyType("InternalSurfaceArea", "IfcAreaMeasure") { Definition = "Internal surface area."},
			new SingleValuePropertyType("InternalWaterVolume", "IfcVolumeMeasure") { Definition = "Internal volume of evaporator (water side)."},
			new SingleValuePropertyType("NominalHeatTransferArea", "IfcAreaMeasure") { Definition = "Nominal heat transfer surface area associated with nominal overall heat transfer coefficient."},
			new SingleValuePropertyType("NominalHeatTransferCoefficient", "IfcThermalTransmittanceMeasure") { Definition = "Nominal overall heat transfer coefficient associated with nominal heat transfer area."} },
				new [] { "IfcEvaporatorType" });
		yield return new PropertySetInfo("Pset_FanPHistory", new IPropertyTypeInfo[] {
			new TableValuePropertyType("EfficiencyCurve", "IfcReal", "IfcReal") { Definition = "Fan efficiency =f (flow rate)."},
			new TableValuePropertyType("PressureCurve", "IfcReal", "IfcReal") { Definition = "Pressure rise = f (flow rate)."} },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_FanTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CapacityControlType", new [] { "INLETVANE", "VARIABLESPEEDDRIVE", "BLADEPITCHANGLE", "TWOSPEED", "DISCHARGEDAMPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "\nInletVane: Control by adjusting inlet vane\nVariableSpeedDrive: Control by variable speed drive \nBladePitchAngle: Control by adjusting blade pitch angle\nTwoSpeed: Control by switch between high and low speed\nDischargeDamper: Control by modulating discharge damper"},
			new EnumerationPropertyType("MotorDriveType", new [] { "DIRECTDRIVE", "BELTDRIVE", "COUPLING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Motor drive type:\nDIRECTDRIVE: Direct drive. \nBELTDRIVE: Belt drive. \nCOUPLING: Coupling. \nOTHER: Other type of motor drive. \nNOTKNOWN: Unknown motor drive type.\nUNSET: Unspecified motor drive type."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal air flow rate."},
			new SingleValuePropertyType("NominalPowerRate", "IfcPowerMeasure") { Definition = "Nominal fan power rate."},
			new SingleValuePropertyType("NominalRotationSpeed", "IfcRotationalFrequencyMeasure") { Definition = "Nominal fan wheel speed."},
			new SingleValuePropertyType("NominalStaticPressure", "IfcPressureMeasure") { Definition = "The static pressure within the air stream that the fan must overcome to insure designed circulation of air"},
			new SingleValuePropertyType("NominalTotalPressure", "IfcPressureMeasure") { Definition = "Nominal total pressure rise across the fan."},
			new SingleValuePropertyType("OperationalCriteria", "IfcTimeMeasure") { Definition = "Time of operation at maximum operational ambient air temperature."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of the fan."} },
				new [] { "IfcFanType" });
		yield return new PropertySetInfo("Pset_FanTypeSmokeControl", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaximumDesignTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximum design operational temperature."},
			new SingleValuePropertyType("OperationalCriteria", "IfcTimeMeasure") { Definition = "Time of operation at maximum operational ambient air temperature."},
			new SingleValuePropertyType("SmokeControlFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Flowrate of fan while operating as a part of the smoke control system."} },
				new [] { "IfcFanType" });
		yield return new PropertySetInfo("Pset_FilterPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_FilterTypeAirParticleFilter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirParticleFilterType", new [] { "COARSEMETALSCREEN", "COARSECELLFOAMS", "COARSESPUNGLASS", "MEDIUMELECTRETFILTER", "MEDIUMNATURALFIBERFILTER", "HEPAFILTER", "ULPAFILTER", "MEMBRANEFILTERS", "RENEWABLEMOVINGCURTIANDRYMEDIAFILTER", "ELECTRICALFILTER", "ROLLFORM", "ADHESIVERESERVOIR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A panel dry type extended surface filter is a dry-type air filter with random fiber mats or blankets in the forms of pockets, V-shaped or radial pleats, and include the following:\nCoarseFilter: Filter with a efficiency lower than 30% for atmosphere dust-spot.\nCoarseMetalScreen: Filter made of metal screen.\nCoarseCellFoams: Filter made of cell foams.\nCoarseSpunGlass: Filter made of spun glass.\nMediumFilter: Filter with an efficiency between 30-98% for atmosphere dust-spot.\nMediumElectretFilter: Filter with fine electret synthetic fibers.\nMediumNaturalFiberFilter: Filter with natural fibers.\nHEPAFilter: High efficiency particulate air filter.\nULPAFilter: Ultra low penetration air filter.\nMembraneFilters: Filter made of membrane for certain pore diameters in flat sheet and pleated form.\nA renewable media with a moving curtain viscous filter are random-fiber media coated with viscous substance in roll form or curtain where fresh media is fed across the face of the filter and the dirty media is rewound onto a roll at the bottom or to into a reservoir:\nRollForm: Viscous filter used in roll form.\nAdhesiveReservoir: Viscous filter used in moving curtain form.\nA renewable moving curtain dry media filter is a random-fiber dry media of relatively high porosity used in moving-curtain(roll) filters.\nAn electrical filter uses electrostatic precipitation to remove and collect particulate contaminants."},
			new EnumerationPropertyType("SeparationType", new [] { "BAG", "PLEAT", "TREADSEPARATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Air particulate filter media separation type."},
			new SingleValuePropertyType("DustHoldingCapacity", "IfcMassMeasure") { Definition = "Maximum filter dust holding capacity."},
			new SingleValuePropertyType("FaceSurfaceArea", "IfcAreaMeasure") { Definition = "Face area of filter frame."},
			new SingleValuePropertyType("MediaExtendedArea", "IfcAreaMeasure") { Definition = "Total extended media area."},
			new SingleValuePropertyType("NominalCountedEfficiency", "IfcReal") { Definition = "Nominal filter efficiency based the particle count concentration before and after the filter against particles with a certain size distribution."},
			new SingleValuePropertyType("NominalWeightedEfficiency", "IfcReal") { Definition = "Nominal filter efficiency based the particle weight concentration before and after the filter against particles with a certain size distribution."},
			new TableValuePropertyType("CountedEfficiencyCurve", "IfcReal", "IfcReal") { Definition = "Counted efficiency curve as a function of dust holding weight, efficiency = f (dust holding weight)."},
			new TableValuePropertyType("PressureDropCurve", "IfcPressureMeasure", "IfcReal") { Definition = "Under certain dust holding weight, DelPressure = f (fluidflowRate)"},
			new TableValuePropertyType("WeightedEfficiencyCurve", "IfcReal", "IfcReal") { Definition = "Weighted efficiency curve as a function of dust holding weight, efficiency = f (dust holding weight)."} },
				new [] { "IfcFilterType" });
		yield return new PropertySetInfo("Pset_FilterTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FinalResistance", "IfcPressureMeasure") { Definition = "Filter fluid resistance when replacement is required (i.e., Pressure drop at the maximum air flowrate across the filter when the filter needs replacement per ASHRAE Standard 52.1)."},
			new SingleValuePropertyType("FlowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of fluid flowrate that can be delivered."},
			new SingleValuePropertyType("InitialResistance", "IfcPressureMeasure") { Definition = "Initial new filter fluid resistance (i.e., pressure drop at the maximum air flowrate across the filter when the filter is new per ASHRAE Standard 52.1)."},
			new SingleValuePropertyType("NominalFilterFaceVelocity", "IfcLinearVelocityMeasure") { Definition = "Filter face velocity."},
			new SingleValuePropertyType("NominalFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal fluid flow rate through the filter."},
			new SingleValuePropertyType("NominalMediaSurfaceVelocity", "IfcLinearVelocityMeasure") { Definition = "Average fluid velocity at the media surface."},
			new SingleValuePropertyType("NominalParticleGeometricMeanDiameter", "IfcPositiveLengthMeasure") { Definition = "Particle geometric mean diameter associated with nominal efficiency."},
			new SingleValuePropertyType("NominalParticleGeometricStandardDeviation", "IfcReal") { Definition = "Particle geometric standard deviation associated with nominal efficiency."},
			new SingleValuePropertyType("NominalPressureDrop", "IfcPressureMeasure") { Definition = "Total pressure drop across the filter."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient fluid temperature range."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of filter."} },
				new [] { "IfcFilterType" });
		yield return new PropertySetInfo("Pset_FireRatingProperties", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FireResistanceRating", "IfcLabel") { Definition = "Fire rating identifying the entity's fire resistive value (e.g., 1-hour, 2-hour, etc.) so that its resistance to fire can be compared to that of the surrounding structure."},
			new SingleValuePropertyType("IsCombustible", "IfcBoolean") { Definition = "Combustibility (YES it is combustible or NO it is not combustible)."},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Surface spread of flame characteristics."} },
				new [] { "IfcElement", "IfcSpatialStructureElement" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeBreechingInlet", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BreechingInletType", new [] { "TWOWAY", "FOURWAY", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type of breeching inlet."},
			new EnumerationPropertyType("CouplingType", new [] { "INSTANTANEOUS_FEMALE", "INSTANTANEOUS_MALE", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type coupling on the inlet of the breeching inlet."},
			new SingleValuePropertyType("HasCaps", "IfcBoolean") { Definition = "Does the inlet connection have protective caps."},
			new SingleValuePropertyType("InletDiameter", "IfcPositiveLengthMeasure") { Definition = "The inlet diameter of the breeching inlet."},
			new SingleValuePropertyType("OutletDiameter", "IfcPositiveLengthMeasure") { Definition = "The outlet diameter of the breeching inlet."} },
				new [] { "IfcFireSuppressionTerminalType" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeFireHydrant", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FireHydrantType", new [] { "DryBarrel", "WetBarrel", "Other", "NotKnown", "Unset" } ) { Definition = "Defines the range of hydrant types from which the required type can be selected where:\n\nDryBarrel =\t A hydrant that has isolating valves fitted below ground and that may be used where the possibility of water freezing is a consideration.\nWetBarrel =\t A hydrant that has isolating valves fitted above ground and that may be used where there is no possibility of water freezing.\n"},
			new SingleValuePropertyType("BodyColor", "IfcText") { Definition = "Color of the body of the hydrant.\n\nNote: Consult local fire regulations for statutory colors that may be required for hydrant bodies in particular circumstances."},
			new SingleValuePropertyType("CapColor", "IfcText") { Definition = "Color of the caps of the hydrant.\n\nNote: Consult local fire regulations for statutory colors that may be required for hydrant caps in particular circumstances."},
			new SingleValuePropertyType("DischargeFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric rate of fluid discharge."},
			new SingleValuePropertyType("FlowClass", "IfcLabel") { Definition = "Alphanumeric indication of the flow class of a hydrant (may be used in connection with or instead of the FlowRate property)"},
			new SingleValuePropertyType("HoseConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The size of connections to which a hose may be connected (other than that to be linked to a pumping unit)."},
			new SingleValuePropertyType("NumberOfHoseConnections", "IfcInteger") { Definition = "The number of hose connections on the hydrant (excluding the pumper connection)"},
			new SingleValuePropertyType("PressureRating", "IfcPressureMeasure") { Definition = "Maximum pressure that the hydrant is manufactured to withstand."},
			new SingleValuePropertyType("PumperConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The size of a connection to which a fire hose may be connected that is then linked to a pumping unit."},
			new SingleValuePropertyType("WaterIsPotable", "IfcBoolean") { Definition = "Indication of whether the water flow from the hydrant is potable (set TRUE) or non potable (set FALSE)"} },
				new [] { "IfcFireSuppressionTerminalType" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeHoseReel", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("HoseNozzleType", new [] { "Fog", "StraightStream", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of nozzle (in terms of spray pattern) fitted to the end of the hose from which the type required may be set."},
			new EnumerationPropertyType("HoseReelMountingType", new [] { "Cabinet_Recessed", "Cabinet_SemiRecessed", "Surface", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of hose reel mounting from which the type required may be set."},
			new EnumerationPropertyType("HoseReelType", new [] { "Rack", "Reel", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of hose arrangement from which the type required may be set."},
			new SingleValuePropertyType("ClassificationAuthority", "IfcLabel") { Definition = "The name of the authority that applies the classification of service to the hose reel (e.g. NFPA/FEMA)"},
			new SingleValuePropertyType("ClassOfService", "IfcLabel") { Definition = "A classification of usage of the hose reel that may be applied."},
			new SingleValuePropertyType("HoseDiameter", "IfcPositiveLengthMeasure") { Definition = "Notional diameter (bore) of the hose."},
			new SingleValuePropertyType("HoseLength", "IfcPositiveLengthMeasure") { Definition = "Notional length of the hose fitted to the hose reel when fully extended."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection to the hose reel."} },
				new [] { "IfcFireSuppressionTerminalType" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeSprinkler", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Activation", new [] { "Bulb", "FusibleSolder", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined methods of sprinkler activation from which that required may be set."},
			new EnumerationPropertyType("BulbLiquidColor", new [] { "Orange", "Red", "Yellow", "Green", "Blue", "Mauve", "Other", "NotKnown", "Unset" } ) { Definition = "The color of the liquid in the bulb for a bulb activated sprinkler. Note that the liquid color varies according to the activation temperature requirement of the sprinkler head. Note also that this property does not need to be asserted for quick response activated sprinklers."},
			new EnumerationPropertyType("Response", new [] { "Quick", "Standard" } ) { Definition = "Identifies the predefined methods of sprinkler response from which that required may be set."},
			new EnumerationPropertyType("SprinklerType", new [] { "Ceiling", "Concealed", "Cut-off", "Pendant", "RecessedPendant", "Sidewall", "Upright", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of sprinkler  from which the type required may be set."},
			new SingleValuePropertyType("ActivationTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature at which the object is designed to activate."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection to the sprinkler."},
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The area that the sprinkler is designed to protect."},
			new SingleValuePropertyType("DischargeCoefficient", "IfcReal") { Definition = "The coefficient of flow at the sprinkler"},
			new SingleValuePropertyType("DischargeFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric rate of fluid discharge."},
			new SingleValuePropertyType("HasDeflector", "IfcBoolean") { Definition = "Indication of whether the sprinkler has a deflector (baffle) fitted to diffuse the discharge on activation (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("MaximumWorkingPressure", "IfcPressureMeasure") { Definition = "Maximum pressure that the object is manufactured to withstand."},
			new SingleValuePropertyType("ResidualFlowingPressure", "IfcPressureMeasure") { Definition = "The residual flowing pressure in the pipeline at which the discharge flow rate is determined."} },
				new [] { "IfcFireSuppressionTerminalType" });
		yield return new PropertySetInfo("Pset_FlowControllerDamper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SizingMethod", new [] { "NOMINAL", "EXACT", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies whether the damper is sized nominally or with exact measurements:\nNOMINAL: Nominal sizing method. \nEXACT: Exact sizing method. "} },
				new [] { "IfcFlowController" });
		yield return new PropertySetInfo("Pset_FlowControllerFlowMeter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Purpose", new [] { "MASTER", "SUBMASTER", "SUBMETER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the purpose of the flow meter occurrence."} },
				new [] { "IfcFlowController" });
		yield return new PropertySetInfo("Pset_FlowFittingDuctFitting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AbsoluteRoughnessFactor", "IfcPositiveLengthMeasure") { Definition = "The absolute roughness factor of the duct fitting."},
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "The color of the duct fitting.\n\nNote: This is typically used for any duct fittings with a painted surface which is not otherwise specified as a covering."},
			new SingleValuePropertyType("HasLiner", "IfcBoolean") { Definition = "TRUE if the fitting has interior duct insulating lining, FALSE if it does not."} },
				new [] { "IfcFlowFitting" });
		yield return new PropertySetInfo("Pset_FlowFittingPipeFitting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "The color of the pipe fitting.\n\nNote: This is typically used only for plastic pipe fittings. However, it may be used for any pipe fittings with a painted surface which is not otherwise specified as a covering."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness of the pipe fitting material."} },
				new [] { "IfcFlowFitting" });
		yield return new PropertySetInfo("Pset_FlowInstrumentTypePressureGauge", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PressureGaugeType", new [] { "Dial", "Digital", "Manometer", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the means by which pressure is displayed."},
			new SingleValuePropertyType("DisplaySize", "IfcPositiveLengthMeasure") { Definition = "The physical size of the display. For a dial pressure gauge it will be the diameter of the dial."} },
				new [] { "IfcFlowInstrumentType" });
		yield return new PropertySetInfo("Pset_FlowInstrumentTypeThermometer", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ThermometerType", new [] { "Dial", "Digital", "Stem", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the means by which temperature is displayed."},
			new SingleValuePropertyType("DisplaySize", "IfcPositiveLengthMeasure") { Definition = "The physical size of the display. In the case of a stem thermometer, this will be the length of the stem. For a dial thermometer, it will be the diameter of the dial."} },
				new [] { "IfcFlowInstrumentType" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ReadOutType", new [] { "DIAL", "DIGITAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indication of the form that readout from the meter takes. In the case of a dial read out, this may comprise multiple dials that give a cumulative reading and/or a mechanical odometer."},
			new SingleValuePropertyType("IsMain", "IfcBoolean") { Definition = "Indicates whether the meter is the main meter on the system. If FALSE, it is a submeter. "},
			new SingleValuePropertyType("RemoteReading", "IfcBoolean") { Definition = "Indicates whether the meter has a connection for remote reading through connection of a communication device (set TRUE) or not (set FALSE). "} },
				new [] { "IfcFlowMeterType" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeEnergyMeter", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Defines the size of inlet and outlet pipe connections to the meter."} },
				new [] { "IfcFlowMeterType" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeGasMeter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("GasType", new [] { "COMMERCIALBUTANE", "COMMERCIALPROPANE", "LIQUEFIEDPETROLEUMGAS", "NATURALGAS", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of gas that may be specified."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Defines the size of inlet and outlet pipe connections to the meter."},
			new SingleValuePropertyType("MaximumFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum rate of flow which the meter is expected to pass."},
			new SingleValuePropertyType("MaximumPressureLoss", "IfcPressureMeasure") { Definition = "Pressure loss expected across the meter under conditions of maximum flow."} },
				new [] { "IfcFlowMeterType" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeOilMeter", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Defines the size of inlet and outlet pipe connections to the meter."},
			new SingleValuePropertyType("MaximumFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum rate of flow which the meter is expected to pass."} },
				new [] { "IfcFlowMeterType" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeWaterMeter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BackflowPreventerType", new [] { "NONE", "ATMOSPHERICVACUUMBREAKER", "ANTISIPHONVALVE", "DOUBLECHECKBACKFLOWPREVENTER", "PRESSUREVACUUMBREAKER", "REDUCEDPRESSUREBACKFLOWPREVENTER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the type of backflow preventer installed to prevent the backflow of contaminated or polluted water from an irrigation/reticulation system to a potable water supply."},
			new EnumerationPropertyType("Type", new [] { "COMPOUND", "INFERENTIAL", "PISTON", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the allowed values for selection of the flow meter operation type."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Defines the size of inlet and outlet pipe connections to the meter."},
			new SingleValuePropertyType("MaximumFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum rate of flow which the meter is expected to pass."},
			new SingleValuePropertyType("MaximumPressureLoss", "IfcPressureMeasure") { Definition = "Pressure loss expected across the meter under conditions of maximum flow."} },
				new [] { "IfcFlowMeterType" });
		yield return new PropertySetInfo("Pset_FlowMovingDeviceCompressor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ImpellerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of compressor impeller - used to scale performance of geometrically similar compressors."} },
				new [] { "IfcFlowMovingDevice" });
		yield return new PropertySetInfo("Pset_FlowMovingDeviceFan", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ApplicationOfFan", new [] { "SUPPLY", "RETURN", "EXHAUST", "COOLINGTOWER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The functional application of the fan:\nSUPPLYAIR: Supply air fan. \nRETURNAIR: Return air fan. \nEXHAUSTAIR: Exhaust air fan. \nOTHER: Other type of application not defined above."},
			new EnumerationPropertyType("CoilPosition", new [] { "DRAWTHROUGH", "BLOWTHROUGH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the relationship between a fan and a coil.\nDrawThrough: Fan located downstream of the coil.\nBlowThrough: Fan located upstream of the coil."},
			new EnumerationPropertyType("DischargeType", new [] { "DUCT", "SCREEN", "LOUVER", "DAMPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the type of connection at the fan discharge.\nDuct: Discharge into ductwork.\nScreen: Discharge into screen outlet.\nLouver: Discharge into a louver.\nDamper: Discharge into a damper."},
			new EnumerationPropertyType("FanMountingType", new [] { "MANUFACTUREDCURB", "FIELDERECTEDCURB", "CONCRETEPAD", "SUSPENDED", "WALLMOUNTED", "DUCTMOUNTED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the method of mounting the fan in the building. "},
			new EnumerationPropertyType("MotorPosition", new [] { "INAIRSTREAM", "OUTOFAIRSTREAM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the location of the motor relative to the air stream.\nInAirStream: Fan motor is in the air stream.\nOutOfAirStream: Fan motor is out of the air stream."},
			new SingleValuePropertyType("FractionOfMotorHeatToAirStream", "IfcPositiveRatioMeasure") { Definition = "Fraction of the motor heat released into the fluid flow."},
			new SingleValuePropertyType("ImpellerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of fan wheel - used to scale performance of geometrically similar fans."} },
				new [] { "IfcFlowMovingDevice" });
		yield return new PropertySetInfo("Pset_FlowMovingDeviceFanCentrifugal", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Arrangement", new [] { "ARRANGEMENT1", "ARRANGEMENT2", "ARRANGEMENT3", "ARRANGEMENT4", "ARRANGEMENT7", "ARRANGEMENT8", "ARRANGEMENT9", "ARRANGEMENT10", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the fan and motor drive arrangement as defined by AMCA:\nARRANGEMENT1: Arrangement 1. \nARRANGEMENT2: Arrangement 2. \nARRANGEMENT3: Arrangement 3. \nARRANGEMENT4: Arrangement 4. \nARRANGEMENT7: Arrangement 7. \nARRANGEMENT8: Arrangement 8. \nARRANGEMENT9: Arrangement 9. \nARRANGEMENT10: Arrangement 10. \nOTHER: Other type of fan drive arrangement."},
			new EnumerationPropertyType("DirectionOfRotation", new [] { "CLOCKWISE", "COUNTERCLOCKWISE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The direction of the centrifugal fan wheel rotation when viewed from the drive side of the fan:\nCLOCKWISE: Clockwise. \nCOUNTERCLOCKWISE: Counter-clockwise. \nOTHER: Other type of fan rotation."},
			new EnumerationPropertyType("DischargePosition", new [] { "TOPHORIZONTAL", "TOPANGULARDOWN", "TOPANGULARUP", "DOWNBLAST", "BOTTOMANGULARDOWN", "BOTTOMHORIZONTAL", "BOTTOMANGULARUP", "UPBLAST", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Centrifugal fan discharge position:\nTOPHORIZONTAL: Top horizontal discharge. \nTOPANGULARDOWN: Top angular down discharge. \nDOWNBLAST: Downblast discharge. \nBOTTOMANGULARDOWN: Bottom angular down discharge. \nBOTTOMHORIZONTAL: Bottom horizontal discharge. \nBOTTOMANGULARUP: Bottom angular up discharge. \nUPBLAST: Upblast discharge. \nTOPANGULARUP: Top angular up discharge. \nOTHER: Other type of fan arrangement."} },
				new [] { "IfcFlowMovingDevice" });
		yield return new PropertySetInfo("Pset_FlowMovingDevicePump", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BaseType", new [] { "FRAME", "BASE", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines general types of pump bases:\nFRAME: Frame. \nBASE: Base. \nNONE: There is no pump base, such as an inline pump. \nOTHER: Other type of pump base. "},
			new EnumerationPropertyType("DriveConnectionType", new [] { "DIRECTDRIVE", "BELTDRIVE", "COUPLING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The way the pump drive mechanism is connected to the pump:\nDIRECTDRIVE: Direct drive. \nBELTDRIVE: Belt drive. \nCOUPLING: Coupling. \nOTHER: Other type of drive connection. \n"},
			new SingleValuePropertyType("ImpellerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of pump impeller - used to scale performance of geometrically similar pumps."} },
				new [] { "IfcFlowMovingDevice" });
		yield return new PropertySetInfo("Pset_FlowSegmentDuctSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "The color of the duct segment.\n\nNote: This is typically used for any duct segments with a painted surface which is not otherwise specified as a covering."},
			new SingleValuePropertyType("HasLiner", "IfcBoolean") { Definition = "TRUE if the fitting has interior duct insulating lining, FALSE if it does not."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness of the duct fitting material."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "Length of the duct segment."},
			new SingleValuePropertyType("MaterialThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the duct fitting material."} },
				new [] { "IfcFlowSegment" });
		yield return new PropertySetInfo("Pset_FlowSegmentPipeSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "The color of the pipe segment.\n\nNote: This is typically used only for plastic pipe segments. However, it may be used for any pipe segments with a painted surface which is not otherwise specified as a covering."},
			new SingleValuePropertyType("Gradient", "IfcPositiveRatioMeasure") { Definition = "The gradient of the pipe segment."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness coefficient of the pipe segment."},
			new SingleValuePropertyType("InvertElevation", "IfcLengthMeasure") { Definition = "The invert elevation relative to the datum established for the project."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "Length of the pipe segment."} },
				new [] { "IfcFlowSegment" });
		yield return new PropertySetInfo("Pset_FlowStorageDeviceTank", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TankComposition", new [] { "COMPLEX", "ELEMENT", "PARTIAL", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the level of element composition where:\n\nCOMPLEX = A set of elementary units aggregated together to fulfill the overall  required purpose.\nELEMENT = A single elementary unit that may exist of itself or as an aggregation of partial units..\nPARTIAL "},
			new SingleValuePropertyType("HasLadder", "IfcBoolean") { Definition = "Indication of whether the tank is provided with a ladder (set TRUE) for access to the top. If no ladder is provided then value is set FALSE.\n\nNote: No indication is given of the type of ladder (gooseneck etc.)"},
			new SingleValuePropertyType("HasVisualIndicator", "IfcBoolean") { Definition = "Indication of whether the tank is provided with a visual indicator (set TRUE) that shows the water level in the tank. If no visual indicator is provided then value is set FALSE."} },
				new [] { "IfcFlowStorageDevice" });
		yield return new PropertySetInfo("Pset_FlowTerminalAirTerminal", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirflowType", new [] { "SUPPLYAIR", "RETURNAIR", "EXHAUSTAIR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the functional type of air flow through the terminal."},
			new EnumerationPropertyType("Location", new [] { "SIDEWALLHIGH", "SIDEWALLLOW", "CEILINGPERIMETER", "CEILINGINTERIOR", "FLOOR", "SILL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Location  (a single type of diffuser can be used for multiple locations); high means close to ceiling."} },
				new [] { "IfcFlowTerminal" });
		yield return new PropertySetInfo("Pset_FurnitureTypeChair", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HighestSeatingHeight", "IfcPositiveLengthMeasure") { Definition = "The value of seating height of high level if the chair height is adjustable."},
			new SingleValuePropertyType("LowestSeatingHeight", "IfcPositiveLengthMeasure") { Definition = "The value of seating height of low level if the chair height is adjustable."},
			new SingleValuePropertyType("SeatingHeight", "IfcPositiveLengthMeasure") { Definition = "The value of seating height if the chair height is not adjustable."} },
				new [] { "IfcFurnitureType" });
		yield return new PropertySetInfo("Pset_FurnitureTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Specific description of this type of furniture."},
			new SingleValuePropertyType("MainColor", "IfcLabel") { Definition = "The main color of the furniture of this type"},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "The nominal depth of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "The nominal length of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("Style", "IfcLabel") { Definition = "Description of the furniture style"} },
				new [] { "IfcFurnitureType" });
		yield return new PropertySetInfo("Pset_FurnitureTypeDesk", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WorksurfaceArea", "IfcAreaMeasure") { Definition = "The value of the work surface area of the desk."} },
				new [] { "IfcFurnitureType" });
		yield return new PropertySetInfo("Pset_FurnitureTypeFileCabinet", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WithLock", "IfcBoolean") { Definition = "Indicates whether the file cabinet is lockable (= TRUE) or not (= FALSE)."} },
				new [] { "IfcFurnitureType" });
		yield return new PropertySetInfo("Pset_FurnitureTypeTable", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfChairs", "IfcInteger") { Definition = "Maximum number of chairs that can fit with the table for normal use."},
			new SingleValuePropertyType("WorksurfaceArea", "IfcAreaMeasure") { Definition = "The value of the work surface area of the desk.."} },
				new [] { "IfcFurnitureType" });
		yield return new PropertySetInfo("Pset_GasTerminalPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_GasTerminalTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GasFlowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Gas volumetric flowrate within which the gas  terminal is designed to operate."} },
				new [] { "IfcGasTerminalType" });
		yield return new PropertySetInfo("Pset_GasTerminalTypeGasAppliance", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FlueType", new [] { "BALANCEDFLUE", "FLUED", "FLUELESS", "OPENFLUED", "ROOMSEALED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of flue that may be specified for connection to gas appliances where:\n\nBalancedFlue =\tRoom sealed appliance that has its inlet for combustion air and its outlet for products of combustion in adjacent external positions, disposed so that wind effects are substantially balanced between them.\nFlued =\tGas burning appliance designed for connection to a flue system\nFlueless =\tGas burning appliance designed for use without connection to a flue system\nOpenFlued =\tGas burning appliance designed to be connected to an open flue system, combustion air being drawn from a room or internal space in which the gas burning appliance is installed\nRoomSealed =\tGas burning appliance that has its combustion system, including air inlet and products outlet, isolated from a room or internal space in which the gas burning appliance is installed\n"},
			new EnumerationPropertyType("GasApplianceType", new [] { "GASFIRE", "GASCOOKER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the type of gas appliance from the enumerated list of types."} },
				new [] { "IfcGasTerminalType" });
		yield return new PropertySetInfo("Pset_GasTerminalTypeGasBurner", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("GasBurnerType", new [] { "FORCEDDRAFT", "NATURALDRAFT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the type of gas burner from the enumerated list of types"} },
				new [] { "IfcGasTerminalType" });
		yield return new PropertySetInfo("Pset_HeatExchangerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Arrangement", new [] { "COUNTERFLOW", "CROSSFLOW", "PARALLELFLOW", "MULTIPASS", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the basic flow arrangements for the heat exchanger:\nCOUNTERFLOW: Counterflow heat exchanger arrangement. \nCROSSFLOW: Crossflow heat exchanger arrangement. \nPARALLELFLOW: Parallel flow heat exchanger arrangement. \nMULTIPASS: Multipass flow heat exchanger arrangement. \nOTHER: Other type of heat exchanger flow arrangement not defined above. "} },
				new [] { "IfcHeatExchangerType" });
		yield return new PropertySetInfo("Pset_HeatExchangerTypePlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfPlates", "IfcInteger") { Definition = "Number of plates used by the plate heat exchanger."} },
				new [] { "IfcHeatExchangerType" });
		yield return new PropertySetInfo("Pset_HumidifierPHistory", new IPropertyTypeInfo[] {
			new TableValuePropertyType("AirPressureDropCurve", "IfcPressureMeasure", "IfcVolumetricFlowRateMeasure") { Definition = "Air pressure drop versus air-flow rate."},
			new TableValuePropertyType("SaturationEfficiencyCurve", "IfcReal", "IfcVolumetricFlowRateMeasure") { Definition = "Saturation efficiency as a function of the air flow rate."} },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_HumidifierTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Application", new [] { "PORTABLE", "FIXED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Humidifier application.\nFixed: Humidifier installed in a ducted flow distribution system.\nPortable: Humidifier is not installed in a ducted flow distribution system."},
			new EnumerationPropertyType("InternalControl", new [] { "ONOFF", "STEPPED", "MODULATING", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Internal modulation control."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal rate of air flow into which water vapor is added."},
			new SingleValuePropertyType("NominalMoistureGain", "IfcMassFlowRateMeasure") { Definition = "Nominal rate of water vapor added into the airstream."},
			new SingleValuePropertyType("WaterRequirement", "IfcVolumetricFlowRateMeasure") { Definition = "Make-up water requirement."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "The weight of the humidifier."} },
				new [] { "IfcHumidifierType" });
		yield return new PropertySetInfo("Pset_LampTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LampBallastType", new [] { "Conventional", "Electronic", "LowLoss", "Other", "NotKnown", "Unset" } ) { Definition = "The type of ballast used to stabilise gas discharge by limiting the current during operation and to deliver the necessary striking voltage for starting. Ballasts are needed to operate Discharge Lamps such as Fluorescent, Compact Fluorescent, High-pressure Mercury, Metal Halide and High-pressure Sodium Lamps. \nMagnetic ballasts are chokes which limit the current passing through a lamp connected in series on the principle of self-induction. The resultant current and power are decisive for the efficient operation of the lamp. A specially designed ballast is required for every type of lamp to comply with lamp rating in terms of Luminous Flux, Color Appearance and service life. The two types of magnetic ballasts for fluorescent lamps are KVG Conventional   (EC-A series) and VVG Low-loss ballasts (EC-B series). Low-loss ballasts have a higher efficiency, which means reduced ballast losses and a lower thermal load. Electronic ballasts are used to run fluorescent lamps at high frequencies (approx. 35 - 40 kHz).\n"},
			new EnumerationPropertyType("LampCompensationType", new [] { "Capacitive", "Inductive", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the form of compensation used for power factor correction and radio suppression."},
			new SingleValuePropertyType("ColorAppearance", "IfcLabel") { Definition = "In both the DIN and CIE standards, artificial light sources are classified in terms of their color appearance. To the human eye they all appear to be white; the difference can only be detected by direct comparison. Visual performance is not directly affected by differences in color appearance."},
			new SingleValuePropertyType("ColorRenderingIndex", "IfcInteger") { Definition = "The CRI indicates how well a light source renders eight standard colors compared to perfect reference lamp with the same color temperature. The CRI scale ranges from 1 to 100, with 100 representing perfect rendering properties."},
			new SingleValuePropertyType("ColorTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The color temperature of any source of radiation is defined as the temperature (in Kelvin) of a black-body or Planckian radiator whose radiation has the same chromaticity as the source of radiation. Often the values are only approximate color temperatures as the black-body radiator cannot emit radiation of every chromaticity value. The color temperatures of the commonest artificial light sources range from less than 3000K (warm white) to 4000K (intermediate) and over 5000K (daylight)."},
			new SingleValuePropertyType("ContributedLuminousFlux", "IfcLuminousFluxMeasure") { Definition = "Luminous flux is a photometric measure of radiant flux, i.e. the volume of light emitted from a light source. Luminous flux is measured either for the interior as a whole or for a part of the interior (partial luminous flux for a solid angle). All other photometric parameters are derivatives of luminous flux. Luminous flux is measured in lumens (lm). The luminous flux is given as a nominal value for each lamp."},
			new SingleValuePropertyType("LampMaintenanceFactor", "IfcReal") { Definition = "Non recoverable losses of luminous flux of a lamp due to lamp depreciation; i.e. the decreasing of light output of a luminaire due to aging and dirt. "},
			new SingleValuePropertyType("LightEmitterNominalPower", "IfcPowerMeasure") { Definition = "Light emitter nominal power."},
			new TableValuePropertyType("Spectrum", "IfcNumericMeasure", "IfcNumericMeasure") { Definition = "The spectrum of radiation describes its composition with regard to wavelength. Light, for example, as the portion of electromagnetic radiation that is visible to the human eye, is radiation with wavelengths in the range of approx. 380 to 780 nm (1 nm = 10 m). The corresponding range of colours varies from violet to indigo, blue, green, yellow, orange, and red. These colours form a continuous spectrum, in which the various spectral sectors merge into each other."} },
				new [] { "IfcLampType" });
		yield return new PropertySetInfo("Pset_LightFixtureTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LightFixtureMountingType", new [] { "CableSpanned", "FreeStanding", "Pole_Side", "Pole_Top", "Recessed", "Surface", "Suspended", "TrackMounted", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of mounting for light fixtures from which that required may be selected."},
			new EnumerationPropertyType("LightFixturePlacingType", new [] { "Ceiling", "Floor", "Furniture", "Pole", "Wall", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of placing specification for light fixtures from which that required may be selected."},
			new SingleValuePropertyType("MaintenanceFactor", "IfcReal") { Definition = "Maintenance factor."},
			new SingleValuePropertyType("ManufacturersSpecificInformation", "IfcText") { Definition = "Manufacturer specific information."},
			new SingleValuePropertyType("NumberOfSources", "IfcInteger") { Definition = "Number of sources "},
			new SingleValuePropertyType("TotalWattage", "IfcPowerMeasure") { Definition = "Wattage on whole lightfitting device with all sources intact."} },
				new [] { "IfcLightFixtureType" });
		yield return new PropertySetInfo("Pset_LightFixtureTypeExitSign", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Addressablility", new [] { "Implemented", "UpgradeableTo", "NotImplemented", "Other", "NotKnown", "Unset" } ) { Definition = "The type of addressability."},
			new EnumerationPropertyType("BackupSupplySystem", new [] { "LocalBattery", "CentralBattery", "Other", "NotKnown", "Unset" } ) { Definition = "The type of backup supply system."},
			new EnumerationPropertyType("PictogramEscapeDirection", new [] { "RightArrow", "LeftArrow", "DownArrow", "UpArrow", "Other", "NotKnown", "Unset" } ) { Definition = "The direction of escape pictogram."},
			new EnumerationPropertyType("SelfTestFunction", new [] { "Central", "Local", "None", "Other", "NotKnown", "Unset" } ) { Definition = "The type of self test function."},
			new SingleValuePropertyType("MinimumTextHeight", "IfcPositiveLengthMeasure") { Definition = "The minlimum height of this type."} },
				new [] { "IfcLightFixtureType" });
		yield return new PropertySetInfo("Pset_LightFixtureTypeThermal", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaximumPlenumSensibleLoad", "IfcPowerMeasure") { Definition = "Maximum or Peak sensible thermal load contributed to the conditioned space by the light fixture. "},
			new SingleValuePropertyType("MaximumSpaceSensibleLoad", "IfcPowerMeasure") { Definition = "Maximum or Peak sensible thermal load contributed to return air plenum by the light fixture."},
			new SingleValuePropertyType("SensibleLoadToRadiant", "IfcPositiveRatioMeasure") { Definition = "Percent of sensible thermal load to radiant heat. "} },
				new [] { "IfcLightFixtureType" });
		yield return new PropertySetInfo("Pset_ManufacturerOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BarCode", "IfcIdentifier") { Definition = "The identity of the bar code given to an occurrence of the product"},
			new SingleValuePropertyType("BatchReference", "IfcIdentifier") { Definition = "The identity of the batch reference from which an occurrence of a product is taken."},
			new SingleValuePropertyType("SerialNumber", "IfcIdentifier") { Definition = "The serial number assigned to an occurrence of a product"} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_ManufacturerTypeInformation", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ArticleNumber", "IfcIdentifier") { Definition = "Article number or reference that may be applied to a product according to a standard scheme for article number definition (e.g. UN, EAN)"},
			new SingleValuePropertyType("Manufacturer", "IfcLabel") { Definition = "The organization that manufactured and/or assembled the item."},
			new SingleValuePropertyType("ModelLabel", "IfcLabel") { Definition = "The model number and/or unit designator assigned by the manufacturer of the manufactured item."},
			new SingleValuePropertyType("ModelReference", "IfcLabel") { Definition = "The name of the manufactured item as used by the manufacturer."},
			new SingleValuePropertyType("ProductionYear", "IfcLabel") { Definition = "The year of production of the manufactured item."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_MemberCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("Span", "IfcPositiveLengthMeasure") { Definition = "Clear span for this object.\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."} },
				new [] { "IfcMember" });
		yield return new PropertySetInfo("Pset_MultiStateInput", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EventEnable", new [] { "To-OffNormal", "To-Fault", "To-Normal", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the type of event enabling"},
			new EnumerationPropertyType("NotifyType", new [] { "Alarm", "Event", "AcknowledgeNotification", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the notification type"},
			new SingleValuePropertyType("AlarmValues", "IfcInteger") { Definition = "Specifies any states the present value must equal before an EventEnable shall occur. Upper limit of the list is equal to the NumberOfStates."},
			new SingleValuePropertyType("NumberOfStates", "IfcInteger") { Definition = "Number of states for the multi-state Input."},
			new SingleValuePropertyType("StateText", "IfcText") { Definition = "String values to identify the state condition. Upper limit of the list is equal to the NumberOfStates."} },
				new [] { "IfcDistributionControlElement" });
		yield return new PropertySetInfo("Pset_MultiStateOutput", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EventEnable", new [] { "To-OffNormal", "To-Fault", "To-Normal", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the type of event enabling"},
			new EnumerationPropertyType("NotifyType", new [] { "Alarm", "Event", "AcknowledgeNotification", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the notification type"},
			new SingleValuePropertyType("AlarmValues", "IfcInteger") { Definition = "Specifies any states the present value must equal before an EventEnable shall occur. Upper limit of the list is equal to the NumberOfStates."},
			new SingleValuePropertyType("NumberOfStates", "IfcInteger") { Definition = "Number of states for the multi-state Input."},
			new SingleValuePropertyType("StateText", "IfcText") { Definition = "String values to identify the state condition. Upper limit of the list is equal to the NumberOfStates."} },
				new [] { "IfcDistributionControlElement" });
		yield return new PropertySetInfo("Pset_OpeningElementCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere whether the space (in case of e.g., a corridor) is designed to serve as an exit space, e.g., for fire escape purposes."},
			new SingleValuePropertyType("ParallelJambs", "IfcBoolean") { Definition = "Indicated, whether the jambs of an opening in a curved building element are intended to be parallel (TRUE) or are radial (FALSE). Radial means, that the extension of the jambs are rays through the axis of the revolution forming the curved building element. "},
			new SingleValuePropertyType("ProtectedOpening", "IfcBoolean") { Definition = "Indication whether the opening is considered to be protected under fire safety considerations. If (TRUE) it counts as a protected opening under the applicable building code, (FALSE) otherwise. "},
			new SingleValuePropertyType("Purpose", "IfcLabel") { Definition = "Indication of the purpose for that opening, e.g. 'ventilation', 'access', etc."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"} },
				new [] { "IfcOpeningElement" });
		yield return new PropertySetInfo("Pset_OutletTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsPluggableOutlet", "IfcLogical") { Definition = "Indication of whether the outlet accepts a loose plug connection (= TRUE) or whether it is directly connected (= FALSE) or whether the form of connection has not yet been determined (= UNKNOWN)"} },
				new [] { "IfcOutletType" });
		yield return new PropertySetInfo("Pset_OutsideDesignCriteria", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BuildingThermalExposure", new [] { "LIGHT", "MEDIUM", "HEAVY", "NOTKNOWN", "UNSET" } ) { Definition = "The thermal exposure expected by the building based on surrounding site conditions."},
			new SingleValuePropertyType("CoolingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Outside dry bulb temperature for cooling design "},
			new SingleValuePropertyType("CoolingWetBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Outside wet bulb temperature for cooling design "},
			new SingleValuePropertyType("HeatingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Outside dry bulb temperature for heating design "},
			new SingleValuePropertyType("HeatingWetBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Outside wet bulb temperature for heating design "},
			new SingleValuePropertyType("PrevailingWindDirection", "IfcPlaneAngleMeasure") { Definition = "The prevailing wind angle direction measured from True North (0 degrees) in a clockwise direction."},
			new SingleValuePropertyType("PrevailingWindVelocity", "IfcLinearVelocityMeasure") { Definition = "The design wind velocity coming from the direction specified by the PrevailingWindDirection attribute."},
			new SingleValuePropertyType("WeatherDataStation", "IfcText") { Definition = "The site weather data station description or reference to the data source from which weather data was obtained for use in calculations. "} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_PackingInstructions", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PackingCareType", new [] { "Fragile", "HandleWithCare", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of care that may be required when handling the artefact during a move where:\n\nFragile = artefact may be broken during a move through careless handling.\nHandleWithCare = artefact may be damaged during a move through careless handling."},
			new SingleValuePropertyType("SpecialInstructions", "IfcText") { Definition = "Special instructions for packing."} },
				new [] { "IfcProduct" });
		yield return new PropertySetInfo("Pset_Permit", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PermitType", new [] { "Access", "Work", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of permits that can be granted where:\n\nAccess = enables access to an identified area,\nWork = enables work to be carried out in an identified area"},
			new SingleValuePropertyType("EscortRequirement", "IfcBoolean") { Definition = "Indicates whether or not an escort is required to accompany persons carrying out a work order at or to/from the place of work (= TRUE) or not (= FALSE).\n\nNOTE - There are many instances where escorting is required, particularly in a facility that has a high security rating. Escorting may require that persons are escorted to and from the place of work. Alternatively, it may involve the escort remaining at the place of work at all times."},
			new SingleValuePropertyType("SpecialRequirements", "IfcText") { Definition = "Any additional special requirements that need to be included in the permit to work.\n\nNOTE - Additional permit requirements may be imposed according to the nature of the facility at which the work is carried out. For instance, in clean areas, special clothing may be required whilst in corrective institutions, it may be necessary to check in and check out tools that will be used for work as a safety precaution."} },
				new [] { "IfcPermit" });
		yield return new PropertySetInfo("Pset_PipeConnection", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ConnectionType", "IfcLabel") { Definition = "The connection type between pipe segments or fittings and other segments or fittings. If the list contains only one value, then this connection type value applies to all ports. For more than one value in the list, the connection type value applies to the port that corresponds to the list index.The following suggested items should be utilized whenever possible for correlation with port enumerations:\nBRAZED: Brazed connection type. \nCOMPRESSION: Compression connection type. \nFLANGED: Flanged connection type including bolts and gasket. \nGLANDJOINT: Gland-joint  connection type. \nFLEXIBLEBOLTEDGLANDJOINT: Flexible bolted gland-joint  connection type. \nFLEXIBLEBOLTEDGLANDJOINTWITHANODEENDCAP: Flexible bolted gland-joint with anode end-cap connection type.  \nGROOVED: Grooved connection type. \nSOLDERED: Soldered connection type. \nSOLDERED_FEMALE: Female-soldered connection type. \nSOLDERED_MALE: Male-soldered connection type. \nSWEDGE: Swedge connection type.  \nTHREADED: Threaded connection type. \nTHREADED_FEMALE: Female-threaded connection type. \nTHREADED_MALE: Male-threaded connection type. \nWELDED: Welded connection type. \nWELDED_BUTT: Butt-welded connection type. \nWELDED_BRANCH: Branch-welded connection type. \nWELDED_FLANGE: Flange-welded connection type. \nNONE: There is no connection.\nNOTDEFINED: Undefined connection type. "} },
				new [] { "IfcDistributionElement" });
		yield return new PropertySetInfo("Pset_PipeConnectionFlanged", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BoltholePitch", "IfcLengthMeasure") { Definition = "Diameter of the circle along which the boltholes are placed"},
			new SingleValuePropertyType("BoltSize", "IfcLengthMeasure") { Definition = "Size of the bolts securing the flange"},
			new SingleValuePropertyType("BoreSize", "IfcLengthMeasure") { Definition = "The nominal bore of the pipe flange"},
			new SingleValuePropertyType("FlangeDiameter", "IfcLengthMeasure") { Definition = "Overall diameter of the flange"},
			new SingleValuePropertyType("FlangeStandard", "IfcLabel") { Definition = "Designation of the standard describing the flange table"},
			new SingleValuePropertyType("FlangeTable", "IfcLabel") { Definition = "Designation of the standard table to which the flange conforms"},
			new SingleValuePropertyType("FlangeThickness", "IfcLengthMeasure") { Definition = "Thickness of the material from which the pipe bend is constructed"},
			new SingleValuePropertyType("NumberOfBoltholes", "IfcInteger") { Definition = "Number of boltholes in the flange"} },
				new [] { "IfcDistributionElement" });
		yield return new PropertySetInfo("Pset_PipeFittingPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_PipeFittingTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EndStyleTreatment", "IfcLabel") { Definition = "The end-style treatment of the pipe fitting as made available from the manufacturer. If the list contains only one value, then this end-style applies to all ports. For more than one value in the list, the end-style value applies to the port that corresponds to the list index.The following suggested items should be utilized whenever possible for correlation with port enumerations:\nFLANGED: Flanged. \nGROOVED: Grooved. \nTHREADED: Threaded. \nNONE: No end-style has been applied.\nNOTDEFINED: Undefined end-style type. "},
			new SingleValuePropertyType("FittingLossFactor", "IfcReal") { Definition = "A factor that determines the pressure loss due to friction through the fitting."},
			new SingleValuePropertyType("InnerDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual inner diameter of the pipe. Refer to NominalDiameter for comments about interpretation of multiple items in the list."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the pipe fitting. If the list contains only one value, then this nominal diameter applies to all ports. For more than value in the list, the nominal diameter value applies to the port that corresponds to the list index."},
			new SingleValuePropertyType("OuterDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual outer diameter of the pipe. Refer to NominalDiameter for comments about interpretation of multiple items in the list."},
			new SingleValuePropertyType("PressureClass", "IfcPressureMeasure") { Definition = "The test or rated pressure classification of the fitting."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("SubType", "IfcLabel") { Definition = "Subtype of the pipe fitting..The following suggested items should be utilized whenever possible for consistency across applications:\nBEND_15DEGREE: Changes the direction of flow through 15 degrees. \nBEND_22_5DEGREE: Changes the direction of flow through 22.5 degrees. \nBEND_25DEGREE: Changes the direction of flow through 25 degrees. \nBEND_30DEGREE: Changes the direction of flow through 30 degrees. \nBEND_45DEGREE: Changes the direction of flow through 45 degrees. \nBEND_67DEGREE: Changes the direction of flow through 67 degrees. \nBEND_76DEGREE: Changes the direction of flow through 76 degrees. \nBEND_87_5DEGREE: Changes the direction of flow through 87.5 degrees. \nBEND_90DEGREE: Changes the direction of flow through 90 degrees. \nBEND_135DEGREE: Changes the direction of flow through 135 degrees. \nBEND_180DEGREE: Changes the direction of flow through 180 degrees. \nJUNCTION_CROSS_SQUARE: Branch fitting with two opposing branches that are swept in the direction of the main flow. \nJUNCTION_CROSS_SWEEP: Branch fitting with two swept opposing branches at right angles to the main flow. \nJUNCTION_TEE_SQUARE: Branch fitting in which the branch is at an angle of 90 degrees to the main pipe. \nJUNCTION_TEE_SWEEP: Branch fitting in which the branch is curved through 90 degrees to join a main pipe tangentially. \nJUNCTION_TEE_TWINBEND: Symmetrical pipe fitting in which two short radius bends curve through 90 degree to form a single pipe. \n+I1JUNCTION_TEE_TWINELBOW: Symmetrical pipe fitting in which two elbows curve through 90 degree to form a single pipe. \nJUNCTION_TEE_Y: Branch fitting in the shape of a letter Y. \nOBSTRUCTION_CAP: Device fixed onto the end of a pipe or pipe fitting to close it. \nOBSTRUCTION_PLUG: Device fixed into the end of a pipe or pipe fitting to close it. \nOTHER: Other fitting subtype.\nNOTDEFINED: The fitting subtype is not defined. "},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."},
			new SingleValuePropertyType("UnitWeight", "IfcMassMeasure") { Definition = "Weight per unit length."} },
				new [] { "IfcPipeFittingType" });
		yield return new PropertySetInfo("Pset_PipeSegmentPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_PipeSegmentTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EndStyleTreatment", "IfcLabel") { Definition = "The end-style treatment of the pipe segment as made available from the manufacturer. If the list contains only one value, then this end-style applies to all ports. For more than one value in the list, the end-style value applies to the port that corresponds to the list index.The following suggested items should be utilized whenever possible for correlation with port enumerations:\nFLANGED: Flanged. \nGROOVED: Grooved. \nTHREADED: Threaded. \nNONE: No end-style has been applied.\nNOTDEFINED: Undefined end-style type. "},
			new SingleValuePropertyType("InnerDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual inner diameter of the pipe. Refer to NominalDiameter for comments about interpretation of multiple items in the list."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the pipe segment. If the list contains only one value, then this nominal diameter applies to all ports. For more than value in the list, the nominal diameter value applies to the port that corresponds to the list index."},
			new SingleValuePropertyType("OuterDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual outer diameter of the pipe. Refer to NominalDiameter for comments about interpretation of multiple items in the list."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."},
			new SingleValuePropertyType("UnitWeight", "IfcMassMeasure") { Definition = "Weight per unit length."},
			new SingleValuePropertyType("WorkingPressure", "IfcPressureMeasure") { Definition = "Working pressure."} },
				new [] { "IfcPipeSegmentType" });
		yield return new PropertySetInfo("Pset_PipeSegmentTypeGutter", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FlowRating", "IfcVolumetricFlowRateMeasure") { Definition = "Actual flow capacity for the gutter. Value of 0.00 means this value has not been set. "},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Angle of the gutter to allow for drainage "} },
				new [] { "IfcPipeSegmentType" });
		yield return new PropertySetInfo("Pset_PlateCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is giving according to the national building code. It indicates the sound transmission resistance of this object by an index ration (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nIt applies to the total door construction."} },
				new [] { "IfcPlate" });
		yield return new PropertySetInfo("Pset_PrecastConcreteElementGeneral", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CornerChamfer", "IfcPositiveLengthMeasure") { Definition = "The chamfer in the corners of the precast element. The chamfer is presumed to be equal in both directions."},
			new SingleValuePropertyType("ElementGrossVolume", "IfcVolumeMeasure") { Definition = "The gross volume of concrete element. Usually expressed in cubic metre (m3)."},
			new SingleValuePropertyType("ElementNetVolume", "IfcVolumeMeasure") { Definition = "The net volume of concrete element. Openings, voids, chamfers, etc. are subtracted from the gross volume. Usually expressed in cubic metre (m3)."},
			new SingleValuePropertyType("ElementWeight", "IfcMassMeasure") { Definition = "The weight of the concrete element. Usually expressed in kg."},
			new SingleValuePropertyType("FormStrippingStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete at form stripping time."},
			new SingleValuePropertyType("HollowCorePlugging", "IfcLabel") { Definition = "A descriptive label for how the hollow core ends are treated: they may be left open, closed with a plug, or sealed with cast concrete. Values would be, for example: 'Unplugged', 'Plugged', 'SealedWithConcrete'. This property applies to  hollow core slabs only."},
			new SingleValuePropertyType("InitialTension", "IfcPressureMeasure") { Definition = "The initial stress of the tendon. This property applies to prestressed concrete elements only."},
			new SingleValuePropertyType("LiftingStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete when the concrete element is lifted."},
			new SingleValuePropertyType("ManufacturingToleranceClass", "IfcLabel") { Definition = "Classification designation of the manufacturing tolerances according to local standards."},
			new SingleValuePropertyType("MinimumAllowableSupportLength", "IfcPositiveLengthMeasure") { Definition = "The minimum allowable support length."},
			new SingleValuePropertyType("ProductionLotId", "IfcIdentifier") { Definition = "The manufacturer's production lot identifier."},
			new SingleValuePropertyType("ReleaseStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete when the tendon stress is released. This property applies to prestressed concrete elements only."},
			new SingleValuePropertyType("SerialNumber", "IfcIdentifier") { Definition = "The manufacturer's serial number for the precast concrete element."},
			new SingleValuePropertyType("SupportDuringTransportDescription", "IfcText") { Definition = "Textual description of how the concrete element is supported during transportation"},
			new SingleValuePropertyType("TendonRelaxation", "IfcPositiveRatioMeasure") { Definition = "The maximum allowable relaxation of the tendon (usually expressed as %/1000 h).This property applies to prestressed concrete elements only."},
			new SingleValuePropertyType("TransportationStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete required for transportation."},
			new SingleValuePropertyType("TypeDesignator", "IfcLabel") { Definition = "Type designator for the precast concrete element. The content depends on local standards. For instance in Finland it usually a one-letter acronym, e.g. P=Column, K=reinforced concrete beam,etc."} },
				new [] { "IfcBeam", "IfcBuildingElementPart", "IfcBuildingElementProxy", "IfcColumn", "IfcCovering", "IfcCurtainWall", "IfcDoor", "IfcFooting", "IfcMember", "IfcPile", "IfcRailing", "IfcRamp", "IfcRampFlight", "IfcRoof", "IfcSlab", "IfcStair", "IfcStairFlight", "IfcWall", "IfcWallStandardCase" });
		yield return new PropertySetInfo("Pset_ProductRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Category", "IfcLabel") { Definition = "A reference to a classification of the degree of aggregation or granularity of topic data such as regional, local etc."},
			new SingleValuePropertyType("DemandImportanceValue", "IfcLabel") { Definition = "Importance of the topic relative to the importance of other topics."},
			new SingleValuePropertyType("DemandThresholdValue", "IfcLabel") { Definition = "Value of the subject matter above or below which a special significance is attached."},
			new SingleValuePropertyType("DemandValue", "IfcLabel") { Definition = "Value of the subject matter as determined using an agreed scale for what is required."},
			new SingleValuePropertyType("GapValue", "IfcLabel") { Definition = "Difference determined between the topic demand value and the topic supply evaluation value."},
			new SingleValuePropertyType("GapValueWeighted", "IfcLabel") { Definition = "Difference determined between the topic demand value and the topic supply evaluation value, weighted for topic demand importance value."},
			new SingleValuePropertyType("GroupName", "IfcLabel") { Definition = "Name of grouping of topics."},
			new SingleValuePropertyType("Name", "IfcLabel") { Definition = "Subject matter for which a value is to be reported."},
			new SingleValuePropertyType("SupplyEvaluationValue", "IfcLabel") { Definition = "Value of the subject matter as determined using an agreed scale for what is provided, or capable of being provided."} },
				new [] { "IfcProduct" });
		yield return new PropertySetInfo("Pset_ProjectCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BuildingPermitId", "IfcIdentifier") { Definition = "The building permit identifier for the written authorization required by building authorities before construction on a specific project can begin."},
			new SingleValuePropertyType("ConstructionMode", "IfcLabel") { Definition = "The type of construction action the project deals with, e.g. new construction, renovation, refurbishment, etc. "},
			new SingleValuePropertyType("GrossAreaPlanned", "IfcAreaMeasure") { Definition = "Total planned area for the project.  Used for programming the project"} },
				new [] { "IfcProject" });
		yield return new PropertySetInfo("Pset_ProjectionElementShadingDevicePHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_ProjectOrderChangeOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BudgetSource", "IfcText") { Definition = "The budget source requested."},
			new SingleValuePropertyType("ChangeDescription", "IfcText") { Definition = "A general description of the change."},
			new SingleValuePropertyType("ReasonForChange", "IfcText") { Definition = "A description of the problem for why a change is needed."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderMaintenanceWorkOrder", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FaultPriorityType", new [] { "High", "Medium", "Low", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of priority that can be assigned from which the type may be set where:\n\nHigh = action is required urgently.\nMedium = action can occur within a reasonable period of time.\nLow = action can occur when convenient."},
			new EnumerationPropertyType("LocationPriorityType", new [] { "High", "Medium", "Low", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of priority that can be assigned from which the type may be set where:\n\nHigh = action is required urgently.\nMedium = action can occur within a reasonable period of time.\nLow = action can occur when convenient."},
			new EnumerationPropertyType("MaintenaceType", new [] { "ConditionBased", "Corrective", "PlannedCorrective", "Scheduled", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of maintenance that can be done from which the type that generates the maintenance work order may be set where:\n\nConditionBased = generated as a result of the condition of an asset or artefact being less than a determined value.\nCorrective = generated as a result of an immediate and urgent need for maintenance action.\nPlannedCorrective = generated as a result of immediate corrective action being needed but with sufficient time available for the work order to be included in maintenance planning.\nScheduled = generated as a result of a fixed, periodic maintenance requirement."},
			new SingleValuePropertyType("ContractualType", "IfcText") { Definition = "The contractual type of the work."},
			new SingleValuePropertyType("IfNotAccomplished", "IfcText") { Definition = "Comments if the job is not accomplished."},
			new SingleValuePropertyType("LongJobDescription", "IfcText") { Definition = "Description of the job requested."},
			new SingleValuePropertyType("ProductDescription", "IfcText") { Definition = "A textual description of the products that require the work."},
			new SingleValuePropertyType("ScheduledFrequency", "IfcTimeMeasure") { Definition = "The period of time between expected instantiations of a work order that may have been predefined."},
			new SingleValuePropertyType("ShortJobDescription", "IfcText") { Definition = "Short description of the job requested."},
			new SingleValuePropertyType("WorkTypeRequested", "IfcText") { Definition = "Work type requested in circumstances where there are categorizations of types of work task. It could be used to identify a remedial task, minor work task, electrical task etc."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderMoveOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MoveDescription", "IfcText") { Definition = "A textual description of the move required."},
			new SingleValuePropertyType("SpecialInstructions", "IfcText") { Definition = "Special instructions that affect the move."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderPurchaseOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsFOB", "IfcBoolean") { Definition = "Indication of whether contents of the purchase order are delivered 'Free on Board' (= True) or not (= False). "},
			new SingleValuePropertyType("ShipMethod", "IfcText") { Definition = "Method of shipping that will be used for goods or services. "} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderWorkOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ContractualType", "IfcText") { Definition = "The contractual type of the work."},
			new SingleValuePropertyType("IfNotAccomplished", "IfcText") { Definition = "Comments if the job is not accomplished."},
			new SingleValuePropertyType("LongJobDescription", "IfcText") { Definition = "Description of the job requested."},
			new SingleValuePropertyType("ProductDescription", "IfcText") { Definition = "A textual description of the products that require the work."},
			new SingleValuePropertyType("ShortJobDescription", "IfcText") { Definition = "Short description of the job requested."},
			new SingleValuePropertyType("WorkTypeRequested", "IfcText") { Definition = "Work type requested in circumstances where there are categorizations of types of work task. It could be used to identify a remedial task, minor work task, electrical task etc."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_PropertyAgreement", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AgreementType", new [] { "Assignment", "Lease", "Tenant", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of property agreement from which the type required may be set."},
			new SingleValuePropertyType("ConditionCommencement", "IfcText") { Definition = "Condition of property provided on commencement of the agreement e.g. cold shell, warm lit shell, broom clean, turn-key"},
			new SingleValuePropertyType("ConditionTermination", "IfcText") { Definition = "Condition of property required on termination of the agreement e.g. cold shell, warm lit shell, broom clean, turn-key"},
			new SingleValuePropertyType("Duration", "IfcTimeMeasure") { Definition = "The period of time for the lease. Note that values should be given in year/day/month and not in hour/minute/second."},
			new SingleValuePropertyType("Identifier", "IfcIdentifier") { Definition = "The identifier assigned to the agreement for the purposes of tracking."},
			new SingleValuePropertyType("Options", "IfcText") { Definition = "A statement of the options available in the agreement"},
			new SingleValuePropertyType("PropertyName", "IfcLabel") { Definition = "Addressing details of the property as stated within the agreement"},
			new SingleValuePropertyType("Restrictions", "IfcText") { Definition = "Restrictions that may be placed by a  competent authority"},
			new SingleValuePropertyType("Version", "IfcLabel") { Definition = "The version number of the agreement that is identified"} },
				new [] { "IfcSpatialStructureElement" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeCircuitBreaker", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CircuitBreakerType", new [] { "ACB", "MCB", "MCCB", "Vacuum", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of circuit breaker from which that required may be selected where:\n\nACB - Air Circuit Breaker;\nMCB - Miniature Circuit Breaker (up to 125A);\nMCCB - Moulded Case Circuit Breaker (40A - 1600A);\nVacuum - Generally used for high voltage (> 1000V) but may be used for installations close to/up to 1000V."} },
				new [] { "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CutOffCurrent", "IfcElectricCurrentMeasure") { Definition = "The maximum instantaneous value of current attained during the breaking operation of a protective device. (IEC 441-17-12)"},
			new SingleValuePropertyType("LimitingTerminalSize", "IfcAreaMeasure") { Definition = "The maximum terminal size capacity of the device."},
			new SingleValuePropertyType("MaximumRatedVoltage", "IfcElectricVoltageMeasure") { Definition = "Maximum rated voltage"},
			new SingleValuePropertyType("ProtectiveTagType", "IfcLabel") { Definition = "The breaking capacity value of the device. Note: This may be expressed as a code or a value depending on standard and/or source."},
			new SingleValuePropertyType("RatedShortCircuitCurrent", "IfcElectricCurrentMeasure") { Definition = "An overcurrent resulting from a fault of negligible impedance between live conductors having a difference in potential under normal operating conditions. (IEC 826-05-08)"},
			new SingleValuePropertyType("StandardUsed", "IfcLabel") { Definition = "The electrical standard used as a reference when preparing data for the device."},
			new SingleValuePropertyType("SwitchingDuty", "IfcInteger") { Definition = "The maximum number of operations for the device at the rated making and breaking capacity."},
			new TableValuePropertyType("CharacteristicTripCurve", "IfcElectricCurrentMeasure", "IfcTimeMeasure") { Definition = "A curve giving the time, e.g. prearcing time or operating time, as a function of the protective current under stated conditions of operation. "} },
				new [] { "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeEarthFailureDevice", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EarthFailureDeviceType", new [] { "Standard", "TimeDelayed", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of circuit breaker from which that required may be selected where:\n\nStandard - Device that operates without a time delay;\nTimeDelayed - Device that operates after a time delay."},
			new SingleValuePropertyType("Sensitivity", "IfcElectricCurrentMeasure") { Definition = "Current leakage to an unwanted leading path during normal operation (IEC 151-14-49)"} },
				new [] { "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeFuseDisconnector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FuseDisconnectorType", new [] { "EngineProtectionDevice", "FusedSwitch", "HRC", "OverloadProtectionDevice", "SwitchDisconnectorFuse", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of fuse disconnector from which that required may be selected where:\n\nEngineProtectionDevice - A fuse whose characteristic is specifically designed for the protection of a motor or generator.\nFuseSwitchDisconnector - A switch disconnector in which a fuse link or a fuse carrier with fuse link forms the moving contact,\nHRC - A standard fuse (High Rupturing Capacity)\nOverloadProtectionDevice - A device that disconnects the supply when the operating conditions in an electrically undamaged circuit causes an overcurrent,\nSemiconductorFuse - A fuse whose characteristic is specifically designed for the protection of sem-conductor devices.\nSwitchDisconnectorFuse - A switch disconnector in which one or more poles have a fuse in series in a composite unit."} },
				new [] { "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeResidualCurrentCircuitBreaker", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Sensitivity", "IfcElectricCurrentMeasure") { Definition = "Current leakage to an unwanted leading path during normal operation (IEC 151-14-49)"} },
				new [] { "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeResidualCurrentSwitch", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Sensitivity", "IfcElectricCurrentMeasure") { Definition = "Current leakage to an unwanted leading path during normal operation (IEC 151-14-49)"} },
				new [] { "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeVaristor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VaristorType", new [] { "MetalOxide", "ZincOxide", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of varistor  from which that required may be selected.\n\n\n\n"} },
				new [] { "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_PumpPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_PumpTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The connection size of the to and from the pump"},
			new SingleValuePropertyType("FlowRateRange", "IfcMassFlowRateMeasure") { Definition = "Allowable range of volume of fluid being pumped against the resistance specified."},
			new SingleValuePropertyType("FlowResistanceRange", "IfcPressureMeasure") { Definition = "Allowable range of frictional resistance against which the fluid is being pumped"},
			new SingleValuePropertyType("NetPositiveSuctionHead", "IfcPressureMeasure") { Definition = "Minimum liquid pressure at the pump inlet to prevent cavitation. "},
			new SingleValuePropertyType("NominalRotationSpeed", "IfcRotationalFrequencyMeasure") { Definition = "Pump rotational speed under nominal conditions."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operational range of the fluid temperature."} },
				new [] { "IfcPumpType" });
		yield return new PropertySetInfo("Pset_QuantityTakeOff", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("LocalContext", "IfcText") { Definition = "Local context information for the take-off quantity, if multiple information items are passed, then the property shall be indexed, e.g. LocalContext1, LocalContext2, …"},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type of quantity, e.g. linking back to a macro name, etc."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_RailingCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Diameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of the object. It is the diameter of the handrail of the railing.\nThe size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence.\nHere the diameter of the hand or guardrail within the railing."},
			new SingleValuePropertyType("Height", "IfcPositiveLengthMeasure") { Definition = "Height of the object. It is the upper hight of the railing above the floor or stair.\nThe size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"} },
				new [] { "IfcRailing" });
		yield return new PropertySetInfo("Pset_RampCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere it defines an exit ramp in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. \nSet to (TRUE) if this ramp is rated as handicap accessible  according the local building codes, otherwise (FALSE)."},
			new SingleValuePropertyType("HasNonSkidSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("RequiredHeadroom", "IfcPositiveLengthMeasure") { Definition = "Required headroom clearance for the passageway according to the applicable building code or additional requirements."},
			new SingleValuePropertyType("RequiredSlope", "IfcPlaneAngleMeasure") { Definition = "Required sloping angle of the object  - relative to horizontal (0.0 degrees).\nRequired maximum slope for the passageway according to the applicable building code or additional requirements "} },
				new [] { "IfcRamp" });
		yield return new PropertySetInfo("Pset_RampFlightCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Headroom", "IfcPositiveLengthMeasure") { Definition = "Actual headroom clearance for the passageway according to the current design. \nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. "},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Sloping angle of the object  - relative to horizontal (0.0 degrees). \nActual maximum slope for the passageway according to the current design.\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. "} },
				new [] { "IfcRampFlight" });
		yield return new PropertySetInfo("Pset_ReinforcementBarCountOfIndependentFooting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("XDirectionLowerBarCount", "IfcInteger") { Definition = "The number of bars with X direction lower bar."},
			new SingleValuePropertyType("XDirectionUpperBarCount", "IfcInteger") { Definition = "The number of bars with X direction upper bar."},
			new SingleValuePropertyType("YDirectionLowerBarCount", "IfcInteger") { Definition = "The number of bars with Y direction lower bar."},
			new SingleValuePropertyType("YDirectionUpperBarCount", "IfcInteger") { Definition = "The number of bars with Y direction upper bar."} },
				new [] { "IfcFooting" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfBeam", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("SpacingBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the spacing bar."},
			new SingleValuePropertyType("StirrupBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the stirrup bar."} },
				new [] { "IfcBeam" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfColumn", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ReinforcementBarType", new [] { "RING", "SPIRAL", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type of the reinforcement bar."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("HoopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the hoop bar."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("XDirectionTieHoopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The X direction pitch length of the tie hoop."},
			new SingleValuePropertyType("XDirectionTieHoopCount", "IfcInteger") { Definition = "The number of bars with X direction tie hoop bars."},
			new SingleValuePropertyType("YDirectionTieHoopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The Y direction pitch length of the tie hoop."},
			new SingleValuePropertyType("YDirectionTieHoopCount", "IfcInteger") { Definition = "The number of bars with Y direction tie hoop bars."} },
				new [] { "IfcColumn" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfContinuousFooting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossingLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the crossing lower bar."},
			new SingleValuePropertyType("CrossingUpperBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the crossing upper bar."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."} },
				new [] { "IfcFooting" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfSlab", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("LongInsideCenterLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside center lower bar."},
			new SingleValuePropertyType("LongInsideCenterTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside center top bar."},
			new SingleValuePropertyType("LongInsideEndLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside end lower bar."},
			new SingleValuePropertyType("LongInsideEndTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside end top bar."},
			new SingleValuePropertyType("LongOutsideLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long outside lower bar."},
			new SingleValuePropertyType("LongOutsideTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long outside top bar."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("ShortInsideCenterLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside center lower bar."},
			new SingleValuePropertyType("ShortInsideCenterTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside center top bar."},
			new SingleValuePropertyType("ShortInsideEndLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside end lower bar."},
			new SingleValuePropertyType("ShortInsideEndTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside end top bar."},
			new SingleValuePropertyType("ShortOutsideLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short outside lower bar."},
			new SingleValuePropertyType("ShortOutsideTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short outside top bar."} },
				new [] { "IfcSlab" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfWall", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BarAllocationType", new [] { "SINGLE", "DOUBLE", "ALTERNATE", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type of the reinforcement bar allocation."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("HorizontalBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the horizontal bar."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("SpacingBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the spacing bar."},
			new SingleValuePropertyType("VerticalBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the vertical bar."} },
				new [] { "IfcWall" });
		yield return new PropertySetInfo("Pset_ReinforcingBarBendingsBECCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BECBarShapeCode", "IfcLabel") { Definition = "The bending type code for the specific bending shape as defined in the BEC standard. Note: depending on the standardized shape different combinations of following parameters a...e (f...l), TD, u, v, u1, v1, aid_x, and aid_y are used."},
			new SingleValuePropertyType("BECBendingParameter_u", "IfcPlaneAngleMeasure") { Definition = "Bar bending angle parameter u."},
			new SingleValuePropertyType("BECBendingParameter_u1", "IfcPlaneAngleMeasure") { Definition = "Bar bending angle parameter u1."},
			new SingleValuePropertyType("BECBendingParameter_v", "IfcPlaneAngleMeasure") { Definition = "Bar bending angle parameter v."},
			new SingleValuePropertyType("BECBendingParameter_v1", "IfcPlaneAngleMeasure") { Definition = "Bar bending angle parameter v1."},
			new SingleValuePropertyType("BECCuttingLength", "IfcPositiveLengthMeasure") { Definition = "Usually calculated from the sum of the partial length parameters with corrections for the bendings."},
			new SingleValuePropertyType("BECRollerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of bending roller."},
			new SingleValuePropertyType("BECShapeAid_x", "IfcPositiveLengthMeasure") { Definition = "Bar shape measure aid x."},
			new SingleValuePropertyType("BECShapeAid_y", "IfcPositiveLengthMeasure") { Definition = "Bar shape measure aid y."},
			new SingleValuePropertyType("BECShapeParameter_a", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter a."},
			new SingleValuePropertyType("BECShapeParameter_b", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter b."},
			new SingleValuePropertyType("BECShapeParameter_c", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter c."},
			new SingleValuePropertyType("BECShapeParameter_d", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter d."},
			new SingleValuePropertyType("BECShapeParameter_e", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter e."},
			new SingleValuePropertyType("BECShapeParameter_f", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter f."},
			new SingleValuePropertyType("BECShapeParameter_g", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter g."},
			new SingleValuePropertyType("BECShapeParameter_h", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter h."},
			new SingleValuePropertyType("BECShapeParameter_i", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter i."},
			new SingleValuePropertyType("BECShapeParameter_j", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter j."},
			new SingleValuePropertyType("BECShapeParameter_k", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter k."},
			new SingleValuePropertyType("BECShapeParameter_l", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter l."} },
				new [] { "IfcReinforcingBar", "IfcReinforcingMesh" });
		yield return new PropertySetInfo("Pset_ReinforcingBarBendingsBS8666Common", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BS8666ShapeCode", "IfcLabel") { Definition = "The bending type code for the specific bending shape as defined in the BS8666 standard. Note: depending on the standardized shape different combinations of following parameters A...E and r are used."},
			new SingleValuePropertyType("BS8666ShapeParameter_A", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter A."},
			new SingleValuePropertyType("BS8666ShapeParameter_B", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter B."},
			new SingleValuePropertyType("BS8666ShapeParameter_C", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter C."},
			new SingleValuePropertyType("BS8666ShapeParameter_D", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter D."},
			new SingleValuePropertyType("BS8666ShapeParameter_E", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter E."},
			new SingleValuePropertyType("BS8666ShapeParameter_r", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter r. Used for bending radius."} },
				new [] { "IfcReinforcingBar" });
		yield return new PropertySetInfo("Pset_ReinforcingBarBendingsDIN135610Common", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DIN135610ShapeCode", "IfcLabel") { Definition = "The bending type code for the specific bending shape as defined in the DIN 1356 Teil 10 standard. Note: depending on the standardized shape different combinations of following parameters a...z are used."},
			new SingleValuePropertyType("DIN135610ShapeParameter_a", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter a. Note: this parameter is also used for parameter a0 (shape code B3)"},
			new SingleValuePropertyType("DIN135610ShapeParameter_b", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter b. Note: this parameter is also used for parameter b0 (shape codes C2 and C3)"},
			new SingleValuePropertyType("DIN135610ShapeParameter_c", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter c."},
			new SingleValuePropertyType("DIN135610ShapeParameter_d", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter d. Note: this parameter is also used for parameter d0 (shape code B3)"},
			new SingleValuePropertyType("DIN135610ShapeParameter_e", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter e. Note: this parameter is also used for parameter e0 (shape codes A4 and C3)"},
			new SingleValuePropertyType("DIN135610ShapeParameter_z", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter z."} },
				new [] { "IfcReinforcingBar" });
		yield return new PropertySetInfo("Pset_ReinforcingBarBendingsISOCD3766Common", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ISOCD3766BendingEndHook", "IfcPlaneAngleMeasure") { Definition = "The angle of the hook at end of the bar. If the property is not included  the bar has no end hook. Note: this differs from how ISO/CD 3766 handles end hooks."},
			new SingleValuePropertyType("ISOCD3766BendingStartHook", "IfcPlaneAngleMeasure") { Definition = "The angle of the hook at start of the bar. If the property is not included the bar has no start hook. Note: this differs from how ISO/CD 3766 handles end hooks."},
			new SingleValuePropertyType("ISOCD3766ShapeCode", "IfcLabel") { Definition = "The bending type code for the specific bending shape as defined in the ISO/CD 3766 standard. Note: depending on the standardized shape different combinations of following parameters a...e and R are used."},
			new SingleValuePropertyType("ISOCD3766ShapeParameter_a", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter a."},
			new SingleValuePropertyType("ISOCD3766ShapeParameter_b", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter b."},
			new SingleValuePropertyType("ISOCD3766ShapeParameter_c", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter c."},
			new SingleValuePropertyType("ISOCD3766ShapeParameter_d", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter d."},
			new SingleValuePropertyType("ISOCD3766ShapeParameter_e", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter e."},
			new SingleValuePropertyType("ISOCD3766ShapeParameter_R", "IfcPositiveLengthMeasure") { Definition = "Bar shape parameter R. Used for bending radius."} },
				new [] { "IfcReinforcingBar" });
		yield return new PropertySetInfo("Pset_Reliability", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MeanTimeBetweenFailure", "IfcTimeMeasure") { Definition = "The average time duration between instances of failure of a product."} },
				new [] { "IfcProduct" });
		yield return new PropertySetInfo("Pset_Risk", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssessmentOfRisk", new [] { "AlmostCertain", "VeryLikely", "Likely", "VeryPossible", "Possible", "SomewhatPossible", "Unlikely", "VeryUnlikely", "Rare", "Other", "NotKnown", "Unset" } ) { Definition = "Likelihood of risk event occurring.\n\nNote  that assessment of risk may frequently be associated with the physical location of the object for which the risk is assessed."},
			new EnumerationPropertyType("RiskConsequence", new [] { "Catastrophic", "Severe", "Major", "Considerable", "Moderate", "Some", "Minor", "VeryLow", "Insignificant", "Other", "NotKnown", "Unset" } ) { Definition = "Indicates the level of severity of the consequences that the risk would have in case it happens"},
			new EnumerationPropertyType("RiskOwner", new [] { "Designer", "Specifier", "Constructor", "Installer", "Maintainer", "Other", "NotKnown", "Unset" } ) { Definition = "A determination of who is the owner of the risk by reference to principal roles of organizations within a project. Determination of the specific organization should be by reference to instances of IfcActorRole assigned to instances of IfcOrganization (if assigned)."},
			new EnumerationPropertyType("RiskRating", new [] { "Critical", "VeryHigh", "High", "Considerable", "Moderate", "Some", "Low", "VeryLow", "Insignificant", "Other", "NotKnown", "Unset" } ) { Definition = "A general rating of the risk that may be determined from a combination of the risk assessment and risk consequence"},
			new EnumerationPropertyType("RiskType", new [] { "Business", "Hazard", "HealthAndSafety", "Insurance", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of risk from which the type required may be set."},
			new SingleValuePropertyType("AffectsSurroundings", "IfcBoolean") { Definition = "Indicates wether the risk affects only to the person assigned to that task (FALSE) or if it can also affect to the people in the surroundings (TRUE).\n\nFor example, the process of painting would affect all the people in the vicinity of the process "},
			new SingleValuePropertyType("NatureOfRisk", "IfcLabel") { Definition = "An indication of the generic nature of the risk that might be encountered. \n\nNOTE: It is anticipated that there will be a local agreement that constrains the values that might be assigned to this property. An example might be 'Fall'  or 'Fall of grille unit' causing injury and damage to person and property"},
			new SingleValuePropertyType("PreventiveMeassures", "IfcText") { Definition = "Identifies preventive measures to be taken to mitigate risk"},
			new SingleValuePropertyType("RiskCause", "IfcText") { Definition = "A value that may be assigned to capture the cause or trigger for the risk. An example might be 'poor fixing'"},
			new SingleValuePropertyType("SubNatureOfRisk1", "IfcLabel") { Definition = "A first subsidiary value that might be assigned to designate a more specific type of risk.\n\nNOTE: Nature of risk may be identified in various ways depending upon the place where risk assessment takes place and according to local agreement. This property set allows for a generic nature of risk and up to two subsidiary natures. An example might be 'causing injury and damage'"},
			new SingleValuePropertyType("SubNatureOfRisk2", "IfcLabel") { Definition = "A second subsidiary value that might be assigned to designate a more specific type of risk. An example might be 'o person and property'"} },
				new [] { "IfcObject" });
		yield return new PropertySetInfo("Pset_RoofCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("ProjectedArea", "IfcAreaMeasure") { Definition = "Area of the roof projected onto a 2D horizontal plane"},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("TotalArea", "IfcAreaMeasure") { Definition = "Total exposed area of the roof"} },
				new [] { "IfcRoof" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeBath", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BathType", new [] { "Domestic", "DomesticCorner", "Foot", "Jacuzzi", "Plunge", "Sitz", "Treatment", "Whirlpool", "Other", "NotKnown", "Unset" } ) { Definition = "The property enumeration defines the types of bath that may be specified within the property set where:\n\nDomestic =\tBath, for one person at a time, into which the whole body can be easily immersed.\nDomesticCorner =\tBath, for one person at a time, into which the whole body can be easily immersed and in which the immersion trough is at an angle.\nFoot =\tShallow bath for washing the feet.\nJacuzzi =\tWhirlpool bath for more than one person\nPlunge =\tBath, usually for more than one person at a time, into which the whole body can be easily immersed.\nSitz =\tBath in which a bather sits as in a chair.\nTreatment =\tBath used for hydrotherapy purposes.\nWhirlpool =\tBath in which an integrated device agitates the water by pumped circulation or induction of water and/or air.\n"},
			new SingleValuePropertyType("Color", "IfcText") { Definition = "Principal color of the object."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object. "},
			new SingleValuePropertyType("HasGrabHandles", "IfcBoolean") { Definition = "Indicates whether the bath is fitted with handles that provide assistance to a bather in entering or leaving the bath"},
			new SingleValuePropertyType("MaterialThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material from which the object is constructed"},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object. "},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object. "},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object. "} },
				new [] { "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeBidet", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BidetMounting", new [] { "BackToWall", "Pedestal", "CounterTop", "WallHung", "NotKnown", "Unset" } ) { Definition = "The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:-\n\nBackToWall =\tA pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal =\tA floor mounted sanitary terminal that has an integral base\nCounterTop =\tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung =\tA sanitary terminal cantilevered clear of the floor\n"},
			new SingleValuePropertyType("Color", "IfcText") { Definition = "Color selection for this object"},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object "},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object. "},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object. "},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object. "},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the object"} },
				new [] { "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeCistern", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CisternHeight", new [] { "HighLevel", "LowLevel", "None", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that identifies the height of the cistern or, if set to 'None' if the urinal has no cistern and is flushed using mains or high pressure water through a flushing valve."},
			new EnumerationPropertyType("FlushType", new [] { "Lever", "Pull", "Push", "Sensor", "Other", "NotKnown", "Unset" } ) { Definition = "The property enumeration Pset_FlushTypeEnum defines the types of flushing mechanism that may be specified for cisterns and sanitary terminals where:-\n\nLever =\tFlushing is achieved by twisting a lever that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal.\nPull =\tFlushing is achieved by pulling a handle or knob vertically upwards that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal.\nPush =\tFlushing is achieved by pushing a button or plate that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal.\nSensor = Flush is activated through an automatic sensing mechanism.\n"},
			new SingleValuePropertyType("CisternCapacity", "IfcVolumeMeasure") { Definition = "Volumetric capacity of the cistern"},
			new SingleValuePropertyType("CisternColor", "IfcText") { Definition = "Color of the object"},
			new SingleValuePropertyType("FlushRate", "IfcVolumeMeasure") { Definition = "The minimum and maximum volume of water used at each flush. Where a single flush is used, the value of upper bound and lower bound should be equal. For a dual flush toilet, the lower bound should be used for the lesser flush rate and the upper bound for the greater flush rate. Where flush is achieved using mains pressure water through a flush valve, the value of upper and lower bound should be equal and should be the same as the flush rate property of the flush valve (see relevant valve property set). Alternatively, in this case, do not assert the flush rate property; refer to the flush rate of the flush valve."},
			new SingleValuePropertyType("IsAutomaticFlush", "IfcBoolean") { Definition = "Boolean value that determines if the cistern is flushed automatically either after each use or periodically (TRUE) or whether manual flushing is required (FALSE)"},
			new SingleValuePropertyType("IsSingleFlush", "IfcBoolean") { Definition = "Indicates whether the cistern is single flush = TRUE (i.e. the same amount of water is used for each and every flush) or dual flush = FALSE (i.e. the amount of water used for a flush may be selected by the user to be high or low depending on the waste material to be removed)"} },
				new [] { "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeSanitaryFountain", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FountainType", new [] { "DrinkingWater", "Eyewash", "Other", "NotKnown", "Unset" } ) { Definition = "Selection of the type of fountain from the enumerated list of types where:-\n\nDrinkingWater =\tSanitary appliance that provides a low pressure jet of drinking water.\nEyewash =\tWaste water appliance, usually installed in work places where there is a risk of injury to eyes by solid particles or dangerous liquids, with which the user can wash the eyes without touching them.\n"},
			new EnumerationPropertyType("Mounting", new [] { "BackToWall", "Pedestal", "CounterTop", "WallHung", "Other", "NotKnown", "Unset" } ) { Definition = "Selection of the form of mounting of the fountain from the enumerated list of mountings where:-\n\nBackToWall =\tA pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal =\tA floor mounted sanitary terminal that has an integral base\nCounterTop =\tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung =\tA sanitary terminal cantilevered clear of the floor\n"},
			new SingleValuePropertyType("Color", "IfcText") { Definition = "Color selection for this object"},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object"},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object. "},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object. "},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object. "} },
				new [] { "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeShower", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ShowerType", new [] { "Drench", "Individual", "Tunnel", "Other", "NotKnown", "Unset" } ) { Definition = "Selection of the type of shower from the enumerated list of types where:-\n\nDrench = \tShower that rapidly gives a thorough soaking in an emergency\nIndividual =\tShower unit that is typically enclosed and is for the use of one person at a time\nTunnel =  \tShower that has a succession of shower heads or spreaders that operate simultaneously along its length\n"},
			new SingleValuePropertyType("Color", "IfcText") { Definition = "Color selection for this object"},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object"},
			new SingleValuePropertyType("HasTray", "IfcBoolean") { Definition = "Indicates whether the shower has a separate receptacle that catches the water in a shower and directs it to a waste outlet."},
			new SingleValuePropertyType("MaterialThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material from which the object is constructed"},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object. "},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object. "},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object. "},
			new SingleValuePropertyType("ShowerHeadDescription", "IfcText") { Definition = "A description of the shower head(s) that emit the spray of water"} },
				new [] { "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeSink", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SinkMounting", new [] { "BackToWall", "Pedestal", "CounterTop", "WallHung", "Other", "NotKnown", "Unset" } ) { Definition = "Selection of the form of mounting of the sink from the enumerated list of mountings where:-\n\nBackToWall =\tA pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal =\tA floor mounted sanitary terminal that has an integral base\nCounterTop =\tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung =\tA sanitary terminal cantilevered clear of the floor\n"},
			new EnumerationPropertyType("SinkType", new [] { "Belfast", "Bucket", "Cleaners", "Combination_Left", "Combination_Right", "Combination_Double", "Drip", "Laboratory", "London", "Plaster", "Pot", "Rinsing", "Shelf", "VegetablePreparation", "Other", "NotKnown", "Unset" } ) { Definition = "Selection of the type of sink from the enumerated list of types where:-\n\nBelfast =  \tDeep sink that has a plain edge and a weir overflow\n.\nBucket = \tSink at low level, with protected front edge, that facilitates filling and emptying buckets, usually with a hinged grid on which to stand them.\nCleaners =\t Sink, usually fixed at normal height (900mm), with protected front edge.\nCombination_Left =\t Sink with integral drainer on left hand side\n.\nCombination_Right =\t Sink with integral drainer on right hand side\n.\nCombination_Double = \tSink with integral drainer on both sides\n.\nDrip =\t Small sink that catches drips or flow from a faucet\n.\nLaboratory =\t Sink, of acid resisting material, with a top edge shaped to facilitate fixing to the underside of a desktop\n.\nLondon =\t Deep sink that has a plain edge and no overflow\n.\nPlaster = Sink with sediment receiver to prevent waste plaster passing into drains\n.\nPot =\t Large metal sink, with a standing waste, for washing cooking utensils\n.\nRinsing =\t Metal sink in which water can be heated and culinary utensils and tableware immersed at high temperature that destroys most harmful bacteria and allows subsequent self drying.\n.\nShelf =\t Ceramic sink with an integral back shelf through which water fittings are mounted\n.\nVegetablePreparation =\tLarge metal sink, with a standing waste, for washing and preparing vegetables\n.\n"},
			new SingleValuePropertyType("Color", "IfcText") { Definition = "Color selection for this object"},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object"},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object. "},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object. "},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object. "} },
				new [] { "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeToiletPan", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PanMounting", new [] { "BackToWall", "Pedestal", "CounterTop", "WallHung", "Other", "NotKnown", "Unset" } ) { Definition = "The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:-\n\nBackToWall =\tA pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal =\tA floor mounted sanitary terminal that has an integral base\nCounterTop =\tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung =\tA sanitary terminal cantilevered clear of the floor\n"},
			new EnumerationPropertyType("ToiletPanType", new [] { "Siphonic", "Squat", "WashDown", "WashOut", "Other", "NotKnown", "Unset" } ) { Definition = "The property enumeration Pset_ToiletPanTypeEnum defines the types of toilet pan that may be specified within the property set Pset_Toilet:-\n\nSiphonic =\tToilet pan in which excrement is removed by siphonage induced by the flushing water.\nSquat =\tToilet pan with an elongated bowl installed with its top edge at or near floor level, so that the user has to squat.\nWashDown =\tToilet pan in which excrement is removed by the momentum of the flushing water.\nWashOut =\tA washdown toilet pan in which excrement falls first into a shallow water filled bowl.\n"},
			new EnumerationPropertyType("ToiletType", new [] { "BedPanWasher", "Chemical", "CloseCoupled", "LooseCoupled", "SlopHopper", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that defines the types of toilet (water closet) arrangements that may be specified where:-\n\nBedPanWasher =\tEnclosed soil appliance in which bedpans and urinal bottles are emptied and cleansed\nChemical =\tPortable receptacle or soil appliance that receives and retains excrement in either an integral or a separate container, in which it is chemically treated and from which it has to be emptied periodically.\nCloseCoupled =\tToilet suite in which a flushing cistern is connected directly to the water closet pan.\nLooseCoupled =\tToilet arrangement in which a flushing cistern is connected to the water closet pan through a flushing pipe.\nSlopHopper =\tHopper shaped soil appliance with a flushing rim and outlet similar to those of a toilet pan, into which human excrement is emptied for disposal\n"},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object. "},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object. "},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object. "},
			new SingleValuePropertyType("PanColor", "IfcText") { Definition = "Color selection for this object"},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the terminal."} },
				new [] { "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeUrinal", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("UrinalType", new [] { "Bowl", "Slab", "Stall", "Trough", "Other", "NotKnown", "Unset" } ) { Definition = "Selection of the type of urinal from the enumerated list of types where:-\n\nBowl =\tIndividual wall mounted urinal\nSlab =\tUrinal that consists of a slab or sheet fixed to a wall and down which urinal flows into a floor channel\nStall =\tFloor mounted urinal that consists of an elliptically shaped sanitary stall fixed to a wall and down which urine flows into a floor channel\nTrough =\tWall mounted urinal of elongated rectangular shape on plan, that can be used by more than one person at a time.\n"},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object. "},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object. "},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object. "},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the object"},
			new SingleValuePropertyType("UrinalColor", "IfcText") { Definition = "Color of the urinal"} },
				new [] { "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeWashHandBasin", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("WashHandBasinMounting", new [] { "BackToWall", "Pedestal", "CounterTop", "WallHung", "Other", "NotKnown", "Unset" } ) { Definition = "Selection of the form of mounting from the enumerated list of mountings where:-\n\nBackToWall =\tA pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal =\tA floor mounted sanitary terminal that has an integral base\nCounterTop =\tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung =\tA sanitary terminal cantilevered clear of the floor\n"},
			new EnumerationPropertyType("WashHandBasinType", new [] { "DentalCuspidor", "HandRinse", "Hospital", "Tipup", "Washfountain", "WashingTrough", "Other", "NotKnown", "Unset" } ) { Definition = "Defines the types of wash hand basin that may be specified where: \nDentalCuspidor = Waste water appliance that receives and flushes away mouth washings\nHandRinse = Wall mounted wash hand basin that has an overall width of 500mm or less\nHospital = Wash hand basin that has a smooth easy clean surface without tapholes or overflow slot for use where hygiene is of prime importance. \nTipup = Wash hand basin mounted on pivots so that it can be emptied by tilting \nVanity = Wash hand basin for installation into a horizontal surface \nWashfountain = Wash hand basin that is circular, semi-circular or polygonal on plan, at which more than one person can wash at the same time. \nWashingTrough = Wash hand basin of elongated rectangular shape in plan, at which more than one person can wash at the same time.\n"},
			new SingleValuePropertyType("Color", "IfcText") { Definition = "Color of the object"},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object. "},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object. "},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object. "} },
				new [] { "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeWCSeat", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SeatType", new [] { "Extension", "Inset", "OpenFrontSeat", "RingSeat", "SelfRaising", "None", "Other", "NotKnown", "Unset" } ) { Definition = "The property enumeration Pset_ToiletSeatTypeEnum defines the types of seat that may be attached to the toilet pan and specified within the property set Pset_Toilet where:-\n\nExtension =\tWC seat that is attached at the back, by means of side or top hinges, to a flat piece of material secured to the water closet pan\nInset =\tSeat that consists of pads of impervious material fixed to the top of a water closet pan\nOpenFrontSeat =\tHinged WC seat shaped like a horseshoe with the gap at the front\nRingSeat =\tWC seat in the shape of a ring\nSelfRaising =\tWC seat with balanced weights or springs to raise it when not in use\nNone =\tThere is no seat attached to the water closet pan\n"},
			new SingleValuePropertyType("SeatColor", "IfcText") { Definition = "Color of the object"},
			new SingleValuePropertyType("SeatHasCover", "IfcBoolean") { Definition = "Indicates whether there is a cover associated with the toilet seat"} },
				new [] { "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SensorTypeCO2Sensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccuracyOfCO2Sensor", "IfcPositiveRatioMeasure") { Definition = "The accuracy of the sensor"},
			new SingleValuePropertyType("CO2SensorRange", "IfcPositiveRatioMeasure") { Definition = "The upper and lower bounds for operation of the CO2 sensor.\n"},
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The floor area that is covered by the sensor (typically measured as a circle whose center is at the location of the sensor)"},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor\n."},
			new SingleValuePropertyType("WashHandBasinSetPoint", "IfcPositiveRatioMeasure") { Definition = "The CO2 value to be sensed."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeFireSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccuracyOfFireSensor", "IfcThermodynamicTemperatureMeasure") { Definition = "The accuracy of the sensor"},
			new SingleValuePropertyType("FireSensorSetPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature value to be sensed to indicate the presence of fire."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor\n."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeGasSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccuracyOfGasSensor", "IfcPositiveRatioMeasure") { Definition = "The accuracy of the sensor"},
			new SingleValuePropertyType("GasDetected", "IfcLabel") { Definition = "Identification of the gas that is being detected."},
			new SingleValuePropertyType("GasSensorRange", "IfcPositiveRatioMeasure") { Definition = "The upper and lower bounds of gas concentration for operation of the gas sensor.\n"},
			new SingleValuePropertyType("GasSensorSetPoint", "IfcPositiveRatioMeasure") { Definition = "The gas concentration value to be sensed."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor\n."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeHeatSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The area that is covered by the sensor (typically measured as a circle whose center is at the location of the sensor)"},
			new SingleValuePropertyType("HeatSensorAccuracy", "IfcThermodynamicTemperatureMeasure") { Definition = "The accuracy of the sensor."},
			new SingleValuePropertyType("HeatSensorRange", "IfcThermodynamicTemperatureMeasure") { Definition = "The upper and lower bounds for operation of the heat sensor."},
			new SingleValuePropertyType("HeatSensorSetPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature value to be sensed."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor.\n."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeHumiditySensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccuracyOfHumiditySensor", "IfcPositiveRatioMeasure") { Definition = "The accuracy of the sensor"},
			new SingleValuePropertyType("HumiditySensorRange", "IfcPositiveRatioMeasure") { Definition = "The upper and lower bounds for operation of the humidity sensor.\n"},
			new SingleValuePropertyType("HumiditySetPoint", "IfcPositiveRatioMeasure") { Definition = "The humidity value to be sensed."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor\n."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeLightSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("LightSensorAccuracy", "IfcIlluminanceMeasure") { Definition = "The accuracy of the sensor."},
			new SingleValuePropertyType("LightSensorRange", "IfcIlluminanceMeasure") { Definition = "The upper and lower bounds for operation of the light sensor."},
			new SingleValuePropertyType("LightSensorSetPoint", "IfcIlluminanceMeasure") { Definition = "The illuminance value to be sensed."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor.\n."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeMovementSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MovementSensingType", new [] { "PhotoElectricCell", "PressurePad", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that identifies the type of movement sensing mechanism."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor\n."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypePressureSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccuracyOfPressureSensor", "IfcPressureMeasure") { Definition = "The accuracy of the sensor"},
			new SingleValuePropertyType("IsSwitch", "IfcBoolean") { Definition = "Identifies if the sensor also functions as a switch at the set point (=TRUE) or not (= FALSE)"},
			new SingleValuePropertyType("PressureSensorRange", "IfcPressureMeasure") { Definition = "The upper and lower bounds of pressure value for operation of the pressure sensor.\n"},
			new SingleValuePropertyType("PressureSensorSetPoint", "IfcPressureMeasure") { Definition = "The pressure value to be sensed."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor\n."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeSmokeSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccuracyOfSmokeSensor", "IfcPositiveRatioMeasure") { Definition = "The accuracy of the sensor"},
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The floor area that is covered by the sensor (typically measured as a circle whose center is at the location of the sensor)"},
			new SingleValuePropertyType("HasBuiltInAlarm", "IfcBoolean") { Definition = "Indicates whether the smoke sensor is included as an element within a smoke alarm/sensor unit (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("PressureSensorSetPoint", "IfcPositiveRatioMeasure") { Definition = "The smoke concentration value to be sensed."},
			new SingleValuePropertyType("SmokeSensorRange", "IfcPositiveRatioMeasure") { Definition = "The upper and lower bounds of smoke concentration for operation of the smoke sensor.\n"},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor\n."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeSoundSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SoundSensorAccuracy", "IfcSoundPressureMeasure") { Definition = "The accuracy of the sensor."},
			new SingleValuePropertyType("SoundSensorRange", "IfcSoundPressureMeasure") { Definition = "The upper and lower bounds for operation of the sound sensor."},
			new SingleValuePropertyType("SoundSensorSetPoint", "IfcSoundPressureMeasure") { Definition = "The sound pressure value to be sensed."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor.\n."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeTemperatureSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TemperatureSensorType", new [] { "HighLimit", "LowLimit", "OutsideTemperature", "OperatingTemperature", "RoomTemperature", "Other", "NotKnown", "Unset" } ) { Definition = "Enumeration that Identifies the types of temperature sensor that can be specified."},
			new SingleValuePropertyType("AccuracyOfTemperatureSensor", "IfcThermodynamicTemperatureMeasure") { Definition = "The accuracy of the sensor"},
			new SingleValuePropertyType("TemperatureSensorRange", "IfcThermodynamicTemperatureMeasure") { Definition = "The upper and lower bounds for operation of the temperature sensor.\nMay also be termed 'deadband'"},
			new SingleValuePropertyType("TemperatureSensorSetPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature value to be sensed."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor\n."} },
				new [] { "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SiteCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BuildableArea", "IfcAreaMeasure") { Definition = "The area of utilization expressed as a minimum value and a maximum value  - according to local building codes. "},
			new SingleValuePropertyType("BuildingHeightLimit", "IfcPositiveLengthMeasure") { Definition = "Calculated maximum height of buildings on this site - according to local building codes. "},
			new SingleValuePropertyType("TotalArea", "IfcAreaMeasure") { Definition = "Total area of the site - masured according to local building codes."} },
				new [] { "IfcSite" });
		yield return new PropertySetInfo("Pset_SlabCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object. It is giving according to the national building code. It indicates the sound transmission resistance of this object by an index ration (instead of providing full sound absorbtion values"},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Compartmentation", "IfcBoolean") { Definition = "Indication whether the object is designed to serve as a fire compartmentation (TRUE) or not (FALSE). "},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = " Fire rating for this object. It is given according to the national fire safety classification. "},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building"},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("PitchAngle", "IfcPlaneAngleMeasure") { Definition = "Angle of the slab to the horizontal when used as a component for the roof (specified as 0 degrees or not asserted for cases where the slab is not used as a roof component)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface, It is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material. Here the total thermal transmittance coefficient through the slab (including all materials). "} },
				new [] { "IfcSlab" });
		yield return new PropertySetInfo("Pset_SpaceCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Category", "IfcLabel") { Definition = "Category of space usage or utilization of the area. It is defined according to the presiding national building code."},
			new SingleValuePropertyType("CeilingCovering", "IfcLabel") { Definition = "Label to indicate the material or finish of the space flooring. The label is used for room book information and often displayed in room stamp."},
			new SingleValuePropertyType("ConcealedCeiling", "IfcBoolean") { Definition = "Indication whether this space is declared to be a concealed ceiling (TRUE) or not (FALSE). A concealed ceiling is normally meant to be the space between a slab and a suspended ceiling."},
			new SingleValuePropertyType("ConcealedFlooring", "IfcBoolean") { Definition = "Indication whether this space is declared to be a concealed flooring (TRUE) or not (FALSE). A concealed flooring is normally meant to be the space beneath a raised floor."},
			new SingleValuePropertyType("FloorCovering", "IfcLabel") { Definition = "Label to indicate the material or finish of the space flooring. The label is used for room book information and often displayed in room stamp."},
			new SingleValuePropertyType("GrossPlannedArea", "IfcAreaMeasure") { Definition = "Total planned area for the space. Used for programming the space."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication whether this space (in case of e.g., a toilet) is designed to serve as an accessible space for handicapped people, e.g., for a public toilet (TRUE) or not (FALSE). This information is often used to declare the need for access for the disabled and for special design requirements of this space."},
			new SingleValuePropertyType("NetPlannedArea", "IfcAreaMeasure"),
			new SingleValuePropertyType("PubliclyAccessible", "IfcBoolean") { Definition = "Indication whether this space (in case of e.g., a toilet) is designed to serve as a publicly accessible space, e.g., for a public toilet (TRUE) or not (FALSE). "},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("SkirtingBoard", "IfcLabel") { Definition = "Label to indicate the material or construction of the skirting board around the space flooring. The label is used for room book information and often displayed in room stamp."},
			new SingleValuePropertyType("WallCovering", "IfcLabel") { Definition = "Label to indicate the material or finish of the space flooring. The label is used for room book information and often displayed in room stamp."} },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceFireSafetyRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirPressurization", "IfcBoolean") { Definition = "Indication whether the space is required to have pressurized air (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("AncillaryFireUse", "IfcLabel") { Definition = "Ancillary fire use for the space which is assigned from the fire use classification table as given by the relevant national building code."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere whether the space (in case of e.g., a corridor) is designed to serve as an exit space, e.g., for fire escape purposes."},
			new SingleValuePropertyType("FireHazardFactor", "IfcLabel") { Definition = "Fire hazard code of the space. The coding depends on the national fire safety regulations."},
			new SingleValuePropertyType("FireRiskFactor", "IfcLabel") { Definition = "Fire Risk factor assigned to the space according to local building regulations."},
			new SingleValuePropertyType("FlammableStorage", "IfcBoolean") { Definition = "Indication whether the space is intended to serve as a storage of flammable material (which is regarded as such by the presiding building code. (TRUE) indicates yes, (FALSE) otherwise."},
			new SingleValuePropertyType("MainFireUse", "IfcLabel") { Definition = "Main fire use for the space which is assigned from the fire use classification table as given by the relevant national building code."},
			new SingleValuePropertyType("SprinklerProtection", "IfcBoolean") { Definition = "Indication whether the space is sprinkler protected (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SprinklerProtectionAutomatic", "IfcBoolean") { Definition = "Indication whether the space has an automatic sprinkler protection (TRUE) or not (FALSE).\nIt should only be given, if the property \"SprinklerProtection\" is set to TRUE."} },
				new [] { "IfcSpace", "IfcZone" });
		yield return new PropertySetInfo("Pset_SpaceHeaterPHistoryCommon", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_SpaceHeaterTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("HeatingSource", new [] { "FUEL", "GAS", "ELECTRICITY", "HOTWATER", "STEAM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the heating source used by the space heater."},
			new EnumerationPropertyType("TemperatureClassification", new [] { "LOWTEMPERATURE", "HIGHTEMPERATURE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the temperature classification of the space heater surface temperature.\nlow temperature - surface temperature is relatively low, usually heated by hot water or electricity.\nhigh temperature - surface temperature is relatively high, usually heated by gas or steam."},
			new SingleValuePropertyType("BodyMass", "IfcMassMeasure") { Definition = "Overall body mass of the heater."},
			new SingleValuePropertyType("OutputCapacity", "IfcPowerMeasure") { Definition = "Total nominal heat output as listed by the manufacturer."},
			new SingleValuePropertyType("ThermalEfficiency", "IfcPositiveRatioMeasure") { Definition = "Overall Thermal Efficiency is defined as gross energy output of the heat transfer device divided by the energy input."},
			new SingleValuePropertyType("ThermalMassHeatCapacity", "IfcReal") { Definition = "Product of component mass and specific heat"} },
				new [] { "IfcSpaceHeaterType" });
		yield return new PropertySetInfo("Pset_SpaceHeaterTypeHydronic", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("TubingLength", "IfcLengthMeasure") { Definition = "Water tube length inside the component."},
			new SingleValuePropertyType("WaterContent", "IfcMassMeasure") { Definition = "Weight of water content within the heater."} },
				new [] { "IfcSpaceHeaterType" });
		yield return new PropertySetInfo("Pset_SpaceLightingRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ArtificialLighting", "IfcBoolean") { Definition = "Indication whether this space  requires artificial lighting (as natural lighting would be not sufficient). (TRUE) indicates yes (FALSE) otherwise."},
			new SingleValuePropertyType("Illuminance", "IfcIlluminanceMeasure") { Definition = "Required average illuminance value for this space."} },
				new [] { "IfcSpace", "IfcZone" });
		yield return new PropertySetInfo("Pset_SpaceOccupancyRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AreaPerOccupant", "IfcAreaMeasure") { Definition = "Design occupancy loading for this type of usage assigned to this space."},
			new SingleValuePropertyType("IsOutlookDesirable", "IfcBoolean") { Definition = "An indication of whether the outlook is desirable (set TRUE) or not (set FALSE)"},
			new SingleValuePropertyType("MinimumHeadroom", "IfcLengthMeasure") { Definition = "Headroom required for the activity assigned to this space."},
			new SingleValuePropertyType("OccupancyNumber", "IfcCountMeasure") { Definition = "Number of people required for the activity assigned to this space."},
			new SingleValuePropertyType("OccupancyNumberPeak", "IfcCountMeasure") { Definition = "Maximal number of people required for the activity assigned to this space in peak time."},
			new SingleValuePropertyType("OccupancyTimePerDay", "IfcTimeMeasure") { Definition = "The amount of time during the day that the activity is required within this space."},
			new SingleValuePropertyType("OccupancyType", "IfcLabel") { Definition = "Occupancy type for this object. It is defined according to the presiding national building code."} },
				new [] { "IfcSpace", "IfcZone" });
		yield return new PropertySetInfo("Pset_SpaceParking", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. \nIt is giving according to the requirements of the national building code. "},
			new SingleValuePropertyType("ParkingUnits", "IfcCountMeasure") { Definition = "Indicates the number of transporation units of the type specified by the property ParkingUse that may be accommodated within the space. Generally, this value should default to 1 unit. However, where the parking space is for motorcycles or bicycles, provision may be made for more than one unit in the space."},
			new SingleValuePropertyType("ParkingUse", "IfcLabel") { Definition = "Identifies the type of transporation for which the parking space is designed. Values are not predefined but might include car, compact car, motorcycle, bicycle, truck, bus etc."} },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceParkingAisle", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsOneWay", "IfcBoolean") { Definition = "Indicates whether the parking aisle is designed for oneway traffic (TRUE) or twoway traffic (FALSE)."} },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceProgramCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EmployeeType", "IfcLabel") { Definition = "General description of the employee type that will occupy the space (e.g.  manager, programmer, secretary, etc.). The type classification depends on the company based terms for employee types. "},
			new SingleValuePropertyType("FFETypeRequirement", "IfcLabel") { Definition = "General description of the Furniture, Fixtures and Equipment requirement for this space. "},
			new SingleValuePropertyType("FunctionRequirement", "IfcLabel") { Definition = "General description of the functional requirement for the space (in addition to the space name)"},
			new SingleValuePropertyType("LightingRequirement", "IfcLabel") { Definition = "General description of the lighting requirement for the space (e.g. \"natural lighting required\")"},
			new SingleValuePropertyType("Location", "IfcLabel") { Definition = "General description of the required location for the space (e.g. \"third floor south\") "},
			new SingleValuePropertyType("OccupancyNumber", "IfcCountMeasure") { Definition = "Maximum number of occupants for the designed usage of the space."},
			new SingleValuePropertyType("OccupancyType", "IfcLabel") { Definition = "Occupancy type for this object.\nIt is defined according to the presiding national building code."},
			new SingleValuePropertyType("PrivacyRequirement", "IfcLabel") { Definition = "General description of the privacy requirement for the space (in addition to the security requirement)"},
			new SingleValuePropertyType("SecurityRequirement", "IfcLabel") { Definition = "General description of the security requirement for the space (in addition to the function requirement)"} },
				new [] { "IfcSpaceProgram" });
		yield return new PropertySetInfo("Pset_SpaceThermalDesign", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BoundaryAreaHeatLoss", "IfcHeatFluxDensityMeasure") { Definition = "Heat loss per unit area for the boundary object. This is a design input value for use in the absence of calculated load data. "},
			new SingleValuePropertyType("CeilingRAPlenum", "IfcBoolean") { Definition = "Ceiling plenum used for return air or not. TRUE = Yes, FALSE = No. "},
			new SingleValuePropertyType("CoolingDesignAirflow", "IfcVolumetricFlowRateMeasure") { Definition = "The air flowrate required during the peak cooling conditions. "},
			new SingleValuePropertyType("CoolingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Inside dry bulb temperature for cooling design "},
			new SingleValuePropertyType("CoolingRelativeHumidity", "IfcPositiveRatioMeasure") { Definition = "Inside relative humidity for cooling design. "},
			new SingleValuePropertyType("ExhaustAirFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Design exhaust air flow rate for the space. "},
			new SingleValuePropertyType("HeatingDesignAirflow", "IfcVolumetricFlowRateMeasure") { Definition = "The air flowrate required during the peak heating conditions, but could also be determined by minimum ventilation requirement or minimum air change requirements. "},
			new SingleValuePropertyType("HeatingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Inside dry bulb temperature for heating design "},
			new SingleValuePropertyType("HeatingRelativeHumidity", "IfcPositiveRatioMeasure") { Definition = "Inside relative humidity for heating design. "},
			new SingleValuePropertyType("TotalHeatGain", "IfcPowerMeasure") { Definition = "The total amount of heat or energy gained by the space at the time of the space's peak cooling conditions. "},
			new SingleValuePropertyType("TotalHeatLoss", "IfcPowerMeasure") { Definition = "The total amount of heat or energy lost by the space at the time of the space's peak heating conditions. "},
			new SingleValuePropertyType("TotalSensibleHeatGain", "IfcPowerMeasure") { Definition = "The total sensible heat or energy gained by the space during the peak cooling conditions. "},
			new SingleValuePropertyType("VentilationAirFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Ventilation outside air requirement for the space. "} },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceThermalPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_SpaceThermalRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirConditioning", "IfcBoolean") { Definition = "Indication whether this space requires air conditioning provided (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("AirConditioningCentral", "IfcBoolean") { Definition = "Indication whether the space  requires a central air conditioning provided (TRUE) or not (FALSE).\nIt should only be given, if the property \"AirConditioning\" is set to TRUE."},
			new SingleValuePropertyType("DiscontinuedHeating", "IfcBoolean") { Definition = "Indication whether discontinued heating is required/desirable from user/designer view point. (TRUE) if yes, (FALSE) otherwise."},
			new SingleValuePropertyType("MechanicalVentilationRate", "IfcCountMeasure") { Definition = "Indication of the requirement of a particular mechanical air ventilation rate, given in air changes per hour."},
			new SingleValuePropertyType("NaturalVentilation", "IfcBoolean") { Definition = "Indication whether the space is required to have natural ventilation (TRUE) or mechanical ventilation (FALSE). "},
			new SingleValuePropertyType("NaturalVentilationRate", "IfcCountMeasure") { Definition = "Indication of the requirement of a particular natural air ventilation rate, given in air changes per hour."},
			new SingleValuePropertyType("SpaceHumidity", "IfcRatioMeasure") { Definition = "Humidity of the space or zone that is required from user/designer view point.  If no summer or winter space humidity requirements are given, it applies all year, otherwise for the intermediate period."},
			new SingleValuePropertyType("SpaceHumiditySummer", "IfcRatioMeasure") { Definition = "Humidity of the space or zone for the hot (summer) period, that is required from user/designer view point.  "},
			new SingleValuePropertyType("SpaceHumidityWinter", "IfcRatioMeasure") { Definition = "Humidity of the space or zone for the cold (winter) period that is required from user/designer view point.  "},
			new SingleValuePropertyType("SpaceTemperatureMax", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature of the space or zone, that is required from user/designer view point.  If no summer or winter space temperature requirements are given, it applies all year, otherwise for the intermediate period."},
			new SingleValuePropertyType("SpaceTemperatureMin", "IfcThermodynamicTemperatureMeasure") { Definition = "  Minimal temperature of the space or zone, that is required from user/designer view point. If no summer or winter space temperature requirements are given, it applies all year, otherwise for the intermediate period.  "},
			new SingleValuePropertyType("SpaceTemperatureSummerMax", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximal temperature of the space or zone for the hot (summer) period, that is required from user/designer view point."},
			new SingleValuePropertyType("SpaceTemperatureSummerMin", "IfcThermodynamicTemperatureMeasure") { Definition = "Minimal temperature of the space or zone for the hot (summer) period, that is required from user/designer view point. "},
			new SingleValuePropertyType("SpaceTemperatureWinterMax", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximal temperature of the space or zone for the cold (winter) period, that is required from user/designer view point."},
			new SingleValuePropertyType("SpaceTemperatureWinterMin", "IfcThermodynamicTemperatureMeasure") { Definition = "Minimal temperature of the space or zone for the cold (winter) period, that is required from user/designer view point."} },
				new [] { "IfcSpace", "IfcZone" });
		yield return new PropertySetInfo("Pset_StairCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere it defines an exit stair in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. \nSet to (TRUE) if this stair is rated as handicap accessible  according the local building codes, otherwise (FALSE). Accessibility maybe provided by additional means."},
			new SingleValuePropertyType("HasNonSkidSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("NumberOfRiser", "IfcCountMeasure") { Definition = "Total number of the risers included in the stair"},
			new SingleValuePropertyType("NumberOfTreads", "IfcCountMeasure") { Definition = "Total number of treads included in the stair"},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("RequiredHeadroom", "IfcPositiveLengthMeasure") { Definition = "Required headroom clearance for the passageway according to the applicable building code or additional requirements"},
			new SingleValuePropertyType("RiserHeight", "IfcPositiveLengthMeasure") { Definition = "Vertical distance from tread to tread. \nThe riser height is supposed to be equal for all steps of a stair or stair flight."},
			new SingleValuePropertyType("TreadLength", "IfcPositiveLengthMeasure") { Definition = "Horizontal distance from the front of the thread to the front of the next tread. \nThe tread length is supposed to be equal for all steps of the stair or stair flight at the walking line."} },
				new [] { "IfcStair" });
		yield return new PropertySetInfo("Pset_StairFlightCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Headroom", "IfcPositiveLengthMeasure") { Definition = "Actual headroom clearance for the passageway according to the current design. \nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. "},
			new SingleValuePropertyType("NosingLength", "IfcLengthMeasure") { Definition = "Horizontal distance from the front of the tread to the riser underneath. It is the overhang of the tread."},
			new SingleValuePropertyType("NumberOfRiser", "IfcCountMeasure") { Definition = "Total number of the risers included in the stair flight"},
			new SingleValuePropertyType("NumberOfTreads", "IfcCountMeasure") { Definition = "Total number of treads included in the stair flight"},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("RiserHeight", "IfcPositiveLengthMeasure") { Definition = "Vertical distance from tread to tread. \nThe riser height is supposed to be equal for all steps of a stair or stair flight."},
			new SingleValuePropertyType("TreadLength", "IfcPositiveLengthMeasure") { Definition = "Horizontal distance from the front of the thread to the front of the next tread. \nThe tread length is supposed to be equal for all steps of the stair or stair flight at the walking line."},
			new SingleValuePropertyType("TreadLengthAtInnerSide", "IfcPositiveLengthMeasure") { Definition = "Minimum length of treads at the inner side of the winder. \nOnly relevant in case of winding flights, for straight flights it is identical with IfcStairFlight.TreadLength. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence. "},
			new SingleValuePropertyType("TreadLengthAtOffset", "IfcPositiveLengthMeasure") { Definition = "Length of treads at a given offset.\nWalking line position is given by the 'WalkingLineOffset'. The resulting value should normally be identical with TreadLength, it may be given in addition, if the walking line offset for building code calculations is different from that used in design."},
			new SingleValuePropertyType("WaistThickness", "IfcPositiveLengthMeasure") { Definition = "Minimum thickness of the stair flight, measured perpendicular to the slope of the flight to the inner corner of riser and tread. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence. "},
			new SingleValuePropertyType("WalkingLineOffset", "IfcPositiveLengthMeasure") { Definition = "Offset of the walking line from the inner side of the flight. \nNote: the walking line may have a own shape representation (in case of inconsistencies, the value derived from the shape representation shall take precedence)."} },
				new [] { "IfcStairFlight" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SwitchFunction", new [] { "OnOffSwitch", "IntermediateSwitch", "DoubleThrowSwitch", "Other", "NotKnown", "Unset" } ) { Definition = "Indicates types of switches which differs in functionality"},
			new SingleValuePropertyType("HasLock", "IfcBoolean") { Definition = "Indication of whether a switching device has a key operated lock (=TRUE) or not (= FALSE)"},
			new SingleValuePropertyType("NumberOfGangs", "IfcInteger") { Definition = "Number of gangs/buttons on this switch"} },
				new [] { "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeContactor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ContactorType", new [] { "CapacitorSwitching", "LowCurrent", "MagneticLatching", "MechanicalLatching", "Modular", "Reversing", "Standard", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of contactor from which that required may be selected where:\n\nCapacitorSwitching - for switching 3 phase single or multi-step capacitor banks\nLowCurrent - requires the use of low resistance contacts\nMagneticLatching - enables the contactor to remain in the on position when the coil is no longer energized\nMechanicalLatching - requires that the contactor is mechanically retained in the on position\nModular - are totally enclosed and self contained\nReversing - has a double set of contactors that are prewired\nStandard - is a generic device that controls the flow of power in a circuit on or off\n\n"} },
				new [] { "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeEmergencyStop", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SwitchOperation", new [] { "Mushroom", "Other", "NotKnown", "Unset" } ) { Definition = "Indicates operation of emergency stop switch."} },
				new [] { "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeStarter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("StarterType", new [] { "AutoTransformer", "Manual", "DirectOnLine", "Frequency", "nStep", "Rheostatic", "StarDelta", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of starter from which that required may be selected where:\n\nAutoTransformer - A starter for an induction motor which uses for starting one or more reduced voltages derived from an auto transformer. (IEC 441-14-45)\nManual - A starter in which the force for closing the main contacts is provided exclusively by manual energy. (IEC 441-14-39)\nDirectOnLine - A starter which connects the line voltage across the motor terminals in one step. (IEC 441-14-40)\nFrequency - A starter in which the frequency of the power supply is progressively increased until the normal operation frequency is attained.\nnStep - A starter in which there are (n-1) intermediate accelerating positions between the off and full on positions. (IEC 441-14-41)\nRheostatic - A starter using one or several resistors for obtaining, during starting, stated motor torque characteristics and for limiting the current. (IEC 441-14-425)\nStarDelta - A starter for a 3 phase induction motor such that in the starting position the stator windings are connected in star and in the final running position they are connected in delta. (IEC 441-14-44)\n"} },
				new [] { "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeSwitchDisconnector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LoadDisconnectionType", new [] { "OffLoad", "OnLoad", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of load disconnection from which that required may be selected.\n"},
			new EnumerationPropertyType("SwitchDisconnectorType", new [] { "CenterBreak", "DividedSupport", "DoubleBreak", "EarthingSwitch", "Isolator", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of switch disconnector from which that required may be selected where:\n\nCenterBreak - A disconnector in which both contacts of each pole are movable and engage at a point substantially midway between their supports. (IEC 441-14-08)\nDividedSupport - A disconnector in which the fixed and moving contacts of each pole are not supported by a common base or frame. (IEC 441-14-06)\nDoubleBreak - A disconnector that opens a circuit at two points. (IEC 441-14-09)\nEarthingSwitch - A disconnector in which the fixed and moving contacts of each pole are not supported by a common base or frame. (IEC 441-14-07)\nIsolator - A disconnector which in the open position satisfies isolating requirements. (IEC 441-14-12)"},
			new SingleValuePropertyType("HasVisualIndication", "IfcBoolean") { Definition = "Indicates whether a means of being to visually ascertain whether the contacts are open or closed is fitted (= TRUE) or not (= FALSE)"} },
				new [] { "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeToggleSwitch", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SwitchActivation", new [] { "Actuator", "Foot", "Hand", "Proximity", "Sound", "TwoHand", "Wire", "NotKnown", "Unset" } ) { Definition = "A list of the available activations for toggle switches from which that required may be selected\n"},
			new EnumerationPropertyType("SwitchUsage", new [] { "Emergency", "Guard", "Limit", "Start", "Stop", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available usages for toggle switches from which that required may be selected\n"},
			new EnumerationPropertyType("ToggleSwitchType", new [] { "BreakGlass", "Changeover", "Dimmer", "KeyOperated", "ManualPull", "PushButton", "Pullcord", "Rocker", "Selector", "Twist", "Other", "NotKnown", "Unset" } ) { Definition = "A list of the available types of toggle switch from which that required may be selected.\n"},
			new SingleValuePropertyType("IsIlluminated", "IfcBoolean") { Definition = "An indication of whether there is an illuminated indicator to show that the switch is on (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("Legend", "IfcLabel") { Definition = "A text inscribed or applied to the switch as a legend to indicate purpose or function."} },
				new [] { "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SystemFurnitureElementTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Finishing", "IfcLabel") { Definition = "The finishing applied to system furniture elements of this type e.g. walnut, fabric."},
			new SingleValuePropertyType("GroupCode", "IfcIdentifier") { Definition = "e.g. panels, worksurfaces, storage, etc."},
			new SingleValuePropertyType("IsUsed", "IfcBoolean") { Definition = "Indicates whether the element is being used in a workstation (= TRUE) or not.(= FALSE)."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the system furniture elements of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width of the system furniture elements of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcSystemFurnitureElementType" });
		yield return new PropertySetInfo("Pset_SystemFurnitureElementTypePanel", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FurniturePanelType", new [] { "Acoustical", "Glazed", "Horz_Seg", "Monolithic", "Open", "Ends", "Door", "Screen", "Other", "NotKnown", "Unset" } ) { Definition = "Available panel types from which that required may be selected."},
			new SingleValuePropertyType("HasOpening", "IfcBoolean") { Definition = "indicates whether the panel has an opening (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("NominalThickness", "IfcPositiveLengthMeasure") { Definition = "The nominal thickness of the panel"} },
				new [] { "IfcSystemFurnitureElementType" });
		yield return new PropertySetInfo("Pset_SystemFurnitureElementTypeWorkSurface", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SupportType", new [] { "Freestanding", "Supported", "Other", "NotKnown", "Unset" } ) { Definition = "Available support types from which that required may be selected."},
			new SingleValuePropertyType("HangingHeight", "IfcPositiveLengthMeasure") { Definition = "The hanging height of the worksurface."},
			new SingleValuePropertyType("NominalThickness", "IfcPositiveLengthMeasure") { Definition = "The nominal thickness of the work surface."},
			new SingleValuePropertyType("ShapeDescription", "IfcLabel") { Definition = "A description of the shape of the work surface e.g. corner square, rectangle, etc."},
			new SingleValuePropertyType("UsePurpose", "IfcLabel") { Definition = "The principal purpose for which the work surface is intended to be used e.g. writing/reading, computer, meeting, printer, reference files, etc."} },
				new [] { "IfcSystemFurnitureElementType" });
		yield return new PropertySetInfo("Pset_TankTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AccessType", new [] { "NONE", "LOOSECOVER", "MANHOLE", "SECUREDCOVER", "SECUREDCOVERWITHMANHOLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of access (or cover) to a tank that may be specified.\n\nNote that covers are generally specified for rectangular tanks. For cylindrical tanks, access will normally be via a manhole."},
			new EnumerationPropertyType("Type", new [] { "BREAKPRESSURE", "EXPANSION", "FEEDANDEXPANSION", "GASSTORAGEBUTANE", "GASSTORAGELIQUIFIEDPETROLEUMGAS", "GASSTORAGEPROPANE", "OILSERVICE", "OILSTORAGE", "PRESSUREVESSEL", "WATERSTORAGEGENERAL", "WATERSTORAGEPOTABLE", "WATERSTORAGEPROCESS", "WATERSTORAGECOOLINGTOWERMAKEUP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of tank that may be specified where: \n\nBreakPressure =\t Tank that breaks the hydraulic pressure in a distribution system\nExpansion =\t Tank, connected to the primary circuit of a hot water system that accommodates increase in volume of the water when heated\nFeedAndExpansion =\t Tank that supplies cold water to a hot water system and also accommodates increase in volume of the water when heated\nGasStorage_Butane =\t Main tank to which commercial butane is delivered and from which it is supplied to a gas distribution system.\nGasStorage_LPG =\t Main tank to which liquefied petroleum gas is delivered and from which it is supplied to a gas distribution system.\nGasStorage_Propane =\t Main tank to which commercial propane is delivered and from which it is supplied to a gas distribution system.\nOilService =\t Secondary tank from which oil fuel is fed to a single oil fuel burning appliance\nOilStorage =\t Main tank to which oil fuel is delivered and from which it is supplied to an oil fuel burning appliance or oil service tank.\nPressureVessel =  Tank that stores fluid under pressure.\nWaterStorage_General =\t Tank that stores water sufficient to meet general requirements for a designated period of time and supplies it to points of outlet\nWaterStorage_Potable =\t Tank that stores water sufficient to meet potable water requirements for a designated period of time and supplies it to points of outlet\nWaterStorage_Process =\t Tank that stores water sufficient to meet process and/or production requirements for a designated period of time and supplies it to points of outlet\nWaterStorage_CoolingTowerMakeup =\t Tank that stores water sufficient to meet cooling tower make up water requirements for a designated period of time and supplies it to points of outlet\n"},
			new SingleValuePropertyType("EffectiveCapacity", "IfcVolumeMeasure") { Definition = "The effective or actual volumetric capacity of the tank."},
			new SingleValuePropertyType("MaterialThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material from which the tank is constructed"},
			new SingleValuePropertyType("NominalCapacity", "IfcVolumeMeasure") { Definition = "The nominal or design volumetric capacity of the tank."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "The nominal depth of the tank.\n\nNote: Not required for a horizontal cylindrical tank."},
			new SingleValuePropertyType("NominalLengthOrDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal length or, in the case of a vertical cylindrical tank, the nominal diameter of the tank"},
			new SingleValuePropertyType("NominalWidthOrDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal width or, in the case of a horizontal cylindrical tank, the nominal diameter of the tank.\n\nNote: Not required for a vertical cylindrical tank."},
			new SingleValuePropertyType("OperatingWeight", "IfcMassMeasure") { Definition = "Operating weight of the tank including all of its contents."} },
				new [] { "IfcTankType" });
		yield return new PropertySetInfo("Pset_TankTypeExpansion", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ChargePressure", "IfcPressureMeasure") { Definition = "Nominal or design operating pressure of the tank. "},
			new SingleValuePropertyType("PressureRegulatorSetting", "IfcPressureMeasure") { Definition = "Pressure that is automatically maintained in the tank. "},
			new SingleValuePropertyType("ReliefValveSetting", "IfcPressureMeasure") { Definition = "Pressure at which the relief valve activates. "} },
				new [] { "IfcTankType" });
		yield return new PropertySetInfo("Pset_TankTypePreformed", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EndShapeType", new [] { "CONCAVECONVEX", "FLATCONVEX", "CONVEXCONVEX", "CONCAVEFLAT", "FLATFLAT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of end shapes that can be used for preformed tanks. The convention for reading these enumerated values is that for a vertical cylinder, the first value is the base and the second is the top; for a horizontal cylinder, the order of reading should be left to right. For a speherical tank, the value UNSET should be used."},
			new EnumerationPropertyType("PatternType", new [] { "HORIZONTALCYLINDER", "VERTICALCYLINDER", "RECTANGULAR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of pattern (or shape of a tank that may be specified."},
			new SingleValuePropertyType("FirstCurvatureRadius", "IfcPositiveLengthMeasure") { Definition = "FirstCurvatureRadius should be defined as the base or left side radius of curvature value."},
			new SingleValuePropertyType("SecondCurvatureRadius", "IfcPositiveLengthMeasure") { Definition = "SecondCurvatureRadius should be defined as the top or right side radius of curvature value."} },
				new [] { "IfcTankType" });
		yield return new PropertySetInfo("Pset_TankTypePressureVessel", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ChargePressure", "IfcPressureMeasure") { Definition = "Nominal or design operating pressure of the tank. "},
			new SingleValuePropertyType("PressureRegulatorSetting", "IfcPressureMeasure") { Definition = "Pressure that is automatically maintained in the tank. "},
			new SingleValuePropertyType("ReliefValveSetting", "IfcPressureMeasure") { Definition = "Pressure at which the relief valve activates. "} },
				new [] { "IfcTankType" });
		yield return new PropertySetInfo("Pset_TankTypeSectional", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfSections", "IfcInteger") { Definition = "Number of sections used in the construction of the tank\n\nNote: All sections assumed to be the same size."},
			new SingleValuePropertyType("SectionLength", "IfcPositiveLengthMeasure") { Definition = "The length of a section used in the construction of the tank"},
			new SingleValuePropertyType("SectionWidth", "IfcPositiveLengthMeasure") { Definition = "The width of a section used in the construction of the tank."} },
				new [] { "IfcTankType" });
		yield return new PropertySetInfo("Pset_ThermalLoadAggregate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ApplianceDiversity", "IfcPositiveRatioMeasure") { Definition = "Diversity of appliance load. "},
			new SingleValuePropertyType("InfiltrationDiversitySummer", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Summer infiltration. "},
			new SingleValuePropertyType("InfiltrationDiversityWinter", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Winter infiltration. "},
			new SingleValuePropertyType("LightingDiversity", "IfcPositiveRatioMeasure") { Definition = "Lighting diversity. "},
			new SingleValuePropertyType("LoadSafetyFactor", "IfcPositiveRatioMeasure") { Definition = "Load safety factor. "},
			new SingleValuePropertyType("TotalCoolingLoad", "IfcPowerMeasure") { Definition = "The peak total cooling load for the building, zone or space."},
			new SingleValuePropertyType("TotalHeatingLoad", "IfcPowerMeasure") { Definition = "The peak total heating load for the building, zone or space."} },
				new [] { "IfcSpatialStructureElement", "IfcSystem", "IfcZone" });
		yield return new PropertySetInfo("Pset_ThermalLoadDesignCriteria", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AppliancePercentLoadToRadiant", "IfcPositiveRatioMeasure") { Definition = "Percent of sensible load to radiant heat. "},
			new SingleValuePropertyType("LightingLoadIntensity", "IfcReal") { Definition = "Average lighting load intensity in the space per unit area (PowerMeasure/IfcAreaMeasure) "},
			new SingleValuePropertyType("LightingPercentLoadToReturnAir", "IfcPositiveRatioMeasure") { Definition = "Percent of lighting load to the return air plenum. "},
			new SingleValuePropertyType("OccupancyDiversity", "IfcPositiveRatioMeasure") { Definition = "Diversity factor that may be applied to the number of people in the space. "},
			new SingleValuePropertyType("OutsideAirPerPerson", "IfcVolumetricFlowRateMeasure") { Definition = "Design quantity of outside air to be provided per person in the space. "},
			new SingleValuePropertyType("ReceptacleLoadIntensity", "IfcReal") { Definition = "Average power use intensity of appliances and other non-HVAC equipment.in the space per unit area.(PowerMeasure/IfcAreaMeasure) "} },
				new [] { "IfcBuilding", "IfcSpatialStructureElement", "IfcSystem", "IfcZone" });
		yield return new PropertySetInfo("Pset_TransformerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SecondaryCurrentType", new [] { "AC", "DC", "NotKnown", "Unset" } ) { Definition = "A list of the secondary current types that can result from transformer output"},
			new SingleValuePropertyType("MaximumApparentPower", "IfcPowerMeasure") { Definition = "Maximum apparent power/capacity in VA (volt ampere)."},
			new SingleValuePropertyType("PrimaryApparentPower", "IfcPowerMeasure") { Definition = "The power in VA (volt ampere) that has been transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryVoltage", "IfcElectricVoltageMeasure") { Definition = "The voltage that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("SecondaryApparentPower", "IfcPowerMeasure") { Definition = "The power in VA (volt ampere) that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryVoltage", "IfcElectricVoltageMeasure") { Definition = "The voltage that has been transformed and is running out of the transformer on the secondary side."} },
				new [] { "IfcTransformerType" });
		yield return new PropertySetInfo("Pset_TransportElementCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere whether the transport element (in case of e.g., a lift) is designed to serve as a fire exit, e.g., for fire escape purposes."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"} },
				new [] { "IfcTransportElement" });
		yield return new PropertySetInfo("Pset_TransportElementElevator", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ClearDepth", "IfcPositiveLengthMeasure") { Definition = "Clear depth of the object (elevator). It indicates the distance from the inner surface of the elevator door to the opposite surface of the elevator car. \nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("ClearHeight", "IfcPositiveLengthMeasure") { Definition = "Clear height of the object (elevator).  \nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("ClearWidth", "IfcPositiveLengthMeasure") { Definition = "Clear width of the object (elevator). It indicates the distance from the inner surfaces of the elevator car left and right from the elevator door. \nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."} },
				new [] { "IfcTransportElement" });
		yield return new PropertySetInfo("Pset_TubeBundleTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FoulingFactor", "IfcThermalResistanceMeasure") { Definition = "Fouling factor of the tubes in the tube bundle."},
			new SingleValuePropertyType("HasTurbulator", "IfcBoolean") { Definition = "TRUE if the tube has a turbulator, FALSE if it does not."},
			new SingleValuePropertyType("HorizontalSpacing", "IfcPositiveLengthMeasure") { Definition = "Horizontal spacing between tubes in the tube bundle."},
			new SingleValuePropertyType("InLineRowSpacing", "IfcPositiveLengthMeasure") { Definition = "In-line tube row spacing."},
			new SingleValuePropertyType("InsideDiameter", "IfcPositiveLengthMeasure") { Definition = "Actual inner diameter of the tube in the tube bundle."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "Length of the tubes in the tube bundle."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal diameter or width of the tubes in the tube bundle."},
			new SingleValuePropertyType("NumberOfCircuits", "IfcInteger") { Definition = "Number of parallel fluid tube circuits."},
			new SingleValuePropertyType("NumberOfRows", "IfcInteger") { Definition = "Number of tube rows in the tube bundle assembly."},
			new SingleValuePropertyType("OutsideDiameter", "IfcPositiveLengthMeasure") { Definition = "Actual outside diameter of the tube in the tube bundle."},
			new SingleValuePropertyType("StaggeredRowSpacing", "IfcPositiveLengthMeasure") { Definition = "Staggered tube row spacing."},
			new SingleValuePropertyType("ThermalConductivity", "IfcThermalConductivityMeasure") { Definition = "The thermal conductivity of the tube."},
			new SingleValuePropertyType("VerticalSpacing", "IfcPositiveLengthMeasure") { Definition = "Vertical spacing between tubes in the tube bundle."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Total volume of fluid in the tubes and their headers."} },
				new [] { "IfcTubeBundleType" });
		yield return new PropertySetInfo("Pset_TubeBundleTypeFinned", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Diameter", "IfcPositiveLengthMeasure") { Definition = "Actual diameter of a fin for circular fins only."},
			new SingleValuePropertyType("FinCorrugatedType", "IfcLabel") { Definition = "Description of a fin corrugated type."},
			new SingleValuePropertyType("HasCoating", "IfcBoolean") { Definition = "TRUE if the fin has a coating, FALSE if it does not."},
			new SingleValuePropertyType("Height", "IfcPositiveLengthMeasure") { Definition = "Length of the fin as measured perpendicular to the direction of airflow."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "Length of the fin as measured parallel to the direction of airflow."},
			new SingleValuePropertyType("Spacing", "IfcPositiveLengthMeasure") { Definition = "Distance between fins on a tube in the tube bundle."},
			new SingleValuePropertyType("ThermalConductivity", "IfcThermalConductivityMeasure") { Definition = "The thermal conductivity of the fin."},
			new SingleValuePropertyType("Thickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the fin."} },
				new [] { "IfcTubeBundleType" });
		yield return new PropertySetInfo("Pset_UnitaryEquipmentTypeAirConditioningUnit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CondenserEnteringTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature of fluid entering condenser per manufacturer's listing (if available) "},
			new SingleValuePropertyType("CondenserFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Flow rate of fluid through the condenser per manufacturer's listing (if available) "},
			new SingleValuePropertyType("CondenserLeavingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Termperature of fluid leaving condenser per manufacturer's listing (if available) "},
			new SingleValuePropertyType("CoolingEfficiency", "IfcPositiveRatioMeasure") { Definition = "Coefficient of Performance: Ratio of cooling energy output to energy input under full load operating conditions per ARI Standards 210/240, 270, 275, 360, 340 and 365. "},
			new SingleValuePropertyType("HeatingCapacity", "IfcPowerMeasure") { Definition = "Heating capacity of the PackagedACUnit per ARI Standards 210/240, 270, 275, 360, 340 and 365 for heat pumps, AFUE for fuel burning and NEMA for electric heat. "},
			new SingleValuePropertyType("HeatingEfficiency", "IfcPositiveRatioMeasure") { Definition = "Heating efficiency of the PackagedACUnit under full load heating conditions per ARI Standards 210/240, 270, 275, 360, 340 and 365 for heat pumps, AFUE for fuel burning and NEMA for electric heat. "},
			new SingleValuePropertyType("LatentCoolingCapacity", "IfcPowerMeasure") { Definition = "Latent cooling capacity of the PackagedACUnit per ARI Standards 210/240, 270, 275, 360, 340 and 365. "},
			new SingleValuePropertyType("OutsideAirFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Flow rate of outside air entering the PackagedACUnit per the manufacturer's listing (if available) "},
			new SingleValuePropertyType("SensibleCoolingCapacity", "IfcPowerMeasure") { Definition = "Sensible cooling capacity of the PackagedACUnit per ARI Standards 210/240, 270, 275, 360, 340 and 365. "} },
				new [] { "IfcUnitaryEquipmentType" });
		yield return new PropertySetInfo("Pset_UnitaryEquipmentTypeAirHandler", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirHandlerConstruction", new [] { "MANUFACTUREDITEM", "CONSTRUCTEDONSITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining how the air handler might be fabricated. "},
			new EnumerationPropertyType("AirHandlerFanCoilArrangement", new [] { "BLOWTHROUGH", "DRAWTHROUGH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the arrangement of the supply air fan and the cooling coil. "},
			new SingleValuePropertyType("DualDeck", "IfcBoolean") { Definition = "Does the AirHandler have a dual deck? TRUE = Yes, FALSE = No. "} },
				new [] { "IfcUnitaryEquipmentType" });
		yield return new PropertySetInfo("Pset_UtilityConsumption", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_ValvePHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPerformanceHistory" });
		yield return new PropertySetInfo("Pset_ValveTypeAirRelease", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsAutomatic", "IfcBoolean") { Definition = "Indication of whether the valve is automatically operated (TRUE) or manually operated (FALSE)"} },
				new [] { "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ValveMechanism", new [] { "BALL", "BUTTERFLY", "CONFIGUREDGATE", "GLAND", "GLOBE", "LUBRICATEDPLUG", "NEEDLE", "PARALLELSLIDE", "PLUG", "WEDGEGATE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The mechanism by which the valve function is achieved where:\n\nBALL Valve that has a ported ball that can be turned relative to the body seat ports\nBUTTERFLY Valve in which a streamlined disc pivots about a diametric axis\nCONFIGUREDGATE Screwdown valve in which the closing gate is shaped in a configured manner to have a more precise control of pressure and flow change across the valve.\nGLAND Valve with a tapered seating, in which a rotatable plug is retained by means of a gland and gland packing\nGLOBE Screwdown valve that has a spherical body\nLUBRICATEDPLUG Plug valve in which a lubricant is injected under pressure between the plug face and the body\nNEEDLE Valve for regulating the flow in or from a pipe, in which a slender cone moves along the axis of flow to close against a fixed conical seat\nPARALLELSLIDE Screwdown valve that has a machined plate that slides in formed grooves to form a seal\nPLUG Valve that has a ported plug that can be turned relative to the body seat ports\nWEDGEGATE Screwdown valve that has a wedge shaped plate fitting into tapered guides to form a seal"},
			new EnumerationPropertyType("ValveOperation", new [] { "DROPWEIGHT", "FLOAT", "HYDRAULIC", "LEVER", "LOCKSHIELD", "MOTORIZED", "PNEUMATIC", "SOLENOID", "SPRING", "THERMOSTATIC", "WHEEL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The method of valve operation where:\n\nDROPWEIGHT = A valve that is closed by the action of a weighted lever being released, the weight normally being prevented from dropping by being held by a wire, the closure normally being made by the action of heat on a fusible link in the wire\nFLOAT = A valve that is opened and closed by the action of a float that rises and falls with water level. The float may be a ball attached to a lever or other mechanism\nHYDRAULIC = A valve that is opened and closed by hydraulic actuation\nLEVER = A valve that is opened and closed by the action of a lever rotating the gate within the valve.\nLOCKSHIELD = A valve that requires the use of a special lockshield key for opening and closing, the operating mechanism being protected by a shroud during normal operation.\nMOTORIZED = A valve that is opened and closed by the action of an electric motor on an actuator\nPNEUMATIC = A valve that is opened and closed by pneumatic actuation\nSOLENOID = A valve that is normally held open by a magnetic field in a coil acting on the gate but that is closed immediately if the electrical current generating the magnetic field is removed. \nSPRING = A valve that is normally held in position by the pressure of a spring on a plate but that may be caused to open if the pressure of the fluid is sufficient to overcome the spring pressure. \nTHERMOSTATIC = A valve in which the ports are opened or closed to maintain a required predetermined temperature.\nWHEEL = A valve that is opened and closed by the action of a wheel moving the gate within the valve."},
			new EnumerationPropertyType("ValvePattern", new [] { "SINGLEPORT", "ANGLED_2_PORT", "STRAIGHT_2_PORT", "STRAIGHT_3_PORT", "CROSSOVER_4_PORT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The configuration of the ports of a valve according to either the linear route taken by a fluid flowing through the valve or by the number of ports where:\n\nSINGLEPORT = Valve that has a single entry port from the system that it serves, the exit port being to the surrounding environment.\nANGLED_2_PORT = Valve in which the direction of flow is changed through 90 degrees\nSTRAIGHT_2_PORT = Valve in which the flow is straight through\nSTRAIGHT_3_PORT = Valve with three separate ports\nCROSSOVER_4_PORT = Valve with 4 separate ports\n"},
			new SingleValuePropertyType("CloseOffRating", "IfcPressureMeasure") { Definition = "Close off rating."},
			new SingleValuePropertyType("FlowCoefficient", "IfcReal") { Definition = "Flow coefficient (the quantity of fluid that passes through a fully open valve at unit pressure drop), typically expressed as the Kv or Cv value for the valve."},
			new SingleValuePropertyType("Size", "IfcPositiveLengthMeasure") { Definition = "The size of the connection to the valve (or to each connection for faucets, mixing valves, etc.)"},
			new SingleValuePropertyType("TestPressure", "IfcPressureMeasure") { Definition = "The maximum pressure to which the valve has been subjected under test"},
			new SingleValuePropertyType("WorkingPressure", "IfcPressureMeasure") { Definition = "The normally expected maximum working pressure of the valve"} },
				new [] { "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeDrawOffCock", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasHoseUnion", "IfcBoolean") { Definition = "Indicates whether the drawoff cock is fitted with a hose union connection (= TRUE) or not (= FALSE)"} },
				new [] { "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeFaucet", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FaucetFunction", new [] { "COLD", "HOT", "MIXED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the operating temperature of a faucet that may be specified."},
			new EnumerationPropertyType("FaucetOperation", new [] { "CERAMICDISC", "LEVERHANDLE", "NONCONCUSSIVESELFCLOSING", "QUATERTURN", "QUICKACTION", "SCREWDOWN", "SELFCLOSING", "TIMEDSELFCLOSING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the range of ways in which a faucet can be operated that may be specified where:\n\nCeramicDisc =\t Quick action faucet with a ceramic seal to open or close the orifice\nLeverHandle =\t Quick action faucet that is operated by a lever handle\nNonConcussiveSelfClosing =\t Self closing faucet that does not induce surge pressure\nQuarterTurn =\t Quick action faucet that can be fully opened or shut by turning the operating mechanism through 90 degrees.\nQuickAction =\t Faucet that can be opened or closed fully with a single small movement of the operating mechanism\nScrewDown =\t Faucet in which a plate or disc is moved, by the rotation of a screwed spindle, to close or open the orifice.\nSelfClosing =\t Faucet that is opened by pressure of the top of an operating spindle and is closed under the action of a spring or weight when the pressure is released\nTimedSelfClosing = \tSelf closing faucet that discharges for a predetermined period of time\n"},
			new EnumerationPropertyType("FaucetType", new [] { "BIB", "GLOBE", "DIVERTER", "DIVIDEDFLOWCOMBINATION", "PILLAR", "SINGLEOUTLETCOMBINATION", "SPRAY", "SPRAYMIXING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the range of faucet types that may be specified where:\n\nBib =\t Faucet with a horizontal inlet and a nozzle that discharges downwards.\nGlobe =\t Faucet fitted through the end of a bath, with a horizontal inlet, a partially spherical body and a vertical nozzle.\nDiverter =\tCombination faucet assembly with a valve to enable the flow of mixed water to be transferred to a showerhead.\nDividedFlowCombination =\t Combination faucet assembly in which hot and cold water are kept separate until emerging from a common nozzle\nPillar =\t Faucet that has a vertical inlet and a nozzle that discharges downwards\nSingleOutletCombination =\t Combination faucet assembly in which hot and cold water mix before emerging from a common nozzle\nSpray =\t Faucet with a spray outlet\nSprayMixing =\t Spray faucet connected to hot and cold water supplies that delivers water at a temperature determined during use.\n"},
			new SingleValuePropertyType("FaucetTopDescription", "IfcText") { Definition = "Description of the operating mechanism/top of the faucet"},
			new SingleValuePropertyType("Finish", "IfcText") { Definition = "Description of the finish applied to the faucet"} },
				new [] { "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeFlushing", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FlushingRate", "IfcVolumetricFlowRateMeasure") { Definition = "The predetermined quantity of water to be flushed"},
			new SingleValuePropertyType("HasIntegralShutOffDevice", "IfcBoolean") { Definition = "Indication of whether the flushing valve has an integral shut off device fitted (set TRUE) or not (set FALSE)"},
			new SingleValuePropertyType("IsHighPressure", "IfcBoolean") { Definition = "Indication of whether the flushing valve is suitable for use on a high pressure water main (set TRUE) or not (set FALSE)"} },
				new [] { "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeGasTap", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasHoseUnion", "IfcBoolean") { Definition = "Indicates whether the gas tap is fitted with a hose union connection (= TRUE) or not (= FALSE)"} },
				new [] { "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeIsolating", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("IsolatingPurpose", new [] { "LANDING", "LANDINGWITHPRESSUREREGULATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the purpose for which the isolating valve is used since the way in which the valve is identified as an isolating valve may be in the context of its use. Note that unless there is a contextual name for the isolating valve (as in the case of a Landing Valve on a rising fire main), then the value assigned shoulkd be UNSET"},
			new SingleValuePropertyType("IsNormallyOpen", "IfcBoolean") { Definition = "If TRUE, the valve is normally open. If FALSE is is normally closed. "} },
				new [] { "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeMixing", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MixerControl", new [] { "MANUAL", "PREDEFINED", "THERMOSTATIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the form of control of the mixing valve."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The size of the pipework connection from the mixing valve."} },
				new [] { "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypePressureReducing", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DownstreamPressure", "IfcPressureMeasure") { Definition = "The operating pressure of the fluid downstream of the pressure reducing valve"},
			new SingleValuePropertyType("UpstreamPressure", "IfcPressureMeasure") { Definition = "The operating pressure of the fluid upstream of the pressure reducing valve"} },
				new [] { "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypePressureRelief", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ReliefPressure", "IfcPressureMeasure") { Definition = "The pressure at which the spring or weight in the valve is set to discharge fluid"} },
				new [] { "IfcValveType" });
		yield return new PropertySetInfo("Pset_VibrationIsolatorTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Height", "IfcPositiveLengthMeasure") { Definition = "Height of the vibration isolator before tha application of load. "},
			new SingleValuePropertyType("IsolatorCompressibility", "IfcRatioMeasure") { Definition = "The compressibility of the vibration isolator."},
			new SingleValuePropertyType("IsolatorStaticDeflection", "IfcLengthMeasure") { Definition = "Static deflection of the vibration isolator."},
			new SingleValuePropertyType("MaximumSupportedWeight", "IfcMassMeasure") { Definition = "The maximum weight that can be carried by the vibration isolator. "},
			new SingleValuePropertyType("VibrationTransmissibility", "IfcPositiveRatioMeasure") { Definition = "The vibration transmissibility percentage."} },
				new [] { "IfcVibrationIsolatorType" });
		yield return new PropertySetInfo("Pset_WallCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is giving according to the national building code. It indicates the sound transmission resistance of this object by an index ration (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Compartmentation", "IfcBoolean") { Definition = "Indication whether the object is designed to serve as a fire compartmentation (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("ExtendToStructure", "IfcBoolean") { Definition = "Indicates whether the object extend to the structure above (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface,\nIt is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nHere the total thermal transmittance coefficient through the wall (including all materials)."} },
				new [] { "IfcWall", "IfcWallStandardCase" });
		yield return new PropertySetInfo("Pset_Warranty", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Exclusions", "IfcText") { Definition = "Items, conditions or actions that may be excluded from the warranty or that may cause the warranty to become void."},
			new SingleValuePropertyType("IsExtendedWarranty", "IfcBoolean") { Definition = "Indication of whether this is an extended warranty whose duration is greater than that normally assigned to an artefact (=TRUE) or not (= FALSE)"},
			new SingleValuePropertyType("WarrantyContent", "IfcText") { Definition = "The content of the warranty"},
			new SingleValuePropertyType("WarrantyIdentifier", "IfcIdentifier") { Definition = "The identifier assigned to a warranty."},
			new SingleValuePropertyType("WarrantyPeriod", "IfcTimeMeasure") { Definition = "The time duration during which a manufacturer or supplier guarantees or warrants the performance of an artefact."} },
				new [] { "IfcProduct", "IfcSystem" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeFloorTrap", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("InletPatternType", new [] { "None", "1", "2", "3", "4", "12", "13", "14", "23", "24", "34", "123", "124", "134", "234", "1234" } ) { Definition = "Identifies the pattern of inlet connections to a trap.\n\nA trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south).\n"},
			new EnumerationPropertyType("TrapType", new [] { "None", "P_Trap", "Q_Trap", "S_Trap", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of waste trap used in combination with the floor trap from which the type required may be set."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the trap."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the  trap."},
			new SingleValuePropertyType("HasStrainer", "IfcBoolean") { Definition = "Indicates whether the gully trap has a strainer (= TRUE) or not (= FALSE)"},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection(s), where used, of the inlet connections.\n\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("IsForSullageWater", "IfcBoolean") { Definition = "Indicates if the purpose of the floor trap is to receive sullage water, or if that is amongst its purposes (= TRUE), or not (= FALSE). Note that if TRUE, it is expected that an upstand or kerb will be placed around the floor trap to prevent the ingress of surface water runoff; the provision of the upstand or kerb is not dealt with in this property set."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the chamber of the  trap."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the chamber of the trap."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the chamber of the trap."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object"},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the terminal."} },
				new [] { "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeFloorWaste", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the waste."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the  waste."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the waste."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the waste."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the waste."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object"} },
				new [] { "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeGreaseInterceptor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the z-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the grease interceptor."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system of the cover of the grease interceptor."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the x-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the y-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection."},
			new SingleValuePropertyType("StrainerDepth", "IfcPositiveLengthMeasure") { Definition = "Depth, measured in elevation view, of the strainer basket."},
			new SingleValuePropertyType("StrainerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter, measured in plan view, of the strainer basket."} },
				new [] { "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeGullySump", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BackInletPatternType", new [] { "None", "1", "2", "3", "4", "12", "13", "14", "23", "24", "34", "123", "124", "134", "234", "1234" } ) { Definition = "Identifies the pattern of inlet connections to a gully trap.\n\nA gulley trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the gully trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south).\n\n               2\n               |\n   ----------------\n   !                       |\n1-|                       |-3\n   !                       |\n   ----------------\n               |\n              4"},
			new EnumerationPropertyType("GullyType", new [] { "Vertical", "BackInlet", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of gully from which the type required may be set."},
			new EnumerationPropertyType("TrapType", new [] { "None", "P_Trap", "Q_Trap", "S_Trap", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of trap from which the type required may be set."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the gully trap."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the gully trap."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection(s), where used, of the inlet connections.\n\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("NominalSumpDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the sump."},
			new SingleValuePropertyType("NominalSumpLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the sump."},
			new SingleValuePropertyType("NominalSumpWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the sump."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object"} },
				new [] { "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeGullyTrap", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BackInletPatternType", new [] { "None", "1", "2", "3", "4", "12", "13", "14", "23", "24", "34", "123", "124", "134", "234", "1234" } ) { Definition = "Identifies the pattern of inlet connections to a gully trap.\n\nA gulley trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the gully trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south).\n"},
			new EnumerationPropertyType("GullyType", new [] { "Vertical", "BackInlet", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of gully from which the type required may be set."},
			new EnumerationPropertyType("TrapType", new [] { "None", "P_Trap", "Q_Trap", "S_Trap", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of trap from which the type required may be set."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the gully trap."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the gully trap."},
			new SingleValuePropertyType("HasStrainer", "IfcBoolean") { Definition = "Indicates whether the gully trap has a strainer (= TRUE) or not (= FALSE)"},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection(s), where used, of the inlet connections.\n\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the chamber of the gully trap."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the chamber of the gully trap."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the chamber of the gully trap."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object"} },
				new [] { "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeOilInterceptor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the oil interceptor."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system of the cover of the oil interceptor."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the z-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the x-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the y-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection."} },
				new [] { "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypePetrolInterceptor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the oil interceptor."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system of the cover of the oil interceptor."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted =length, measured along the z-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the x-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the y-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection."},
			new SingleValuePropertyType("VentilatingPipeSize", "IfcPositiveLengthMeasure") { Definition = "Size of the ventilating pipe(s)"} },
				new [] { "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeRoofDrain", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the drain."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the  drain."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the drain."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the drain."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the drain."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object"} },
				new [] { "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeWasteDisposalUnit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DrainConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the drain connection inlet to the waste disposal unit."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object measured from the inlet drain connection to the base of the unit."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the waste disposal unit"} },
				new [] { "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeWasteTrap", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("WasteTrapType", new [] { "None", "P_Trap", "Q_Trap", "S_Trap", "Other", "NotKnown", "Unset" } ) { Definition = "Identifies the predefined types of trap from which the type required may be set."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection(s), where used, of the inlet connections.\n\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object"} },
				new [] { "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WindowCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is giving according to the national building code. It indicates the sound transmission resistance of this object by an index ration (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("GlazingAreaFraction", "IfcPositiveRatioMeasure") { Definition = "Fraction of the glazing area relative to the total area of the filling element. \nIt shall be used, if the glazing area is not given separately for all panels within the filling element. "},
			new SingleValuePropertyType("Infiltration", "IfcVolumetricFlowRateMeasure") { Definition = "Infiltration flowrate of outside air for the filler object based on the area of the filler object at a pressure level of 50 Pascals. It shall be used, if the length of all joints is unknown. "},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"},
			new SingleValuePropertyType("SecurityRating", "IfcLabel") { Definition = "Index based rating system indicating security level.\nIt is giving according to the national building code."},
			new SingleValuePropertyType("SmokeStop", "IfcBoolean") { Definition = "Indication whether the object is designed to provide a smoke stop (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nIt applies to the total door construction."} },
				new [] { "IfcWindow" });
		yield return new PropertySetInfo("Pset_ZoneCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Category", "IfcLabel") { Definition = "Category of space usage or utilization of the area. It is defined according to the presiding national building code."},
			new SingleValuePropertyType("GrossAreaPlanned", "IfcAreaMeasure") { Definition = "Total planned gross area for the space. Used for programming the space."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication whether this space (in case of e.g., a toilet) is designed to serve as an accessible space for handicapped people, e.g., for a public toilet (TRUE) or not (FALSE). This information is often used to declare the need for access for the disabled and for special design requirements of this space."},
			new SingleValuePropertyType("NetAreaPlanned", "IfcAreaMeasure") { Definition = "Total planned net area for the space. Used for programming the space."},
			new SingleValuePropertyType("PubliclyAccessible", "IfcBoolean") { Definition = "Indication whether this space (in case of e.g., a toilet) is designed to serve as a publicly accessible space, e.g., for a public toilet (TRUE) or not (FALSE). "},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')"} },
				new [] { "IfcZone" });
	}

	private static IEnumerable<PropertySetInfo> GetPropertiesIFC4()
	{
		yield return new PropertySetInfo("Pset_ActionRequest", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("RequestComments", "IfcText") { Definition = "Comments that may be made on the request."},
			new SingleValuePropertyType("RequestSourceLabel", "IfcLabel") { Definition = "A specific name or label that further qualifies the identity of a request source. In the event of an email, this may be the email address."} },
				new [] { "IfcActionRequest" });
		yield return new PropertySetInfo("Pset_ActorCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Category", "IfcLabel") { Definition = "Designation of the category into which the actors in the population belong."},
			new SingleValuePropertyType("NumberOfActors", "IfcCountMeasure") { Definition = "The number of actors that are to be dealt with together in the population."},
			new SingleValuePropertyType("SkillLevel", "IfcLabel") { Definition = "Skill level exhibited by the actor and which indicates an extent of their capability to perform actions on the artefacts upon which they can act."} },
				new [] { "IfcActor" });
		yield return new PropertySetInfo("Pset_ActuatorPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcActuator" });
		yield return new PropertySetInfo("Pset_ActuatorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Application", new [] { "EntryExitDevice", "FireSmokeDamperActuator", "DamperActuator", "ValvePositioner", "LampActuator", "SunblindActuator", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates application of actuator."},
			new EnumerationPropertyType("FailPosition", new [] { "FAILOPEN", "FAILCLOSED", "NOTKNOWN", "UNSET" } ) { Definition = "Specifies the required fail-safe position of the actuator."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ManualOverride", "IfcBoolean") { Definition = "Identifies whether hand-operated operation is provided as an override (= TRUE) or not (= FALSE). Note that this value should be set to FALSE by default in the case of a Hand Operated Actuator."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcActuator" });
		yield return new PropertySetInfo("Pset_ActuatorTypeElectricActuator", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectricActuatorType", new [] { "MOTORDRIVE", "MAGNETIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies electric actuator as defined by its operational principle."},
			new SingleValuePropertyType("ActuatorInputPower", "IfcPowerMeasure") { Definition = "Maximum input power requirement."} },
				new [] { "IfcActuator" });
		yield return new PropertySetInfo("Pset_ActuatorTypeHydraulicActuator", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InputFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum hydraulic flowrate requirement."},
			new SingleValuePropertyType("InputPressure", "IfcPressureMeasure") { Definition = "Maximum design pressure for the actuator."} },
				new [] { "IfcActuator" });
		yield return new PropertySetInfo("Pset_ActuatorTypeLinearActuation", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Force", "IfcForceMeasure") { Definition = "Indicates the maximum close-off force for the actuator."},
			new SingleValuePropertyType("Stroke", "IfcLengthMeasure") { Definition = "Indicates the maximum distance the actuator must traverse."} },
				new [] { "IfcActuator" });
		yield return new PropertySetInfo("Pset_ActuatorTypePneumaticActuator", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InputFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum input control air flowrate requirement."},
			new SingleValuePropertyType("InputPressure", "IfcPressureMeasure") { Definition = "Maximum input control air pressure requirement."} },
				new [] { "IfcActuator" });
		yield return new PropertySetInfo("Pset_ActuatorTypeRotationalActuation", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("RangeAngle", "IfcPlaneAngleMeasure") { Definition = "Indicates the maximum rotation the actuator must traverse."},
			new SingleValuePropertyType("Torque", "IfcTorqueMeasure") { Definition = "Indicates the maximum close-off torque for the actuator."} },
				new [] { "IfcActuator" });
		yield return new PropertySetInfo("Pset_AirSideSystemInformation", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirSideSystemDistributionType", new [] { "SINGLEDUCT", "DUALDUCT", "MULTIZONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "This enumeration defines the basic types of air side systems (e.g., SingleDuct, DualDuct, Multizone, etc.)."},
			new EnumerationPropertyType("AirSideSystemType", new [] { "CONSTANTVOLUME", "CONSTANTVOLUMESINGLEZONE", "CONSTANTVOLUMEMULTIPLEZONEREHEAT", "CONSTANTVOLUMEBYPASS", "VARIABLEAIRVOLUME", "VARIABLEAIRVOLUMEREHEAT", "VARIABLEAIRVOLUMEINDUCTION", "VARIABLEAIRVOLUMEFANPOWERED", "VARIABLEAIRVOLUMEDUALCONDUIT", "VARIABLEAIRVOLUMEVARIABLEDIFFUSERS", "VARIABLEAIRVOLUMEVARIABLETEMPERATURE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "This enumeration specifies the basic types of possible air side systems (e.g., Constant Volume, Variable Volume, etc.)."},
			new SingleValuePropertyType("AirflowSensible", "IfcVolumetricFlowRateMeasure") { Definition = "The air flowrate required to satisfy the sensible peak loads."},
			new SingleValuePropertyType("ApplianceDiversity", "IfcPositiveRatioMeasure") { Definition = "Diversity of appliance load."},
			new SingleValuePropertyType("CoolingTemperatureDelta", "IfcThermodynamicTemperatureMeasure") { Definition = "Cooling temperature difference for calculating space air flow rates."},
			new SingleValuePropertyType("Description", "IfcLabel") { Definition = "The description of the air side system."},
			new SingleValuePropertyType("EnergyGainSensible", "IfcPowerMeasure") { Definition = "The sum of total energy gains for the spaces served by the system during the peak cooling conditions, plus any system-level sensible energy gains."},
			new SingleValuePropertyType("EnergyGainTotal", "IfcPowerMeasure") { Definition = "The total amount of energy gains for the spaces served by the system during the peak cooling conditions, plus any system-level total energy gains."},
			new SingleValuePropertyType("EnergyLoss", "IfcPowerMeasure") { Definition = "The sum of energy losses for the spaces served by the system during the peak heating conditions."},
			new SingleValuePropertyType("FanPower", "IfcPowerMeasure") { Definition = "Fan motor loads contributing to the cooling load."},
			new SingleValuePropertyType("HeatingTemperatureDelta", "IfcThermodynamicTemperatureMeasure") { Definition = "Heating temperature difference for calculating space air flow rates."},
			new SingleValuePropertyType("InfiltrationDiversitySummer", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Summer infiltration."},
			new SingleValuePropertyType("InfiltrationDiversityWinter", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Winter infiltration."},
			new SingleValuePropertyType("LightingDiversity", "IfcPositiveRatioMeasure") { Definition = "Lighting diversity."},
			new SingleValuePropertyType("LoadSafetyFactor", "IfcPositiveRatioMeasure") { Definition = "Load safety factor."},
			new SingleValuePropertyType("Name", "IfcLabel") { Definition = "The name of the air side system."},
			new SingleValuePropertyType("TotalAirflow", "IfcVolumetricFlowRateMeasure") { Definition = "The total design supply air flowrate required for the system for either heating or cooling conditions, whichever is greater."},
			new SingleValuePropertyType("Ventilation", "IfcVolumetricFlowRateMeasure") { Definition = "Required outside air ventilation."} },
				new [] { "IfcSpace", "IfcSpatialZone", "IfcZone" });
		yield return new PropertySetInfo("Pset_AirTerminalBoxPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcAirTerminalBox" });
		yield return new PropertySetInfo("Pset_AirTerminalBoxTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ArrangementType", new [] { "SINGLEDUCT", "DUALDUCT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Terminal box arrangement.\nSingleDuct: Terminal box receives warm or cold air from a single air supply duct.\nDualDuct: Terminal box receives warm and cold air from separate air supply ducts."},
			new EnumerationPropertyType("ReheatType", new [] { "ELECTRICALREHEAT", "WATERCOILREHEAT", "STEAMCOILREHEAT", "GASREHEAT", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Terminal box reheat type."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AirflowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Range of airflow that can be delivered."},
			new SingleValuePropertyType("AirPressureRange", "IfcPressureMeasure") { Definition = "Allowable air static pressure range at the entrance of the air terminal box."},
			new SingleValuePropertyType("HasFan", "IfcBoolean") { Definition = "Terminal box has a fan inside (fan powered box)."},
			new SingleValuePropertyType("HasReturnAir", "IfcBoolean") { Definition = "Terminal box has return air mixed with supply air from duct work."},
			new SingleValuePropertyType("HasSoundAttenuator", "IfcBoolean") { Definition = "Terminal box has a sound attenuator."},
			new SingleValuePropertyType("HousingThickness", "IfcLengthMeasure") { Definition = "Air terminal box housing material thickness."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal airflow rate."},
			new SingleValuePropertyType("NominalDamperDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal damper diameter."},
			new SingleValuePropertyType("NominalInletAirPressure", "IfcPressureMeasure") { Definition = "Nominal airflow inlet static pressure."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operational range of the ambient air temperature."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("ReturnAirFractionRange", "IfcPositiveRatioMeasure") { Definition = "Allowable return air fraction range as a fraction of discharge airflow."} },
				new [] { "IfcAirTerminalBox" });
		yield return new PropertySetInfo("Pset_AirTerminalOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirflowType", new [] { "SUPPLYAIR", "RETURNAIR", "EXHAUSTAIR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the functional type of air flow through the terminal."},
			new EnumerationPropertyType("Location", new [] { "SIDEWALLHIGH", "SIDEWALLLOW", "CEILINGPERIMETER", "CEILINGINTERIOR", "FLOOR", "SILL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Location  (a single type of diffuser can be used for multiple locations); high means close to ceiling."},
			new SingleValuePropertyType("AirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The actual airflow rate as designed."} },
				new [] { "IfcAirTerminal" });
		yield return new PropertySetInfo("Pset_AirTerminalPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcAirTerminal" });
		yield return new PropertySetInfo("Pset_AirTerminalTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CoreType", new [] { "SHUTTERBLADE", "CURVEDBLADE", "REMOVABLE", "REVERSIBLE", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the way the core of the AirTerminal is constructed."},
			new EnumerationPropertyType("DischargeDirection", new [] { "PARALLEL", "PERPENDICULAR", "ADJUSTABLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Discharge direction of the air terminal.\n\nParallel: discharges parallel to mounting surface designed so that flow attaches to the surface.\nPerpendicular:  discharges away from mounting surface.\nAdjustable: both parallel and perpendicular discharge."},
			new EnumerationPropertyType("FaceType", new [] { "FOURWAYPATTERN", "SINGLEDEFLECTION", "DOUBLEDEFLECTION", "SIGHTPROOF", "EGGCRATE", "PERFORATED", "LOUVERED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies how the terminal face of an AirTerminal is constructed."},
			new EnumerationPropertyType("FinishType", new [] { "ANNODIZED", "PAINTED", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of finish for the air terminal."},
			new EnumerationPropertyType("FlowControlType", new [] { "DAMPER", "BELLOWS", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of flow control element that may be included as a part of the construction of the air terminal."},
			new EnumerationPropertyType("FlowPattern", new [] { "LINEARSINGLE", "LINEARDOUBLE", "LINEARFOURWAY", "RADIAL", "SWIRL", "DISPLACMENT", "COMPACTJET", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Flow pattern."},
			new EnumerationPropertyType("MountingType", new [] { "SURFACE", "FLATFLUSH", "LAYIN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The way the air terminal is mounted to the ceiling, wall, etc.\n\nSurface: mounted to the surface of something (e.g., wall, duct, etc.).\nFlat flush: mounted flat and flush with a surface.\nLay-in: mounted in a lay-in type ceiling (e.g., a dropped ceiling grid)."},
			new EnumerationPropertyType("Shape", new [] { "ROUND", "RECTANGULAR", "SQUARE", "SLOT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Shape of the air terminal. Slot is typically a long narrow supply device with an aspect ratio generally greater than 10 to 1."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AirDiffusionPerformanceIndex", "IfcReal") { Definition = "The Air Diffusion Performance Index (ADPI) is used for cooling mode conditions. If several measurements of air velocity and air temperature are made throughout the occupied zone of a space, the ADPI is the percentage of locations where measurements were taken that meet the specifications for effective draft temperature and air velocity."},
			new SingleValuePropertyType("AirFlowrateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Air flowrate range within which the air terminal is designed to operate."},
			new SingleValuePropertyType("CoreSetHorizontal", "IfcPlaneAngleMeasure") { Definition = "Degree of horizontal (in the X-axis of the LocalPlacement) blade set from the centerline."},
			new SingleValuePropertyType("CoreSetVertical", "IfcPlaneAngleMeasure") { Definition = "Degree of vertical (in the Y-axis of the LocalPlacement) blade set from the centerline."},
			new SingleValuePropertyType("EffectiveArea", "IfcAreaMeasure") { Definition = "Effective discharge area of the air terminal."},
			new SingleValuePropertyType("FinishColor", "IfcLabel") { Definition = "The finish color for the air terminal."},
			new SingleValuePropertyType("HasIntegralControl", "IfcBoolean") { Definition = "If TRUE, a self powered temperature control is included in the AirTerminal."},
			new SingleValuePropertyType("HasSoundAttenuator", "IfcBoolean") { Definition = "If TRUE, the air terminal has sound attenuation."},
			new SingleValuePropertyType("HasThermalInsulation", "IfcBoolean") { Definition = "If TRUE, the air terminal has thermal insulation."},
			new SingleValuePropertyType("NeckArea", "IfcAreaMeasure") { Definition = "Neck area of the air terminal."},
			new SingleValuePropertyType("NumberOfSlots", "IfcInteger") { Definition = "Number of slots."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("SlotLength", "IfcPositiveLengthMeasure") { Definition = "Slot length."},
			new SingleValuePropertyType("SlotWidth", "IfcPositiveLengthMeasure") { Definition = "Slot width."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature range within which the air terminal is designed to operate."},
			new SingleValuePropertyType("ThrowLength", "IfcLengthMeasure") { Definition = "The horizontal or vertical axial distance an airstream travels after leaving an AirTerminal before the maximum stream velocity is reduced to a specified terminal velocity under isothermal conditions at the upper value of the AirFlowrateRange."} },
				new [] { "IfcAirTerminal" });
		yield return new PropertySetInfo("Pset_AirToAirHeatRecoveryPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcAirToAirHeatRecovery" });
		yield return new PropertySetInfo("Pset_AirToAirHeatRecoveryTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("HeatTransferTypeEnum", new [] { "SENSIBLE", "LATENT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of heat transfer between the two air streams."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("HasDefrost", "IfcBoolean") { Definition = "has the heat exchanger has defrost function or not."},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range."},
			new SingleValuePropertyType("PrimaryAirflowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "possible range of primary airflow that can be delivered.."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("SecondaryAirflowRateRange", "IfcPressureMeasure") { Definition = "possible range of secondary airflow that can be delivered."} },
				new [] { "IfcAirToAirHeatRecovery" });
		yield return new PropertySetInfo("Pset_AlarmPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcAlarm" });
		yield return new PropertySetInfo("Pset_AlarmTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcAlarm" });
		yield return new PropertySetInfo("Pset_AnnotationContourLine", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ContourValue", "IfcLengthMeasure") { Definition = "Value of the elevation of the contour above or below a reference plane."} },
				new [] { "IfcAnnotation" });
		yield return new PropertySetInfo("Pset_AnnotationLineOfSight", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("RoadVisibleDistanceLeft", "IfcPositiveLengthMeasure") { Definition = "Distance visible to the left of the access."},
			new SingleValuePropertyType("RoadVisibleDistanceRight", "IfcPositiveLengthMeasure") { Definition = "Distance visible to the right of the access."},
			new SingleValuePropertyType("SetbackDistance", "IfcPositiveLengthMeasure") { Definition = "Setback distance from the point of connection on the major element along the axis of the minor element (e.g. distance from a public road at which the line of sigfht is measured."},
			new SingleValuePropertyType("VisibleAngleLeft", "IfcPositivePlaneAngleMeasure") { Definition = "Angle of visibility to the left of the access."},
			new SingleValuePropertyType("VisibleAngleRight", "IfcPositivePlaneAngleMeasure") { Definition = "Angle of visibility to the right of the access."} },
				new [] { "IfcAnnotation" });
		yield return new PropertySetInfo("Pset_AnnotationSurveyArea", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AcquisitionMethod", new [] { "GPS", "LASERSCAN_AIRBORNE", "LASERSCAN_GROUND", "SONAR", "THEODOLITE", "USERDEFINED", "NOTKNOWN", "UNSET" } ) { Definition = "The means by which survey data was acquired."},
			new SingleValuePropertyType("AccuracyQualityExpected", "IfcRatioMeasure") { Definition = "A measure of the accuracy quality of survey points as expected expressed in percentage terms."},
			new SingleValuePropertyType("AccuracyQualityObtained", "IfcRatioMeasure") { Definition = "A measure of the accuracy quality of survey points as obtained expressed in percentage terms."} },
				new [] { "IfcAnnotation" });
		yield return new PropertySetInfo("Pset_Asset", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssetAccountingType", new [] { "FIXED", "NONFIXED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of risk from which the type required may be set."},
			new EnumerationPropertyType("AssetInsuranceType", new [] { "PERSONAL", "REAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of insurance rating from which the type required may be set."},
			new EnumerationPropertyType("AssetTaxType", new [] { "CAPITALISED", "EXPENSED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of taxation group from which the type required may be set."} },
				new [] { "IfcAsset" });
		yield return new PropertySetInfo("Pset_AudioVisualAppliancePHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeAmplifier", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AmplifierType", new [] { "FIXED", "VARIABLE", "OTHER", "NOTKNOWN", "UNSET." } ) { Definition = "Indicates the type of amplifier."} },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeCamera", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CameraType", new [] { "PHOTO", "VIDEO", "AUDIOVIDEO", "OTHER", "NOTKNOWN", "UNSET." } ) { Definition = "Indicates the type of camera."},
			new SingleValuePropertyType("IsOutdoors", "IfcBoolean") { Definition = "Indicates if camera is designed to be used outdoors."},
			new SingleValuePropertyType("PanHorizontal", "IfcLengthMeasure") { Definition = "Indicates horizontal range for panning."},
			new SingleValuePropertyType("PanVertical", "IfcLengthMeasure") { Definition = "Indicates vertical range for panning."},
			new SingleValuePropertyType("TiltHorizontal", "IfcPlaneAngleMeasure") { Definition = "Indicates horizontal range for pivoting, where positive values indicate the camera rotating clockwise,"},
			new SingleValuePropertyType("TiltVertical", "IfcPlaneAngleMeasure") { Definition = "Indicates vertical range for pivoting, where 0.0 is level, +90 degrees is looking up, -90 degrees is looking down."},
			new SingleValuePropertyType("VideoResolutionHeight", "IfcInteger") { Definition = "Indicates the number of vertical pixels (the largest native video resolution height)."},
			new SingleValuePropertyType("VideoResolutionWidth", "IfcInteger") { Definition = "Indicates the number of horizontal pixels (the largest native video resolution width)."},
			new SingleValuePropertyType("Zoom", "IfcPositiveLengthMeasure") { Definition = "Indicates the zoom range."} },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeDisplay", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DisplayType", new [] { "CRT", "DLP", "LCD", "LED", "PLASMA", "OTHER", "NOTKNOWN", "UNSET." } ) { Definition = "Indicates the type of display."},
			new EnumerationPropertyType("TouchScreen", new [] { "SINGLETOUCH", "MULTITOUCH", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates touchscreen support."},
			new SingleValuePropertyType("Brightness", "IfcIlluminanceMeasure") { Definition = "Indicates the display brightness."},
			new SingleValuePropertyType("ContrastRatio", "IfcPositiveRatioMeasure") { Definition = "Indicates the display contrast ratio."},
			new SingleValuePropertyType("DisplayHeight", "IfcPositiveLengthMeasure") { Definition = "Indicates the physical height of the screen (only the display surface)."},
			new SingleValuePropertyType("DisplayWidth", "IfcPositiveLengthMeasure") { Definition = "Indicates the physical width of the screen (only the display surface)."},
			new SingleValuePropertyType("NominalSize", "IfcPositiveLengthMeasure") { Definition = "Indicates the diagonal screen size."},
			new SingleValuePropertyType("RefreshRate", "IfcFrequencyMeasure") { Definition = "Indicates the display refresh frequency."},
			new SingleValuePropertyType("VideoResolutionHeight", "IfcInteger") { Definition = "Indicates the number of vertical pixels, e.g. 1080."},
			new SingleValuePropertyType("VideoResolutionWidth", "IfcInteger") { Definition = "Indicates the number of horizontal pixels, e.g. 1920."} },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypePlayer", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PlayerType", new [] { "AUDIO", "VIDEO", "OTHER", "NOTKNOWN", "UNSET." } ) { Definition = "Indicates the type of player."},
			new SingleValuePropertyType("PlayerMediaEject", "IfcBoolean") { Definition = "Indicates whether the media can be ejected from the player (if physical media)."} },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeProjector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ProjectorType", new [] { "OTHER", "NOTKNOWN", "UNSET." } ) { Definition = "Indicates the type of projector."},
			new SingleValuePropertyType("VideoResolutionHeight", "IfcInteger") { Definition = "Indicates the number of vertical pixels (the largest native video resolution height)."},
			new SingleValuePropertyType("VideoResolutionWidth", "IfcInteger") { Definition = "Indicates the number of horizontal pixels (the largest native video resolution width)."} },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeReceiver", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ReceiverType", new [] { "AUDIO", "AUDIOVIDEO", "OTHER", "NOTKNOWN", "UNSET." } ) { Definition = "Indicates the type of receiver."} },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeSpeaker", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SpeakerMounting", new [] { "FREESTANDING", "CEILING", "WALL", "OUTDOOR", "OTHER", "NOTKNOWN", "UNSET." } ) { Definition = "Indicates how the speaker is designed to be mounted."},
			new EnumerationPropertyType("SpeakerType", new [] { "FULLRANGE", "MIDRANGE", "WOOFER", "TWEETER", "COAXIAL", "OTHER", "NOTKNOWN", "UNSET." } ) { Definition = "Indicates the type of speaker."},
			new SingleValuePropertyType("Impedence", "IfcFrequencyMeasure") { Definition = "Indicates the speaker impedence."} },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeTuner", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TunerType", new [] { "AUDIO", "VIDEO", "OTHER", "NOTKNOWN", "UNSET." } ) { Definition = "Indicates the tuner type."},
			new SingleValuePropertyType("TunerFrequency", "IfcFrequencyMeasure") { Definition = "Indicates the tuner frequencies, if applicable."} },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_BeamCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for the element. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("Roll", "IfcPlaneAngleMeasure") { Definition = "Rotation against the longitudinal axis - relative to the global Z direction for all beams that are non-vertical in regard to the global coordinate system (Profile direction equals global Z is Roll = 0.)\n\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only.\n\nNote: new property in IFC4"},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).\n\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only."},
			new SingleValuePropertyType("Span", "IfcPositiveLengthMeasure") { Definition = "Clear span for this object.\n\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of the element. Here the total thermal transmittance coefficient through the beam within the direction of the thermal flow (including all materials).\n\nNote: new property in IFC4"} },
				new [] { "IfcBeam" });
		yield return new PropertySetInfo("Pset_BoilerPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcBoiler" });
		yield return new PropertySetInfo("Pset_BoilerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EnergySource", new [] { "COAL", "COAL_PULVERIZED", "ELECTRICITY", "GAS", "OIL", "PROPANE", "WOOD", "WOOD_CHIP", "WOOD_PELLET", "WOOD_PULVERIZED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the energy source or fuel cumbusted to generate heat."},
			new EnumerationPropertyType("OperatingMode", new [] { "FIXED", "TWOSTEP", "MODULATING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the operating mode of the boiler."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("HeatTransferSurfaceArea", "IfcAreaMeasure") { Definition = "Total heat transfer area of the vessel."},
			new SingleValuePropertyType("IsWaterStorageHeater", "IfcBoolean") { Definition = "This is used to identify if the boiler has storage capacity (TRUE). If FALSE, then there is no storage capacity built into the boiler, such as an instantaneous hot water heater."},
			new SingleValuePropertyType("NominalEnergyConsumption", "IfcPowerMeasure") { Definition = "Nominal fuel consumption rate required to produce the total boiler heat output."},
			new SingleValuePropertyType("NominalPartLoadRatio", "IfcReal") { Definition = "Allowable part load ratio range."},
			new SingleValuePropertyType("OutletTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable outlet temperature of either the water or the steam."},
			new SingleValuePropertyType("PressureRating", "IfcPressureMeasure") { Definition = "Nominal pressure rating of the boiler as rated by the agency having jurisdiction."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("WaterInletTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable water inlet temperature range."},
			new SingleValuePropertyType("WaterStorageCapacity", "IfcVolumeMeasure") { Definition = "Water storage capacity."} },
				new [] { "IfcBoiler" });
		yield return new PropertySetInfo("Pset_BoilerTypeSteam", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaximumOutletPressure", "IfcLabel") { Definition = "Maximum steam outlet pressure."} },
				new [] { "IfcBoiler" });
		yield return new PropertySetInfo("Pset_BoilerTypeWater", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcBoiler" });
		yield return new PropertySetInfo("Pset_BuildingCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BuildingID", "IfcIdentifier") { Definition = "A unique identifier assigned to a building. A temporary identifier is initially assigned at the time of making a planning application. This temporary identifier is changed to a permanent identifier when the building is registered into a statutory buildings and properties database."},
			new SingleValuePropertyType("ConstructionMethod", "IfcLabel") { Definition = "The type of construction action to the building, the project deals with, e.g. new construction, renovation, refurbishment, etc."},
			new SingleValuePropertyType("FireProtectionClass", "IfcLabel") { Definition = "Main fire protection class for the building which is assigned from the fire protection classification table as given by the relevant national building code."},
			new SingleValuePropertyType("GrossPlannedArea", "IfcAreaMeasure") { Definition = "Total planned gross area for the building  Used for programming the building."},
			new SingleValuePropertyType("IsLandmarked", "IfcLogical") { Definition = "This builing is listed as a historic building (TRUE), or not (FALSE), or unknown."},
			new SingleValuePropertyType("IsPermanentID", "IfcBoolean") { Definition = "Indicates whether the identity assigned to a building is permanent (= TRUE) or temporary (=FALSE)."},
			new SingleValuePropertyType("NetPlannedArea", "IfcAreaMeasure") { Definition = "Total planned net area for the building  Used for programming the building."},
			new SingleValuePropertyType("NumberOfStoreys", "IfcInteger") { Definition = "The number of storeys within a building.\nCaptured for those cases where the IfcBuildingStorey entity is not used. Note that if IfcBuilingStorey is asserted and the number of storeys in a building can be determined from it, then this approach should be used in preference to setting a property for the number of storeys."},
			new SingleValuePropertyType("OccupancyType", "IfcLabel") { Definition = "Occupancy type for this object.\nIt is defined according to the presiding national building code."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal project type."},
			new SingleValuePropertyType("SprinklerProtection", "IfcBoolean") { Definition = "Indication whether this object is sprinkler protected (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SprinklerProtectionAutomatic", "IfcBoolean") { Definition = "Indication whether this object has an automatic sprinkler protection (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("YearOfConstruction", "IfcLabel") { Definition = "Year of construction of this building, including expected year of completion."},
			new SingleValuePropertyType("YearOfLastRefurbishment", "IfcLabel") { Definition = "Year of last major refurbishment, or reconstruction, of the building (applies to reconstruction works)."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_BuildingElementProxyCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for the element.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of the element. It is the total thermal transmittance coefficient through the building element proxy within the direction of the thermal flow (including all materials).\n\nNote: new property in IFC4"} },
				new [] { "IfcBuildingElementProxy" });
		yield return new PropertySetInfo("Pset_BuildingElementProxyProvisionForVoid", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcPositiveLengthMeasure") { Definition = "The requested depth or thickness of the provision for void."},
			new SingleValuePropertyType("Diameter", "IfcPositiveLengthMeasure") { Definition = "The requested diameter (in elevation) of the provision for void, only provided if the Shape property is set to \"round\"."},
			new SingleValuePropertyType("Height", "IfcPositiveLengthMeasure") { Definition = "The requested height (vertical extension in elevation) of the provision for void\", only provided if the Shape property is set to \"rectangle\"."},
			new SingleValuePropertyType("Shape", "IfcLabel") { Definition = "The shape form of the provision for void, the minimum set of agreed values includes 'Rectangle', 'Round', and 'Undefined'."},
			new SingleValuePropertyType("System", "IfcLabel") { Definition = "he building service system that requires the provision for voids, e.g. 'Air Conditioning', 'Plumbing', 'Electro', etc."},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The requested width (horizontal extension in elevation) of the provision for void, only provided if the Shape property is set to \"rectangle\"."} },
				new [] { "IfcBuildingElementProxy" });
		yield return new PropertySetInfo("Pset_BuildingStoreyCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AboveGround", "IfcLogical") { Definition = "Indication whether this building storey is fully above ground (TRUE), or below ground (FALSE), or partially above and below ground (UNKNOWN) - as in sloped terrain."},
			new SingleValuePropertyType("EntranceLevel", "IfcBoolean") { Definition = "Indication whether this building storey is an entrance level to the building (TRUE), or (FALSE) if otherwise."},
			new SingleValuePropertyType("GrossPlannedArea", "IfcAreaMeasure") { Definition = "Total planned area for the building storey. Used for programming the building storey."},
			new SingleValuePropertyType("LoadBearingCapacity", "IfcPlanarForceMeasure") { Definition = "Maximum load bearing capacity of the floor structure throughtout the storey as designed."},
			new SingleValuePropertyType("NetPlannedArea", "IfcAreaMeasure") { Definition = "Total planned net area for the building storey. Used for programming the building storey."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal project type."},
			new SingleValuePropertyType("SprinklerProtection", "IfcBoolean") { Definition = "Indication whether this object is sprinkler protected (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SprinklerProtectionAutomatic", "IfcBoolean") { Definition = "Indication whether this object has an automatic sprinkler protection (TRUE) or not (FALSE).\nIt should only be given, if the property \"SprinklerProtection\" is set to TRUE."} },
				new [] { "IfcBuildingStorey" });
		yield return new PropertySetInfo("Pset_BuildingSystemCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified instance of building system in this project (e.g. 'TRA/EL1'), The reference values depend on the local code of practice."} },
				new [] { "IfcBuildingSystem" });
		yield return new PropertySetInfo("Pset_BuildingUse", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MarketCategory", "IfcLabel") { Definition = "Category of use e.g. residential, commercial, recreation etc."},
			new SingleValuePropertyType("MarketSubCategoriesAvailableFuture", "IfcLabel") { Definition = "A list of the sub categories of property that are expected to be available in the future expressed in terms of IfcLabel."},
			new SingleValuePropertyType("MarketSubCategoriesAvailableNow", "IfcLabel") { Definition = "A list of the sub categories of property that are currently available expressed in terms of IfcLabel."},
			new SingleValuePropertyType("MarketSubCategory", "IfcLabel") { Definition = "Subset of category of use e.g. multi-family, 2 bedroom, low rise."},
			new SingleValuePropertyType("NarrativeText", "IfcText") { Definition = "Added information relating to the adjacent building use that is not appropriate to the general descriptive text associated with an entity through the inherited IfcRoot.Description."},
			new SingleValuePropertyType("PlanningControlStatus", "IfcLabel") { Definition = "Label of zoning category or class, or planning control category for the site or facility."},
			new SingleValuePropertyType("RentalRatesInCategoryFuture", "IfcMonetaryMeasure") { Definition = "Range of the cost rates for property expected to be available in the future in the required category."},
			new SingleValuePropertyType("RentalRatesInCategoryNow", "IfcMonetaryMeasure") { Definition = "Range of the cost rates for property currently available in the required category."},
			new SingleValuePropertyType("TenureModesAvailableFuture", "IfcLabel") { Definition = "A list of the tenure modes that are expected to be available in the future expressed in terms of IfcLabel."},
			new SingleValuePropertyType("TenureModesAvailableNow", "IfcLabel") { Definition = "A list of the tenure modes that are currently available expressed in terms of IfcLabel."},
			new SingleValuePropertyType("VacancyRateInCategoryFuture", "IfcPositiveRatioMeasure") { Definition = "Percentage of vacancy found in the particular category expected in the future."},
			new SingleValuePropertyType("VacancyRateInCategoryNow", "IfcPositiveRatioMeasure") { Definition = "Percentage of vacancy found in the particular category currently."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_BuildingUseAdjacent", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MarketCategory", "IfcLabel") { Definition = "Category of use e.g. residential, commercial, recreation etc."},
			new SingleValuePropertyType("MarketSubCategory", "IfcLabel") { Definition = "Subset of category of use e.g. multi-family, 2 bedroom, low rise."},
			new SingleValuePropertyType("NarrativeText", "IfcText") { Definition = "Added information relating to the adjacent building use that is not appropriate to the general descriptive text associated with an entity through the inherited IfcRoot.Description."},
			new SingleValuePropertyType("PlanningControlStatus", "IfcLabel") { Definition = "Label of zoning category or class, or planning control category for the site or facility."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_BurnerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EnergySource", new [] { "COAL", "COAL_PULVERIZED", "ELECTRICITY", "GAS", "OIL", "PROPANE", "WOOD", "WOOD_CHIP", "WOOD_PELLET", "WOOD_PULVERIZED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the energy source or fuel cumbusted to generate heat."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcBurner" });
		yield return new PropertySetInfo("Pset_CableCarrierFittingTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcCableCarrierFitting" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCableLadderSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("LadderConfiguration", "IfcText") { Definition = "Description of the configuration of the ladder structure used."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the segment."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width of the segment."} },
				new [] { "IfcCableCarrierSegment" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCableTraySegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasCover", "IfcBoolean") { Definition = "Indication of whether the cable tray has a cover (=TRUE) or not (= FALSE). By default, this value should be set to FALSE.."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the segment."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width of the segment."} },
				new [] { "IfcCableCarrierSegment" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCableTrunkingSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the segment."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width of the segment."},
			new SingleValuePropertyType("NumberOfCompartments", "IfcInteger") { Definition = "The number of separate internal compartments within the trunking."} },
				new [] { "IfcCableCarrierSegment" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcCableCarrierSegment" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeConduitSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConduitShapeType", new [] { "CIRCULAR", "OVAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The shape of the conduit segment."},
			new SingleValuePropertyType("IsRigid", "IfcBoolean") { Definition = "Indication of whether the conduit is rigid (= TRUE) or flexible (= FALSE)."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the segment."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width of the segment."} },
				new [] { "IfcCableCarrierSegment" });
		yield return new PropertySetInfo("Pset_CableFittingTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcCableFitting" });
		yield return new PropertySetInfo("Pset_CableSegmentOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("InstallationMethodFlagEnum", new [] { "INDUCT", "INSOIL", "ONWALL", "BELOWCEILING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Special installation conditions relating to particular types of installation based on IEC60364-5-52:2001 reference installation methods C and D."},
			new EnumerationPropertyType("MountingMethod", new [] { "PERFORATEDTRAY", "LADDER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The method of mounting cable segment occurrences on a cable carrier occurrence from which the method required can be selected. This is for the purpose of carrying out 'worst case' cable sizing calculations and may be a conceptual requirement rather than a statement of the physical occurrences of cable and carrier segments."},
			new SingleValuePropertyType("CarrierStackNumber", "IfcInteger") { Definition = "Number of carrier segments (tray, ladder etc.) that are vertically stacked (vertical is measured as the z-axis of the local coordinate system of the carrier segment)."},
			new SingleValuePropertyType("CurrentCarryingCapasity", "IfcElectricCurrentMeasure") { Definition = "Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a  specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature."},
			new SingleValuePropertyType("DesignAmbientTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The highest and lowest local ambient temperature likely to be encountered."},
			new SingleValuePropertyType("DistanceBetweenParallelCircuits", "IfcLengthMeasure") { Definition = "Distance measured between parallel circuits."},
			new SingleValuePropertyType("InstallationMethod", "IfcLabel") { Definition = "Method of installation of cable/conductor. Installation methods are typically defined by reference in standards such as IEC 60364-5-52, table 52A-1 or BS7871 Appendix 4 Table 4A1 etc. Selection of the value to be used should be determined from such a standard according to local usage."},
			new SingleValuePropertyType("IsHorizontalCable", "IfcBoolean") { Definition = "Indication of whether the cable occurrences are mounted horizontally (= TRUE) or vertically (= FALSE)."},
			new SingleValuePropertyType("IsMountedFlatCable", "IfcBoolean") { Definition = "Indication of whether the cable occurrences are mounted flat (= TRUE) or in a trefoil pattern (= FALSE)."},
			new SingleValuePropertyType("MaximumCableLength", "IfcLengthMeasure") { Definition = "Maximum cable length based on voltagedrop. NOTE: This value may also be specified as a constraint within an IFC model if required but is included within the property set at this stage pending implementation of the required capabilities within software applications."},
			new SingleValuePropertyType("NumberOfParallelCircuits", "IfcInteger") { Definition = "Number of parallel circuits."},
			new SingleValuePropertyType("PowerLoss", "IfcElectricCurrentMeasure") { Definition = "Total loss of power across this cable."},
			new SingleValuePropertyType("SoilConductivity", "IfcThermalConductivityMeasure") { Definition = "Thermal conductivity of soil. Generally, within standards such as IEC 60364-5-52, table 52A-16, the resistivity of soil is required (measured in [SI] units of degK.m /W). This is the reciprocal of the conductivity value and needs to be calculated accordingly."},
			new SingleValuePropertyType("UserCorrectionFactor", "IfcReal") { Definition = "An arbitrary correction factor that may be applied by the user."} },
				new [] { "IfcCableSegment" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeBusBarSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsHorizontalBusbar", "IfcBoolean") { Definition = "Indication of whether the busbar occurrences are routed horizontally (= TRUE) or vertically (= FALSE)."} },
				new [] { "IfcCableSegment" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeCableSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FunctionReliable", "IfcBoolean") { Definition = "Cable/bus maintain given properties/functions over a given (tested) time and conditions. According to IEC standard."},
			new SingleValuePropertyType("HalogenProof", "IfcBoolean") { Definition = "Produces small amount of smoke and irritating Deaerator/Gas."},
			new SingleValuePropertyType("HasProtectiveEarth", "IfcBoolean") { Definition = "One core has protective earth marked insulation, Yellow/Green."},
			new SingleValuePropertyType("MaximumOperatingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The maximum temperature at which a cable or bus is certified to operate."},
			new SingleValuePropertyType("MaximumShortCircuitTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The maximum short circuit temperature at which a cable or bus is certified to operate."},
			new SingleValuePropertyType("NumberOfCores", "IfcInteger") { Definition = "The number of cores in Cable/Bus."},
			new SingleValuePropertyType("OverallDiameter", "IfcPositiveLengthMeasure") { Definition = "The overall diameter of a Cable/Bus."},
			new SingleValuePropertyType("RatedTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The range of allowed temerature that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("ScreenDiameter", "IfcPositiveLengthMeasure") { Definition = "The diameter of the screen around a cable or bus segment (if present)."},
			new SingleValuePropertyType("SelfExtinguishing60332_1", "IfcBoolean") { Definition = "Self Extinguishing cable/core according to IEC 60332.1."},
			new SingleValuePropertyType("SelfExtinguishing60332_3", "IfcBoolean") { Definition = "Self Extinguishing cable/core according to IEC 60332.3."},
			new SingleValuePropertyType("SpecialConstruction", "IfcLabel") { Definition = "Special construction capabilities like self-supporting, flat devidable cable or bus flat non devidable cable or bus supporting elements inside (steal, textile, concentric conductor). Note that materials used should be agreed between exchange participants before use."},
			new SingleValuePropertyType("Standard", "IfcLabel") { Definition = "The designation of the standard applicable for the definition of the Cable/Bus used."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of cable kg/km."} },
				new [] { "IfcCableSegment" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcCableSegment" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeConductorSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Construction", new [] { "SOLIDCONDUCTOR", "STRANDEDCONDUCTOR", "FLEXIBLESTRANDEDCONDUCTOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Purpose of informing on how the vonductor is constucted (interwined or solid). I.e. Solid (IEV 461-01-06), stranded (IEV 461-01-07), solid-/finestranded(IEV 461-01-11) (not flexible/flexible)."},
			new EnumerationPropertyType("Function", new [] { "LINE", "NEUTRAL", "PROTECTIVEEARTH", "PROTECTIVEEARTHNEUTRAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of function for which the conductor is intended."},
			new EnumerationPropertyType("Material", new [] { "ALUMINIUM", "COPPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of material from which the conductor is constructed."},
			new EnumerationPropertyType("Shape", new [] { "HELICALCONDUCTOR", "CIRCULARCONDUCTOR", "SECTORCONDUCTOR", "RECTANGULARCONDUCTOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indication of the shape of the conductor."},
			new SingleValuePropertyType("CrossSectionalArea", "IfcAreaMeasure") { Definition = "Cross section area of the phase(s) lead(s)."} },
				new [] { "IfcCableSegment" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeCoreSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SheathColors", new [] { "BLACK", "BLUE", "BROWN", "GOLD", "GREEN", "GREY", "ORANGE", "PINK", "RED", "SILVER", "TURQUOISE", "VIOLET", "WHITE", "YELLOW", "GREENANDYELLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Colour of the core (derived from IEC 60757). Note that the combined color 'GreenAndYellow' shall be used only as Protective Earth (PE) conductors according to the requirements of IEC 60446."},
			new SingleValuePropertyType("CoreIdentifier", "IfcIdentifier") { Definition = "The core identification used  Identifiers may be used such as by color (Black, Brown, Grey) or by number (1, 2, 3) or by IEC phase reference (L1, L2, L3) etc."},
			new SingleValuePropertyType("FunctionReliable", "IfcBoolean") { Definition = "Core maintain given properties/functions over a given (tested) time and conditions. According to (IEC) standard."},
			new SingleValuePropertyType("HalogenProof", "IfcBoolean") { Definition = "Produces small amount of smoke and irritating deaerator/gas."},
			new SingleValuePropertyType("OverallDiameter", "IfcPositiveLengthMeasure") { Definition = "The overall diameter of a core (maximun space used)."},
			new SingleValuePropertyType("RatedTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The range of allowed temerature that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("ScreenDiameter", "IfcPositiveLengthMeasure") { Definition = "The diameter of the screen around a core segment (if present)."},
			new SingleValuePropertyType("SelfExtinguishing60332_1", "IfcBoolean") { Definition = "Self Extinguishing cable/core according to IEC 60332.1."},
			new SingleValuePropertyType("SelfExtinguishing60332_3", "IfcBoolean") { Definition = "Self Extinguishing cable/core according to IEC 60332.3."},
			new SingleValuePropertyType("Standard", "IfcLabel") { Definition = "The designation of the standard applicable for the definition of the core used."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of core kg/km."} },
				new [] { "IfcCableSegment" });
		yield return new PropertySetInfo("Pset_ChillerPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcChiller" });
		yield return new PropertySetInfo("Pset_ChillerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("NominalCapacity", "IfcPowerMeasure") { Definition = "Nominal cooling capacity of chiller at standardized conditions as defined by the agency having jurisdiction."},
			new SingleValuePropertyType("NominalCondensingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Chiller condensing temperature."},
			new SingleValuePropertyType("NominalEfficiency", "IfcPositiveRatioMeasure") { Definition = "Nominal chiller efficiency under nominal conditions."},
			new SingleValuePropertyType("NominalEvaporatingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Chiller evaporating temperature."},
			new SingleValuePropertyType("NominalHeatRejectionRate", "IfcPowerMeasure") { Definition = "Sum of the refrigeration effect and the heat equivalent of the power input to the compressor."},
			new SingleValuePropertyType("NominalPowerConsumption", "IfcPowerMeasure") { Definition = "Nominal total power consumption."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcChiller" });
		yield return new PropertySetInfo("Pset_ChimneyCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for the element. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("NumberOfDrafts", "IfcCountMeasure") { Definition = "Number of the chimney drafts, continuous holes in the chimney through which the air passes, within the single chimney."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element. Here the total thermal transmittance coefficient through the chimney within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcChimney" });
		yield return new PropertySetInfo("Pset_CoilOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasSoundAttenuation", "IfcBoolean") { Definition = "TRUE if the coil has sound attenuation, FALSE if it does not."} },
				new [] { "IfcCoil" });
		yield return new PropertySetInfo("Pset_CoilPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcCoil" });
		yield return new PropertySetInfo("Pset_CoilTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PlacementType", new [] { "FLOOR", "CEILING", "UNIT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the placement of the coil.  \nFLOOR indicates an under floor heater (if coil type is WATERHEATINGCOIL or ELECTRICHEATINGCOIL); \nCEILING indicates a cooling ceiling (if coil type is WATERCOOLINGCOIL);\nUNIT indicates that the coil is part of a cooling or heating unit, like cooled beam, etc."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AirflowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered.  For cases where there is no airflow across the coil (e.g. electric coil in a floor slab), then the value is zero."},
			new SingleValuePropertyType("NominalLatentCapacity", "IfcPowerMeasure") { Definition = "Nominal latent capacity."},
			new SingleValuePropertyType("NominalSensibleCapacity", "IfcPowerMeasure") { Definition = "Nominal sensible capacity."},
			new SingleValuePropertyType("NominalUA", "IfcReal") { Definition = "Nominal UA value."},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operational air temperature range."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcCoil" });
		yield return new PropertySetInfo("Pset_CoilTypeHydronic", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CoilConnectionDirection", new [] { "LEFT", "RIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Coil connection direction (facing into the air stream)."},
			new EnumerationPropertyType("CoilCoolant", new [] { "WATER", "BRINE", "GLYCOL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The fluid used for heating or cooling used by the hydronic coil."},
			new EnumerationPropertyType("CoilFluidArrangement", new [] { "CROSSFLOW", "CROSSCOUNTERFLOW", "CROSSPARALLELFLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Fluid flow arrangement of the coil.\n\nCrossCounterFlow: Air and water flow enter in different directions.\nCrossFlow: Air and water flow are perpendicular.\nCrossParallelFlow: Air and water flow enter in same directions."},
			new SingleValuePropertyType("BypassFactor", "IfcNormalisedRatioMeasure") { Definition = "Fraction of air that is bypassed by the coil (0-1)."},
			new SingleValuePropertyType("CoilFaceArea", "IfcAreaMeasure") { Definition = "Coil face area in the direction against air the flow."},
			new SingleValuePropertyType("FluidPressureRange", "IfcPressureMeasure") { Definition = "Allowable water working pressure range inside the tube."},
			new SingleValuePropertyType("HeatExchangeSurfaceArea", "IfcAreaMeasure") { Definition = "Heat exchange surface area associated with U-value."},
			new SingleValuePropertyType("PrimarySurfaceArea", "IfcAreaMeasure") { Definition = "Primary heat transfer surface area of the tubes and headers."},
			new SingleValuePropertyType("SecondarySurfaceArea", "IfcAreaMeasure") { Definition = "Secondary heat transfer surface area created by fins."},
			new SingleValuePropertyType("SensibleHeatRatio", "IfcNormalisedRatioMeasure") { Definition = "Air-side sensible heat ratio, or fraction of sensible heat transfer to the total heat transfer."},
			new SingleValuePropertyType("WetCoilFraction", "IfcNormalisedRatioMeasure") { Definition = "Fraction of coil surface area that is wet (0-1)."} },
				new [] { "IfcCoil" });
		yield return new PropertySetInfo("Pset_ColumnCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for the element.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("Roll", "IfcPlaneAngleMeasure") { Definition = "Rotation against the longitudinal axis - relative to the global  X direction for all columns that are vertical in regard to the global coordinate system (Profile direction equals global X is Roll = 0.). For all non-vertical columns the following applies:  Roll is relative to the global Z direction f(Profile direction of non-vertical columns that equals global Z is Roll = 0.)\n\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only.\n\nNote: new property in IFC4"},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).\n\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.   For geometry editing applications, like CAD: this value should be write-only."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of the element. Here the total thermal transmittance coefficient through the column within the direction of the thermal flow (including all materials).\n\nNore: new property in IFC4"} },
				new [] { "IfcColumn" });
		yield return new PropertySetInfo("Pset_CommunicationsAppliancePHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcCommunicationsAppliance" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcCommunicationsAppliance" });
		yield return new PropertySetInfo("Pset_CompressorPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcCompressor" });
		yield return new PropertySetInfo("Pset_CompressorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PowerSource", new [] { "MOTORDRIVEN", "ENGINEDRIVEN", "GASTURBINE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of power driving the compressor."},
			new EnumerationPropertyType("RefrigerantClass", new [] { "CFC", "HCFC", "HFC", "HYDROCARBONS", "AMMONIA", "CO2", "H2O", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Refrigerant class used by the compressor.\n\nCFC: Chlorofluorocarbons.\nHCFC: Hydrochlorofluorocarbons.\nHFC: Hydrofluorocarbons."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("CompressorSpeed", "IfcRotationalFrequencyMeasure") { Definition = "Compressor speed."},
			new SingleValuePropertyType("HasHotGasBypass", "IfcBoolean") { Definition = "Whether or not hot gas bypass is provided for the compressor. TRUE = Yes, FALSE = No."},
			new SingleValuePropertyType("IdealCapacity", "IfcPowerMeasure") { Definition = "Compressor capacity under ideal conditions."},
			new SingleValuePropertyType("IdealShaftPower", "IfcPowerMeasure") { Definition = "Compressor shaft power under ideal conditions."},
			new SingleValuePropertyType("ImpellerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of compressor impeller - used to scale performance of geometrically similar compressors."},
			new SingleValuePropertyType("MaximumPartLoadRatio", "IfcPositiveRatioMeasure") { Definition = "Maximum part load ratio as a fraction of nominal capacity."},
			new SingleValuePropertyType("MinimumPartLoadRatio", "IfcPositiveRatioMeasure") { Definition = "Minimum part load ratio as a fraction of nominal capacity."},
			new SingleValuePropertyType("NominalCapacity", "IfcPowerMeasure") { Definition = "Compressor nameplate capacity."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcCompressor" });
		yield return new PropertySetInfo("Pset_ConcreteElementGeneral", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ConcreteCover", "IfcPositiveLengthMeasure") { Definition = "The protective concrete cover at the reinforcing bars according to local building regulations."},
			new SingleValuePropertyType("ConcreteCoverAtLinks", "IfcPositiveLengthMeasure") { Definition = "The protective concrete cover at the reinforcement links according to local building regulations."},
			new SingleValuePropertyType("ConcreteCoverAtMainBars", "IfcPositiveLengthMeasure") { Definition = "The protective concrete cover at the main reinforcing bars according to local building regulations."},
			new SingleValuePropertyType("ConstructionMethod", "IfcLabel") { Definition = "Designator for whether the concrete element is constructed on site or prefabricated. Allowed values are: 'In-Situ' vs 'Precast'."},
			new SingleValuePropertyType("ConstructionToleranceClass", "IfcLabel") { Definition = "Classification designation of the on-site construction tolerances according to local standards."},
			new SingleValuePropertyType("DimensionalAccuracyClass", "IfcLabel") { Definition = "Classification designation of the dimensional accuracy requirement according to local standards."},
			new SingleValuePropertyType("ExposureClass", "IfcLabel") { Definition = "Classification of exposure to environmental conditions, usually specified in accordance with the concrete design code which is applied in the project."},
			new SingleValuePropertyType("ReinforcementAreaRatio", "IfcAreaDensityMeasure") { Definition = "The required ratio of the effective area of the reinforcement to the effective area of the concrete At any section of a reinforced concrete structural element."},
			new SingleValuePropertyType("ReinforcementStrengthClass", "IfcLabel") { Definition = "Classification of the reinforcement strength in accordance with the concrete design code which is applied in the project. The reinforcing strength class often combines strength and ductility."},
			new SingleValuePropertyType("ReinforcementVolumeRatio", "IfcMassDensityMeasure") { Definition = "The required ratio of the effective mass of the reinforcement to the effective volume of the concrete of a reinforced concrete structural element."},
			new SingleValuePropertyType("StrengthClass", "IfcLabel") { Definition = "Classification of the concrete strength in accordance with the concrete design code which is applied in the project."},
			new SingleValuePropertyType("StructuralClass", "IfcLabel") { Definition = "The structural class defined for the concrete structure (e.g. '1')."} },
				new [] { "IfcBuildingElement" });
		yield return new PropertySetInfo("Pset_CondenserPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcCondenser" });
		yield return new PropertySetInfo("Pset_CondenserTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RefrigerantClass", new [] { "CFC", "HCFC", "HFC", "HYDROCARBONS", "AMMONIA", "CO2", "H2O", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Refrigerant class used by the condenser.\n\nCFC: Chlorofluorocarbons.\nHCFC: Hydrochlorofluorocarbons.\nHFC: Hydrofluorocarbons."},
			new SingleValuePropertyType("ExternalSurfaceArea", "IfcAreaMeasure") { Definition = "External surface area (both primary and secondary area)."},
			new SingleValuePropertyType("InternalRefrigerantVolume", "IfcVolumeMeasure") { Definition = "Internal volume of condenser (refrigerant side)."},
			new SingleValuePropertyType("InternalSurfaceArea", "IfcAreaMeasure") { Definition = "Internal surface area."},
			new SingleValuePropertyType("InternalWaterVolume", "IfcVolumeMeasure") { Definition = "Internal volume of condenser (water side)."},
			new SingleValuePropertyType("NominalHeatTransferArea", "IfcAreaMeasure") { Definition = "Nominal heat transfer surface area associated with nominal overall heat transfer coefficient."},
			new SingleValuePropertyType("NominalHeatTransferCoefficient", "IfcThermalTransmittanceMeasure") { Definition = "Nominal overall heat transfer coefficient associated with nominal heat transfer area."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcCondenser" });
		yield return new PropertySetInfo("Pset_Condition", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssessmentCondition", "IfcLabel") { Definition = "The overall condition of a product based on an assessment of the contributions to the overall condition made by the various criteria considered. The meanings given to the values of assessed condition should be agreed and documented by local agreements. For instance, is overall condition measured on a scale of 1 - 10 or by assigning names such as Good, OK, Poor."},
			new SingleValuePropertyType("AssessmentDate", "IfcDate") { Definition = "Date on which the overall condition is assessed"},
			new SingleValuePropertyType("AssessmentDescription", "IfcText") { Definition = "Qualitative description of the condition."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_ConstructionResource", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcConstructionResource" });
		yield return new PropertySetInfo("Pset_ControllerPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcController" });
		yield return new PropertySetInfo("Pset_ControllerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcController" });
		yield return new PropertySetInfo("Pset_ControllerTypeFloating", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "CONSTANT", "MODIFIER", "ABSOLUTE", "INVERSE", "HYSTERESIS", "RUNNINGAVERAGE", "DERIVATIVE", "INTEGRAL", "BINARY", "ACCUMULATOR", "PULSECONVERTER", "LOWERLIMITCONTROL", "UPPERLIMITCONTROL", "SUM", "SUBTRACT", "PRODUCT", "DIVIDE", "AVERAGE", "MAXIMUM", "MINIMUM", "REPORT", "SPLIT", "INPUT", "OUTPUT", "VARIABLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of signal modification effected and applicable ports: \n\nCONSTANT: No inputs; SignalOffset is written to the output value.\nMODIFIER: Single analog input is read, added to SignalOffset, multiplied by SignalFactor, and written to the output value.\nABSOLUTE: Single analog input is read and absolute value is written to the output value.\nINVERSE: Single analog input is read, 1.0 is divided by the input value and written to the output value.\nHYSTERISIS: Single analog input is read, delayed according to SignalTime, and written to the output value.\nRUNNINGAVERAGE: Single analog input is read, averaged over SignalTime, and written to the output value.\nDERIVATIVE: Single analog input is read and the rate of change during the SignalTime is written to the output value.\nINTEGRAL: Single analog input is read and the average value during the SignalTime is written to the output value.\nBINARY: Single binary input is read and SignalOffset is written to the output value if True.\nACCUMULATOR: Single binary input is read, and for each pulse the SignalOffset is added to the accumulator, and while the accumulator is greater than the SignalFactor, the accumulator is decremented by SignalFactor and the integer result is incremented by one.\nPULSECONVERTER: Single integer input is read, and for each increment the SignalMultiplier is added and written to the output value.\nSUM: Two analog inputs are read, added, and written to the output value.\nSUBTRACT: Two analog inputs are read, subtracted, and written to the output value.\nPRODUCT: Two analog inputs are read, multiplied, and written to the output value.\nDIVIDE: Two analog inputs are read, divided, and written to the output value.\nAVERAGE: Two analog inputs are read and the average is written to the output value.\nMAXIMUM: Two analog inputs are read and the maximum is written to the output value.\nMINIMUM: Two analog inputs are read and the minimum is written to the output value..\nINPUT: Controller element is a dedicated input.\nOUTPUT: Controller element is a dedicated output.\nVARIABLE: Controller element is an in-memory variable."},
			new SingleValuePropertyType("Range", "IfcReal") { Definition = "The physical range of values supported by the device."},
			new SingleValuePropertyType("SignalFactor", "IfcReal") { Definition = "Factor multiplied onto offset signal."},
			new SingleValuePropertyType("SignalOffset", "IfcReal") { Definition = "Offset constant added to modfied signal."},
			new SingleValuePropertyType("SignalTime", "IfcTimeMeasure") { Definition = "Time factor used for integral and running average controllers."},
			new SingleValuePropertyType("Value", "IfcReal") { Definition = "The expected range and default value.  While the property data type is IfcReal (to support all cases including when the units are unknown), a unit may optionally be provided to indicate the measure and unit.  The LowerLimitValue and UpperLimitValue must fall within the physical Range and may be used to determine extents when charting Pset_ControllerPHistory.Value."} },
				new [] { "IfcController" });
		yield return new PropertySetInfo("Pset_ControllerTypeMultiPosition", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "INPUT", "OUTPUT", "VARIABLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of signal modification effected and applicable ports:\n\nINPUT: Controller element is a dedicated input.\nOUTPUT: Controller element is a dedicated output.\nVARIABLE: Controller element is an in-memory variable."},
			new SingleValuePropertyType("Range", "IfcInteger") { Definition = "The physical range of values supported by the device."},
			new SingleValuePropertyType("Value", "IfcInteger") { Definition = "The expected range and default value.  The LowerLimitValue and UpperLimitValue must fall within the physical Range."} },
				new [] { "IfcController" });
		yield return new PropertySetInfo("Pset_ControllerTypeProgrammable", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Application", new [] { "ModemController", "TelephoneDirectory", "FanCoilUnitController", "RoofTopUnitController", "UnitVentilatorController", "SpaceConfortController", "VAV", "PumpController", "BoilerController", "DischargeAirController", "OccupancyController", "ConstantLightController", "SceneController", "PartitionWallController", "RealTimeKeeper", "RealTimeBasedScheduler", "LightingPanelController", "SunblindController", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates application of controller."},
			new EnumerationPropertyType("ControlType", new [] { "PRIMARY", "SECONDARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of discrete digital controller: \n\nPRIMARY: Controller has built-in communication interface for PC connection, may manage secondary controllers.\nSECONDARY: Controller communicates with primary controller and its own managed devices."},
			new SingleValuePropertyType("FirmwareVersion", "IfcLabel") { Definition = "Indicates version of device firmware according to device manufacturer."},
			new SingleValuePropertyType("SoftwareVersion", "IfcLabel") { Definition = "Indicates version of application software according to systems integrator."} },
				new [] { "IfcController" });
		yield return new PropertySetInfo("Pset_ControllerTypeProportional", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "PROPORTIONAL", "PROPORTIONALINTEGRAL", "PROPORTIONALINTEGRALDERIVATIVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of signal modification.\nPROPORTIONAL: Output is proportional to the control error. The gain of a proportional control (Kp) will have the effect of reducing the rise time and reducing , but never eliminating, the steady-state error of the variable controlled. \nPROPORTIONALINTEGRAL: Part of the output is proportional to the control error and part is proportional to the time integral of the control error. Adding the gain of an integral control (Ki) will have the effect of eliminating the steady-state error of the variable controlled, but it may make the transient response worse. \nPROPORTIONALINTEGRALDERIVATIVE: Part of the output is proportional to the control error, part is proportional to the time integral of the control error and part is proportional to the time derivative of the control error. Adding the gain of a derivative control (Kd) will have the effect of increasing the stability of the system, reducing the overshoot, and improving the transient response of the variable controlled."},
			new SingleValuePropertyType("DerivativeConstant", "IfcReal") { Definition = "The derivative gain factor of the controller (usually referred to as Kd).  Asserted where ControlType is PROPORTIONALINTEGRALDERIVATIVE."},
			new SingleValuePropertyType("IntegralConstant", "IfcReal") { Definition = "The integral gain factor of the controller (usually referred to as Ki).  Asserted where ControlType is PROPORTIONALINTEGRAL or PROPORTIONALINTEGRALDERIVATIVE."},
			new SingleValuePropertyType("ProportionalConstant", "IfcReal") { Definition = "The proportional gain factor of the controller (usually referred to as Kp)."},
			new SingleValuePropertyType("Range", "IfcReal") { Definition = "The physical range of values."},
			new SingleValuePropertyType("SignalTimeDecrease", "IfcTimeMeasure") { Definition = "Time factor used for exponential decrease."},
			new SingleValuePropertyType("SignalTimeIncrease", "IfcTimeMeasure") { Definition = "Time factor used for exponential increase."},
			new SingleValuePropertyType("Value", "IfcReal") { Definition = "The expected range and default value.  While the property data type is IfcReal (to support all cases including when the units are unknown), a unit may optionally be provided to indicate the measure and unit."} },
				new [] { "IfcController" });
		yield return new PropertySetInfo("Pset_ControllerTypeTwoPosition", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "NOT", "AND", "OR", "XOR", "LOWERLIMITSWITCH", "UPPERLIMITSWITCH", "LOWERBANDSWITCH", "UPPERBANDSWITCH", "AVERAGE", "CALENDAR", "INPUT", "OUTPUT", "VARIABLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of signal modification effected and applicable ports:\n\nLOWERLIMITSWITCH: Single analog input is read and if less than Value.LowerBound then True is written to the output value.\nUPPERLIMITSWITCH: Single analog input is read and if more than Value.UpperBound then True is written to the output value.\nLOWERBANDSWITCH: Single analog input is read and if less than Value.LowerBound+BandWidth then True is written to the output value.\nUPPERBANDSWITCH: Single analog input is read and if more than Value.UpperBound-BandWidth then True is written to the output value.\nNOT: Single binary input is read and the opposite value is written to the output value.\nAND: Two binary inputs are read and if both are True then True is written to the output value.\nOR: Two binary inputs are read and if either is True then True is written to the output value.\nXOR: Two binary inputs are read and if one is true then True is written to the output value.\nCALENDAR: No inputs; the current time is compared with an IfcWorkCalendar to which the IfcController is assigned and True is written if active.\nINPUT: Controller element is a dedicated input.\nOUTPUT: Controller element is a dedicated output.\nVARIABLE: Controller element is an in-memory variable."},
			new SingleValuePropertyType("Polarity", "IfcBoolean") { Definition = "True indicates normal polarity; False indicates reverse polarity."},
			new SingleValuePropertyType("Value", "IfcBoolean") { Definition = "The default value such as normally-closed or normally-open."} },
				new [] { "IfcController" });
		yield return new PropertySetInfo("Pset_CooledBeamPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcCooledBeam" });
		yield return new PropertySetInfo("Pset_CooledBeamPHistoryActive", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcCooledBeam" });
		yield return new PropertySetInfo("Pset_CooledBeamTypeActive", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirFlowConfiguration", new [] { "BIDIRECTIONAL", "UNIDIRECTIONALRIGHT", "UNIDIRECTIONALLEFT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Air flow configuration type of cooled beam."},
			new EnumerationPropertyType("SupplyAirConnectionType", new [] { "STRAIGHT", "RIGHT", "LEFT", "TOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The manner in which the pipe connection is made to the cooled beam."},
			new SingleValuePropertyType("AirflowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered."},
			new SingleValuePropertyType("ConnectionSize", "IfcLengthMeasure") { Definition = "Duct connection diameter."} },
				new [] { "IfcCooledBeam" });
		yield return new PropertySetInfo("Pset_CooledBeamTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("IntegratedLightingType", new [] { "NONE", "DIRECT", "INDIRECT", "DIRECTANDINDIRECT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Integrated lighting in cooled beam."},
			new EnumerationPropertyType("PipeConnectionEnum", new [] { "STRAIGHT", "RIGHT", "LEFT", "TOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The manner in which the pipe connection is made to the cooled beam."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("WaterFlowControlSystemType", new [] { "NONE", "ONOFFVALVE", "2WAYVALVE", "3WAYVALVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Factory fitted waterflow control system."},
			new SingleValuePropertyType("CoilLength", "IfcPositiveLengthMeasure") { Definition = "Length of coil."},
			new SingleValuePropertyType("CoilWidth", "IfcPositiveLengthMeasure") { Definition = "Width of coil."},
			new SingleValuePropertyType("FinishColor", "IfcLabel") { Definition = "Finish color for cooled beam."},
			new SingleValuePropertyType("IsFreeHanging", "IfcBoolean") { Definition = "Is it free hanging type (not mounted in a false ceiling)?"},
			new SingleValuePropertyType("NominalCoolingCapacity", "IfcPowerMeasure") { Definition = "Nominal cooling capacity."},
			new SingleValuePropertyType("NominalHeatingCapacity", "IfcPowerMeasure") { Definition = "Nominal heating capacity."},
			new SingleValuePropertyType("NominalReturnWaterTemperatureCooling", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal return water temperature (refers to nominal cooling capacity)."},
			new SingleValuePropertyType("NominalReturnWaterTemperatureHeating", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal return water temperature (refers to nominal heating capacity)."},
			new SingleValuePropertyType("NominalSupplyWaterTemperatureCooling", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal supply water temperature (refers to nominal cooling capacity)."},
			new SingleValuePropertyType("NominalSupplyWaterTemperatureHeating", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal supply water temperature (refers to nominal heating capacity)."},
			new SingleValuePropertyType("NominalSurroundingHumidityCooling", "IfcNormalisedRatioMeasure") { Definition = "Nominal surrounding humidity (refers to nominal cooling capacity)."},
			new SingleValuePropertyType("NominalSurroundingTemperatureCooling", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal surrounding temperature (refers to nominal cooling capacity)."},
			new SingleValuePropertyType("NominalSurroundingTemperatureHeating", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal surrounding temperature (refers to nominal heating capacity)."},
			new SingleValuePropertyType("NominalWaterFlowCooling", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal water flow (refers to nominal cooling capacity)."},
			new SingleValuePropertyType("NominalWaterFlowHeating", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal water flow (refers to nominal heating capacity)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("WaterPressureRange", "IfcPressureMeasure") { Definition = "Allowable water circuit working pressure range."} },
				new [] { "IfcCooledBeam" });
		yield return new PropertySetInfo("Pset_CoolingTowerPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcCoolingTower" });
		yield return new PropertySetInfo("Pset_CoolingTowerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CapacityControl", new [] { "FANCYCLING", "TWOSPEEDFAN", "VARIABLESPEEDFAN", "DAMPERSCONTROL", "BYPASSVALVECONTROL", "MULTIPLESERIESPUMPS", "TWOSPEEDPUMP", "VARIABLESPEEDPUMP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "FanCycling: Fan is cycled on and off to control duty.\nTwoSpeedFan: Fan is switched between low and high speed to control duty.\nVariableSpeedFan: Fan speed is varied to control duty.\nDampersControl: Dampers modulate the air flow to control duty.\nBypassValveControl: Bypass valve modulates the water flow to control duty.\nMultipleSeriesPumps: Turn on/off multiple series pump to control duty.\nTwoSpeedPump: Switch between high/low pump speed to control duty.\nVariableSpeedPump: vary pump speed to control duty."},
			new EnumerationPropertyType("CircuitType", new [] { "OPENCIRCUIT", "CLOSEDCIRCUITWET", "CLOSEDCIRCUITDRY", "CLOSEDCIRCUITDRYWET", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "OpenCircuit: Exposes water directly to the cooling atmosphere.\nCloseCircuit: The fluid is separated from the atmosphere by a heat exchanger.\nWet: The air stream or the heat exchange surface is evaporatively cooled.\nDry: No evaporation into the air stream.\nDryWet: A combination of a dry tower and a wet tower."},
			new EnumerationPropertyType("ControlStrategy", new [] { "FIXEDEXITINGWATERTEMP", "WETBULBTEMPRESET", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "FixedExitingWaterTemp: The capacity is controlled to maintain a fixed exiting water temperature.\nWetBulbTempReset: The set-point is reset based on the wet-bulb temperature."},
			new EnumerationPropertyType("FlowArrangement", new [] { "COUNTERFLOW", "CROSSFLOW", "PARALLELFLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "CounterFlow: Air and water flow enter in different directions.\nCrossFlow: Air and water flow are perpendicular.\nParallelFlow: air and water flow enter in same directions."},
			new EnumerationPropertyType("SprayType", new [] { "SPRAYFILLED", "SPLASHTYPEFILL", "FILMTYPEFILL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "SprayFilled: Water is sprayed into airflow.\nSplashTypeFill: water cascades over successive rows of splash bars.\nFilmTypeFill: water flows in a thin layer over closely spaced sheets."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AmbientDesignDryBulbTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ambient design dry bulb temperature used for selecting the cooling tower."},
			new SingleValuePropertyType("AmbientDesignWetBulbTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ambient design wet bulb temperature used for selecting the cooling tower."},
			new SingleValuePropertyType("BasinReserveVolume", "IfcVolumeMeasure") { Definition = "Volume between operating and overflow levels in cooling tower basin."},
			new SingleValuePropertyType("LiftElevationDifference", "IfcPositiveLengthMeasure") { Definition = "Elevation difference between cooling tower sump and the top of the tower."},
			new SingleValuePropertyType("NominalCapacity", "IfcPowerMeasure") { Definition = "Nominal cooling tower capacity in terms of heat transfer rate of the cooling tower between air stream and water stream at nominal conditions."},
			new SingleValuePropertyType("NumberOfCells", "IfcInteger") { Definition = "Number of cells in one cooling tower unit."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("WaterRequirement", "IfcVolumetricFlowRateMeasure") { Definition = "Make-up water requirements."} },
				new [] { "IfcCoolingTower" });
		yield return new PropertySetInfo("Pset_CoveringCeiling", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Permeability", "IfcNormalisedRatioMeasure") { Definition = "Ratio of the permeability of the ceiling.\nThe ration can be used to indicate an open ceiling (that enables identification of whether ceiling construction should be considered as impeding distribution of sprinkler water, light etc. from installations within the ceiling area)."},
			new SingleValuePropertyType("TileLength", "IfcPositiveLengthMeasure") { Definition = "Length of ceiling tiles. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("TileWidth", "IfcPositiveLengthMeasure") { Definition = "Width of ceiling tiles. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcCovering" });
		yield return new PropertySetInfo("Pset_CoveringCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is giving according to the national building code. It indicates the sound transmission resistance of this object by an index ration (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Finish", "IfcText") { Definition = "Finish selection for this object.\nHere specification of the surface finish for informational purposes."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("FlammabilityRating", "IfcLabel") { Definition = "Flammability Rating for this object.\nIt is given according to the national building code that governs the rating of flammability for materials."},
			new SingleValuePropertyType("FragilityRating", "IfcLabel") { Definition = "Indication on the fragility of the covering (e.g., under fire conditions).  It is given according to the national building code that might provide a classification for fragility."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface,\nIt is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element. \nHere the total thermal transmittance coefficient through the covering (including all materials)."} },
				new [] { "IfcCovering" });
		yield return new PropertySetInfo("Pset_CoveringFlooring", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasAntiStaticSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent electrostatic charge (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("HasNonSkidSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE)."} },
				new [] { "IfcCovering" });
		yield return new PropertySetInfo("Pset_CurtainWallCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface,\nIt is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nHere the total thermal transmittance coefficient through the wall (including all materials)."} },
				new [] { "IfcCurtainWall" });
		yield return new PropertySetInfo("Pset_DamperOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SizingMethod", new [] { "NOMINAL", "EXACT", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies whether the damper is sized nominally or with exact measurements:\n\nNOMINAL: Nominal sizing method. \nEXACT: Exact sizing method."} },
				new [] { "IfcDamper" });
		yield return new PropertySetInfo("Pset_DamperPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcDamper" });
		yield return new PropertySetInfo("Pset_DamperTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BladeAction", new [] { "FOLDINGCURTAIN", "PARALLEL", "OPPOSED", "SINGLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Blade action."},
			new EnumerationPropertyType("BladeEdge", new [] { "CRIMPED", "UNCRIMPED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Blade edge."},
			new EnumerationPropertyType("BladeShape", new [] { "FLAT", "FABRICATEDAIRFOIL", "EXTRUDEDAIRFOIL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Blade shape. Flat means triple V-groove."},
			new EnumerationPropertyType("Operation", new [] { "AUTOMATIC", "MANUAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The operational mechanism for the damper operation."},
			new EnumerationPropertyType("Orientation", new [] { "VERTICAL", "HORIZONTAL", "VERTICALORHORIZONTAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The intended orientation for the damper as specified by the manufacturer."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("BladeThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the damper blade."},
			new SingleValuePropertyType("CloseOffRating", "IfcPressureMeasure") { Definition = "Close off rating."},
			new SingleValuePropertyType("FaceArea", "IfcAreaMeasure") { Definition = "Face area open to the airstream."},
			new SingleValuePropertyType("FrameDepth", "IfcPositiveLengthMeasure") { Definition = "The length (or depth) of the damper frame."},
			new SingleValuePropertyType("FrameThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the damper frame material."},
			new SingleValuePropertyType("FrameType", "IfcLabel") { Definition = "The type of frame used by the damper (e.g., Standard, Single Flange, Single Reversed Flange, Double Flange, etc.)."},
			new SingleValuePropertyType("LeakageFullyClosed", "IfcVolumetricFlowRateMeasure") { Definition = "Leakage when fully closed."},
			new SingleValuePropertyType("MaximumAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum allowable air flow rate."},
			new SingleValuePropertyType("MaximumWorkingPressure", "IfcPressureMeasure") { Definition = "Maximum working pressure."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal air flow rate."},
			new SingleValuePropertyType("NumberofBlades", "IfcInteger") { Definition = "Number of blades."},
			new SingleValuePropertyType("OpenPressureDrop", "IfcPressureMeasure") { Definition = "Total pressure drop across damper."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature range."},
			new SingleValuePropertyType("TemperatureRating", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature rating."} },
				new [] { "IfcDamper" });
		yield return new PropertySetInfo("Pset_DamperTypeControlDamper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlDamperOperation", new [] { "LINEAR", "EXPONENTIAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The inherent characteristic of the control damper operation."},
			new SingleValuePropertyType("TorqueRange", "IfcTorqueMeasure") { Definition = "Torque range: minimum operational torque to maximum allowable torque."} },
				new [] { "IfcDamper" });
		yield return new PropertySetInfo("Pset_DamperTypeFireDamper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ActuationType", new [] { "GRAVITY", "SPRING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the different types of dampers."},
			new EnumerationPropertyType("ClosureRatingEnum", new [] { "DYNAMIC", "STATIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the closure rating for the damper."},
			new SingleValuePropertyType("FireResistanceRating", "IfcLabel") { Definition = "Measure of the fire resistance rating in hours (e.g., 1.5 hours, 2 hours, etc.)."},
			new SingleValuePropertyType("FusibleLinkTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature that the fusible link melts."} },
				new [] { "IfcDamper" });
		yield return new PropertySetInfo("Pset_DamperTypeFireSmokeDamper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ActuationType", new [] { "GRAVITY", "SPRING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the different types of dampers."},
			new EnumerationPropertyType("ClosureRatingEnum", new [] { "DYNAMIC", "STATIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the closure rating for the damper."},
			new SingleValuePropertyType("ControlType", "IfcLabel") { Definition = "The type of control used to operate the damper (e.g., Open/Closed Indicator, Resetable Temperature Sensor, Temperature Override, etc.)."},
			new SingleValuePropertyType("FireResistanceRating", "IfcLabel") { Definition = "Measure of the fire resistance rating in hours (e.g., 1.5 hours, 2 hours, etc.)."},
			new SingleValuePropertyType("FusibleLinkTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature that the fusible link melts."} },
				new [] { "IfcDamper" });
		yield return new PropertySetInfo("Pset_DamperTypeSmokeDamper", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ControlType", "IfcLabel") { Definition = "The type of control used to operate the damper (e.g., Open/Closed Indicator, Resetable Temperature Sensor, Temperature Override, etc.) ."} },
				new [] { "IfcDamper" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryColumnShoe", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ColumnShoeBasePlateDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the column shoe base plate."},
			new SingleValuePropertyType("ColumnShoeBasePlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the column shoe base plate."},
			new SingleValuePropertyType("ColumnShoeBasePlateWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the column shoe base plate."},
			new SingleValuePropertyType("ColumnShoeCasingDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the column shoe casing."},
			new SingleValuePropertyType("ColumnShoeCasingHeight", "IfcPositiveLengthMeasure") { Definition = "The height of the column shoe casing."},
			new SingleValuePropertyType("ColumnShoeCasingWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the column shoe casing."} },
				new [] { "IfcDiscreteAccessory" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryCornerFixingPlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CornerFixingPlateFlangeWidthInPlaneX", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped corner plate in plane X."},
			new SingleValuePropertyType("CornerFixingPlateFlangeWidthInPlaneZ", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped corner plate in plane Z."},
			new SingleValuePropertyType("CornerFixingPlateLength", "IfcPositiveLengthMeasure") { Definition = "The length of the L-shaped corner plate."},
			new SingleValuePropertyType("CornerFixingPlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the L-shaped corner plate."} },
				new [] { "IfcDiscreteAccessory" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryDiagonalTrussConnector", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DiagonalTrussBaseBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the base bar."},
			new SingleValuePropertyType("DiagonalTrussCrossBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the diagonal cross-bars."},
			new SingleValuePropertyType("DiagonalTrussCrossBarSpacing", "IfcPositiveLengthMeasure") { Definition = "The spacing between diagonal cross-bar sections."},
			new SingleValuePropertyType("DiagonalTrussHeight", "IfcPositiveLengthMeasure") { Definition = "The overall height of the truss connector."},
			new SingleValuePropertyType("DiagonalTrussLength", "IfcPositiveLengthMeasure") { Definition = "The overall length of the truss connector."},
			new SingleValuePropertyType("DiagonalTrussSecondaryBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the secondary bar."} },
				new [] { "IfcDiscreteAccessory" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryEdgeFixingPlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EdgeFixingPlateFlangeWidthInPlaneX", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped edge plate in plane X."},
			new SingleValuePropertyType("EdgeFixingPlateFlangeWidthInPlaneZ", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped edge plate in plane Z."},
			new SingleValuePropertyType("EdgeFixingPlateLength", "IfcPositiveLengthMeasure") { Definition = "The length of the L-shaped edge plate."},
			new SingleValuePropertyType("EdgeFixingPlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the L-shaped edge plate."} },
				new [] { "IfcDiscreteAccessory" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryFixingSocket", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FixingSocketHeight", "IfcPositiveLengthMeasure") { Definition = "The overall height of the fixing socket."},
			new SingleValuePropertyType("FixingSocketThreadDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the thread."},
			new SingleValuePropertyType("FixingSocketThreadLength", "IfcPositiveLengthMeasure") { Definition = "The length of the threaded part of the fixing socket."} },
				new [] { "IfcDiscreteAccessory" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryLadderTrussConnector", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("LadderTrussBaseBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the base bar."},
			new SingleValuePropertyType("LadderTrussCrossBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the straight cross-bars."},
			new SingleValuePropertyType("LadderTrussCrossBarSpacing", "IfcPositiveLengthMeasure") { Definition = "The spacing between the straight cross-bars."},
			new SingleValuePropertyType("LadderTrussHeight", "IfcPositiveLengthMeasure") { Definition = "The overall height of the truss connector."},
			new SingleValuePropertyType("LadderTrussLength", "IfcPositiveLengthMeasure") { Definition = "The overall length of the truss connector."},
			new SingleValuePropertyType("LadderTrussSecondaryBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the secondary bar."} },
				new [] { "IfcDiscreteAccessory" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryStandardFixingPlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("StandardFixingPlateDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the standard fixing plate."},
			new SingleValuePropertyType("StandardFixingPlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the standard fixing plate."},
			new SingleValuePropertyType("StandardFixingPlateWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the standard fixing plate."} },
				new [] { "IfcDiscreteAccessory" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryWireLoop", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WireDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the wire."},
			new SingleValuePropertyType("WireEmbeddingLength", "IfcPositiveLengthMeasure") { Definition = "The length of the part of wire which is embedded in the precast concrete element."},
			new SingleValuePropertyType("WireLoopBasePlateLength", "IfcPositiveLengthMeasure") { Definition = "The length of the base plate."},
			new SingleValuePropertyType("WireLoopBasePlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the base plate."},
			new SingleValuePropertyType("WireLoopBasePlateWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the base plate."},
			new SingleValuePropertyType("WireLoopLength", "IfcPositiveLengthMeasure") { Definition = "The length of the fastening loop part of the wire."} },
				new [] { "IfcDiscreteAccessory" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specific instance (e.g.  'WWS/VS1/400/001', which indicates the occurrence belongs to system WWS, subsystems VSI/400, and has the component number 001)."} },
				new [] { "IfcDistributionChamberElement" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeFormedDuct", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccessCoverLoadRating", "IfcText") { Definition = "The load rating of the access cover (which may be a value or an alphanumerically defined class rating)."},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the duct base construction\nNOTE: It is assumed that duct base will be constructed at a single thickness."},
			new SingleValuePropertyType("ClearDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the formed space in the duct."},
			new SingleValuePropertyType("ClearWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the formed space in the duct."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the duct wall construction\nNOTE: It is assumed that chamber walls will be constructed at a single thickness."} },
				new [] { "IfcDistributionChamberElement" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeInspectionChamber", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccessCoverLoadRating", "IfcText") { Definition = "The load rating of the access cover (which may be a value or an alphanumerically defined class rating)."},
			new SingleValuePropertyType("AccessLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "The length of the chamber access cover or, where the plan shape of the cover is circular, the radius."},
			new SingleValuePropertyType("AccessWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the chamber access cover where the plan shape of the cover is not circular."},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber base construction\nNOTE: It is assumed that chamber base will be constructed at a single thickness."},
			new SingleValuePropertyType("ChamberLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "Length or, in the event of the shape being circular in plan, the radius of the chamber."},
			new SingleValuePropertyType("ChamberWidth", "IfcPositiveLengthMeasure") { Definition = "Width, in the event of the shape being non circular in plan."},
			new SingleValuePropertyType("InvertLevel", "IfcLengthMeasure") { Definition = "Level of the lowest part of the cross section as measured from ground level."},
			new SingleValuePropertyType("SoffitLevel", "IfcLengthMeasure") { Definition = "Level of the highest internal part of the cross section as measured from ground level."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber wall construction\nNOTE: It is assumed that chamber walls will be constructed at a single thickness."},
			new SingleValuePropertyType("WithBackdrop", "IfcBoolean") { Definition = "Indicates whether the chamber has a backdrop or tumbling bay (TRUE) or not (FALSE)."} },
				new [] { "IfcDistributionChamberElement" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeInspectionPit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcPositiveLengthMeasure") { Definition = "The depth of the pit."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "The length of the pit."},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The width of the pit."} },
				new [] { "IfcDistributionChamberElement" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeManhole", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccessCoverLoadRating", "IfcText") { Definition = "The load rating of the access cover (which may be a value or an alphanumerically defined class rating)."},
			new SingleValuePropertyType("AccessLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "The length of the chamber access cover or, where the plan shape of the cover is circular, the radius."},
			new SingleValuePropertyType("AccessWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the chamber access cover where the plan shape of the cover is not circular."},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber base construction\nNOTE: It is assumed that chamber base will be constructed at a single thickness."},
			new SingleValuePropertyType("HasSteps", "IfcBoolean") { Definition = "Indicates whether the chamber has steps (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("InvertLevel", "IfcLengthMeasure") { Definition = "Level of the lowest part of the cross section as measured from ground level."},
			new SingleValuePropertyType("IsShallow", "IfcBoolean") { Definition = "Indicates whether the chamber has been designed as being shallow (TRUE) or deep (FALSE)."},
			new SingleValuePropertyType("SoffitLevel", "IfcLengthMeasure") { Definition = "Level of the highest internal part of the cross section as measured from ground level."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber wall construction\nNOTE: It is assumed that chamber walls will be constructed at a single thickness."},
			new SingleValuePropertyType("WithBackdrop", "IfcBoolean") { Definition = "Indicates whether the chamber has a backdrop or tumbling bay (TRUE) or not (FALSE)."} },
				new [] { "IfcDistributionChamberElement" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeMeterChamber", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber base construction.\nNOTE: It is assumed that chamber base will be constructed at a single thickness."},
			new SingleValuePropertyType("ChamberLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "Length or, in the event of the shape being circular in plan, the radius of the chamber."},
			new SingleValuePropertyType("ChamberWidth", "IfcPositiveLengthMeasure") { Definition = "Width, in the event of the shape being non circular in plan."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber wall construction\n.\nNOTE: It is assumed that chamber walls will be constructed at a single thickness."} },
				new [] { "IfcDistributionChamberElement" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeSump", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InvertLevel", "IfcPositiveLengthMeasure") { Definition = "The lowest point in the cross section of the sump."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "The length of the sump."},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The width of the sump."} },
				new [] { "IfcDistributionChamberElement" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeTrench", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcPositiveLengthMeasure") { Definition = "The depth of the trench."},
			new SingleValuePropertyType("InvertLevel", "IfcLengthMeasure") { Definition = "Level of the lowest part of the cross section as measured from ground level."},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The width of the trench."} },
				new [] { "IfcDistributionChamberElement" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeValveChamber", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber base construction.\nNOTE: It is assumed that chamber base will be constructed at a single thickness."},
			new SingleValuePropertyType("ChamberLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "Length or, in the event of the shape being circular in plan, the radius of the chamber."},
			new SingleValuePropertyType("ChamberWidth", "IfcPositiveLengthMeasure") { Definition = "Width, in the event of the shape being non circular in plan."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the chamber wall construction.\nNOTE: It is assumed that chamber walls will be constructed at a single thickness."} },
				new [] { "IfcDistributionChamberElement" });
		yield return new PropertySetInfo("Pset_DistributionPortCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ColorCode", "IfcLabel") { Definition = "Name of a color for identifying the connector, if applicable."},
			new SingleValuePropertyType("PortNumber", "IfcInteger") { Definition = "The port index for logically ordering the port within the containing element or element type."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortPHistoryCable", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortPHistoryDuct", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortPHistoryPipe", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortTypeCable", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConductorFunction", new [] { "PHASE_L1", "PHASE_L2", "PHASE_L3", "NEUTRAL", "PROTECTIVEEARTH", "PROTECTIVEEARTHNEUTRAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "For ports distributing power, indicates function of the conductors to which the load is connected."},
			new EnumerationPropertyType("ConnectionGender", new [] { "MALE", "FEMALE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The physical connection gender."},
			new EnumerationPropertyType("ConnectionType", new [] { "ACPLUG", "DCPLUG", "CRIMPCOAXIAL", "RJ", "RADIO", "DIN", "DSUB", "DVI", "EIAJ", "HDMI", "RCA", "TRS", "XLR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The physical port connection:\n\nACPLUG: AC plug\nDCPLUG: DC plug\nCRIMP: bare wire"},
			new SingleValuePropertyType("ConnectionSubtype", "IfcLabel") { Definition = "The physical port connection subtype that further qualifies the ConnectionType.  The following values are recommended:\nACPLUG: A, B, C, D, E, F, EF, G, H, I, J, K, L, M; RADIO: IEEE802.11g, IEEE802.11n\n; RJ: 4P4C, 6P2C, 8P8C; DIN: Mini3P, Mini4P, Mini5P, Mini6P, Mini7P, Mini8P, Mini9P \nDSub: DA15, DB25, DC37, DD50, DE9, DE15 \nEIAJ: RC5720\nHDMI: A, B, C\nTRS: TS_Mini, TS_SubMini, TRS_Mini, TRS_SubMini"},
			new SingleValuePropertyType("Current", "IfcElectricCurrentMeasure") { Definition = "The actual current and operable range."},
			new SingleValuePropertyType("CurrentContent3rdHarmonic", "IfcPositiveRatioMeasure") { Definition = "The ratio between the third harmonic current and the phase current."},
			new SingleValuePropertyType("Power", "IfcPowerMeasure") { Definition = "The actual power and operable range."},
			new SingleValuePropertyType("Protocols", "IfcIdentifier") { Definition = "For data ports, identifies the protocols used as defined by the Open System Interconnection (OSI) Basic Reference Model (ISO 7498).  Layers include: 1. Physical; 2. DataLink; 3. Network; 4. Transport; 5. Session; 6. Presentation; 7. Application.  Example: 3:IP, 4:TCP, 5:HTTP"},
			new SingleValuePropertyType("Voltage", "IfcElectricVoltageMeasure") { Definition = "The actual voltage and operable range."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortTypeDuct", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConnectionType", new [] { "BEADEDSLEEVE", "COMPRESSION", "CRIMP", "DRAWBAND", "DRIVESLIP", "FLANGED", "OUTSIDESLEEVE", "SLIPON", "SOLDERED", "SSLIP", "STANDINGSEAM", "SWEDGE", "WELDED", "OTHER", "NONE", "USERDEFINED", "NOTDEFINED" } ) { Definition = "The end-style treatment of the duct port:\n\nBEADEDSLEEVE: Beaded Sleeve. \nCOMPRESSION: Compression. \nCRIMP: Crimp. \nDRAWBAND: Drawband. \nDRIVESLIP: Drive slip. \nFLANGED: Flanged. \nOUTSIDESLEEVE: Outside Sleeve. \nSLIPON: Slipon. \nSOLDERED: Soldered. \nSSLIP: S-Slip. \nSTANDINGSEAM: Standing seam. \nSWEDGE: Swedge. \nWELDED: Welded. \nOTHER: Another type of end-style has been applied.\nNONE: No end-style has been applied."},
			new SingleValuePropertyType("ConnectionSubType", "IfcLabel") { Definition = "The physical port connection subtype that further qualifies the ConnectionType."},
			new SingleValuePropertyType("DryBulbTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Dry bulb temperature of the air."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the duct connection."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width or diameter of the duct connection."},
			new SingleValuePropertyType("Pressure", "IfcPressureMeasure") { Definition = "The pressure of the fluid."},
			new SingleValuePropertyType("Velocity", "IfcLinearVelocityMeasure") { Definition = "The velocity of the fluid."},
			new SingleValuePropertyType("VolumetricFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric flow rate of the fluid."},
			new SingleValuePropertyType("WetBulbTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Wet bulb temperature of the air."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortTypePipe", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConnectionType", new [] { "BRAZED", "COMPRESSION", "FLANGED", "GROOVED", "OUTSIDESLEEVE", "SOLDERED", "SWEDGE", "THREADED", "WELDED", "OTHER", "NONE", "UNSET" } ) { Definition = "The end-style treatment of the pipe port:\n\nBRAZED: Brazed. \nCOMPRESSION: Compression. \nFLANGED: Flanged. \nGROOVED: Grooved. \nOUTSIDESLEEVE: Outside Sleeve. \nSOLDERED: Soldered. \nSWEDGE: Swedge. \nTHREADED: Threaded. \nWELDED: Welded. \nOTHER: Another type of end-style has been applied.\nNONE: No end-style has been applied.\nUSERDEFINED: User-defined port connection type. \nNOTDEFINED: Undefined port connection type."},
			new SingleValuePropertyType("ConnectionSubType", "IfcLabel") { Definition = "The physical port connection subtype that further qualifies the ConnectionType."},
			new SingleValuePropertyType("FlowCondition", "IfcPositiveRatioMeasure") { Definition = "Defines the flow condition as a percentage of the cross-sectional area."},
			new SingleValuePropertyType("InnerDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual inner diameter of the pipe."},
			new SingleValuePropertyType("MassFlowRate", "IfcMassFlowRateMeasure") { Definition = "The mass flow rate of the fluid."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the pipe connection."},
			new SingleValuePropertyType("OuterDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual outer diameter of the pipe."},
			new SingleValuePropertyType("Pressure", "IfcPressureMeasure") { Definition = "The pressure of the fluid."},
			new SingleValuePropertyType("Temperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature of the fluid."},
			new SingleValuePropertyType("Velocity", "IfcLinearVelocityMeasure") { Definition = "The velocity of the fluid."},
			new SingleValuePropertyType("VolumetricFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric flow rate of the fluid."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionSystemCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specific instance of a distribution system, or sub-system (e.g. 'WWS/VS1', which indicates the system to be WWS, subsystems VSI/400). The reference values depend on the local code of practice."} },
				new [] { "IfcDistributionSystem" });
		yield return new PropertySetInfo("Pset_DistributionSystemTypeElectrical", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectricalSystemCategory", new [] { "HIGHVOLTAGE", "LOWVOLTAGE", "EXTRALOWVOLTAGE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Designates the voltage range of the circuit, according to IEC.  HIGHVOLTAGE indicates >1000V AC or >1500V DV; LOWVOLTAGE indicates 50-1000V AC or 120-1500V DC; EXTRALOWVOLTAGE indicates <50V AC or <120V DC."},
			new EnumerationPropertyType("ElectricalSystemType", new [] { "TN", "TN_C", "TN_S", "TN_C_S", "TT", "IT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "For certain purposes of electrical regulations, IEC 60364 defines types of system using type identifiers. Assignment of identifiers depends upon the relationship of the source, and of exposed conductive parts of the installation, to Ground (Earth).   Identifiers that may be assigned through IEC 60364 are: \n\n•TN type system, a system having one or more points of the source of energy directly earthed, the exposed conductive parts of the installation being connected to that point by protective conductors, \n•TN C type system, a TN type system in which neutral and protective functions are combined in a single conductor throughout the system, \n•TN S type system, a TN type system having separate neutral and protective conductors throughout the system, \n•TN C S type system, a TN type system in which neutral and protective functions are combined in a single conductor in part of the system, \n•TT type system, a system having one point of the source of energy directly earthed, the exposed conductive parts of the installation being connected to earth electrodes electrically independent of the earth electrodes of the source, \n•IT type system, a system having no direct connection between live parts and Earth, the exposed conductive parts of the electrical installation being earthed."},
			new SingleValuePropertyType("Diversity", "IfcPositiveRatioMeasure") { Definition = "The ratio, expressed as a numerical\nvalue or as a percentage, of the\nsimultaneous maximum demand of\na group of electrical appliances or\nconsumers within a specified period,\nto the sum of their individual maximum\ndemands within the same\nperiod. The group of electrical appliances is in this case connected to this circuit. Defenition from IEC 60050, IEV 691-10-04 \nNOTE1: It is often not desirable to size each conductor in a distribution system to support the total connected load at that point in the network. Diversity is applied on the basis of the anticipated loadings that are likely to result from all loads not being connected at the same time.\nNOTE2: Diversity is applied to final circuits only, not to sub-main circuits supplying other DBs."},
			new SingleValuePropertyType("MaximumAllowedVoltageDrop", "IfcElectricVoltageMeasure") { Definition = "The maximum voltage drop across the circuit that must not be exceeded. \nThere are two  voltage drop limit settings that may be applied; one for sub-main circuits, and one in each Distribution Board or Consumer Unit for final circuits connected to that board. The settings should limit the overall voltage drop to the required level. Default settings of 1.5% for sub-main circuits and 2.5% for final circuits, giving an overall limit of 4% may be applied.\nNOTE: This value may also be specified as a constraint within an IFC model if required but is included within the property set at this stage pending implementation of the required capabilities within software applications."},
			new SingleValuePropertyType("NetImpedance", "IfcElectricResistanceMeasure") { Definition = "The maximum earth loop impedance upstream of a circuit (typically stated as the variable Zs). This value is for 55o C (130oF) Celsius usage."},
			new SingleValuePropertyType("NumberOfLiveConductors", "IfcInteger") { Definition = "Number of live conductors within this circuit. Either this property or the ConductorFunction property (if only one) may be asserted."} },
				new [] { "IfcDistributionSystem" });
		yield return new PropertySetInfo("Pset_DistributionSystemTypeVentilation", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DuctSizingMethod", new [] { "CONSTANTFRICTION", "CONSTANTPRESSURE", "STATICREGAIN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the methodology to be used to size system components."},
			new SingleValuePropertyType("AspectRatio", "IfcReal") { Definition = "The default aspect ratio."},
			new SingleValuePropertyType("DesignName", "IfcLabel") { Definition = "A name for the design values."},
			new SingleValuePropertyType("FrictionLoss", "IfcReal") { Definition = "The pressure loss due to friction per unit length. (Data type = PressureMeasure/LengthMeasure)"},
			new SingleValuePropertyType("LeakageClass", "IfcPressureMeasure") { Definition = "Nominal leakage rating for the system components."},
			new SingleValuePropertyType("MaximumVelocity", "IfcLinearVelocityMeasure") { Definition = "The maximum design velocity of the air in the duct or fitting."},
			new SingleValuePropertyType("MinimumHeight", "IfcPositiveLengthMeasure") { Definition = "The minimum duct height for rectangular, oval or round duct."},
			new SingleValuePropertyType("MinimumWidth", "IfcPositiveLengthMeasure") { Definition = "The minimum duct width for oval or rectangular duct."},
			new SingleValuePropertyType("PressureClass", "IfcPressureMeasure") { Definition = "Nominal pressure rating of the system components. (Data type = PressureMeasure)"},
			new SingleValuePropertyType("ScrapFactor", "IfcReal") { Definition = "Sheet metal scrap factor."} },
				new [] { "IfcDistributionSystem" });
		yield return new PropertySetInfo("Pset_DoorCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("DurabilityRating", "IfcLabel") { Definition = "Durability against mechanical stress. It is given according to the national code or regulation."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere it defines an exit door in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety code or regulation."},
			new SingleValuePropertyType("GlazingAreaFraction", "IfcPositiveRatioMeasure") { Definition = "Fraction of the glazing area relative to the total area of the filling element. \nIt shall be used, if the glazing area is not given separately for all panels within the filling element."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. \nIt is giving according to the requirements of the national building code."},
			new SingleValuePropertyType("HasDrive", "IfcBoolean") { Definition = "Indication whether this object has an automatic drive to operate it (TRUE) or no drive (FALSE)"},
			new SingleValuePropertyType("HygrothermalRating", "IfcLabel") { Definition = "Resistence against hygrothermal impact from different temperatures and humidities inside and outside. It is given according to the national code or regulation."},
			new SingleValuePropertyType("Infiltration", "IfcVolumetricFlowRateMeasure") { Definition = "Infiltration flowrate of outside air for the filler object based on the area of the filler object at a pressure level of 50 Pascals. It shall be used, if the length of all joints is unknown."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("SecurityRating", "IfcLabel") { Definition = "Index based rating system indicating security level.\nIt is giving according to the national building code."},
			new SingleValuePropertyType("SelfClosing", "IfcBoolean") { Definition = "Indication whether this object is designed to close automatically after use (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SmokeStop", "IfcBoolean") { Definition = "Indication whether the object is designed to provide a smoke stop (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nIt applies to the total door construction."} },
				new [] { "IfcDoor" });
		yield return new PropertySetInfo("Pset_DoorWindowGlazingType", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FillGas", "IfcLabel") { Definition = "Name of the gas by which the gap between two glass layers is filled. It is given for information purposes only."},
			new SingleValuePropertyType("GlassColor", "IfcLabel") { Definition = "Color (tint) selection for this glazing. It is given for information purposes only."},
			new SingleValuePropertyType("GlassLayers", "IfcCountMeasure") { Definition = "Number of glass layers within the frame. E.g. \"2\" for double glazing."},
			new SingleValuePropertyType("GlassThickness1", "IfcPositiveLengthMeasure") { Definition = "Thickness of the first (inner) glass layer."},
			new SingleValuePropertyType("GlassThickness2", "IfcPositiveLengthMeasure") { Definition = "Thickness of the second (intermediate or outer) glass layer."},
			new SingleValuePropertyType("GlassThickness3", "IfcPositiveLengthMeasure") { Definition = "Thickness of the third (outer) glass layer."},
			new SingleValuePropertyType("IsCoated", "IfcBoolean") { Definition = "Indication whether the glass is coated with a material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsLaminated", "IfcBoolean") { Definition = "Indication whether the glass is layered with other materials (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsTempered", "IfcBoolean") { Definition = "Indication whether the glass is tempered (TRUE) or not (FALSE) ."},
			new SingleValuePropertyType("IsWired", "IfcBoolean") { Definition = "Indication whether the glass includes a contained wire mesh to prevent break-in (TRUE) or not (FALSE)"},
			new SingleValuePropertyType("ShadingCoefficient", "IfcNormalisedRatioMeasure") { Definition = "(SC): The measure of the ability of a glazing to transmit solar heat, relative to that ability for 3 mm (1/8-inch) clear, double-strength, single glass. Shading coefficient is being phased out in favor of the solar heat gain coefficient (SHGC), and is approximately equal to the SHGC multiplied by 1.15. The shading coefficient is expressed as a number without units between 0 and 1."},
			new SingleValuePropertyType("SolarAbsorption", "IfcNormalisedRatioMeasure") { Definition = "(Asol) The ratio of incident solar radiation that is absorbed by a glazing system. It is the sum of the absorption distributed to the exterior (a) and to the interior (qi). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("SolarHeatGainTransmittance", "IfcNormalisedRatioMeasure") { Definition = "(SHGC): The ratio of incident solar radiation that contributes to the heat gain of the interior, it is the solar radiation that directly passes (Tsol or τe) plus the part of the absorbed radiation that is distributed to the interior (qi). The SHGC is refered to also as g-value (g = τe + qi)."},
			new SingleValuePropertyType("SolarReflectance", "IfcNormalisedRatioMeasure") { Definition = "(Rsol): The ratio of incident solar radiation that is reflected by a glazing system (also named ρe). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("SolarTransmittance", "IfcNormalisedRatioMeasure") { Definition = "(Tsol): The ratio of incident solar radiation that directly passes through a glazing system (also named τe). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("ThermalTransmittanceSummer", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nSummer thermal transmittance coefficient of the glazing only, often referred to as (U-value)."},
			new SingleValuePropertyType("ThermalTransmittanceWinter", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nWinter thermal transmittance coefficient of the glazing only, often referred to as (U-value)."},
			new SingleValuePropertyType("VisibleLightReflectance", "IfcNormalisedRatioMeasure") { Definition = "Fraction of the visible light that is reflected by the glazing at normal incidence. It is a value without unit."},
			new SingleValuePropertyType("VisibleLightTransmittance", "IfcNormalisedRatioMeasure") { Definition = "Fraction of the visible light that passes the glazing at normal incidence. It is a value without unit."} },
				new [] { "IfcDoor", "IfcWindow" });
		yield return new PropertySetInfo("Pset_DoorWindowShadingType", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ExternalShadingCoefficient", "IfcPositiveRatioMeasure") { Definition = "Radiation transmission coefficient of the outside shading device. It is a value without unit."},
			new SingleValuePropertyType("InsetShadingCoefficient", "IfcPositiveRatioMeasure") { Definition = "Radiation transmission coefficient of the shading device inside the glazing, symbol \"b-value\". It is a value without unit."},
			new SingleValuePropertyType("InternalShadingCoefficient", "IfcPositiveRatioMeasure") { Definition = "Radiation transmission coefficient of the inside shading device, symbol \"b-value\". It is a value without unit."},
			new SingleValuePropertyType("ShadingCoefficient", "IfcNormalisedRatioMeasure") { Definition = "Reduction of the Solar Heat Gain Coefficient (SHGC) value (equal to the g-value in Europe) of the glazing by applying a shading device. Commonly known as Fc (or previously z-Value). The total Radiation Transmittance g<total> = g * Fc. The reduction coefficient is given as a unitless value between 0 and 1; the lower the shading coefficient (SC) the less solar heat it transmits."} },
				new [] { "IfcDoor", "IfcWindow" });
		yield return new PropertySetInfo("Pset_DuctFittingOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "The color of the duct segment.\n\nNote: This is typically used for any duct segments with a painted surface which is not otherwise specified as a covering."},
			new SingleValuePropertyType("HasLiner", "IfcBoolean") { Definition = "TRUE if the fitting has interior duct insulating lining, FALSE if it does not."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness of the duct fitting material."} },
				new [] { "IfcDuctFitting" });
		yield return new PropertySetInfo("Pset_DuctFittingPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcDuctFitting" });
		yield return new PropertySetInfo("Pset_DuctFittingTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("PressureClass", "IfcPressureMeasure") { Definition = "Pressure classification as defined by the authority having jurisdiction (e.g., SMACNA, etc.)."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."} },
				new [] { "IfcDuctFitting" });
		yield return new PropertySetInfo("Pset_DuctSegmentOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "The color of the duct segment.\n\nNote: This is typically used for any duct segments with a painted surface which is not otherwise specified as a covering."},
			new SingleValuePropertyType("HasLiner", "IfcBoolean") { Definition = "TRUE if the fitting has interior duct insulating lining, FALSE if it does not."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness of the duct fitting material."} },
				new [] { "IfcDuctSegment" });
		yield return new PropertySetInfo("Pset_DuctSegmentPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcDuctSegment" });
		yield return new PropertySetInfo("Pset_DuctSegmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Shape", new [] { "FLATOVAL", "RECTANGULAR", "ROUND", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Cross sectional shape. Note that this shape is uniform throughout the length of the segment. For nonuniform shapes, a transition fitting should be used instead."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("LongitudinalSeam", "IfcText") { Definition = "The type of seam to be used along the longitudinal axis of the duct segment."},
			new SingleValuePropertyType("NominalDiameterOrWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter or width of the duct segment."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the duct segment."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("Reinforcement", "IfcLabel") { Definition = "The type of reinforcement, if any, used for the duct segment."},
			new SingleValuePropertyType("ReinforcementSpacing", "IfcPositiveLengthMeasure") { Definition = "The spacing between reinforcing elements."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."},
			new SingleValuePropertyType("WorkingPressure", "IfcPressureMeasure") { Definition = "Pressure classification as defined by the authority having jurisdiction (e.g., SMACNA, etc.)."} },
				new [] { "IfcDuctSegment" });
		yield return new PropertySetInfo("Pset_DuctSilencerPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcDuctSilencer" });
		yield return new PropertySetInfo("Pset_DuctSilencerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AirFlowrateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered."},
			new SingleValuePropertyType("HasExteriorInsulation", "IfcBoolean") { Definition = "TRUE if the silencer has exterior insulation. FALSE if it does not."},
			new SingleValuePropertyType("HydraulicDiameter", "IfcLengthMeasure") { Definition = "Hydraulic diameter."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The finished length of the silencer."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable minimum and maximum temperature."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "The weight of the silencer."},
			new SingleValuePropertyType("WorkingPressureRange", "IfcPressureMeasure") { Definition = "Allowable minimum and maximum  working pressure (relative to ambient pressure)."} },
				new [] { "IfcDuctSilencer" });
		yield return new PropertySetInfo("Pset_ElectricalDeviceCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConductorFunction", new [] { "L1", "L2", "L3" } ) { Definition = "Function of a line conductor to which a device  is intended to be connected where L1, L2 and L3 represent the phase lines according to IEC 60446 notation (sometimes phase lines may be referenced by color [Red, Blue, Yellow] or by number [1, 2, 3] etc). Protective Earth is sometimes also known as CPC or common protective conductor. Note that for an electrical device, a set of line conductor functions may be applied."},
			new EnumerationPropertyType("InsulationStandardClass", new [] { "CLASS0APPLIANCE", "CLASS0IAPPLIANCE", "CLASSIAPPLIANCE", "CLASSIIAPPLIANCE", "CLASSIIIAPPLIANCE", "NOTKNOWN", "UNSET" } ) { Definition = "Insulation standard classes provides basic protection information against electric shock. Defines levels of insulation required in terms of constructional requirements (creepage and clearance distances) and electrical requirements (compliance with electric strength tests). Basic insulation is considered to be shorted under single fault conditions. The actual values required depend on the working voltage to which the insulation is subjected, as well as other factors. Also indicates whether the electrical device has a protective earth connection."},
			new SingleValuePropertyType("HasProtectiveEarth", "IfcBoolean") { Definition = "Indicates whether the electrical device has a protective earth connection (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("IP_Code", "IfcLabel") { Definition = "IEC 60529 (1989) Classification of degrees of protection provided by enclosures (IP Code)."},
			new SingleValuePropertyType("NominalFrequencyRange", "IfcFrequencyMeasure") { Definition = "The upper and lower limits of frequency for which the operation of the device is certified."},
			new SingleValuePropertyType("NumberOfPoles", "IfcInteger") { Definition = "The number of live lines that is intemnded to be handled by the device."},
			new SingleValuePropertyType("PowerFactor", "IfcNormalisedRatioMeasure") { Definition = "The ratio between the rated electrical power and the product of the rated current and rated voltage"},
			new SingleValuePropertyType("RatedCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that a device is designed to handle."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The voltage that a device is designed to handle."} },
				new [] { "IfcDistributionElement" });
		yield return new PropertySetInfo("Pset_ElectricAppliancePHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcElectricAppliance" });
		yield return new PropertySetInfo("Pset_ElectricApplianceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcElectricAppliance" });
		yield return new PropertySetInfo("Pset_ElectricApplianceTypeDishwasher", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DishwasherType", new [] { "POTWASHER", "TRAYWASHER", "DISHWASHER", "BOTTLEWASHER", "CUTLERYWASHER", "OTHER", "UNKNOWN", "UNSET" } ) { Definition = "Type of dishwasher."} },
				new [] { "IfcElectricAppliance" });
		yield return new PropertySetInfo("Pset_ElectricApplianceTypeElectricCooker", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectricCookerType", new [] { "STEAMCOOKER", "DEEPFRYER", "STOVE", "OVEN", "TILTINGFRYINGPAN", "COOKINGKETTLE", "OTHER", "UNKNOWN", "UNSET" } ) { Definition = "Type of electric cooker."} },
				new [] { "IfcElectricAppliance" });
		yield return new PropertySetInfo("Pset_ElectricDistributionBoardOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsMain", "IfcBoolean") { Definition = "Identifies if the current instance is a main distribution point or topmost level in an electrical distribution hierarchy (= TRUE) or a sub-main distribution point (= FALSE)."},
			new SingleValuePropertyType("IsSkilledOperator", "IfcBoolean") { Definition = "Identifies if the current instance requires a skilled person or instructed person to perform operations on the distribution board (= TRUE) or whether operations may be performed by a person without appropriate skills or instruction (= FALSE)."} },
				new [] { "IfcElectricDistributionBoard" });
		yield return new PropertySetInfo("Pset_ElectricDistributionBoardTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcElectricDistributionBoard" });
		yield return new PropertySetInfo("Pset_ElectricFlowStorageDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConnectedConductorFunction", new [] { "PHASE_L1", "PHASE_L2", "PHASE_L3", "NEUTRAL", "PROTECTIVEEARTH", "PROTECTIVEEARTHNEUTRAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Function of the conductors to which the load is connected."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("EarthFault1PoleMaximumState", "IfcElectricCurrentMeasure") { Definition = "Maximum 1 pole earth fault current provided at the point of supply i.e. the fault between 1 phase and PE/PEN."},
			new SingleValuePropertyType("EarthFault1PoleMinimumState", "IfcElectricCurrentMeasure") { Definition = "Minimum 1 pole earth fault current provided at the point of supply i.e. the fault between 1 phase and PE/PEN."},
			new SingleValuePropertyType("EarthFault1PolePowerFactorMaximumState", "IfcReal") { Definition = "Power factor of the maximum 1 pole earth fault  current provided at the point of supply i.e. the fault between 1 phase and PE/PEN."},
			new SingleValuePropertyType("EarthFault1PolePowerFactorMinimumState", "IfcReal") { Definition = "Power factor of the minimum 1 pole earth fault current provided at the point of supply i.e. the fault between 1 phase and PE/PEN."},
			new SingleValuePropertyType("NominalFrequency", "IfcFrequencyMeasure") { Definition = "The nominal frequency of the supply."},
			new SingleValuePropertyType("NominalSupplyVoltage", "IfcElectricVoltageMeasure") { Definition = "The nominal voltage of the supply."},
			new SingleValuePropertyType("NominalSupplyVoltageOffset", "IfcElectricVoltageMeasure") { Definition = "The maximum and minimum allowed voltage of the supply e.g. boundaries of 380V/440V may be applied for a nominal voltage of 400V."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("ShortCircuit1PoleMaximumState", "IfcElectricCurrentMeasure") { Definition = "Maximum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N."},
			new SingleValuePropertyType("ShortCircuit1PoleMinimumState", "IfcElectricCurrentMeasure") { Definition = "Minimum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N."},
			new SingleValuePropertyType("ShortCircuit1PolePowerFactorMaximumState", "IfcReal") { Definition = "Power factor of the maximum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N."},
			new SingleValuePropertyType("ShortCircuit1PolePowerFactorMinimumState", "IfcReal") { Definition = "Power factor of the minimum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N."},
			new SingleValuePropertyType("ShortCircuit2PoleMinimumState", "IfcElectricCurrentMeasure") { Definition = "Minimum 2 pole short circuit current provided at the point of supply."},
			new SingleValuePropertyType("ShortCircuit2PolePowerFactorMinimumState", "IfcReal") { Definition = "Power factor of the minimum 2 pole short circuit current provided at the point of supply."},
			new SingleValuePropertyType("ShortCircuit3PoleMaximumState", "IfcElectricCurrentMeasure") { Definition = "Maximum 3 pole short circuit current provided at the point of supply."},
			new SingleValuePropertyType("ShortCircuit3PolePowerFactorMaximumState", "IfcReal") { Definition = "Power factor of the maximum 3 pole short circuit current provided at the point of supply."} },
				new [] { "IfcElectricFlowStorageDevice" });
		yield return new PropertySetInfo("Pset_ElectricGeneratorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ElectricGeneratorEfficiency", "IfcPositiveRatioMeasure") { Definition = "The ratio of output capacity to intake capacity."},
			new SingleValuePropertyType("MaximumPowerOutput", "IfcPowerMeasure") { Definition = "The maximum output power rating of the engine."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("StartCurrentFactor", "IfcReal") { Definition = "IEC. Start current factor defines how large the peek starting current will become on the engine. StartCurrentFactor is multiplied to NominalCurrent and we get the start current."} },
				new [] { "IfcElectricGenerator" });
		yield return new PropertySetInfo("Pset_ElectricMotorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MotorEnclosureType", new [] { "OPENDRIPPROOF", "TOTALLYENCLOSEDAIROVER", "TOTALLYENCLOSEDFANCOOLED", "TOTALLYENCLOSEDNONVENTILATED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of motor enclosure from which that required may be selected."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ElectricMotorEfficiency", "IfcPositiveRatioMeasure") { Definition = "The ratio of output capacity to intake capacity."},
			new SingleValuePropertyType("FrameSize", "IfcLabel") { Definition = "Designation of the frame size according to the named range of frame sizes designated at the place of use or according to a given standard."},
			new SingleValuePropertyType("HasPartWinding", "IfcBoolean") { Definition = "Indication of whether the motor is single speed, i.e. has a single winding (= FALSE) or multi-speed i.e.has part winding (= TRUE) ."},
			new SingleValuePropertyType("IsGuarded", "IfcBoolean") { Definition = "Indication of whether the motor enclosure is guarded (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("LockedRotorCurrent", "IfcElectricCurrentMeasure") { Definition = "Input current when a motor armature is energized but not rotating."},
			new SingleValuePropertyType("MaximumPowerOutput", "IfcPowerMeasure") { Definition = "The maximum output power rating of the engine."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("StartCurrentFactor", "IfcReal") { Definition = "IEC. Start current factor defines how large the peak starting current will become on the engine. StartCurrentFactor is multiplied to NominalCurrent and to give the start current."},
			new SingleValuePropertyType("StartingTime", "IfcTimeMeasure") { Definition = "The time (in s) needed for the motor to reach its rated speed with its driven equipment attached, starting from standstill and at the nominal voltage applied at its terminals."},
			new SingleValuePropertyType("TeTime", "IfcTimeMeasure") { Definition = "The maximum time (in s) at which the motor could run with locked rotor when the motor is used in an EX-environment. The time indicates that a protective device should trip before this time when the starting current of the motor is slowing through the device."} },
				new [] { "IfcElectricMotor" });
		yield return new PropertySetInfo("Pset_ElectricTimeControlTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcElectricTimeControl" });
		yield return new PropertySetInfo("Pset_ElementComponentCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CorrosionTreatment", new [] { "PAINTED", "EPOXYCOATED", "GALVANISED", "STAINLESS", "NONE", "NOTDEFINED" } ) { Definition = "Determines corrosion treatment for metal components. This property is provided if the requirement needs to be expressed (a) independently of a material specification and (b) as a mere requirements statement rather than a workshop design/ processing feature."},
			new EnumerationPropertyType("DeliveryType", new [] { "CAST_IN_PLACE", "WELDED_TO_STRUCTURE", "LOOSE", "ATTACHED_FOR_DELIVERY", "PRECAST", "NOTDEFINED" } ) { Definition = "Determines how the accessory will be delivered to the site."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."} },
				new [] { "IfcElementComponent" });
		yield return new PropertySetInfo("Pset_EngineTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EnergySource", new [] { "DIESEL", "GASOLINE", "NATURALGAS", "PROPANE", "BIODIESEL", "SEWAGEGAS", "HYDROGEN", "BIFUEL", "OTHER", "UNKNOWN", "UNSET" } ) { Definition = "The source of energy."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."} },
				new [] { "IfcEngine" });
		yield return new PropertySetInfo("Pset_EnvironmentalImpactIndicators", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LifeCyclePhase", new [] { "Acquisition", "Cradletosite", "Deconstruction", "Disposal", "Disposaltransport", "Growth", "Installation", "Maintenance", "Manufacture", "Occupancy", "Operation", "Procurement", "Production", "Productiontransport", "Recovery", "Refurbishment", "Repair", "Replacement", "Transport", "Usage", "Waste", "Wholelifecycle", "UserDefined", "NotDefined" } ) { Definition = "The whole life cycle or only a given phase  from which environmental data are valid."},
			new SingleValuePropertyType("AtmosphericAcidificationPerUnit", "IfcMassMeasure") { Definition = "Quantity of gases responsible for the atmospheric acidification calculated in equivalent SO2"},
			new SingleValuePropertyType("ClimateChangePerUnit", "IfcMassMeasure") { Definition = "Quantity of greenhouse gases emitted calculated in equivalent CO2"},
			new SingleValuePropertyType("EutrophicationPerUnit", "IfcMassMeasure") { Definition = "Quantity of eutrophicating compounds calculated in equivalent PO4"},
			new SingleValuePropertyType("ExpectedServiceLife", "IfcTimeMeasure") { Definition = "Expected service life in years."},
			new SingleValuePropertyType("FunctionalUnitReference", "IfcLabel") { Definition = "Reference to a database or a classification"},
			new SingleValuePropertyType("HazardousWastePerUnit", "IfcMassMeasure") { Definition = "Quantity of hazardous waste generated"},
			new SingleValuePropertyType("InertWastePerUnit", "IfcMassMeasure") { Definition = "Quantity of inert waste generated"},
			new SingleValuePropertyType("NonHazardousWastePerUnit", "IfcMassMeasure") { Definition = "Quantity of non hazardous waste generated"},
			new SingleValuePropertyType("NonRenewableEnergyConsumptionPerUnit", "IfcEnergyMeasure") { Definition = "Quantity of non-renewable energy used as defined in ISO21930:2007"},
			new SingleValuePropertyType("PhotochemicalOzoneFormationPerUnit", "IfcMassMeasure") { Definition = "Quantity of gases creating the photochemical ozone calculated in equivalent ethylene"},
			new SingleValuePropertyType("RadioactiveWastePerUnit", "IfcMassMeasure") { Definition = "Quantity of radioactive waste generated"},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project"},
			new SingleValuePropertyType("RenewableEnergyConsumptionPerUnit", "IfcEnergyMeasure") { Definition = "Quantity of renewable energy used as defined in ISO21930:2007"},
			new SingleValuePropertyType("ResourceDepletionPerUnit", "IfcMassMeasure") { Definition = "Quantity of resources used calculated in equivalent antimony"},
			new SingleValuePropertyType("StratosphericOzoneLayerDestructionPerUnit", "IfcMassMeasure") { Definition = "Quantity of gases destroying the stratospheric ozone layer calculated in equivalent CFC-R11"},
			new SingleValuePropertyType("TotalPrimaryEnergyConsumptionPerUnit", "IfcEnergyMeasure") { Definition = "Quantity of energy used as defined in ISO21930:2007."},
			new SingleValuePropertyType("Unit", "IfcText") { Definition = "The unit of the quantity the environmental indicators values are related with."},
			new SingleValuePropertyType("WaterConsumptionPerUnit", "IfcVolumeMeasure") { Definition = "Quantity of water used."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_EnvironmentalImpactValues", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AtmosphericAcidification", "IfcMassMeasure") { Definition = "Quantity of gases responsible for the atmospheric acidification calculated in equivalent SO2."},
			new SingleValuePropertyType("ClimateChange", "IfcMassMeasure") { Definition = "Quantity of greenhouse gases emitted calculated in equivalent CO2."},
			new SingleValuePropertyType("Eutrophication", "IfcMassMeasure") { Definition = "Quantity of eutrophicating compounds calculated in equivalent PO4."},
			new SingleValuePropertyType("HazardousWaste", "IfcMassMeasure") { Definition = "Quantity of hazardous waste generated."},
			new SingleValuePropertyType("InertWaste", "IfcMassMeasure") { Definition = "Quantity of inert waste generated ."},
			new SingleValuePropertyType("NonHazardousWaste", "IfcMassMeasure") { Definition = "Quantity of non hazardous waste generated."},
			new SingleValuePropertyType("NonRenewableEnergyConsumption", "IfcEnergyMeasure") { Definition = "Quantity of non-renewable energy used as defined in ISO21930:2007"},
			new SingleValuePropertyType("PhotochemicalOzoneFormation", "IfcMassMeasure") { Definition = "Quantity of gases creating the photochemical ozone calculated in equivalent ethylene."},
			new SingleValuePropertyType("RadioactiveWaste", "IfcMassMeasure") { Definition = "Quantity of radioactive waste generated."},
			new SingleValuePropertyType("RenewableEnergyConsumption", "IfcEnergyMeasure") { Definition = "Quantity of renewable energy used as defined in ISO21930:2007"},
			new SingleValuePropertyType("ResourceDepletion", "IfcMassMeasure") { Definition = "Quantity of resources used calculated in equivalent antimony."},
			new SingleValuePropertyType("StratosphericOzoneLayerDestruction", "IfcMassMeasure") { Definition = "Quantity of gases destroying the stratospheric ozone layer calculated in equivalent CFC-R11."},
			new SingleValuePropertyType("TotalPrimaryEnergyConsumption", "IfcEnergyMeasure") { Definition = "Quantity of energy used as defined in ISO21930:2007."},
			new SingleValuePropertyType("WaterConsumption", "IfcVolumeMeasure") { Definition = "Quantity of water used."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_EvaporativeCoolerPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcEvaporativeCooler" });
		yield return new PropertySetInfo("Pset_EvaporativeCoolerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FlowArrangement", new [] { "COUNTERFLOW", "CROSSFLOW", "PARALLELFLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "CounterFlow: Air and water flow enter in different directions.\n\nCrossFlow: Air and water flow are perpendicular.\nParallelFlow: Air and water flow enter in same directions."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("HeatExchangeArea", "IfcAreaMeasure") { Definition = "Heat exchange area."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("WaterRequirement", "IfcVolumetricFlowRateMeasure") { Definition = "Make-up water requirement."} },
				new [] { "IfcEvaporativeCooler" });
		yield return new PropertySetInfo("Pset_EvaporatorPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcEvaporator" });
		yield return new PropertySetInfo("Pset_EvaporatorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EvaporatorCoolant", new [] { "WATER", "BRINE", "GLYCOL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The fluid used for the coolant in the evaporator."},
			new EnumerationPropertyType("EvaporatorMediumType", new [] { "COLDLIQUID", "COLDAIR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "ColdLiquid: Evaporator is using liquid type of fluid to exchange heat with refrigerant.\nColdAir: Evaporator is using air to exchange heat with refrigerant."},
			new EnumerationPropertyType("RefrigerantClass", new [] { "CFC", "HCFC", "HFC", "HYDROCARBONS", "AMMONIA", "CO2", "H2O", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Refrigerant class used by the compressor.\nCFC: Chlorofluorocarbons.\nHCFC: Hydrochlorofluorocarbons.\nHFC: Hydrofluorocarbons."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ExternalSurfaceArea", "IfcAreaMeasure") { Definition = "External surface area (both primary and secondary area)."},
			new SingleValuePropertyType("InternalRefrigerantVolume", "IfcVolumeMeasure") { Definition = "Internal volume of evaporator (refrigerant side)."},
			new SingleValuePropertyType("InternalSurfaceArea", "IfcAreaMeasure") { Definition = "Internal surface area."},
			new SingleValuePropertyType("InternalWaterVolume", "IfcVolumeMeasure") { Definition = "Internal volume of evaporator (water side)."},
			new SingleValuePropertyType("NominalHeatTransferArea", "IfcAreaMeasure") { Definition = "Nominal heat transfer surface area associated with nominal overall heat transfer coefficient."},
			new SingleValuePropertyType("NominalHeatTransferCoefficient", "IfcThermalTransmittanceMeasure") { Definition = "Nominal overall heat transfer coefficient associated with nominal heat transfer area."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcEvaporator" });
		yield return new PropertySetInfo("Pset_FanCentrifugal", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Arrangement", new [] { "ARRANGEMENT1", "ARRANGEMENT2", "ARRANGEMENT3", "ARRANGEMENT4", "ARRANGEMENT7", "ARRANGEMENT8", "ARRANGEMENT9", "ARRANGEMENT10", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the fan and motor drive arrangement as defined by AMCA.\n\nARRANGEMENT1: Arrangement 1. \nARRANGEMENT2: Arrangement 2. \nARRANGEMENT3: Arrangement 3. \nARRANGEMENT4: Arrangement 4. \nARRANGEMENT7: Arrangement 7. \nARRANGEMENT8: Arrangement 8. \nARRANGEMENT9: Arrangement 9. \nARRANGEMENT10: Arrangement 10. \nOTHER: Other type of fan drive arrangement."},
			new EnumerationPropertyType("DirectionOfRotation", new [] { "CLOCKWISE", "COUNTERCLOCKWISE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The direction of the centrifugal fan wheel rotation when viewed from the drive side of the fan.\n\nCLOCKWISE: Clockwise. \nCOUNTERCLOCKWISE: Counter-clockwise. \nOTHER: Other type of fan rotation."},
			new EnumerationPropertyType("DischargePosition", new [] { "TOPHORIZONTAL", "TOPANGULARDOWN", "TOPANGULARUP", "DOWNBLAST", "BOTTOMANGULARDOWN", "BOTTOMHORIZONTAL", "BOTTOMANGULARUP", "UPBLAST", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Centrifugal fan discharge position.\n\nTOPHORIZONTAL: Top horizontal discharge. \nTOPANGULARDOWN: Top angular down discharge. \nDOWNBLAST: Downblast discharge. \nBOTTOMANGULARDOWN: Bottom angular down discharge. \nBOTTOMHORIZONTAL: Bottom horizontal discharge. \nBOTTOMANGULARUP: Bottom angular up discharge. \nUPBLAST: Upblast discharge. \nTOPANGULARUP: Top angular up discharge. \nOTHER: Other type of fan arrangement."} },
				new [] { "IfcFan" });
		yield return new PropertySetInfo("Pset_FanOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ApplicationOfFan", new [] { "SUPPLYAIR", "RETURNAIR", "EXHAUSTAIR", "COOLINGTOWER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The functional application of the fan.\n\nSupplyAir: Supply air fan. \nReturnAir: Return air fan. \nExhaustAir: Exhaust air fan. \nOther: Other type of application not defined above."},
			new EnumerationPropertyType("CoilPosition", new [] { "DRAWTHROUGH", "BLOWTHROUGH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the relationship between a fan and a coil.\n\nDrawThrough: Fan located downstream of the coil.\nBlowThrough: Fan located upstream of the coil."},
			new EnumerationPropertyType("DischargeType", new [] { "DUCT", "SCREEN", "LOUVER", "DAMPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the type of connection at the fan discharge.\n\nDuct: Discharge into ductwork.\nScreen: Discharge into screen outlet.\nLouver: Discharge into a louver.\nDamper: Discharge into a damper."},
			new EnumerationPropertyType("FanMountingType", new [] { "MANUFACTUREDCURB", "FIELDERECTEDCURB", "CONCRETEPAD", "SUSPENDED", "WALLMOUNTED", "DUCTMOUNTED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the method of mounting the fan in the building."},
			new EnumerationPropertyType("MotorPosition", new [] { "INAIRSTREAM", "OUTOFAIRSTREAM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the location of the motor relative to the air stream.\n\nInAirStream: Fan motor is in the air stream.\nOutOfAirStream: Fan motor is out of the air stream."},
			new SingleValuePropertyType("FractionOfMotorHeatToAirStream", "IfcNormalisedRatioMeasure") { Definition = "Fraction of the motor heat released into the fluid flow."},
			new SingleValuePropertyType("ImpellerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of fan wheel - used to scale performance of geometrically similar fans."} },
				new [] { "IfcFan" });
		yield return new PropertySetInfo("Pset_FanPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcFan" });
		yield return new PropertySetInfo("Pset_FanTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CapacityControlType", new [] { "INLETVANE", "VARIABLESPEEDDRIVE", "BLADEPITCHANGLE", "TWOSPEED", "DISCHARGEDAMPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "InletVane: Control by adjusting inlet vane.\nVariableSpeedDrive: Control by variable speed drive. \nBladePitchAngle: Control by adjusting blade pitch angle.\nTwoSpeed: Control by switch between high and low speed.\nDischargeDamper: Control by modulating discharge damper."},
			new EnumerationPropertyType("MotorDriveType", new [] { "DIRECTDRIVE", "BELTDRIVE", "COUPLING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Motor drive type:\nDIRECTDRIVE: Direct drive. \nBELTDRIVE: Belt drive. \nCOUPLING: Coupling. \nOTHER: Other type of motor drive. \nUNKNOWN: Unknown motor drive type."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal air flow rate."},
			new SingleValuePropertyType("NominalPowerRate", "IfcPowerMeasure") { Definition = "Nominal fan power rate."},
			new SingleValuePropertyType("NominalRotationSpeed", "IfcRotationalFrequencyMeasure") { Definition = "Nominal fan wheel speed."},
			new SingleValuePropertyType("NominalStaticPressure", "IfcPressureMeasure") { Definition = "The static pressure within the air stream that the fan must overcome to insure designed circulation of air."},
			new SingleValuePropertyType("NominalTotalPressure", "IfcPressureMeasure") { Definition = "Nominal total pressure rise across the fan."},
			new SingleValuePropertyType("OperationalCriteria", "IfcTimeMeasure") { Definition = "Time of operation at maximum operational ambient air temperature."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."} },
				new [] { "IfcFan" });
		yield return new PropertySetInfo("Pset_FastenerWeld", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("a", "IfcPositiveLengthMeasure") { Definition = "Measure a according to ISO 2553"},
			new SingleValuePropertyType("c", "IfcPositiveLengthMeasure") { Definition = "Measure c according to ISO 2553"},
			new SingleValuePropertyType("d", "IfcPositiveLengthMeasure") { Definition = "Measure d according to ISO 2553"},
			new SingleValuePropertyType("e", "IfcPositiveLengthMeasure") { Definition = "Measure e according to ISO 2553"},
			new SingleValuePropertyType("Intermittent", "IfcBoolean") { Definition = "If fillet weld, intermittent or not"},
			new SingleValuePropertyType("l", "IfcPositiveLengthMeasure") { Definition = "Measure l according to ISO 2553"},
			new SingleValuePropertyType("n", "IfcCountMeasure") { Definition = "Count n according to ISO 2553"},
			new SingleValuePropertyType("Process", "IfcInteger") { Definition = "Reference number of the welding process according to ISO 4063, an up to three digits long code"},
			new SingleValuePropertyType("ProcessName", "IfcLabel") { Definition = "Name of the welding process.  Alternative to the numeric Process property."},
			new SingleValuePropertyType("s", "IfcPositiveLengthMeasure") { Definition = "Measure s according to ISO 2553"},
			new SingleValuePropertyType("Staggered", "IfcBoolean") { Definition = "If intermittent weld, staggered or not"},
			new SingleValuePropertyType("Surface1", "IfcLabel") { Definition = "Aspect of weld seam surface, i.e. 'plane', 'curved' or 'hollow'.  Combined welds are given by two corresponding symbols analogous to Type1 and Type2."},
			new SingleValuePropertyType("Surface2", "IfcLabel") { Definition = "See Surface1."},
			new SingleValuePropertyType("Type1", "IfcLabel") { Definition = "Type of weld seam according to ISO 2553.  Note, combined welds are given by two corresponding symbols in the direction of the normal axis of the coordinate system.  For example, an X weld is specified by Type1 = 'V' and Type2 = 'V'."},
			new SingleValuePropertyType("Type2", "IfcLabel") { Definition = "See Type1."},
			new SingleValuePropertyType("z", "IfcPositiveLengthMeasure") { Definition = "Measure z according to ISO 2553"} },
				new [] { "IfcFastener" });
		yield return new PropertySetInfo("Pset_FilterPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcFilter" });
		yield return new PropertySetInfo("Pset_FilterTypeAirParticleFilter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirParticleFilterType", new [] { "COARSEMETALSCREEN", "COARSECELLFOAMS", "COARSESPUNGLASS", "MEDIUMELECTRETFILTER", "MEDIUMNATURALFIBERFILTER", "HEPAFILTER", "ULPAFILTER", "MEMBRANEFILTERS", "RENEWABLEMOVINGCURTIANDRYMEDIAFILTER", "ELECTRICALFILTER", "ROLLFORM", "ADHESIVERESERVOIR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A panel dry type extended surface filter is a dry-type air filter with random fiber mats or blankets in the forms of pockets, V-shaped or radial pleats, and include the following:\n\nCoarseFilter: Filter with a efficiency lower than 30% for atmosphere dust-spot.\nCoarseMetalScreen: Filter made of metal screen.\nCoarseCellFoams: Filter made of cell foams.\nCoarseSpunGlass: Filter made of spun glass.\nMediumFilter: Filter with an efficiency between 30-98% for atmosphere dust-spot.\nMediumElectretFilter: Filter with fine electret synthetic fibers.\nMediumNaturalFiberFilter: Filter with natural fibers.\nHEPAFilter: High efficiency particulate air filter.\nULPAFilter: Ultra low penetration air filter.\nMembraneFilters: Filter made of membrane for certain pore diameters in flat sheet and pleated form.\nA renewable media with a moving curtain viscous filter are random-fiber media coated with viscous substance in roll form or curtain where fresh media is fed across the face of the filter and the dirty media is rewound onto a roll at the bottom or to into a reservoir:\nRollForm: Viscous filter used in roll form.\nAdhesiveReservoir: Viscous filter used in moving curtain form.\nA renewable moving curtain dry media filter is a random-fiber dry media of relatively high porosity used in moving-curtain(roll) filters.\nAn electrical filter uses electrostatic precipitation to remove and collect particulate contaminants."},
			new EnumerationPropertyType("SeparationType", new [] { "BAG", "PLEAT", "TREADSEPARATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Air particulate filter media separation type."},
			new SingleValuePropertyType("DustHoldingCapacity", "IfcMassMeasure") { Definition = "Maximum filter dust holding capacity."},
			new SingleValuePropertyType("FaceSurfaceArea", "IfcAreaMeasure") { Definition = "Face area of filter frame."},
			new SingleValuePropertyType("MediaExtendedArea", "IfcAreaMeasure") { Definition = "Total extended media area."},
			new SingleValuePropertyType("NominalCountedEfficiency", "IfcReal") { Definition = "Nominal filter efficiency based the particle count concentration before and after the filter against particles with a certain size distribution."},
			new SingleValuePropertyType("NominalWeightedEfficiency", "IfcReal") { Definition = "Nominal filter efficiency based the particle weight concentration before and after the filter against particles with a certain size distribution."} },
				new [] { "IfcFilter" });
		yield return new PropertySetInfo("Pset_FilterTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FinalResistance", "IfcPressureMeasure") { Definition = "Filter fluid resistance when replacement is required (i.e., Pressure drop at the maximum air flowrate across the filter when the filter needs replacement per ASHRAE Standard 52.1)."},
			new SingleValuePropertyType("FlowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of fluid flowrate that can be delivered."},
			new SingleValuePropertyType("InitialResistance", "IfcPressureMeasure") { Definition = "Initial new filter fluid resistance (i.e., pressure drop at the maximum air flowrate across the filter when the filter is new per ASHRAE Standard 52.1)."},
			new SingleValuePropertyType("NominalFilterFaceVelocity", "IfcLinearVelocityMeasure") { Definition = "Filter face velocity."},
			new SingleValuePropertyType("NominalFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal fluid flow rate through the filter."},
			new SingleValuePropertyType("NominalMediaSurfaceVelocity", "IfcLinearVelocityMeasure") { Definition = "Average fluid velocity at the media surface."},
			new SingleValuePropertyType("NominalParticleGeometricMeanDiameter", "IfcPositiveLengthMeasure") { Definition = "Particle geometric mean diameter associated with nominal efficiency."},
			new SingleValuePropertyType("NominalParticleGeometricStandardDeviation", "IfcReal") { Definition = "Particle geometric standard deviation associated with nominal efficiency."},
			new SingleValuePropertyType("NominalPressureDrop", "IfcPressureMeasure") { Definition = "Total pressure drop across the filter."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient fluid temperature range."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Weight of filter."} },
				new [] { "IfcFilter" });
		yield return new PropertySetInfo("Pset_FilterTypeCompressedAirFilter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CompressedAirFilterType", new [] { "ACTIVATEDCARBON", "PARTICLE_FILTER", "COALESCENSE_FILTER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "ACTIVATEDCARBON: absorbs oil vapor and odor; PARTICLE_FILTER: used to absorb solid particles of medium size; COALESCENSE_FILTER: used to absorb fine solid, oil, and water particles, also called micro filter"},
			new SingleValuePropertyType("AutomaticCondensateDischarge", "IfcBoolean") { Definition = "Whether or not the condensing water or oil is discharged automatically from the filter."},
			new SingleValuePropertyType("CloggingIndicator", "IfcBoolean") { Definition = "Whether the filter has an indicator to display the degree of clogging of the filter."},
			new SingleValuePropertyType("OperationPressureMax", "IfcPressureMeasure") { Definition = "Maximum pressure under normal operating conditions."} },
				new [] { "IfcFilter" });
		yield return new PropertySetInfo("Pset_FilterTypeWaterFilter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("WaterFilterType", new [] { "FILTRATION_DIATOMACEOUSEARTH", "FILTRATION_SAND", "PURIFICATION_DEIONIZING", "PURIFICATION_REVERSEOSMOSIS", "SOFTENING_ZEOLITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Further qualifies the type of water filter.  Filtration removes undissolved matter; Purification removes dissolved matter; Softening replaces dissolved matter."} },
				new [] { "IfcFilter" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeBreechingInlet", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BreechingInletType", new [] { "TWOWAY", "FOURWAY", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type of breeching inlet."},
			new EnumerationPropertyType("CouplingType", new [] { "INSTANTANEOUS_FEMALE", "INSTANTANEOUS_MALE", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type coupling on the inlet of the breeching inlet."},
			new SingleValuePropertyType("HasCaps", "IfcBoolean") { Definition = "Does the inlet connection have protective caps."},
			new SingleValuePropertyType("InletDiameter", "IfcPositiveLengthMeasure") { Definition = "The inlet diameter of the breeching inlet."},
			new SingleValuePropertyType("OutletDiameter", "IfcPositiveLengthMeasure") { Definition = "The outlet diameter of the breeching inlet."} },
				new [] { "IfcFireSuppressionTerminal" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcFireSuppressionTerminal" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeFireHydrant", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FireHydrantType", new [] { "DRYBARREL", "WETBARREL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the range of hydrant types from which the required type can be selected where.\n\nDryBarrel:\t A hydrant that has isolating valves fitted below ground and that may be used where the possibility of water freezing is a consideration.\nWetBarrel:\t A hydrant that has isolating valves fitted above ground and that may be used where there is no possibility of water freezing."},
			new SingleValuePropertyType("BodyColor", "IfcText") { Definition = "Color of the body of the hydrant.\n\nNote: Consult local fire regulations for statutory colors that may be required for hydrant bodies in particular circumstances."},
			new SingleValuePropertyType("CapColor", "IfcText") { Definition = "Color of the caps of the hydrant.\n\nNote: Consult local fire regulations for statutory colors that may be required for hydrant caps in particular circumstances."},
			new SingleValuePropertyType("DischargeFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric rate of fluid discharge."},
			new SingleValuePropertyType("FlowClass", "IfcLabel") { Definition = "Alphanumeric indication of the flow class of a hydrant (may be used in connection with or instead of the FlowRate property)."},
			new SingleValuePropertyType("HoseConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The size of connections to which a hose may be connected (other than that to be linked to a pumping unit)."},
			new SingleValuePropertyType("NumberOfHoseConnections", "IfcInteger") { Definition = "The number of hose connections on the hydrant (excluding the pumper connection)."},
			new SingleValuePropertyType("PressureRating", "IfcPressureMeasure") { Definition = "Maximum pressure that the hydrant is manufactured to withstand."},
			new SingleValuePropertyType("PumperConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The size of a connection to which a fire hose may be connected that is then linked to a pumping unit."},
			new SingleValuePropertyType("WaterIsPotable", "IfcBoolean") { Definition = "Indication of whether the water flow from the hydrant is potable (set TRUE) or non potable (set FALSE)."} },
				new [] { "IfcFireSuppressionTerminal" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeHoseReel", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("HoseNozzleType", new [] { "FOG", "STRAIGHTSTREAM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of nozzle (in terms of spray pattern) fitted to the end of the hose from which the type required may be set."},
			new EnumerationPropertyType("HoseReelMountingType", new [] { "CABINET_RECESSED", "CABINET_SEMIRECESSED", "SURFACE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of hose reel mounting from which the type required may be set."},
			new EnumerationPropertyType("HoseReelType", new [] { "RACK", "REEL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of hose arrangement from which the type required may be set."},
			new SingleValuePropertyType("ClassificationAuthority", "IfcLabel") { Definition = "The name of the authority that applies the classification of service to the hose reel (e.g. NFPA/FEMA)."},
			new SingleValuePropertyType("ClassOfService", "IfcLabel") { Definition = "A classification of usage of the hose reel that may be applied."},
			new SingleValuePropertyType("HoseDiameter", "IfcPositiveLengthMeasure") { Definition = "Notional diameter (bore) of the hose."},
			new SingleValuePropertyType("HoseLength", "IfcPositiveLengthMeasure") { Definition = "Notional length of the hose fitted to the hose reel when fully extended."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection to the hose reel."} },
				new [] { "IfcFireSuppressionTerminal" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeSprinkler", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Activation", new [] { "BULB", "FUSIBLESOLDER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined methods of sprinkler activation from which that required may be set."},
			new EnumerationPropertyType("BulbLiquidColor", new [] { "ORANGE", "RED", "YELLOW", "GREEN", "BLUE", "MAUVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The color of the liquid in the bulb for a bulb activated sprinkler. Note that the liquid color varies according to the activation temperature requirement of the sprinkler head. Note also that this property does not need to be asserted for quick response activated sprinklers."},
			new EnumerationPropertyType("Response", new [] { "QUICK", "STANDARD", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined methods of sprinkler response from which that required may be set."},
			new EnumerationPropertyType("SprinklerType", new [] { "CEILING", "CONCEALED", "CUT-OFF", "PENDANT", "RECESSEDPENDANT", "SIDEWALL", "UPRIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of sprinkler  from which the type required may be set."},
			new SingleValuePropertyType("ActivationTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature at which the object is designed to activate."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection to the sprinkler."},
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The area that the sprinkler is designed to protect."},
			new SingleValuePropertyType("DischargeCoefficient", "IfcReal") { Definition = "The coefficient of flow at the sprinkler."},
			new SingleValuePropertyType("DischargeFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric rate of fluid discharge."},
			new SingleValuePropertyType("HasDeflector", "IfcBoolean") { Definition = "Indication of whether the sprinkler has a deflector (baffle) fitted to diffuse the discharge on activation (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("MaximumWorkingPressure", "IfcPressureMeasure") { Definition = "Maximum pressure that the object is manufactured to withstand."},
			new SingleValuePropertyType("ResidualFlowingPressure", "IfcPressureMeasure") { Definition = "The residual flowing pressure in the pipeline at which the discharge flow rate is determined."} },
				new [] { "IfcFireSuppressionTerminal" });
		yield return new PropertySetInfo("Pset_FlowInstrumentPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcFlowInstrument" });
		yield return new PropertySetInfo("Pset_FlowInstrumentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcFlowInstrument" });
		yield return new PropertySetInfo("Pset_FlowInstrumentTypePressureGauge", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PressureGaugeType", new [] { "DIAL", "DIGITAL", "MANOMETER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the means by which pressure is displayed."},
			new SingleValuePropertyType("DisplaySize", "IfcPositiveLengthMeasure") { Definition = "The physical size of the display. For a dial pressure gauge it will be the diameter of the dial."} },
				new [] { "IfcFlowInstrument" });
		yield return new PropertySetInfo("Pset_FlowInstrumentTypeThermometer", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ThermometerType", new [] { "DIAL", "DIGITAL", "STEM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the means by which temperature is displayed."},
			new SingleValuePropertyType("DisplaySize", "IfcPositiveLengthMeasure") { Definition = "The physical size of the display. In the case of a stem thermometer, this will be the length of the stem. For a dial thermometer, it will be the diameter of the dial."} },
				new [] { "IfcFlowInstrument" });
		yield return new PropertySetInfo("Pset_FlowMeterOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Purpose", new [] { "MASTER", "SUBMASTER", "SUBMETER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the purpose of the flow meter occurrence."} },
				new [] { "IfcFlowMeter" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ReadOutType", new [] { "DIAL", "DIGITAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indication of the form that readout from the meter takes. In the case of a dial read out, this may comprise multiple dials that give a cumulative reading and/or a mechanical odometer."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("RemoteReading", "IfcBoolean") { Definition = "Indicates whether the meter has a connection for remote reading through connection of a communication device (set TRUE) or not (set FALSE)."} },
				new [] { "IfcFlowMeter" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeEnergyMeter", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaximumCurrent", "IfcElectricCurrentMeasure") { Definition = "The maximum allowed current that a device is certified to handle."},
			new SingleValuePropertyType("MultipleTarriff", "IfcBoolean") { Definition = "Indicates whether meter has built-in support for multiple tarriffs (variable energy cost rates)."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured."} },
				new [] { "IfcFlowMeter" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeGasMeter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("GasType", new [] { "COMMERCIALBUTANE", "COMMERCIALPROPANE", "LIQUEFIEDPETROLEUMGAS", "NATURALGAS", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of gas that may be specified."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Defines the size of inlet and outlet pipe connections to the meter."},
			new SingleValuePropertyType("MaximumFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum rate of flow which the meter is expected to pass."},
			new SingleValuePropertyType("MaximumPressureLoss", "IfcPressureMeasure") { Definition = "Pressure loss expected across the meter under conditions of maximum flow."} },
				new [] { "IfcFlowMeter" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeOilMeter", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Defines the size of inlet and outlet pipe connections to the meter."},
			new SingleValuePropertyType("MaximumFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum rate of flow which the meter is expected to pass."} },
				new [] { "IfcFlowMeter" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeWaterMeter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BackflowPreventerType", new [] { "NONE", "ATMOSPHERICVACUUMBREAKER", "ANTISIPHONVALVE", "DOUBLECHECKBACKFLOWPREVENTER", "PRESSUREVACUUMBREAKER", "REDUCEDPRESSUREBACKFLOWPREVENTER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the type of backflow preventer installed to prevent the backflow of contaminated or polluted water from an irrigation/reticulation system to a potable water supply."},
			new EnumerationPropertyType("Type", new [] { "COMPOUND", "INFERENTIAL", "PISTON", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the allowed values for selection of the flow meter operation type."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Defines the size of inlet and outlet pipe connections to the meter."},
			new SingleValuePropertyType("MaximumFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum rate of flow which the meter is expected to pass."},
			new SingleValuePropertyType("MaximumPressureLoss", "IfcPressureMeasure") { Definition = "Pressure loss expected across the meter under conditions of maximum flow."} },
				new [] { "IfcFlowMeter" });
		yield return new PropertySetInfo("Pset_FootingCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."} },
				new [] { "IfcFooting" });
		yield return new PropertySetInfo("Pset_FurnitureTypeChair", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HighestSeatingHeight", "IfcPositiveLengthMeasure") { Definition = "The value of seating height of high level if the chair height is adjustable."},
			new SingleValuePropertyType("LowestSeatingHeight", "IfcPositiveLengthMeasure") { Definition = "The value of seating height of low level if the chair height is adjustable."},
			new SingleValuePropertyType("SeatingHeight", "IfcPositiveLengthMeasure") { Definition = "The value of seating height if the chair height is not adjustable."} },
				new [] { "IfcFurniture" });
		yield return new PropertySetInfo("Pset_FurnitureTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Specific description of this type of furniture."},
			new SingleValuePropertyType("IsBuiltIn", "IfcBoolean") { Definition = "Indicates whether the furniture type is intended to be 'built in' i.e. physically attached to a building or facility (= TRUE) or not i.e. Loose and movable (= FALSE)."},
			new SingleValuePropertyType("MainColor", "IfcLabel") { Definition = "The main color of the furniture of this type."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "The nominal depth of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "The nominal length of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("Style", "IfcLabel") { Definition = "Description of the furniture style."} },
				new [] { "IfcFurniture" });
		yield return new PropertySetInfo("Pset_FurnitureTypeDesk", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WorksurfaceArea", "IfcAreaMeasure") { Definition = "The value of the work surface area of the desk."} },
				new [] { "IfcFurniture" });
		yield return new PropertySetInfo("Pset_FurnitureTypeFileCabinet", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WithLock", "IfcBoolean") { Definition = "Indicates whether the file cabinet is lockable (= TRUE) or not (= FALSE)."} },
				new [] { "IfcFurniture" });
		yield return new PropertySetInfo("Pset_FurnitureTypeTable", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfChairs", "IfcInteger") { Definition = "Maximum number of chairs that can fit with the table for normal use."},
			new SingleValuePropertyType("WorksurfaceArea", "IfcAreaMeasure") { Definition = "The value of the work surface area of the desk.."} },
				new [] { "IfcFurniture" });
		yield return new PropertySetInfo("Pset_HeatExchangerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Arrangement", new [] { "COUNTERFLOW", "CROSSFLOW", "PARALLELFLOW", "MULTIPASS", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the basic flow arrangements for the heat exchanger:\n\nCOUNTERFLOW: Counterflow heat exchanger arrangement. \nCROSSFLOW: Crossflow heat exchanger arrangement. \nPARALLELFLOW: Parallel flow heat exchanger arrangement. \nMULTIPASS: Multipass flow heat exchanger arrangement. \nOTHER: Other type of heat exchanger flow arrangement not defined above."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."} },
				new [] { "IfcHeatExchanger" });
		yield return new PropertySetInfo("Pset_HeatExchangerTypePlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfPlates", "IfcInteger") { Definition = "Number of plates used by the plate heat exchanger."} },
				new [] { "IfcHeatExchanger" });
		yield return new PropertySetInfo("Pset_HumidifierPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcHumidifier" });
		yield return new PropertySetInfo("Pset_HumidifierTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Application", new [] { "PORTABLE", "FIXED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Humidifier application.\n\nFixed: Humidifier installed in a ducted flow distribution system.\nPortable: Humidifier is not installed in a ducted flow distribution system."},
			new EnumerationPropertyType("InternalControl", new [] { "ONOFF", "STEPPED", "MODULATING", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Internal modulation control."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal rate of air flow into which water vapor is added."},
			new SingleValuePropertyType("NominalMoistureGain", "IfcMassFlowRateMeasure") { Definition = "Nominal rate of water vapor added into the airstream."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("WaterRequirement", "IfcVolumetricFlowRateMeasure") { Definition = "Make-up water requirement."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "The weight of the humidifier."} },
				new [] { "IfcHumidifier" });
		yield return new PropertySetInfo("Pset_InterceptorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the oil interceptor."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system of the cover of the oil interceptor."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted =length, measured along the z-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the x-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the y-axis of the local coordinate system of the object, of the body of the object."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("VentilatingPipeSize", "IfcPositiveLengthMeasure") { Definition = "Size of the ventilating pipe(s)."} },
				new [] { "IfcInterceptor" });
		yield return new PropertySetInfo("Pset_JunctionBoxTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MountingType", new [] { "FACENAIL", "SIDENAIL", "CUT_IN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Method of mounting to be adopted for the type of junction box."},
			new EnumerationPropertyType("PlacingType", new [] { "CEILING", "FLOOR", "WALL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Location at which the type of junction box can be located."},
			new EnumerationPropertyType("ShapeType", new [] { "RECTANGULAR", "ROUND", "SLOT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Shape of the junction box."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ClearDepth", "IfcPositiveLengthMeasure") { Definition = "Clear unobstructed depth available for cable inclusion within the junction box."},
			new SingleValuePropertyType("IP_Code", "IfcLabel") { Definition = "IEC 60529 (1989) Classification of degrees of protection provided by enclosures (IP Code)."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication of whether the junction box type is allowed for exposure to outdoor elements (set TRUE where external exposure is allowed)."},
			new SingleValuePropertyType("NumberOfGangs", "IfcInteger") { Definition = "Number of slots available for switches/outlets (most commonly 1, 2, 3, or 4)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcJunctionBox" });
		yield return new PropertySetInfo("Pset_LampTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LampBallastType", new [] { "CONVENTIONAL", "ELECTRONIC", "LOWLOSS", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of ballast used to stabilise gas discharge by limiting the current during operation and to deliver the necessary striking voltage for starting. Ballasts are needed to operate Discharge Lamps such as Fluorescent, Compact Fluorescent, High-pressure Mercury, Metal Halide and High-pressure Sodium Lamps. \nMagnetic ballasts are chokes which limit the current passing through a lamp connected in series on the principle of self-induction. The resultant current and power are decisive for the efficient operation of the lamp. A specially designed ballast is required for every type of lamp to comply with lamp rating in terms of Luminous Flux, Color Appearance and service life. The two types of magnetic ballasts for fluorescent lamps are KVG Conventional   (EC-A series) and VVG Low-loss ballasts (EC-B series). Low-loss ballasts have a higher efficiency, which means reduced ballast losses and a lower thermal load. Electronic ballasts are used to run fluorescent lamps at high frequencies (approx. 35 - 40 kHz)."},
			new EnumerationPropertyType("LampCompensationType", new [] { "CAPACITIVE", "INDUCTIVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the form of compensation used for power factor correction and radio suppression."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ColorAppearance", "IfcLabel") { Definition = "In both the DIN and CIE standards, artificial light sources are classified in terms of their color appearance. To the human eye they all appear to be white; the difference can only be detected by direct comparison. Visual performance is not directly affected by differences in color appearance."},
			new SingleValuePropertyType("ColorRenderingIndex", "IfcInteger") { Definition = "The CRI indicates how well a light source renders eight standard colors compared to perfect reference lamp with the same color temperature. The CRI scale ranges from 1 to 100, with 100 representing perfect rendering properties."},
			new SingleValuePropertyType("ColorTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The color temperature of any source of radiation is defined as the temperature (in Kelvin) of a black-body or Planckian radiator whose radiation has the same chromaticity as the source of radiation. Often the values are only approximate color temperatures as the black-body radiator cannot emit radiation of every chromaticity value. The color temperatures of the commonest artificial light sources range from less than 3000K (warm white) to 4000K (intermediate) and over 5000K (daylight)."},
			new SingleValuePropertyType("ContributedLuminousFlux", "IfcLuminousFluxMeasure") { Definition = "Luminous flux is a photometric measure of radiant flux, i.e. the volume of light emitted from a light source. Luminous flux is measured either for the interior as a whole or for a part of the interior (partial luminous flux for a solid angle). All other photometric parameters are derivatives of luminous flux. Luminous flux is measured in lumens (lm). The luminous flux is given as a nominal value for each lamp."},
			new SingleValuePropertyType("LampMaintenanceFactor", "IfcReal") { Definition = "Non recoverable losses of luminous flux of a lamp due to lamp depreciation; i.e. the decreasing of light output of a luminaire due to aging and dirt."},
			new SingleValuePropertyType("LightEmitterNominalPower", "IfcPowerMeasure") { Definition = "Light emitter nominal power."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcLamp" });
		yield return new PropertySetInfo("Pset_LandRegistration", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsPermanentID", "IfcBoolean") { Definition = "Indicates whether the identity assigned to a land parcel is permanent (= TRUE) or temporary (=FALSE)."},
			new SingleValuePropertyType("LandID", "IfcIdentifier") { Definition = "Identification number assigned by the statutory registration authority to a land parcel."},
			new SingleValuePropertyType("LandTitleID", "IfcIdentifier") { Definition = "Identification number assigned by the statutory registration authority to the title to a land parcel."} },
				new [] { "IfcSite" });
		yield return new PropertySetInfo("Pset_LightFixtureTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LightFixtureMountingType", new [] { "CABLESPANNED", "FREESTANDING", "POLE_SIDE", "POLE_TOP", "RECESSED", "SURFACE", "SUSPENDED", "TRACKMOUNTED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of mounting for light fixtures from which that required may be selected."},
			new EnumerationPropertyType("LightFixturePlacingType", new [] { "CEILING", "FLOOR", "FURNITURE", "POLE", "WALL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of placing specification for light fixtures from which that required may be selected."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("MaintenanceFactor", "IfcReal") { Definition = "The arithmetical allowance made for depreciation of lamps and reflective equipment from their initial values due to dirt, fumes, or age."},
			new SingleValuePropertyType("MaximumPlenumSensibleLoad", "IfcPowerMeasure") { Definition = "Maximum or Peak sensible thermal load contributed to the conditioned space by the light fixture."},
			new SingleValuePropertyType("MaximumSpaceSensibleLoad", "IfcPowerMeasure") { Definition = "Maximum or Peak sensible thermal load contributed to return air plenum by the light fixture."},
			new SingleValuePropertyType("NumberOfSources", "IfcInteger") { Definition = "Number of sources ."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("SensibleLoadToRadiant", "IfcPositiveRatioMeasure") { Definition = "Percent of sensible thermal load to radiant heat."},
			new SingleValuePropertyType("TotalWattage", "IfcPowerMeasure") { Definition = "Wattage on whole lightfitting device with all sources intact."} },
				new [] { "IfcLightFixture" });
		yield return new PropertySetInfo("Pset_LightFixtureTypeSecurityLighting", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Addressablility", new [] { "IMPLEMENTED", "UPGRADEABLETO", "NOTIMPLEMENTED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of addressability."},
			new EnumerationPropertyType("BackupSupplySystem", new [] { "LOCALBATTERY", "CENTRALBATTERY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of backup supply system."},
			new EnumerationPropertyType("PictogramEscapeDirection", new [] { "RIGHTARROW", "LEFTARROW", "DOWNARROW", "UPARROW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The direction of escape pictogram."},
			new EnumerationPropertyType("SecurityLightingType", new [] { "SAFETYLIGHT", "WARNINGLIGHT", "EMERGENCYEXITLIGHT", "BLUEILLUMINATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of security lighting."},
			new EnumerationPropertyType("SelfTestFunction", new [] { "CENTRAL", "LOCAL", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of self test function."},
			new SingleValuePropertyType("FixtureHeight", "IfcPositiveLengthMeasure") { Definition = "The height of the fixture, such as the text height of an exit sign."} },
				new [] { "IfcLightFixture" });
		yield return new PropertySetInfo("Pset_ManufacturerOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssemblyPlace", new [] { "FACTORY", "OFFSITE", "SITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining where the assembly is intended to take place, either in a factory, other offsite location or on the building site."},
			new SingleValuePropertyType("AcquisitionDate", "IfcDate") { Definition = "The date that the manufactured item was purchased."},
			new SingleValuePropertyType("BarCode", "IfcIdentifier") { Definition = "The identity of the bar code given to an occurrence of the product."},
			new SingleValuePropertyType("BatchReference", "IfcIdentifier") { Definition = "The identity of the batch reference from which an occurrence of a product is taken."},
			new SingleValuePropertyType("SerialNumber", "IfcIdentifier") { Definition = "The serial number assigned to an occurrence of a product."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_ManufacturerTypeInformation", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssemblyPlace", new [] { "FACTORY", "OFFSITE", "SITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining where the assembly is intended to take place, either in a factory or on the building site."},
			new SingleValuePropertyType("ArticleNumber", "IfcIdentifier") { Definition = "Article number or reference that is be applied to a configured product according to a standard scheme for article number definition as defined by the manufacturer. It is often used as the purchasing number."},
			new SingleValuePropertyType("GlobalTradeItemNumber", "IfcIdentifier") { Definition = "The Global Trade Item Number (GTIN) is an identifier for trade items developed by GS1 (www.gs1.org)."},
			new SingleValuePropertyType("Manufacturer", "IfcLabel") { Definition = "The organization that manufactured and/or assembled the item."},
			new SingleValuePropertyType("ModelLabel", "IfcLabel") { Definition = "The descriptive model name of the product model (or product line) as assigned by the manufacturer of the manufactured item."},
			new SingleValuePropertyType("ModelReference", "IfcLabel") { Definition = "The model number or designator of the product model (or product line) as assigned by the manufacturer of the manufactured item."},
			new SingleValuePropertyType("ProductionYear", "IfcLabel") { Definition = "The year of production of the manufactured item."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_MaterialCombustion", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CO2Content", "IfcPositiveRatioMeasure") { Definition = "Carbon dioxide (CO2) content of the products of combustion. This is measured in weight of CO2 per unit weight and is therefore unitless."},
			new SingleValuePropertyType("COContent", "IfcPositiveRatioMeasure") { Definition = "Carbon monoxide (CO) content of the products of combustion. This is measured in weight of CO per unit weight and is therefore unitless."},
			new SingleValuePropertyType("N20Content", "IfcPositiveRatioMeasure") { Definition = "Nitrous oxide (N2O) content of the products of combustion. This is measured in weight of N2O per unit weight and is therefore unitless."},
			new SingleValuePropertyType("SpecificHeatCapacity", "IfcSpecificHeatCapacityMeasure") { Definition = "Specific heat of the products of combustion: heat energy absorbed per temperature unit."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MassDensity", "IfcMassDensityMeasure") { Definition = "Material mass density."},
			new SingleValuePropertyType("MolecularWeight", "IfcMolecularWeightMeasure") { Definition = "Molecular weight of material (typically gas)."},
			new SingleValuePropertyType("Porosity", "IfcNormalisedRatioMeasure") { Definition = "The void fraction of the total volume occupied by material (Vbr - Vnet)/Vbr."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialConcrete", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AdmixturesDescription", "IfcText") { Definition = "Description of the admixtures added to the concrete mix."},
			new SingleValuePropertyType("CompressiveStrength", "IfcPressureMeasure") { Definition = "The compressive strength of the concrete."},
			new SingleValuePropertyType("MaxAggregateSize", "IfcPositiveLengthMeasure") { Definition = "The maximum aggregate size of the concrete."},
			new SingleValuePropertyType("ProtectivePoreRatio", "IfcNormalisedRatioMeasure") { Definition = "The protective pore ratio indicating the frost-resistance of the concrete."},
			new SingleValuePropertyType("WaterImpermeability", "IfcText") { Definition = "Description of the water impermeability denoting the water repelling properties."},
			new SingleValuePropertyType("Workability", "IfcText") { Definition = "Description of the workability of the fresh concrete defined according to local standards."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialEnergy", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GasPressure", "IfcPressureMeasure") { Definition = "Fill pressure (e.g. for between-pane gas fills): the pressure exerted by a mass of gas confined in a constant volume."},
			new SingleValuePropertyType("MoistureCapacityThermalGradient", "IfcReal") { Definition = "Thermal gradient coefficient for moisture capacity. Based on water vapor density."},
			new SingleValuePropertyType("SolarRefractionIndex", "IfcReal") { Definition = "Index of refraction (solar) defines the \"bending\" of the solar ray when it passes from one medium into another."},
			new SingleValuePropertyType("SpecificHeatTemperatureDerivative", "IfcReal") { Definition = "Specific heat temperature derivative."},
			new SingleValuePropertyType("ThermalConductivityTemperatureDerivative", "IfcReal") { Definition = "Thermal conductivity temperature derivative."},
			new SingleValuePropertyType("ViscosityTemperatureDerivative", "IfcReal") { Definition = "Viscosity temperature derivative."},
			new SingleValuePropertyType("VisibleRefractionIndex", "IfcReal") { Definition = "Index of refraction (visible) defines the \"bending\" of the sola! r ray in the visible spectrum when it passes from one medium into another."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialFuel", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CarbonContent", "IfcPositiveRatioMeasure") { Definition = "The carbon content in the fuel. This is measured in weight of carbon per unit weight of fuel and is therefore unitless."},
			new SingleValuePropertyType("CombustionTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Combustion temperature of the material when air is at 298 K and 100 kPa."},
			new SingleValuePropertyType("HigherHeatingValue", "IfcHeatingValueMeasure") { Definition = "Higher Heating Value is defined as the amount of energy released (MJ/kg) when a fuel is burned completely, and H2O is in liquid form in the combustion products."},
			new SingleValuePropertyType("LowerHeatingValue", "IfcHeatingValueMeasure") { Definition = "Lower Heating Value is defined as the amount of energy released (MJ/kg) when a fuel is burned completely, and H2O is in vapor form in the combustion products."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialHygroscopic", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsothermalMoistureCapacity", "IfcIsothermalMoistureCapacityMeasure") { Definition = "Based on water vapor density."},
			new SingleValuePropertyType("LowerVaporResistanceFactor", "IfcPositiveRatioMeasure") { Definition = "The vapor permeability relationship of air/material (typically value > 1), measured in low relative humidity (typically in 0/50 % RH)."},
			new SingleValuePropertyType("MoistureDiffusivity", "IfcMoistureDiffusivityMeasure") { Definition = "Moisture diffusivity is a transport property that is frequently used in the hygrothermal analysis of building envelope components."},
			new SingleValuePropertyType("UpperVaporResistanceFactor", "IfcPositiveRatioMeasure") { Definition = "The vapor permeability relationship of air/material (typically value > 1), measured in high relative humidity (typically in 95/50 % RH)."},
			new SingleValuePropertyType("VaporPermeability", "IfcVaporPermeabilityMeasure") { Definition = "The rate of water vapor transmission per unit area per unit of vapor pressure differential under test conditions."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialMechanical", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DynamicViscosity", "IfcDynamicViscosityMeasure") { Definition = "A measure of the viscous resistance of the material."},
			new SingleValuePropertyType("PoissonRatio", "IfcPositiveRatioMeasure") { Definition = "A measure of the lateral deformations in the elastic range."},
			new SingleValuePropertyType("ShearModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the shear modulus of elasticity of the material."},
			new SingleValuePropertyType("ThermalExpansionCoefficient", "IfcThermalExpansionCoefficientMeasure") { Definition = "A measure of the expansion coefficient for warming up the material about one Kelvin."},
			new SingleValuePropertyType("YoungModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the Young's modulus of elasticity of the material."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialOptical", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SolarReflectanceBack", "IfcPositiveRatioMeasure") { Definition = "Reflectance at normal incidence (solar): back side. Defines the fraction of the solar ray that is reflected and not transmitted when the ray passes from one medium into another, at the \"back\" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics."},
			new SingleValuePropertyType("SolarReflectanceFront", "IfcPositiveRatioMeasure") { Definition = "Reflectance at normal incidence (solar): front side. Defines the fraction of the solar ray that is reflected and not transmitted when the ray passes from one medium into another, at the \"front\" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics."},
			new SingleValuePropertyType("SolarTransmittance", "IfcPositiveRatioMeasure") { Definition = "Transmittance at normal incidence (solar). Defines the fraction of solar radiation that passes through per unit area, perpendicular to the surface."},
			new SingleValuePropertyType("ThermalIrEmissivityBack", "IfcPositiveRatioMeasure") { Definition = "Thermal IR emissivity: back side. Defines the fraction of thermal energy emitted per unit area to \"blackbody\" at the same temperature, through the \"back\" side of the material."},
			new SingleValuePropertyType("ThermalIrEmissivityFront", "IfcPositiveRatioMeasure") { Definition = "Thermal IR emissivity: front side. Defines the fraction of thermal energy emitted per unit area to \"blackbody\" at the same temperature, through the \"front\" side of the material."},
			new SingleValuePropertyType("ThermalIrTransmittance", "IfcPositiveRatioMeasure") { Definition = "Thermal IR transmittance at normal incidence. Defines the fraction of thermal energy that passes through per unit area, perpendicular to the surface."},
			new SingleValuePropertyType("VisibleReflectanceBack", "IfcPositiveRatioMeasure") { Definition = "Reflectance at normal incidence (visible): back side. Defines the fraction of the solar ray in the visible spectrum that is reflected and not transmitted when the ray passes from one medium into another, at the \"back\" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics."},
			new SingleValuePropertyType("VisibleReflectanceFront", "IfcPositiveRatioMeasure") { Definition = "Reflectance at normal incidence (visible): front side. Defines the fraction of the solar ray in the visible spectrum that is reflected and not transmitted when the ray passes from one medium into another, at the \"front\" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics."},
			new SingleValuePropertyType("VisibleTransmittance", "IfcPositiveRatioMeasure") { Definition = "Transmittance at normal incidence (visible). Defines the fraction of the visible spectrum of solar radiation that passes through per unit area, perpendicular to the surface."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialSteel", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HardeningModule", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the hardening module of the material (slope of stress versus strain curve after yield range)."},
			new SingleValuePropertyType("PlasticStrain", "IfcPositiveRatioMeasure") { Definition = "A measure of the permanent displacement, as in slip or twinning, which remains after the stress has been removed. Currently applied to a strain of 0.2% proportional stress of the material."},
			new SingleValuePropertyType("ProportionalStress", "IfcPressureMeasure") { Definition = "A measure of the proportional stress of the material. It describes the stress before the first plastic deformation occurs and is commonly measured at a deformation of 0.01%."},
			new SingleValuePropertyType("UltimateStrain", "IfcPositiveRatioMeasure") { Definition = "A measure of the (engineering) strain at the state of ultimate stress of the material."},
			new SingleValuePropertyType("UltimateStress", "IfcPressureMeasure") { Definition = "A measure of the ultimate stress of the material."},
			new SingleValuePropertyType("YieldStress", "IfcPressureMeasure") { Definition = "A measure of the yield stress (or characteristic 0.2 percent proof stress) of the material."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialThermal", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BoilingPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The boiling point of the material (fluid)."},
			new SingleValuePropertyType("FreezingPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The freezing point of the material (fluid)."},
			new SingleValuePropertyType("SpecificHeatCapacity", "IfcSpecificHeatCapacityMeasure") { Definition = "Defines the specific heat of the material: heat energy absorbed per temperature unit."},
			new SingleValuePropertyType("ThermalConductivity", "IfcThermalConductivityMeasure") { Definition = "The rate at which thermal energy is transmitted through the material."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialWater", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AcidityConcentration", "IfcIonConcentrationMeasure") { Definition = "Maximum CaCO3 equivalent that would neutralize the acid."},
			new SingleValuePropertyType("AlkalinityConcentration", "IfcIonConcentrationMeasure") { Definition = "Maximum alkalinity concentration (maximum sum of concentrations of each of the negative ions substances measured as CaCO3)."},
			new SingleValuePropertyType("DissolvedSolidsContent", "IfcNormalisedRatioMeasure") { Definition = "Fraction of the dissolved solids to the total amount of water. This is measured in weight of dissolved solids per weight of water and is therefore unitless."},
			new SingleValuePropertyType("Hardness", "IfcIonConcentrationMeasure") { Definition = "Water hardness as positive, multivalent ion concentration in the water (usually concentrations of calcium and magnesium ions in terms of calcium carbonate)."},
			new SingleValuePropertyType("ImpuritiesContent", "IfcNormalisedRatioMeasure") { Definition = "Fraction of impurities such as dust to the total amount of water. This is measured in weight of impurities per weight of water and is therefore unitless."},
			new SingleValuePropertyType("IsPotable", "IfcBoolean") { Definition = "If TRUE, then the water is considered potable."},
			new SingleValuePropertyType("PHLevel", "IfcPHMeasure") { Definition = "Maximum water PH in a range from 0-14."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialWood", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AppearanceGrade", "IfcLabel") { Definition = "Grade with respect to visual quality."},
			new SingleValuePropertyType("DimensionalChangeCoefficient", "IfcPositiveRatioMeasure") { Definition = "Weighted dimensional change coefficient, relative to 1% change in moisture content."},
			new SingleValuePropertyType("Layers", "IfcInteger") { Definition = "Number of layers."},
			new SingleValuePropertyType("Layup", "IfcLabel") { Definition = "Configuration of the lamination."},
			new SingleValuePropertyType("MoistureContent", "IfcPositiveRatioMeasure") { Definition = "Total weight of moisture relative to oven-dried weight of the wood."},
			new SingleValuePropertyType("Plies", "IfcInteger") { Definition = "Number of plies."},
			new SingleValuePropertyType("Species", "IfcLabel") { Definition = "Wood species of a solid wood or laminated wood product."},
			new SingleValuePropertyType("StrengthGrade", "IfcLabel") { Definition = "Grade with respect to mechanical strength and stiffness."},
			new SingleValuePropertyType("ThicknessSwelling", "IfcPositiveRatioMeasure") { Definition = "Swelling ratio relative to board depth."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialWoodBasedBeam", new IPropertyTypeInfo[] {
			new NamedPropertyType(/*  */"InPlane") { Definition = "Mechanical properties with respect to in-plane load, i.e. bending about the strong axis; tension zone of unbalanced layups is stressed in tension."},
			new NamedPropertyType(/*  */"InPlaneNegative") { Definition = "Mechanical properties with respect to in-plane load, i.e. bending about the strong axis; compression zone of unbalanced layups is stressed in tension."},
			new NamedPropertyType(/*  */"OutOfPlane") { Definition = "Mechanical properties with respect to out-of-plane load, i.e. bending about the weak axis."},
			new SingleValuePropertyType("ApplicableStructuralDesignMethod", "IfcLabel") { Definition = "Determines whether mechanical material properties are applicable to 'ASD' = allowable stress design (working stress design), 'LSD' = limit state design, or 'LRFD' = load and resistance factor design."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialWoodBasedPanel", new IPropertyTypeInfo[] {
			new NamedPropertyType(/*  */"InPlane") { Definition = "Mechanical properties with respect to in-plane load, i.e. for function as a membrane."},
			new NamedPropertyType(/*  */"OutOfPlane") { Definition = "Mechanical properties with respect to out-of-plane load, i.e. for function as a plate; tension zone of unbalanced layups is stressed in tension."},
			new NamedPropertyType(/*  */"OutOfPlaneNegative") { Definition = "Mechanical properties with respect to out-of-plane load i.e. for function as a plate; compression zone of unbalanced layups is stressed in tension."},
			new SingleValuePropertyType("ApplicableStructuralDesignMethod", "IfcLabel") { Definition = "Determines whether mechanical material properties are applicable to 'ASD' = allowable stress design (working stress design), 'LSD' = limit state design, or 'LRFD' = load and resistance factor design."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MechanicalFastenerAnchorBolt", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AnchorBoltDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the anchor bolt bar(s)."},
			new SingleValuePropertyType("AnchorBoltLength", "IfcPositiveLengthMeasure") { Definition = "The length of the anchor bolt."},
			new SingleValuePropertyType("AnchorBoltProtrusionLength", "IfcPositiveLengthMeasure") { Definition = "The length of the protruding part of the anchor bolt."},
			new SingleValuePropertyType("AnchorBoltThreadLength", "IfcPositiveLengthMeasure") { Definition = "The length of the threaded part of the anchor bolt."} },
				new [] { "IfcMechanicalFastener" });
		yield return new PropertySetInfo("Pset_MechanicalFastenerBolt", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HeadShape", "IfcLabel") { Definition = "Shape of the bolt's head, e.g. 'Hexagon', 'Countersunk', 'Cheese'"},
			new SingleValuePropertyType("KeyShape", "IfcLabel") { Definition = "If applicable, shape of the head's slot, e.g. 'Slot', 'Allen'"},
			new SingleValuePropertyType("NutsCount", "IfcCountMeasure") { Definition = "Count of nuts to be mounted on one bolt"},
			new SingleValuePropertyType("NutShape", "IfcLabel") { Definition = "Shape of the nut, e.g. 'Hexagon', 'Cap', 'Castle', 'Wing'"},
			new SingleValuePropertyType("ThreadDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal diameter of the thread, if different from the bolt's overall nominal diameter"},
			new SingleValuePropertyType("ThreadLength", "IfcPositiveLengthMeasure") { Definition = "Nominal length of the thread"},
			new SingleValuePropertyType("WashersCount", "IfcCountMeasure") { Definition = "Count of washers to be mounted on one bolt"},
			new SingleValuePropertyType("WasherShape", "IfcLabel") { Definition = "Shape of the washers, e.g. 'Standard', 'Square'"} },
				new [] { "IfcMechanicalFastener" });
		yield return new PropertySetInfo("Pset_MedicalDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."} },
				new [] { "IfcMedicalDevice" });
		yield return new PropertySetInfo("Pset_MemberCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("Roll", "IfcPlaneAngleMeasure") { Definition = "Rotation against the longitudinal axis - relative to the global Z direction for all members that are non-vertical in regard to the global coordinate system (Profile direction equals global Z is Roll = 0.)\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.\nNote: new property in IFC4."},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("Span", "IfcPositiveLengthMeasure") { Definition = "Clear span for this object.\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nHere the total thermal transmittance coefficient through the member within the direction of the thermal flow (including all materials).\nNote: new property in IFC4."} },
				new [] { "IfcMember" });
		yield return new PropertySetInfo("Pset_MotorConnectionTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcMotorConnection" });
		yield return new PropertySetInfo("Pset_OpeningElementCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere whether the space (in case of e.g., a corridor) is designed to serve as an exit space, e.g., for fire escape purposes."},
			new SingleValuePropertyType("ProtectedOpening", "IfcBoolean") { Definition = "Indication whether the opening is considered to be protected under fire safety considerations. If (TRUE) it counts as a protected opening under the applicable building code, (FALSE) otherwise."},
			new SingleValuePropertyType("Purpose", "IfcLabel") { Definition = "Indication of the purpose for that opening, e.g. 'ventilation', 'access', etc."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal construction type."} },
				new [] { "IfcOpeningElement" });
		yield return new PropertySetInfo("Pset_OutletTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("IsPluggableOutlet", "IfcLogical") { Definition = "Indication of whether the outlet accepts a loose plug connection (= TRUE) or whether it is directly connected (= FALSE) or whether the form of connection has not yet been determined (= UNKNOWN)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcOutlet" });
		yield return new PropertySetInfo("Pset_OutsideDesignCriteria", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BuildingThermalExposure", new [] { "LIGHT", "MEDIUM", "HEAVY", "NOTKNOWN", "UNSET" } ) { Definition = "The thermal exposure expected by the building based on surrounding site conditions."},
			new SingleValuePropertyType("CoolingDesignDay", "IfcDateTime") { Definition = "The month, day  and time that has been selected for the cooling design calculations."},
			new SingleValuePropertyType("CoolingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Outside dry bulb temperature for cooling design."},
			new SingleValuePropertyType("CoolingWetBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Outside wet bulb temperature for cooling design."},
			new SingleValuePropertyType("HeatingDesignDay", "IfcDateTime") { Definition = "The month, day and time that has been selected for the heating design calculations."},
			new SingleValuePropertyType("HeatingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Outside dry bulb temperature for heating design."},
			new SingleValuePropertyType("HeatingWetBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Outside wet bulb temperature for heating design."},
			new SingleValuePropertyType("PrevailingWindDirection", "IfcPlaneAngleMeasure") { Definition = "The prevailing wind angle direction measured from True North (0 degrees) in a clockwise direction."},
			new SingleValuePropertyType("PrevailingWindVelocity", "IfcLinearVelocityMeasure") { Definition = "The design wind velocity coming from the direction specified by the PrevailingWindDirection attribute."},
			new SingleValuePropertyType("WeatherDataDate", "IfcDateTime") { Definition = "The date for which the weather data was gathered."},
			new SingleValuePropertyType("WeatherDataStation", "IfcText") { Definition = "The site weather data station description or reference to the data source from which weather data was obtained for use in calculations."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_PackingInstructions", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PackingCareType", new [] { "FRAGILE", "HANDLEWITHCARE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of care that may be required when handling the artefact during a move where:\n\nFragile: artefact may be broken during a move through careless handling.\nHandleWithCare: artefact may be damaged during a move through careless handling."},
			new SingleValuePropertyType("SpecialInstructions", "IfcText") { Definition = "Special instructions for packing."} },
				new [] { "" });
		yield return new PropertySetInfo("Pset_Permit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EndDate", "IfcDateTime") { Definition = "Date and time at which the permit ceases to be valid."},
			new SingleValuePropertyType("EscortRequirement", "IfcBoolean") { Definition = "Indicates whether or not an escort is required to accompany persons carrying out a work order at or to/from the place of work (= TRUE) or not (= FALSE).\n\nNOTE - There are many instances where escorting is required, particularly in a facility that has a high security rating. Escorting may require that persons are escorted to and from the place of work. Alternatively, it may involve the escort remaining at the place of work at all times."},
			new SingleValuePropertyType("SpecialRequirements", "IfcText") { Definition = "Any additional special requirements that need to be included in the permit to work.\n\nNOTE - Additional permit requirements may be imposed according to the nature of the facility at which the work is carried out. For instance, in clean areas, special clothing may be required whilst in corrective institutions, it may be necessary to check in and check out tools that will be used for work as a safety precaution."},
			new SingleValuePropertyType("StartDate", "IfcDateTime") { Definition = "Date and time from which the permit becomes valid."} },
				new [] { "IfcPermit" });
		yield return new PropertySetInfo("Pset_PileCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."} },
				new [] { "IfcPile" });
		yield return new PropertySetInfo("Pset_PipeConnectionFlanged", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BoltholePitch", "IfcPositiveLengthMeasure") { Definition = "Diameter of the circle along which the boltholes are placed."},
			new SingleValuePropertyType("BoltSize", "IfcPositiveLengthMeasure") { Definition = "Size of the bolts securing the flange."},
			new SingleValuePropertyType("BoreSize", "IfcPositiveLengthMeasure") { Definition = "The nominal bore of the pipe flange."},
			new SingleValuePropertyType("FlangeDiameter", "IfcPositiveLengthMeasure") { Definition = "Overall diameter of the flange."},
			new SingleValuePropertyType("FlangeStandard", "IfcLabel") { Definition = "Designation of the standard describing the flange table."},
			new SingleValuePropertyType("FlangeTable", "IfcLabel") { Definition = "Designation of the standard table to which the flange conforms."},
			new SingleValuePropertyType("FlangeThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material from which the pipe bend is constructed."},
			new SingleValuePropertyType("NumberOfBoltholes", "IfcInteger") { Definition = "Number of boltholes in the flange."} },
				new [] { "IfcPipeSegment" });
		yield return new PropertySetInfo("Pset_PipeFittingOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "The color of the pipe segment.\n\nNote: This is typically used only for plastic pipe segments. However, it may be used for any pipe segments with a painted surface which is not otherwise specified as a covering."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness coefficient of the pipe segment."} },
				new [] { "IfcPipeFitting" });
		yield return new PropertySetInfo("Pset_PipeFittingPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPipeFitting" });
		yield return new PropertySetInfo("Pset_PipeFittingTypeBend", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BendAngle", "IfcPositivePlaneAngleMeasure") { Definition = "The change of direction of flow."},
			new SingleValuePropertyType("BendRadius", "IfcPositiveLengthMeasure") { Definition = "The radius of bending if circular arc or zero if sharp bend."} },
				new [] { "IfcPipeFitting" });
		yield return new PropertySetInfo("Pset_PipeFittingTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FittingLossFactor", "IfcReal") { Definition = "A factor that determines the pressure loss due to friction through the fitting."},
			new SingleValuePropertyType("PressureClass", "IfcPressureMeasure") { Definition = "The test or rated pressure classification of the fitting."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."} },
				new [] { "IfcPipeFitting" });
		yield return new PropertySetInfo("Pset_PipeFittingTypeJunction", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("JunctionType", new [] { "TEE", "CROSS", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of junction. TEE=3 ports, CROSS = 4 ports."},
			new SingleValuePropertyType("JunctionLeftAngle", "IfcPositivePlaneAngleMeasure") { Definition = "The change of direction of flow for the left junction."},
			new SingleValuePropertyType("JunctionLeftRadius", "IfcPositiveLengthMeasure") { Definition = "The radius of bending for the left junction."},
			new SingleValuePropertyType("JunctionRightAngle", "IfcPositivePlaneAngleMeasure") { Definition = "The change of direction of flow for the right junction where 0 indicates straight segment."},
			new SingleValuePropertyType("JunctionRightRadius", "IfcPositiveLengthMeasure") { Definition = "The radius of bending for the right junction where 0 indicates sharp bend."} },
				new [] { "IfcPipeFitting" });
		yield return new PropertySetInfo("Pset_PipeSegmentOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "The color of the pipe segment.\n\nNote: This is typically used only for plastic pipe segments. However, it may be used for any pipe segments with a painted surface which is not otherwise specified as a covering."},
			new SingleValuePropertyType("Gradient", "IfcPositiveRatioMeasure") { Definition = "The gradient of the pipe segment."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness coefficient of the pipe segment."},
			new SingleValuePropertyType("InvertElevation", "IfcLengthMeasure") { Definition = "The invert elevation relative to the datum established for the project."} },
				new [] { "IfcPipeSegment" });
		yield return new PropertySetInfo("Pset_PipeSegmentPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPipeSegment" });
		yield return new PropertySetInfo("Pset_PipeSegmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("InnerDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual inner diameter of the pipe."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the pipe segment."},
			new SingleValuePropertyType("OuterDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual outer diameter of the pipe."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."},
			new SingleValuePropertyType("WorkingPressure", "IfcPressureMeasure") { Definition = "Working pressure."} },
				new [] { "IfcPipeSegment" });
		yield return new PropertySetInfo("Pset_PipeSegmentTypeCulvert", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ClearDepth", "IfcLengthMeasure") { Definition = "The clear depth of the culvert."},
			new SingleValuePropertyType("InternalWidth", "IfcLengthMeasure") { Definition = "The internal width of the culvert."} },
				new [] { "IfcPipeSegment" });
		yield return new PropertySetInfo("Pset_PipeSegmentTypeGutter", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FlowRating", "IfcVolumetricFlowRateMeasure") { Definition = "Actual flow capacity for the gutter. Value of 0.00 means this value has not been set."},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Angle of the gutter to allow for drainage."} },
				new [] { "IfcPipeSegment" });
		yield return new PropertySetInfo("Pset_PlateCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nIt applies to the total door construction."} },
				new [] { "IfcPlate" });
		yield return new PropertySetInfo("Pset_PrecastConcreteElementFabrication", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ActualErectionDate", "IfcDateTime") { Definition = "Date erected."},
			new SingleValuePropertyType("ActualProductionDate", "IfcDateTime") { Definition = "Production date (stripped from form)."},
			new SingleValuePropertyType("AsBuiltLocationNumber", "IfcLabel") { Definition = "Defines a unique location within a structure, the ‘slot’ into which the piece was installed. Where pieces share the same piece mark, they can be interchanged. The value is only known after erection."},
			new SingleValuePropertyType("PieceMark", "IfcLabel") { Definition = "Defines a unique piece for production purposes. All pieces with the same piece mark value are identical and interchangeable. The piece mark may be composed of sub-parts that have specific locally defined meaning (e.g. B-1A may denote a beam, of generic type ‘1’ and specific shape ‘A’)."},
			new SingleValuePropertyType("ProductionLotId", "IfcIdentifier") { Definition = "The manufacturer's production lot identifier."},
			new SingleValuePropertyType("SerialNumber", "IfcIdentifier") { Definition = "The manufacturer's serial number for the precast concrete element."},
			new SingleValuePropertyType("TypeDesignator", "IfcLabel") { Definition = "Type designator for the precast concrete element. The content depends on local standards. For instance in Finland it usually a one-letter acronym, e.g. P=Column, K=reinforced concrete beam,etc."} },
				new [] { "IfcBuildingElement" });
		yield return new PropertySetInfo("Pset_PrecastConcreteElementGeneral", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BatterAtEnd", "IfcPlaneAngleMeasure") { Definition = "The angle, in radians, by which the formwork at the ending face of a piece is to be rotated from the vertical in order to compensate for the rotation of the face that will occur once the piece is stripped from its form, inducing camber due to eccentric prestressing."},
			new SingleValuePropertyType("BatterAtStart", "IfcPlaneAngleMeasure") { Definition = "The angle, in radians, by which the formwork at the starting face of a piece is to be rotated from the vertical in order to compensate for the rotation of the face that will occur once the piece is stripped from its form, inducing camber due to eccentric prestressing."},
			new SingleValuePropertyType("CamberAtMidspan", "IfcRatioMeasure") { Definition = "The camber deflection, measured from the midpoint of a cambered face of a piece to the midpoint of the chord joining the ends of the same face, as shown in the figure below, divided by the original (nominal) straight length of the face of the piece."},
			new SingleValuePropertyType("CornerChamfer", "IfcPositiveLengthMeasure") { Definition = "The chamfer in the corners of the precast element. The chamfer is presumed to be equal in both directions."},
			new SingleValuePropertyType("DesignLocationNumber", "IfcLabel") { Definition = "Defines a unique location within a structure, the ‘slot’ for which the piece was designed."},
			new SingleValuePropertyType("FormStrippingStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete at form stripping time."},
			new SingleValuePropertyType("HollowCorePlugging", "IfcLabel") { Definition = "A descriptive label for how the hollow core ends are treated: they may be left open, closed with a plug, or sealed with cast concrete. Values would be, for example: 'Unplugged', 'Plugged', 'SealedWithConcrete'. This property applies to  hollow core slabs only."},
			new SingleValuePropertyType("InitialTension", "IfcPressureMeasure") { Definition = "The initial stress of the tendon. This property applies to prestressed concrete elements only."},
			new SingleValuePropertyType("LiftingStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete when the concrete element is lifted."},
			new SingleValuePropertyType("ManufacturingToleranceClass", "IfcLabel") { Definition = "Classification designation of the manufacturing tolerances according to local standards."},
			new SingleValuePropertyType("MinimumAllowableSupportLength", "IfcPositiveLengthMeasure") { Definition = "The minimum allowable support length."},
			new SingleValuePropertyType("PieceMark", "IfcLabel") { Definition = "Defines a unique piece for production purposes. All pieces with the same piece mark value are identical and interchangeable. The piece mark may be composed of sub-parts that have specific locally defined meaning (e.g. B-1A may denote a beam, of generic type ‘1’ and specific shape ‘A’)."},
			new SingleValuePropertyType("ReleaseStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete when the tendon stress is released. This property applies to prestressed concrete elements only."},
			new SingleValuePropertyType("Shortening", "IfcRatioMeasure") { Definition = "The ratio of the distance by which a precast piece is shortened after release from its form (due to compression induced by prestressing) to its original (nominal) length."},
			new SingleValuePropertyType("SupportDuringTransportDescription", "IfcText") { Definition = "Textual description of how the concrete element is supported during transportation."},
			new SingleValuePropertyType("TendonRelaxation", "IfcPositiveRatioMeasure") { Definition = "The maximum allowable relaxation of the tendon (usually expressed as %/1000 h).This property applies to prestressed concrete elements only."},
			new SingleValuePropertyType("TransportationStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete required for transportation."},
			new SingleValuePropertyType("Twisting", "IfcPlaneAngleMeasure") { Definition = "The angle, in radians, through which the end face of a precast piece is rotated with respect to its starting face, along its longitudinal axis, as a result of non-aligned supports. This measure is also termed the ‘warping’ angle."},
			new SingleValuePropertyType("TypeDesignator", "IfcLabel") { Definition = "Type designator for the precast concrete element. The content depends on local standards. For instance in Finland it usually a one-letter acronym, e.g. P=Column, K=reinforced concrete beam,etc."} },
				new [] { "IfcBuildingElement" });
		yield return new PropertySetInfo("Pset_PrecastSlab", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AngleBetweenComponentAxes", "IfcPlaneAngleMeasure") { Definition = "The angle between the axes of each pair of components."},
			new SingleValuePropertyType("AngleToFirstAxis", "IfcPlaneAngleMeasure") { Definition = "The angle of rotation of the axis of the first component relative to the ‘West’ edge of the slab."},
			new SingleValuePropertyType("DistanceBetweenComponentAxes", "IfcPositiveLengthMeasure") { Definition = "The distance between the axes of the components, measured along the ‘South’ edge of the slab."},
			new SingleValuePropertyType("EdgeDistanceToFirstAxis", "IfcPositiveLengthMeasure") { Definition = "The distance from the left (‘West’) edge of the slab (in the direction of span of the components) to the axis of the first component."},
			new SingleValuePropertyType("NominalThickness", "IfcPositiveLengthMeasure") { Definition = "The nominal overall thickness of the slab."},
			new SingleValuePropertyType("NominalToppingThickness", "IfcPositiveLengthMeasure") { Definition = "The nominal thickness of the topping."},
			new SingleValuePropertyType("ToppingType", "IfcLabel") { Definition = "Defines if a topping is applied and what kind. Values are “Full topping”, “Perimeter Wash”, “None”"},
			new SingleValuePropertyType("TypeDesignator", "IfcLabel") { Definition = "Type designator for the precast concrete slab, expressing mainly the component type. Possible values are “Hollow-core”, “Double-tee”, “Flat plank”, etc."} },
				new [] { "IfcSlab" });
		yield return new PropertySetInfo("Pset_ProfileArbitraryDoubleT", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FlangeBaseFillet", "IfcNonNegativeLengthMeasure") { Definition = "Flange base fillet of the profile."},
			new SingleValuePropertyType("FlangeChamfer", "IfcNonNegativeLengthMeasure") { Definition = "Flange chamfer of the profile."},
			new SingleValuePropertyType("FlangeDepth", "IfcPositiveLengthMeasure") { Definition = "Flange depth of the profile."},
			new SingleValuePropertyType("FlangeDraft", "IfcNonNegativeLengthMeasure") { Definition = "Flange draft of the profile."},
			new SingleValuePropertyType("FlangeTopFillet", "IfcNonNegativeLengthMeasure") { Definition = "Flange top fillet of the profile."},
			new SingleValuePropertyType("LeftFlangeWidth", "IfcPositiveLengthMeasure") { Definition = "Left flange width of the profile."},
			new SingleValuePropertyType("OverallDepth", "IfcPositiveLengthMeasure") { Definition = "Overall depth of the profile."},
			new SingleValuePropertyType("OverallWidth", "IfcPositiveLengthMeasure") { Definition = "Overall width of the profile."},
			new SingleValuePropertyType("RightFlangeWidth", "IfcPositiveLengthMeasure") { Definition = "Right flange width of the profile."},
			new SingleValuePropertyType("StemBaseChamfer", "IfcNonNegativeLengthMeasure") { Definition = "Stem base chamfer of the profile."},
			new SingleValuePropertyType("StemBaseFillet", "IfcNonNegativeLengthMeasure") { Definition = "Stem base fillet of the profile."},
			new SingleValuePropertyType("StemBaseWidth", "IfcPositiveLengthMeasure") { Definition = "Stem base width of the profile."},
			new SingleValuePropertyType("StemTopChamfer", "IfcNonNegativeLengthMeasure") { Definition = "Stem top chamfer of the profile."},
			new SingleValuePropertyType("StemTopFillet", "IfcNonNegativeLengthMeasure") { Definition = "Stem top fillet of the profile."},
			new SingleValuePropertyType("StemTopWidth", "IfcPositiveLengthMeasure") { Definition = "Stem top width of the profile."} },
				new [] { "IfcArbitraryClosedProfileDef" });
		yield return new PropertySetInfo("Pset_ProfileArbitraryHollowCore", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BaseChamfer", "IfcNonNegativeLengthMeasure") { Definition = "Base chamfer of the profile."},
			new SingleValuePropertyType("BottomCover", "IfcPositiveLengthMeasure") { Definition = "Bottom cover of the profile."},
			new SingleValuePropertyType("CenterCoreBaseHeight", "IfcPositiveLengthMeasure") { Definition = "Center core base height of the profile."},
			new SingleValuePropertyType("CenterCoreBaseWidth", "IfcPositiveLengthMeasure") { Definition = "Center core base width of the profile."},
			new SingleValuePropertyType("CenterCoreMiddleHeight", "IfcPositiveLengthMeasure") { Definition = "Center core middle height of the profile."},
			new SingleValuePropertyType("CenterCoreSpacing", "IfcPositiveLengthMeasure") { Definition = "Center core spacing of the profile."},
			new SingleValuePropertyType("CenterCoreTopHeight", "IfcPositiveLengthMeasure") { Definition = "Center core top height of the profile."},
			new SingleValuePropertyType("CenterCoreTopWidth", "IfcPositiveLengthMeasure") { Definition = "Center core top width of the profile."},
			new SingleValuePropertyType("CoreBaseHeight", "IfcPositiveLengthMeasure") { Definition = "Core base height of the profile."},
			new SingleValuePropertyType("CoreBaseWidth", "IfcPositiveLengthMeasure") { Definition = "Core base width of the profile."},
			new SingleValuePropertyType("CoreMiddleHeight", "IfcPositiveLengthMeasure") { Definition = "Core middle height of the profile."},
			new SingleValuePropertyType("CoreSpacing", "IfcPositiveLengthMeasure") { Definition = "Core spacing of the profile."},
			new SingleValuePropertyType("CoreTopHeight", "IfcPositiveLengthMeasure") { Definition = "Core top height of the profile."},
			new SingleValuePropertyType("CoreTopWidth", "IfcPositiveLengthMeasure") { Definition = "Core top width of the profile."},
			new SingleValuePropertyType("DraftBaseOffset", "IfcNonNegativeLengthMeasure") { Definition = "Draft base offset of the profile."},
			new SingleValuePropertyType("DraftSideOffset", "IfcNonNegativeLengthMeasure") { Definition = "Draft side offset of the profile."},
			new SingleValuePropertyType("EdgeDraft", "IfcNonNegativeLengthMeasure") { Definition = "Edge draft of the profile."},
			new SingleValuePropertyType("KeyDepth", "IfcNonNegativeLengthMeasure") { Definition = "Key depth of the profile."},
			new SingleValuePropertyType("KeyHeight", "IfcNonNegativeLengthMeasure") { Definition = "Key height of the profile."},
			new SingleValuePropertyType("KeyOffset", "IfcNonNegativeLengthMeasure") { Definition = "Key offset of the profile."},
			new SingleValuePropertyType("NumberOfCores", "IfcCountMeasure") { Definition = "Number of cores."},
			new SingleValuePropertyType("OverallDepth", "IfcPositiveLengthMeasure") { Definition = "Overall depth of the profile."},
			new SingleValuePropertyType("OverallWidth", "IfcPositiveLengthMeasure") { Definition = "Overall width of the profile."} },
				new [] { "IfcArbitraryProfileDefWithVoids" });
		yield return new PropertySetInfo("Pset_ProfileMechanical", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CentreOfGravityInX", "IfcLengthMeasure") { Definition = "Location of the profile's centre of gravity (geometric centroid), measured along xp."},
			new SingleValuePropertyType("CentreOfGravityInY", "IfcLengthMeasure") { Definition = "Location of the profile's centre of gravity (geometric centroid), measured along yp."},
			new SingleValuePropertyType("CrossSectionArea", "IfcAreaMeasure") { Definition = "Area of the profile. For example measured in mm2. If given, the value of the cross section area shall be greater than zero."},
			new SingleValuePropertyType("MassPerLength", "IfcMassPerLengthMeasure") { Definition = "Mass per length, i.e. mass of a beam with a unit length of extrusion. For example measured in kg/m."},
			new SingleValuePropertyType("MaximumPlateThickness", "IfcPositiveLengthMeasure") { Definition = "This value may be needed for stress analysis and to handle buckling problems. It can also be derived from the given profile geometry or classification and therefore it is only an optional feature allowing for an explicit description. For example measured in mm."},
			new SingleValuePropertyType("MaximumSectionModulusY", "IfcSectionModulusMeasure") { Definition = "Bending resistance about the ys axis at the point with maximum zs ordinate. For example measured in mm³."},
			new SingleValuePropertyType("MaximumSectionModulusZ", "IfcSectionModulusMeasure") { Definition = "Bending resistance about the zs axis at the point with maximum ys ordinate. For example measured in mm³."},
			new SingleValuePropertyType("MinimumPlateThickness", "IfcPositiveLengthMeasure") { Definition = "This value may be needed for stress analysis and to handle buckling problems. It can also be derived from the given profile geometry or classification and therefore it is only an optional feature allowing for an explicit description. For example measured in mm."},
			new SingleValuePropertyType("MinimumSectionModulusY", "IfcSectionModulusMeasure") { Definition = "Bending resistance about the ys axis at the point with minimum zs ordinate. For example measured in mm³."},
			new SingleValuePropertyType("MinimumSectionModulusZ", "IfcSectionModulusMeasure") { Definition = "Bending resistance about the zs axis at the point with minimum ys ordinate. For example measured in mm³."},
			new SingleValuePropertyType("MomentOfInertiaY", "IfcMomentOfInertiaMeasure") { Definition = "Moment of inertia about ys (second moment of area, about ys). For example measured in mm4."},
			new SingleValuePropertyType("MomentOfInertiaYZ", "IfcMomentOfInertiaMeasure") { Definition = "Moment of inertia about ys and zs (product moment of area). For example measured in mm4."},
			new SingleValuePropertyType("MomentOfInertiaZ", "IfcMomentOfInertiaMeasure") { Definition = "Moment of inertia about zs (second moment of area, about zs). For example measured in mm4"},
			new SingleValuePropertyType("Perimeter", "IfcPositiveLengthMeasure") { Definition = "Perimeter of the profile for calculating the surface area. For example measured in mm."},
			new SingleValuePropertyType("PlasticShapeFactorY", "IfcPositiveRatioMeasure") { Definition = "Ratio of plastic versus elastic bending moment capacity about the section analysis axis ys. A dimensionless value."},
			new SingleValuePropertyType("PlasticShapeFactorZ", "IfcPositiveRatioMeasure") { Definition = "Ratio of plastic versus elastic bending moment capacity about the section analysis axis zs. A dimensionless value."},
			new SingleValuePropertyType("ShearAreaY", "IfcAreaMeasure") { Definition = "Area of the profile for calculating the shear stress due to shear force parallel to the section analysis axis ys. For example measured in mm². If given, the shear area ys shall be non-negative."},
			new SingleValuePropertyType("ShearAreaZ", "IfcAreaMeasure") { Definition = "Area of the profile for calculating the shear stress due to shear force parallel to the section analysis axis zs. For example measured in mm². If given, the shear area zs shall be non-negative."},
			new SingleValuePropertyType("ShearCentreY", "IfcLengthMeasure") { Definition = "Location of the profile's shear centre, measured along ys."},
			new SingleValuePropertyType("ShearCentreZ", "IfcLengthMeasure") { Definition = "Location of the profile's shear centre, measured along zs."},
			new SingleValuePropertyType("ShearDeformationAreaY", "IfcAreaMeasure") { Definition = "Area of the profile for calculating the shear deformation due to a shear force parallel to ys. For example measured in mm². If given, the shear deformation area ys shall be non-negative."},
			new SingleValuePropertyType("ShearDeformationAreaZ", "IfcAreaMeasure") { Definition = "Area of the profile for calculating the shear deformation due to a shear force parallel to zs. For example measured in mm². If given, the shear deformation area zs shall be non-negative."},
			new SingleValuePropertyType("TorsionalConstantX", "IfcMomentOfInertiaMeasure") { Definition = "Torsional constant about xs. For example measured in mm4."},
			new SingleValuePropertyType("TorsionalSectionModulus", "IfcSectionModulusMeasure") { Definition = "Torsional resistance (about xs). For example measured in mm³."},
			new SingleValuePropertyType("WarpingConstant", "IfcWarpingConstantMeasure") { Definition = "Warping constant of the profile for torsional action. For example measured in mm6."} },
				new [] { "IfcProfileDef" });
		yield return new PropertySetInfo("Pset_ProjectOrderChangeOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BudgetSource", "IfcText") { Definition = "The budget source requested."},
			new SingleValuePropertyType("ReasonForChange", "IfcText") { Definition = "A description of the problem for why a change is needed."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderMaintenanceWorkOrder", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FaultPriorityType", new [] { "HIGH", "MEDIUM", "LOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of priority that can be assigned from which the type may be set where:\n\nHigh: action is required urgently.\nMedium: action can occur within a reasonable period of time.\nLow: action can occur when convenient."},
			new EnumerationPropertyType("LocationPriorityType", new [] { "HIGH", "MEDIUM", "LOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of priority that can be assigned from which the type may be set where:\n\nHigh: action is required urgently.\nMedium: action can occur within a reasonable period of time.\nLow: action can occur when convenient."},
			new EnumerationPropertyType("MaintenaceType", new [] { "CONDITIONBASED", "CORRECTIVE", "PLANNEDCORRECTIVE", "SCHEDULED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of maintenance that can be done from which the type that generates the maintenance work order may be set where:\n\nConditionBased: generated as a result of the condition of an asset or artefact being less than a determined value.\nCorrective: generated as a result of an immediate and urgent need for maintenance action.\nPlannedCorrective: generated as a result of immediate corrective action being needed but with sufficient time available for the work order to be included in maintenance planning.\nScheduled: generated as a result of a fixed, periodic maintenance requirement."},
			new SingleValuePropertyType("ContractualType", "IfcText") { Definition = "The contractual type of the work."},
			new SingleValuePropertyType("IfNotAccomplished", "IfcText") { Definition = "Comments if the job is not accomplished."},
			new SingleValuePropertyType("ProductDescription", "IfcText") { Definition = "A textual description of the products that require the work."},
			new SingleValuePropertyType("ScheduledFrequency", "IfcTimeMeasure") { Definition = "The period of time between expected instantiations of a work order that may have been predefined."},
			new SingleValuePropertyType("WorkTypeRequested", "IfcText") { Definition = "Work type requested in circumstances where there are categorizations of types of work task. It could be used to identify a remedial task, minor work task, electrical task etc."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderMoveOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SpecialInstructions", "IfcText") { Definition = "Special instructions that affect the move."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderPurchaseOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsFOB", "IfcBoolean") { Definition = "Indication of whether contents of the purchase order are delivered 'Free on Board' (= True) or not (= False). FOB is a shipping term which indicates that the supplier pays the shipping costs (and usually also the insurance costs) from the point of manufacture to a specified destination, at which point the buyer takes responsibility."},
			new SingleValuePropertyType("ShipMethod", "IfcText") { Definition = "Method of shipping that will be used for goods or services."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderWorkOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ContractualType", "IfcText") { Definition = "The contractual type of the work."},
			new SingleValuePropertyType("IfNotAccomplished", "IfcText") { Definition = "Comments if the job is not accomplished."},
			new SingleValuePropertyType("ProductDescription", "IfcText") { Definition = "A textual description of the products that require the work."},
			new SingleValuePropertyType("WorkTypeRequested", "IfcText") { Definition = "Work type requested in circumstances where there are categorizations of types of work task. It could be used to identify a remedial task, minor work task, electrical task etc."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_PropertyAgreement", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AgreementType", new [] { "ASSIGNMENT", "LEASE", "TENANT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of property agreement from which the type required may be set."},
			new SingleValuePropertyType("CommencementDate", "IfcDate") { Definition = "Date on which the agreement commences."},
			new SingleValuePropertyType("ConditionCommencement", "IfcText") { Definition = "Condition of property provided on commencement of the agreement e.g. cold shell, warm lit shell, broom clean, turn-key."},
			new SingleValuePropertyType("ConditionTermination", "IfcText") { Definition = "Condition of property required on termination of the agreement e.g. cold shell, warm lit shell, broom clean, turn-key."},
			new SingleValuePropertyType("Duration", "IfcDuration") { Definition = "The period of time for the lease."},
			new SingleValuePropertyType("Identifier", "IfcIdentifier") { Definition = "The identifier assigned to the agreement for the purposes of tracking."},
			new SingleValuePropertyType("Options", "IfcText") { Definition = "A statement of the options available in the agreement."},
			new SingleValuePropertyType("PropertyName", "IfcLabel") { Definition = "Addressing details of the property as stated within the agreement."},
			new SingleValuePropertyType("Restrictions", "IfcText") { Definition = "Restrictions that may be placed by a  competent authority."},
			new SingleValuePropertyType("TerminationDate", "IfcDate") { Definition = "Date on which the agreement terminates."},
			new SingleValuePropertyType("Version", "IfcLabel") { Definition = "The version number of the agreement that is identified."},
			new SingleValuePropertyType("VersionDate", "IfcDate") { Definition = "The date on which the version of the agreement became applicable."} },
				new [] { "IfcSpatialStructureElement" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceBreakerUnitI2TCurve", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U230", "U400", "U440", "U525", "U690", "U1000", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels of the protective device for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "A set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the \nUltimateRatedCurrent associated with the same breaker unit."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceBreakerUnitI2TFuseCurve", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U230", "U400", "U440", "U525", "U690", "U1000", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels of the fuse for which the data of the instance is valid. More than one value may be selected in the enumeration."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceBreakerUnitIPICurve", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U230", "U400", "U440", "U525", "U690", "U1000", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage level of the protective device for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "A set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the \nUltimateRatedCurrent associated with the same breaker unit."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceBreakerUnitTypeMCB", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U230", "U400", "U440", "U525", "U690", "U1000", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("ICN60898", "IfcElectricCurrentMeasure") { Definition = "The nominal breaking capacity in [A] for an MCB tested in accordance with the IEC 60898 series."},
			new SingleValuePropertyType("ICS60898", "IfcElectricCurrentMeasure") { Definition = "The service breaking capacity in [A] for an MCB tested in accordance with the IEC 60898 series."},
			new SingleValuePropertyType("ICS60947", "IfcElectricCurrentMeasure") { Definition = "The service breaking capacity in [A] for an MCB tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICU60947", "IfcElectricCurrentMeasure") { Definition = "The ultimate breaking capacity in [A] for an MCB tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("NominalCurrents", "IfcElectricCurrentMeasure") { Definition = "A set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the \nUltimateRatedCurrent associated with the same breaker unit."},
			new SingleValuePropertyType("PowerLoss", "IfcPowerMeasure") { Definition = "The power loss in [W] per pole of the MCB  when the nominal current is flowing through the MCB."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceBreakerUnitTypeMotorProtection", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U230", "U400", "U440", "U525", "U690", "U1000", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("ICM60947", "IfcElectricCurrentMeasure") { Definition = "The making capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICS60947", "IfcElectricCurrentMeasure") { Definition = "The service breaking capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICU60947", "IfcElectricCurrentMeasure") { Definition = "The ultimate breaking capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICW60947", "IfcElectricCurrentMeasure") { Definition = "The thermal withstand current in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. The value shall be related to 1 s."},
			new SingleValuePropertyType("PerformanceClasses", "IfcLabel") { Definition = "A set of designations of performance classes for the breaker unit for which the data of this instance is valid. A breaker unit being a motor protection device may be\nconstructed for different levels of breaking capacities. A maximum of 7 different\nperformance classes may be provided. Examples of performance classes that may be specified include B, C, N, S, H, L, V."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PoleUsage", new [] { "1P", "2P", "3P", "4P", "1PN", "3PN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Pole usage."},
			new SingleValuePropertyType("GroundFaultCurrentSetValue", "IfcElectricCurrentMeasure") { Definition = "Ground fault current set value. The set value of the ground tripping current if adjustable."},
			new SingleValuePropertyType("GroundFaultFunction", "IfcBoolean") { Definition = "Applying ground fault function. A flag indicating that the ground fault function of the device is used. The value should be set to FALSE for devices not having a ground fault function, or if the ground fault function is not selected to be used."},
			new SingleValuePropertyType("GroundFaulti2tFunction", "IfcBoolean") { Definition = "Applying ground fault i2t function. A flag indicating that the I2t ground fault function of the device is used. The value should be set to TRUE only if the I2t function is explicitly selected for the device."},
			new SingleValuePropertyType("GroundFaultTrippingTime", "IfcTimeMeasure") { Definition = "Ground fault tripping time. The set value of the ground fault tripping current if adjustable."},
			new SingleValuePropertyType("InstantaneousCurrentSetValue", "IfcElectricCurrentMeasure") { Definition = "Instantaneous current set value. The set value of the instantaneous tripping current if adjustable."},
			new SingleValuePropertyType("InstantaneousTrippingTime", "IfcTimeMeasure") { Definition = "Instantaneous tripping time. The set value of the instantaneous tripping time if adjustable."},
			new SingleValuePropertyType("LongTimeCurrentSetValue", "IfcElectricCurrentMeasure") { Definition = "Long time current set value. The set value of the long time tripping current if adjustable."},
			new SingleValuePropertyType("LongTimeDelay", "IfcTimeMeasure") { Definition = "Long time delay. The set value of the long time time-delay if adjustable."},
			new SingleValuePropertyType("LongTimeFunction", "IfcBoolean") { Definition = "Applying long time function\nA flag indicating that the long time function (i.e. the thermal tripping) of the device is used. The value should be set to TRUE for all devices except those that allows the Long time function of the device not to be used."},
			new SingleValuePropertyType("ShortTimeCurrentSetValue", "IfcElectricCurrentMeasure") { Definition = "Short time current set value. The set value of the long time tripping current if adjustable."},
			new SingleValuePropertyType("ShortTimeFunction", "IfcBoolean") { Definition = "Applying short time function A flag indicating that the short time function of the device is used. The value should be set to FALSE for devices not having a short time function, or if the short time function is not selected to be used."},
			new SingleValuePropertyType("ShortTimei2tFunction", "IfcBoolean") { Definition = "Applying short time i2t function. A flag indicating that the I2t short time function of the device is used. The value should be set to TRUE only if the I2t function  is explicitly selected for the device."},
			new SingleValuePropertyType("ShortTimeTrippingTime", "IfcTimeMeasure") { Definition = "Short time tripping time. The set value of the short time tripping time if adjustable."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingCurve", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TrippingCurveType", new [] { "UPPER", "LOWER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of tripping curve that is represented by the property set."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingFunctionGCurve", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CurrentTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%]."},
			new SingleValuePropertyType("CurrentTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%] valid for times above CurrentTolereanceLimit1."},
			new SingleValuePropertyType("CurrentToleranceLimit1", "IfcTimeMeasure") { Definition = "The time limit in [s] limiting the application of CurrentTolerance1, if any. If the value is set to 0, the value of the CurrentTolerance1 is valid for the whole time/current-curve."},
			new SingleValuePropertyType("ExternalAdjusted", "IfcBoolean") { Definition = "An indication if the ground fault protection may be adjusted according to an external current coil or not."},
			new SingleValuePropertyType("IsCurrentTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  CurrentTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("IsSelectable", "IfcBoolean") { Definition = "Indication whether the S-function can be switched off or not."},
			new SingleValuePropertyType("IsTimeTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  TimeTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("NominalCurrentAdjusted", "IfcBoolean") { Definition = "An indication if the tripping currents of the short time protection is related to the nominal current multiplied with the actual setting of the current adjustment, if any, of the long time protection part of the protective device, or not."},
			new SingleValuePropertyType("ReleaseCurrent", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In] for the initial tripping of the S-function."},
			new SingleValuePropertyType("ReleaseCurrentI2tEnd", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In] for the end point of the I2t tripping curve of the G-function, if any. The value of ReleaseCurrentI2tEnd shall be larger than ReleaseCurrentI2tStart."},
			new SingleValuePropertyType("ReleaseCurrentI2tStart", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In] for the start point of the I2t tripping curve of the G-function, if any."},
			new SingleValuePropertyType("ReleaseTime", "IfcTimeMeasure") { Definition = "The release time in [s] for the initial tripping of the relevant part. This time indicates that for current lower than the indicated release current, the tripping time will be longer than the indicated release time. The value is given as a mean value."},
			new SingleValuePropertyType("ReleaseTimeI2tEnd", "IfcTimeMeasure") { Definition = "The release time in [s] for the end point of the I2 tripping curve of the G-function, if any. The value of ReleaseTimeI2tEnd shall be lower than ReleaseTimeI2tStart."},
			new SingleValuePropertyType("ReleaseTimeI2tStart", "IfcTimeMeasure") { Definition = "The release time in [s] for the start point of the I2t tripping curve of the G-function, if any."},
			new SingleValuePropertyType("TimeTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of time/current-curve in [%]."},
			new SingleValuePropertyType("TimeTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of the time/current-curve in [%] valid for currents above TimeToleranceLimit1."},
			new SingleValuePropertyType("TimeToleranceLimit1", "IfcElectricCurrentMeasure") { Definition = "The current limit in [x In] limiting the application of TimeTolerance1, if any. If the value is set to 0, the value of the TimeTolerance1 is valid for the whole time/current-curve."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingFunctionICurve", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CurrentTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%]."},
			new SingleValuePropertyType("CurrentTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%] valid for times above CurrentTolereanceLimit1."},
			new SingleValuePropertyType("CurrentToleranceLimit1", "IfcTimeMeasure") { Definition = "The time limit in [s] limiting the application of CurrentTolerance1, if any. If the value is set to 0, the value of the CurrentTolerance1 is valid for the whole time/current-curve."},
			new SingleValuePropertyType("IsCurrentTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  CurrentTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("IsOffWhenSFunctionOn", "IfcBoolean") { Definition = "Indication whether the I-function is automatically switched off when the S-function is switched on."},
			new SingleValuePropertyType("IsSelectable", "IfcBoolean") { Definition = "Indication whether the S-function can be switched off or not."},
			new SingleValuePropertyType("IsTimeTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  TimeTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("MaxAdjustmentX_ICS", "IfcElectricCurrentMeasure") { Definition = "Provides the maximum setting value for the available current adjustment in relation to the\nIcs breaking capacity of the protection device of which the actual tripping unit is a part of. The value is not asserted unless the instantaneous time protection is."},
			new SingleValuePropertyType("NominalCurrentAdjusted", "IfcBoolean") { Definition = "An indication if the tripping currents of the short time protection is related to the nominal current multiplied with the actual setting of the current adjustment, if any, of the long time protection part of the protective device, or not."},
			new SingleValuePropertyType("ReleaseCurrent", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In] for the initial tripping of the S-function."},
			new SingleValuePropertyType("ReleaseTime", "IfcTimeMeasure") { Definition = "The release time in [s] for the initial tripping of the relevant part. This time indicates that for current lower than the indicated release current, the tripping time will be longer than the indicated release time. The value is given as a mean value."},
			new SingleValuePropertyType("TimeTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of time/current-curve in [%]."},
			new SingleValuePropertyType("TimeTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of the time/current-curve in [%] valid for currents above TimeToleranceLimit1."},
			new SingleValuePropertyType("TimeToleranceLimit1", "IfcElectricCurrentMeasure") { Definition = "The current limit in [x In] limiting the application of TimeTolerance1, if any. If the value is set to 0, the value of the TimeTolerance1 is valid for the whole time/current-curve."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingFunctionLCurve", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsSelectable", "IfcBoolean") { Definition = "Indication whether the L-function can be switched off or not."},
			new SingleValuePropertyType("LowerCurrent1", "IfcElectricCurrentMeasure") { Definition = "The current in [x In], indicating that for currents smaller than LowerCurrent1 the I2t part of the L-function will not trip the current,"},
			new SingleValuePropertyType("LowerCurrent2", "IfcElectricCurrentMeasure") { Definition = "The current in [x In], indicating the upper current limit of the lower time/current curve of the I2t part of the L-function."},
			new SingleValuePropertyType("LowerTime1", "IfcTimeMeasure") { Definition = "The time in [s], indicating that tripping times of the lower time/current curve lower than LowerTime1 is determined by the I2t part of the L-function."},
			new SingleValuePropertyType("LowerTime2", "IfcTimeMeasure") { Definition = "The time in [s], indicating the tripping times of the upper time/current curve at the LowerCurrent2."},
			new SingleValuePropertyType("UpperCurrent1", "IfcElectricCurrentMeasure") { Definition = "The current in [x In], indicating that for currents larger than UpperCurrent1 the I2t part of the L-function will trip the current."},
			new SingleValuePropertyType("UpperCurrent2", "IfcElectricCurrentMeasure") { Definition = "The current in [x In], indicating the upper current limit of the upper time/current curve of the I2t part of the L-function."},
			new SingleValuePropertyType("UpperTime1", "IfcTimeMeasure") { Definition = "The time in [s], indicating that tripping times of the upper time/current curve lower than UpperTime1 is determined by the I2t part of the L-function."},
			new SingleValuePropertyType("UpperTime2", "IfcTimeMeasure") { Definition = "The time in [s], indicating the tripping times of the upper time/current curve at the UpperCurrent2."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingFunctionSCurve", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CurrentTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%]."},
			new SingleValuePropertyType("CurrentTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%] valid for times above CurrentTolereanceLimit1."},
			new SingleValuePropertyType("CurrentToleranceLimit1", "IfcTimeMeasure") { Definition = "The time limit in [s] limiting the application of CurrentTolerance1, if any. If the value is set to 0, the value of the CurrentTolerance1 is valid for the whole time/current-curve."},
			new SingleValuePropertyType("IsCurrentTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  CurrentTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("IsOffWhenLfunctionOn", "IfcBoolean") { Definition = "Indication whether the S-function is automatically switched off when the I-function is switched on."},
			new SingleValuePropertyType("IsSelectable", "IfcBoolean") { Definition = "Indication whether the S-function can be switched off or not."},
			new SingleValuePropertyType("IsTimeTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  TimeTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("NominalCurrentAdjusted", "IfcBoolean") { Definition = "An indication if the tripping currents of the short time protection is related to the nominal current multiplied with the actual setting of the current adjustment, if any, of the long time protection part of the protective device, or not."},
			new SingleValuePropertyType("ReleaseCurrent", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In] for the initial tripping of the S-function."},
			new SingleValuePropertyType("ReleaseCurrentI2tEnd", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In] for the end point of the I2t tripping curve of the S-function, if any. The value of ReleaseCurrentI2tEnd shall be larger than ReleaseCurrentI2tStart."},
			new SingleValuePropertyType("ReleaseCurrentI2tStart", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In] for the start point of the I2t tripping curve of the S-function, if any."},
			new SingleValuePropertyType("ReleaseTime", "IfcTimeMeasure") { Definition = "The release time in [s] for the initial tripping of the relevant part. This time indicates that for current lower than the indicated release current, the tripping time will be longer than the indicated release time. The value is given as a mean value."},
			new SingleValuePropertyType("ReleaseTimeI2tEnd", "IfcTimeMeasure") { Definition = "The release time in [s] for the end point of the I2 tripping curve of the S-function, if any. The value of ReleaseTimeI2tEnd shall be lower than ReleaseTimeI2tStart."},
			new SingleValuePropertyType("ReleaseTimeI2tStart", "IfcTimeMeasure") { Definition = "The release time in [s] for the start point of the I2t tripping curve of the S-function, if any"},
			new SingleValuePropertyType("TimeTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of time/current-curve in [%]."},
			new SingleValuePropertyType("TimeTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of the time/current-curve in [%] valid for currents above TimeToleranceLimit1."},
			new SingleValuePropertyType("TimeToleranceLimit1", "IfcElectricCurrentMeasure") { Definition = "The current limit in [x In] limiting the application of TimeTolerance1, if any. If the value is set to 0, the value of the TimeTolerance1 is valid for the whole time/current-curve."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitCurrentAdjustment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AdjustmentValueType", new [] { "RANGE", "LIST" } ) { Definition = "The type of adjustment value that is applied through the property set. This determines the properties that should be asserted (see below)."},
			new SingleValuePropertyType("AdjustmentDesignation", "IfcLabel") { Definition = "The desgnation on the device for the adjustment."},
			new SingleValuePropertyType("AdjustmentRange", "IfcElectricCurrentMeasure") { Definition = "Upper and lower current adjustment limits for an AdjustmentValueType = RANGE. Note that this property should not have a value for an  AdjustmentValueType = LIST."},
			new SingleValuePropertyType("AdjustmentRangeStepValue", "IfcElectricCurrentMeasure") { Definition = "Step value of current adjustment for an AdjustmentValueType = RANGE. Note that this property should not have a value for an  AdjustmentValueType = LIST."},
			new SingleValuePropertyType("AdjustmentValues", "IfcElectricCurrentMeasure") { Definition = "A list of current adjustment values that may be applied to a tripping unit for an AdjustmentValueType = LIST. A minimum of 1 and a maximum of 16 adjustment values may be specified. Note that this property should not have a value for an  AdjustmentValueType = RANGE."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTimeAdjustment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AdjustmentValueType", new [] { "RANGE", "LIST" } ) { Definition = "The type of adjustment value that is applied through the property set. This determines the properties that should be asserted (see below)."},
			new EnumerationPropertyType("I2TApplicability", new [] { "L_FUNCTION", "S_FUNCTION", "G_FUNCTION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The applicability of the time adjustment related to the tripping function."},
			new SingleValuePropertyType("AdjustmentDesignation", "IfcLabel") { Definition = "The desgnation on the device for the adjustment."},
			new SingleValuePropertyType("AdjustmentRange", "IfcTimeMeasure") { Definition = "Upper and lower time adjustment limits for an AdjustmentValueType = RANGE. Note that this property should not have a value for an  AdjustmentValueType = LIST."},
			new SingleValuePropertyType("AdjustmentRangeStepValue", "IfcTimeMeasure") { Definition = "Step value of time adjustment for an AdjustmentValueType = RANGE. Note that this property should not have a value for an  AdjustmentValueType = LIST."},
			new SingleValuePropertyType("AdjustmentValues", "IfcTimeMeasure") { Definition = "A list of time adjustment values that may be applied to a tripping unit for an AdjustmentValueType = LIST. A minimum of 1 and a maximum of 16 adjustment values may be specified. Note that this property should not have a value for an  AdjustmentValueType = RANGE."},
			new SingleValuePropertyType("CurrentForTimeDelay", "IfcTimeMeasure") { Definition = "The tripping current in [x In] at which the time delay is specified. A value for this property should only be asserted for time delay of L-function, and for I2t of the S and G function."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AtexVerified", "IfcBoolean") { Definition = "An indication whether the tripping_unit is verified to be applied in EX-environment or not."},
			new SingleValuePropertyType("LimitingTerminalSize", "IfcAreaMeasure") { Definition = "The maximum terminal size capacity of the device."},
			new SingleValuePropertyType("OldDevice", "IfcBoolean") { Definition = "Indication whether the protection_ unit is out-dated or not. If not out-dated, the device is still for sale."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("Standard", "IfcLabel") { Definition = "The designation of the standard applicable for the definition of the characteristics of the\ntripping_unit."},
			new SingleValuePropertyType("UseInDiscrimination", "IfcBoolean") { Definition = "An indication whether the time/current tripping information can be applied in a discrimination\nanalysis or not."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTypeElectroMagnetic", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectroMagneticTrippingUnitType", new [] { "OL", "TMP_STD", "TMP_SC", "TMP_MP", "TMP_BM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of electric magnetic tripping unit  from which that required may be selected. These cover overload, none special, short circuit, motor protection and bi-metal tripping."},
			new SingleValuePropertyType("CurveDesignation", "IfcLabel") { Definition = "The designation of the trippingcurve given by the manufacturer. For a MCB the designation should be in accordance with the designations given in IEC 60898."},
			new SingleValuePropertyType("DefinedTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The ambient temperature at which the thermal current/time-curve associated with this protection device is defined."},
			new SingleValuePropertyType("I1", "IfcReal") { Definition = "The (thermal) lower testing current limit in [x In], indicating that for currents lower than I1, the tripping time shall be longer than the associated tripping time, T2."},
			new SingleValuePropertyType("I2", "IfcReal") { Definition = "The (thermal) upper testing current limit in [x In], indicating that for currents larger than I2, the tripping time shall be shorter than the associated tripping time, T2."},
			new SingleValuePropertyType("I4", "IfcReal") { Definition = "The lower electromagnetic testing current limit in [x In], indicating that for currents lower than I4, the tripping time shall be longer than the associated tripping time, T5, i.e. the device shall not trip instantaneous."},
			new SingleValuePropertyType("I5", "IfcReal") { Definition = "The upper electromagnetic testing current limit in [x In], indicating that for currents larger than I5, the tripping time shall be shorter than or equal to the associated tripping time, T5, i.e. the device shall trip instantaneous."},
			new SingleValuePropertyType("T2", "IfcTimeMeasure") { Definition = "The (thermal) testing time in [s] associated with the testing currents I1 and I2."},
			new SingleValuePropertyType("T5", "IfcTimeMeasure") { Definition = "The electromagnetic testing time in [s] associated with the testing currents I4 and I5, i.e. electromagnetic tripping time"},
			new SingleValuePropertyType("TemperatureFactor", "IfcRatioMeasure") { Definition = "The correction factor (typically measured as %/deg K) for adjusting the thermal current/time to an ambient temperature different from the value given by the defined temperature."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTypeElectronic", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectronicTrippingUnitType", new [] { "EP_BM", "EP_MP", "EP_SC", "EP_STD", "EP_TIMEDELAYED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of electronic tripping unit  from which that required may be selected."},
			new SingleValuePropertyType("N_Protection_100", "IfcBoolean") { Definition = "An indication whether the electronic tripping unit is tripping if the current in the N conductor is more than 100% of that of the phase conductors. The property is only asserted if the property N_Protection is asserted."},
			new SingleValuePropertyType("N_Protection_50", "IfcBoolean") { Definition = "An indication whether the electronic tripping unit is tripping if the current in the N conductor is more than 50% of that of the phase conductors. The property is only asserted if the property N_Protection is asserted."},
			new SingleValuePropertyType("N_Protection_Select", "IfcBoolean") { Definition = "An indication whether the use of the N_Protection can be selected by the user or not. If both the properties N_Protection_50 and N_Protection_100 are asserted, the value of N_Protection_Select property is set to TRUE. The property is only asserted if the property N_Protection is asserted."},
			new SingleValuePropertyType("N_Protection", "IfcBoolean") { Definition = "An indication whether the electronic tripping unit has separate protection for the N conductor, or not."},
			new SingleValuePropertyType("NominalCurrents", "IfcElectricCurrentMeasure") { Definition = "A set of values providing information on available modules (chips) for setting the nominal current of the protective device. If\nthe set is empty, no nominal current modules are available for the tripping unit."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTypeResidualCurrent", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TrippingUnitReleaseCurrent", new [] { "10", "30", "100", "300", "500", "1000", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The value of tripping or residual current for which the device has the possibility to be equipped. The values are given in mA."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTypeThermal", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ThermalTrippingUnitType", new [] { "NH_FUSE", "DIAZED", "MINIZED", "NEOZED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of thermal tripping unit  from which that required may be selected."},
			new SingleValuePropertyType("CurveDesignation", "IfcLabel") { Definition = "The designation of the trippingcurve given by the manufacturer. For a MCB the designation should be in accordance with the designations given in IEC 60898."},
			new SingleValuePropertyType("DefinedTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The ambient temperature at which the thermal current/time-curve associated with this protection device is defined."},
			new SingleValuePropertyType("I1", "IfcReal") { Definition = "The (thermal) lower testing current limit in [x In], indicating that for currents lower than I1, the tripping time shall be longer than the associated tripping time, T2."},
			new SingleValuePropertyType("I2", "IfcReal") { Definition = "The (thermal) upper testing current limit in [x In], indicating that for currents larger than I2, the tripping time shall be shorter than the associated tripping time, T2."},
			new SingleValuePropertyType("T2", "IfcTimeMeasure") { Definition = "The (thermal) testing time in [s] associated with the testing currents I1 and I2."},
			new SingleValuePropertyType("TemperatureFactor", "IfcRatioMeasure") { Definition = "The correction factor (typically measured as %/deg K) for adjusting the thermal current/time to an ambient temperature different from the value given by the defined temperature."} },
				new [] { "IfcProtectiveDeviceTrippingUnit" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeCircuitBreaker", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U230", "U400", "U440", "U525", "U690", "U1000", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("ICM60947", "IfcElectricCurrentMeasure") { Definition = "The making capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICS60947", "IfcElectricCurrentMeasure") { Definition = "The service breaking capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICU60947", "IfcElectricCurrentMeasure") { Definition = "The ultimate breaking capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICW60947", "IfcElectricCurrentMeasure") { Definition = "The thermal withstand current in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. The value shall be related to 1 s."},
			new SingleValuePropertyType("PerformanceClasses", "IfcLabel") { Definition = "A set of designations of performance classes for the breaker unit for which the data of this instance is valid. A breaker unit being a circuit breaker may be\nconstructed for different levels of breaking capacities. A maximum of 7 different\nperformance classes may be provided. Examples of performance classes that may be specified include B, C, N, S, H, L, V."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeEarthLeakageCircuitBreaker", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EarthFailureDeviceType", new [] { "STANDARD", "TIMEDELAYED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of circuit breaker from which that required may be selected where:\n\nStandard: Device that operates without a time delay.\nTimeDelayed: Device that operates after a time delay."},
			new SingleValuePropertyType("Sensitivity", "IfcElectricCurrentMeasure") { Definition = "The rated rms value of the vector sum of the instantaneous currents flowing in the main circuits of the device which causes the device to operate under specified conditions. (IEC 61008-1)."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeFuseDisconnector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FuseDisconnectorType", new [] { "ENGINEPROTECTIONDEVICE", "FUSEDSWITCH", "HRC", "OVERLOADPROTECTIONDEVICE", "SWITCHDISCONNECTORFUSE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of fuse disconnector from which that required may be selected where:\n\nEngineProtectionDevice: A fuse whose characteristic is specifically designed for the protection of a motor or generator.\nFuseSwitchDisconnector: A switch disconnector in which a fuse link or a fuse carrier with fuse link forms the moving contact,\nHRC: A standard fuse (High Rupturing Capacity)\nOverloadProtectionDevice: A device that disconnects the supply when the operating conditions in an electrically undamaged circuit causes an overcurrent,\nSemiconductorFuse: A fuse whose characteristic is specifically designed for the protection of sem-conductor devices.\nSwitchDisconnectorFuse: A switch disconnector in which one or more poles have a fuse in series in a composite unit."},
			new EnumerationPropertyType("VoltageLevel", new [] { "U230", "U400", "U440", "U525", "U690", "U1000", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("IC60269", "IfcElectricCurrentMeasure") { Definition = "The breaking capacity in [A] for fuses in accordance with the IEC 60269 series."},
			new SingleValuePropertyType("PowerLoss", "IfcPowerMeasure") { Definition = "The power loss in [W] of the fuse when the nominal current is flowing through the fuse."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeResidualCurrentCircuitBreaker", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Sensitivity", "IfcElectricCurrentMeasure") { Definition = "Current leakage to an unwanted leading path during normal operation (IEC 151-14-49)."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeResidualCurrentSwitch", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Sensitivity", "IfcElectricCurrentMeasure") { Definition = "Current leakage to an unwanted leading path during normal operation (IEC 151-14-49)."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeVaristor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VaristorType", new [] { "METALOXIDE", "ZINCOXIDE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of varistor  from which that required may be selected."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_PumpOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BaseType", new [] { "FRAME", "BASE", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines general types of pump bases.\n\nFRAME: Frame. \nBASE: Base. \nNONE: There is no pump base, such as an inline pump. \nOTHER: Other type of pump base."},
			new EnumerationPropertyType("DriveConnectionType", new [] { "DIRECTDRIVE", "BELTDRIVE", "COUPLING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The way the pump drive mechanism is connected to the pump.\n\nDIRECTDRIVE: Direct drive. \nBELTDRIVE: Belt drive. \nCOUPLING: Coupling. \nOTHER: Other type of drive connection."},
			new SingleValuePropertyType("ImpellerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of pump impeller - used to scale performance of geometrically similar pumps."} },
				new [] { "IfcPump" });
		yield return new PropertySetInfo("Pset_PumpPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcPump" });
		yield return new PropertySetInfo("Pset_PumpTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The connection size of the to and from the pump."},
			new SingleValuePropertyType("FlowRateRange", "IfcMassFlowRateMeasure") { Definition = "Allowable range of volume of fluid being pumped against the resistance specified."},
			new SingleValuePropertyType("FlowResistanceRange", "IfcPressureMeasure") { Definition = "Allowable range of frictional resistance against which the fluid is being pumped."},
			new SingleValuePropertyType("NetPositiveSuctionHead", "IfcPressureMeasure") { Definition = "Minimum liquid pressure at the pump inlet to prevent cavitation."},
			new SingleValuePropertyType("NominalRotationSpeed", "IfcRotationalFrequencyMeasure") { Definition = "Pump rotational speed under nominal conditions."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operational range of the fluid temperature."} },
				new [] { "IfcPump" });
		yield return new PropertySetInfo("Pset_RailingCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Diameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of the object. It is the diameter of the handrail of the railing.\nThe size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence.\nHere the diameter of the hand or guardrail within the railing."},
			new SingleValuePropertyType("Height", "IfcPositiveLengthMeasure") { Definition = "Height of the object. It is the upper hight of the railing above the floor or stair.\nThe size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."} },
				new [] { "IfcRailing" });
		yield return new PropertySetInfo("Pset_RampCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere it defines an exit ramp in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. \nSet to (TRUE) if this ramp is rated as handicap accessible  according the local building codes, otherwise (FALSE)."},
			new SingleValuePropertyType("HasNonSkidSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("RequiredHeadroom", "IfcPositiveLengthMeasure") { Definition = "Required headroom clearance for the passageway according to the applicable building code or additional requirements."},
			new SingleValuePropertyType("RequiredSlope", "IfcPlaneAngleMeasure") { Definition = "Required sloping angle of the object  - relative to horizontal (0.0 degrees).\nRequired maximum slope for the passageway according to the applicable building code or additional requirements."} },
				new [] { "IfcRamp" });
		yield return new PropertySetInfo("Pset_RampFlightCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ClearWidth", "IfcPositiveLengthMeasure") { Definition = "Actual clear width measured as the clear space for accessibility and egress; it is a measured distance betwen the two handrails or the wall and a handrail on a ramp.\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("CounterSlope", "IfcPlaneAngleMeasure") { Definition = "Sloping angle of the object, measured perpendicular to the slope  - relative to horizontal (0.0 degrees). \nActual maximum slope for the passageway measured perpendicular to the direction of travel according to the current design. The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. \nNote: new property in IFC4."},
			new SingleValuePropertyType("Headroom", "IfcPositiveLengthMeasure") { Definition = "Actual headroom clearance for the passageway according to the current design. \nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Sloping angle of the object  - relative to horizontal (0.0 degrees). \nActual maximum slope for the passageway according to the current design.\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."} },
				new [] { "IfcRampFlight" });
		yield return new PropertySetInfo("Pset_ReinforcementBarCountOfIndependentFooting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("XDirectionLowerBarCount", "IfcInteger") { Definition = "The number of bars with X direction lower bar."},
			new SingleValuePropertyType("XDirectionUpperBarCount", "IfcInteger") { Definition = "The number of bars with X direction upper bar."},
			new SingleValuePropertyType("YDirectionLowerBarCount", "IfcInteger") { Definition = "The number of bars with Y direction lower bar."},
			new SingleValuePropertyType("YDirectionUpperBarCount", "IfcInteger") { Definition = "The number of bars with Y direction upper bar."} },
				new [] { "IfcFooting" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfBeam", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("SpacingBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the spacing bar."},
			new SingleValuePropertyType("StirrupBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the stirrup bar."} },
				new [] { "IfcBeam" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfColumn", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ReinforcementBarType", new [] { "RING", "SPIRAL", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type of the reinforcement bar."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("HoopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the hoop bar."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("XDirectionTieHoopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The X direction pitch length of the tie hoop."},
			new SingleValuePropertyType("XDirectionTieHoopCount", "IfcInteger") { Definition = "The number of bars with X direction tie hoop bars."},
			new SingleValuePropertyType("YDirectionTieHoopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The Y direction pitch length of the tie hoop."},
			new SingleValuePropertyType("YDirectionTieHoopCount", "IfcInteger") { Definition = "The number of bars with Y direction tie hoop bars."} },
				new [] { "IfcColumn" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfContinuousFooting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossingLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the crossing lower bar."},
			new SingleValuePropertyType("CrossingUpperBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the crossing upper bar."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."} },
				new [] { "IfcFooting" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfSlab", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("LongInsideCenterLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside center lower bar."},
			new SingleValuePropertyType("LongInsideCenterTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside center top bar."},
			new SingleValuePropertyType("LongInsideEndLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside end lower bar."},
			new SingleValuePropertyType("LongInsideEndTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside end top bar."},
			new SingleValuePropertyType("LongOutsideLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long outside lower bar."},
			new SingleValuePropertyType("LongOutsideTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long outside top bar."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("ShortInsideCenterLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside center lower bar."},
			new SingleValuePropertyType("ShortInsideCenterTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside center top bar."},
			new SingleValuePropertyType("ShortInsideEndLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside end lower bar."},
			new SingleValuePropertyType("ShortInsideEndTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside end top bar."},
			new SingleValuePropertyType("ShortOutsideLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short outside lower bar."},
			new SingleValuePropertyType("ShortOutsideTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short outside top bar."} },
				new [] { "IfcSlab" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfWall", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BarAllocationType", new [] { "SINGLE", "DOUBLE", "ALTERNATE", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type of the reinforcement bar allocation."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "Description of the reinforcement."},
			new SingleValuePropertyType("HorizontalBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the horizontal bar."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "A descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("SpacingBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the spacing bar."},
			new SingleValuePropertyType("VerticalBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the vertical bar."} },
				new [] { "IfcWall" });
		yield return new PropertySetInfo("Pset_Risk", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssessmentOfRisk", new [] { "ALMOSTCERTAIN", "VERYLIKELY", "LIKELY", "VERYPOSSIBLE", "POSSIBLE", "SOMEWHATPOSSIBLE", "UNLIKELY", "VERYUNLIKELY", "RARE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Likelihood of risk event occurring.\n\nNote  that assessment of risk may frequently be associated with the physical location of the object for which the risk is assessed."},
			new EnumerationPropertyType("RiskConsequence", new [] { "CATASTROPHIC", "SEVERE", "MAJOR", "CONSIDERABLE", "MODERATE", "SOME", "MINOR", "VERYLOW", "INSIGNIFICANT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the level of severity of the consequences that the risk would have in case it happens."},
			new EnumerationPropertyType("RiskOwner", new [] { "DESIGNER", "SPECIFIER", "CONSTRUCTOR", "INSTALLER", "MAINTAINER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A determination of who is the owner of the risk by reference to principal roles of organizations within a project. Determination of the specific organization should be by reference to instances of IfcActorRole assigned to instances of IfcOrganization (if assigned)."},
			new EnumerationPropertyType("RiskRating", new [] { "CRITICAL", "VERYHIGH", "HIGH", "CONSIDERABLE", "MODERATE", "SOME", "LOW", "VERYLOW", "INSIGNIFICANT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A general rating of the risk that may be determined from a combination of the risk assessment and risk consequence."},
			new EnumerationPropertyType("RiskType", new [] { "BUSINESS", "HAZARD", "HEALTHANDSAFETY", "INSURANCE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of risk from which the type required may be set."},
			new SingleValuePropertyType("AffectsSurroundings", "IfcBoolean") { Definition = "Indicates wether the risk affects only to the person assigned to that task (FALSE) or if it can also affect to the people in the surroundings (TRUE).\n\nFor example, the process of painting would affect all the people in the vicinity of the process."},
			new SingleValuePropertyType("NatureOfRisk", "IfcLabel") { Definition = "An indication of the generic nature of the risk that might be encountered. \n\nNOTE: It is anticipated that there will be a local agreement that constrains the values that might be assigned to this property. An example might be 'Fall'  or 'Fall of grille unit' causing injury and damage to person and property."},
			new SingleValuePropertyType("PreventiveMeassures", "IfcText") { Definition = "Identifies preventive measures to be taken to mitigate risk."},
			new SingleValuePropertyType("RiskCause", "IfcText") { Definition = "A value that may be assigned to capture the cause or trigger for the risk. An example might be 'poor fixing'."},
			new SingleValuePropertyType("SubNatureOfRisk1", "IfcLabel") { Definition = "A first subsidiary value that might be assigned to designate a more specific type of risk.\n\nNOTE: Nature of risk may be identified in various ways depending upon the place where risk assessment takes place and according to local agreement. This property set allows for a generic nature of risk and up to two subsidiary natures. An example might be 'causing injury and damage'."},
			new SingleValuePropertyType("SubNatureOfRisk2", "IfcLabel") { Definition = "A second subsidiary value that might be assigned to designate a more specific type of risk. An example might be 'o person and property'."} },
				new [] { "IfcProcess" });
		yield return new PropertySetInfo("Pset_RoofCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nHere the total thermal transmittance coefficient through the roof surface (including all materials)."} },
				new [] { "IfcRoof" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeBath", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BathType", new [] { "DOMESTIC", "DOMESTICCORNER", "FOOT", "JACUZZI", "PLUNGE", "SITZ", "TREATMENT", "WHIRLPOOL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration defines the types of bath that may be specified within the property set where.\n\nDomestic: \tBath, for one person at a time, into which the whole body can be easily immersed.\nDomesticCorner: \tBath, for one person at a time, into which the whole body can be easily immersed and in which the immersion trough is at an angle.\nFoot: \tShallow bath for washing the feet.\nJacuzzi: \tWhirlpool bath for more than one person\nPlunge: \tBath, usually for more than one person at a time, into which the whole body can be easily immersed.\nSitz: \tBath in which a bather sits as in a chair.\nTreatment: \tBath used for hydrotherapy purposes.\nWhirlpool: \tBath in which an integrated device agitates the water by pumped circulation or induction of water and/or air."},
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "Principal color of the object."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("HasGrabHandles", "IfcBoolean") { Definition = "Indicates whether the bath is fitted with handles that provide assistance to a bather in entering or leaving the bath."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object."} },
				new [] { "IfcSanitaryTerminal" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeBidet", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Mounting", new [] { "BACKTOWALL", "PEDESTAL", "COUNTERTOP", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:-\n\nBackToWall: \tA pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\n.\nPedestal: \tA floor mounted sanitary terminal that has an integral base\n.\nCounterTop: \tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung: \tA sanitary terminal cantilevered clear of the floor.\n\nNote that BackToWall, Pedestal and WallHung are allowable values for a bidet."},
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "Color selection for this object."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object."},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the object."} },
				new [] { "IfcSanitaryTerminal" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeCistern", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CisternHeight", new [] { "HIGHLEVEL", "LOWLEVEL", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the height of the cistern or, if set to 'None' if the urinal has no cistern and is flushed using mains or high pressure water through a flushing valve."},
			new EnumerationPropertyType("FlushType", new [] { "LEVER", "PULL", "PUSH", "SENSOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_FlushTypeEnum defines the types of flushing mechanism that may be specified for cisterns and sanitary terminals where:-\n\nLever: \tFlushing is achieved by twisting a lever that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal.\nPull: \tFlushing is achieved by pulling a handle or knob vertically upwards that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal.\nPush: \tFlushing is achieved by pushing a button or plate that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal.\nSensor: Flush is activated through an automatic sensing mechanism."},
			new SingleValuePropertyType("CisternCapacity", "IfcVolumeMeasure") { Definition = "Volumetric capacity of the cistern"},
			new SingleValuePropertyType("CisternColor", "IfcText") { Definition = "Color of the object."},
			new SingleValuePropertyType("FlushRate", "IfcVolumeMeasure") { Definition = "The minimum and maximum volume of water used at each flush. Where a single flush is used, the value of upper bound and lower bound should be equal. For a dual flush toilet, the lower bound should be used for the lesser flush rate and the upper bound for the greater flush rate. Where flush is achieved using mains pressure water through a flush valve, the value of upper and lower bound should be equal and should be the same as the flush rate property of the flush valve (see relevant valve property set). Alternatively, in this case, do not assert the flush rate property; refer to the flush rate of the flush valve."},
			new SingleValuePropertyType("IsAutomaticFlush", "IfcBoolean") { Definition = "Boolean value that determines if the cistern is flushed automatically either after each use or periodically (TRUE) or whether manual flushing is required (FALSE)."},
			new SingleValuePropertyType("IsSingleFlush", "IfcBoolean") { Definition = "Indicates whether the cistern is single flush = TRUE (i.e. the same amount of water is used for each and every flush) or dual flush = FALSE (i.e. the amount of water used for a flush may be selected by the user to be high or low depending on the waste material to be removed)."} },
				new [] { "IfcSanitaryTerminal" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcSanitaryTerminal" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeSanitaryFountain", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FountainType", new [] { "DRINKINGWATER", "EYEWASH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the type of fountain from the enumerated list of types where:-\n\nDrinkingWater: \tSanitary appliance that provides a low pressure jet of drinking water.\nEyewash: \tWaste water appliance, usually installed in work places where there is a risk of injury to eyes by solid particles or dangerous liquids, with which the user can wash the eyes without touching them."},
			new EnumerationPropertyType("Mounting", new [] { "BACKTOWALL", "PEDESTAL", "COUNTERTOP", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the form of mounting of the fountain from the enumerated list of mountings where:-\n\nBackToWall: \tA pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections.\nPedestal: \tA floor mounted sanitary terminal that has an integral base\n.\nCounterTop: \tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung: \tA sanitary terminal cantilevered clear of the floor."},
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "Color selection for this object."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object."} },
				new [] { "IfcSanitaryTerminal" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeShower", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ShowerType", new [] { "DRENCH", "INDIVIDUAL", "TUNNEL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the type of shower from the enumerated list of types where:-\n\nDrench:  \tShower that rapidly gives a thorough soaking in an emergency.\nIndividual: \tShower unit that is typically enclosed and is for the use of one person at a time.\nTunnel: \tShower that has a succession of shower heads or spreaders that operate simultaneously along its length."},
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "Color selection for this object."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("HasTray", "IfcBoolean") { Definition = "Indicates whether the shower has a separate receptacle that catches the water in a shower and directs it to a waste outlet."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object."},
			new SingleValuePropertyType("ShowerHeadDescription", "IfcText") { Definition = "A description of the shower head(s) that emit the spray of water."} },
				new [] { "IfcSanitaryTerminal" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeSink", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Mounting", new [] { "BACKTOWALL", "PEDESTAL", "COUNTERTOP", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the form of mounting of the sink from the enumerated list of mountings where:-\n\nBackToWall: A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections.\nPedestal: \tA floor mounted sanitary terminal that has an integral base.\nCounterTop: \tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung: \tA sanitary terminal cantilevered clear of the floor."},
			new EnumerationPropertyType("SinkType", new [] { "BELFAST", "BUCKET", "CLEANERS", "COMBINATION_LEFT", "COMBINATION_RIGHT", "COMBINATION_DOUBLE", "DRIP", "LABORATORY", "LONDON", "PLASTER", "POT", "RINSING", "SHELF", "VEGETABLEPREPARATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the type of sink from the enumerated list of types where:-\n\nBelfast: \tDeep sink that has a plain edge and a weir overflow\n.\nBucket: \tSink at low level, with protected front edge, that facilitates filling and emptying buckets, usually with a hinged grid on which to stand them.\nCleaners:\t Sink, usually fixed at normal height (900mm), with protected front edge.\nCombination_Left:\t Sink with integral drainer on left hand side\n.\nCombination_Right: Sink with integral drainer on right hand side\n.\nCombination_Double: \tSink with integral drainer on both sides\n.\nDrip: Small sink that catches drips or flow from a faucet\n.\nLaboratory: Sink, of acid resisting material, with a top edge shaped to facilitate fixing to the underside of a desktop\n.\nLondon: Deep sink that has a plain edge and no overflow\n.\nPlaster: Sink with sediment receiver to prevent waste plaster passing into drains\n.\nPot: Large metal sink, with a standing waste, for washing cooking utensils\n.\nRinsing: Metal sink in which water can be heated and culinary utensils and tableware immersed at high temperature that destroys most harmful bacteria and allows subsequent self drying.\n.\nShelf: Ceramic sink with an integral back shelf through which water fittings are mounted\n.\nVegetablePreparation: \tLarge metal sink, with a standing waste, for washing and preparing vegetables\n."},
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "Color selection for this object."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("MountingOffset", "IfcLengthMeasure") { Definition = "For cunter top maounted sinks, the vertical offset between the top of the sink and the counter top."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object."} },
				new [] { "IfcSanitaryTerminal" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeToiletPan", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PanMounting", new [] { "BACKTOWALL", "PEDESTAL", "COUNTERTOP", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:-\n\nBackToWall: \tA pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections.\nPedestal: \tA floor mounted sanitary terminal that has an integral base.\nCounterTop: \tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung: \tA sanitary terminal cantilevered clear of the floor."},
			new EnumerationPropertyType("ToiletPanType", new [] { "SIPHONIC", "SQUAT", "WASHDOWN", "WASHOUT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_ToiletPanTypeEnum defines the types of toilet pan that may be specified within the property set Pset_Toilet:-\n\nSiphonic: \tToilet pan in which excrement is removed by siphonage induced by the flushing water.\nSquat: \tToilet pan with an elongated bowl installed with its top edge at or near floor level, so that the user has to squat.\nWashDown: \tToilet pan in which excrement is removed by the momentum of the flushing water.\nWashOut: \tA washdown toilet pan in which excrement falls first into a shallow water filled bowl."},
			new EnumerationPropertyType("ToiletType", new [] { "BEDPANWASHER", "CHEMICAL", "CLOSECOUPLED", "LOOSECOUPLED", "SLOPHOPPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that defines the types of toilet (water closet) arrangements that may be specified where:-\n\nBedPanWasher: Enclosed soil appliance in which bedpans and urinal bottles are emptied and cleansed.\nChemical: Portable receptacle or soil appliance that receives and retains excrement in either an integral or a separate container, in which it is chemically treated and from which it has to be emptied periodically.\nCloseCoupled: \tToilet suite in which a flushing cistern is connected directly to the water closet pan.\nLooseCoupled: \tToilet arrangement in which a flushing cistern is connected to the water closet pan through a flushing pipe.\nSlopHopper: \tHopper shaped soil appliance with a flushing rim and outlet similar to those of a toilet pan, into which human excrement is emptied for disposal."},
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "Color selection for this object"},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object."},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the terminal."} },
				new [] { "IfcSanitaryTerminal" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeUrinal", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Mounting", new [] { "BACKTOWALL", "PEDESTAL", "COUNTERTOP", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the form of mounting from the enumerated list of mountings where:-\n\nBackToWall =\tA pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal =\tA floor mounted sanitary terminal that has an integral base\nCounterTop =\tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung =\tA sanitary terminal cantilevered clear of the floor\n.\n\nNote that BackToWall, Pedestal and WallHung are allowable values for a urinal."},
			new EnumerationPropertyType("UrinalType", new [] { "BOWL", "SLAB", "STALL", "TROUGH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the type of urinal from the enumerated list of types where:-\n\nBowl: Individual wall mounted urinal.\nSlab: Urinal that consists of a slab or sheet fixed to a wall and down which urinal flows into a floor channel.\nStall: Floor mounted urinal that consists of an elliptically shaped sanitary stall fixed to a wall and down which urine flows into a floor channel.\nTrough: Wall mounted urinal of elongated rectangular shape on plan, that can be used by more than one person at a time."},
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "Color of the urinal."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object."},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the object."} },
				new [] { "IfcSanitaryTerminal" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeWashHandBasin", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Mounting", new [] { "BACKTOWALL", "PEDESTAL", "COUNTERTOP", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the form of mounting from the enumerated list of mountings where:-\n\nBackToWall: \tA pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections.\nPedestal: \tA floor mounted sanitary terminal that has an integral base\nCounterTop: \tA sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung: \tA sanitary terminal cantilevered clear of the floor."},
			new EnumerationPropertyType("WashHandBasinType", new [] { "DENTALCUSPIDOR", "HANDRINSE", "HOSPITAL", "TIPUP", "WASHFOUNTAIN", "WASHINGTROUGH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of wash hand basin that may be specified where:\n\n\nDentalCuspidor: Waste water appliance that receives and flushes away mouth washings\n.\nHandRinse: Wall mounted wash hand basin that has an overall width of 500mm or less\n.\nHospital: Wash hand basin that has a smooth easy clean surface without tapholes or overflow slot for use where hygiene is of prime importance. \n\nTipup: Wash hand basin mounted on pivots so that it can be emptied by tilting.\n\nVanity: Wash hand basin for installation into a horizontal surface.\n\nWashfountain: Wash hand basin that is circular, semi-circular or polygonal on plan, at which more than one person can wash at the same time.\nWashingTrough: Wash hand basin of elongated rectangular shape in plan, at which more than one person can wash at the same time."},
			new SingleValuePropertyType("Color", "IfcLabel") { Definition = "Color of the object."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("MountingOffset", "IfcLengthMeasure") { Definition = "For cunter top maounted basins the vertical offset between the top of the sink and the counter top."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length of the object."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted width of the object."} },
				new [] { "IfcSanitaryTerminal" });
		yield return new PropertySetInfo("Pset_SensorPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeConductanceSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointConductance", "IfcElectricConductanceMeasure") { Definition = "The fill level value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeContactSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointContact", "IfcInteger") { Definition = "The contact value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeFireSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccuracyOfFireSensor", "IfcThermodynamicTemperatureMeasure") { Definition = "The accuracy of the sensor."},
			new SingleValuePropertyType("FireSensorSetPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature value to be sensed to indicate the presence of fire."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeFlowSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointFlow", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric flow value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeGasSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The floor area that is covered by the sensor (typically measured as a circle whose center is at the location of the sensor)."},
			new SingleValuePropertyType("GasDetected", "IfcLabel") { Definition = "Identification of the gas that is being detected, according to chemical formula.  For example, carbon monoxide is 'CO', carbon dioxide is 'CO2', oxygen is 'O2'."},
			new SingleValuePropertyType("SetPointConcentration", "IfcPositiveRatioMeasure") { Definition = "The gas concentration value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeHeatSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The area that is covered by the sensor (typically measured as a circle whose center is at the location of the sensor)."},
			new SingleValuePropertyType("RateOfTemperatureRise", "IfcTemperatureRateOfChangeMeasure") { Definition = "The rate of temperature rise that is to be sensed as being hazardous."},
			new SingleValuePropertyType("SetPointTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeHumiditySensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointHumidity", "IfcPositiveRatioMeasure") { Definition = "The humidity value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeIonConcentrationSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointConcentration", "IfcIonConcentrationMeasure") { Definition = "The ion concentration value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."},
			new SingleValuePropertyType("SubstanceDetected", "IfcLabel") { Definition = "Identification of the substance that is being detected according to chemical formula.  For example, calcium carbonate is 'CaCO3'"} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeLevelSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointLevel", "IfcPositiveLengthMeasure") { Definition = "The fill level value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeLightSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointIlluminance", "IfcIlluminanceMeasure") { Definition = "The illuminance value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeMoistureSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointMoisture", "IfcPositiveRatioMeasure") { Definition = "The moisture value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeMovementSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MovementSensingType", new [] { "PHOTOELECTRICCELL", "PRESSUREPAD", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the type of movement sensing mechanism."},
			new SingleValuePropertyType("SetPointMovement", "IfcPositiveRatioMeasure") { Definition = "The movement to be sensed."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypePHSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointPH", "IfcPHMeasure") { Definition = "The fill level value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypePressureSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsSwitch", "IfcBoolean") { Definition = "Identifies if the sensor also functions as a switch at the set point (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("SetPointPressure", "IfcPressureMeasure") { Definition = "The pressure value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeRadiationSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointRadiation", "IfcPowerMeasure") { Definition = "The radiation power value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeRadioactivitySensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointRadioactivity", "IfcRadioActivityMeasure") { Definition = "The radioactivity value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeSmokeSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The floor area that is covered by the sensor (typically measured as a circle whose center is at the location of the sensor)."},
			new SingleValuePropertyType("HasBuiltInAlarm", "IfcBoolean") { Definition = "Indicates whether the smoke sensor is included as an element within a smoke alarm/sensor unit (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SetPointConcentration", "IfcPositiveRatioMeasure") { Definition = "The smoke concentration value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeSoundSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointSound", "IfcSoundPressureMeasure") { Definition = "The sound pressure value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeTemperatureSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TemperatureSensorType", new [] { "HIGHLIMIT", "LOWLIMIT", "OUTSIDETEMPERATURE", "OPERATINGTEMPERATURE", "ROOMTEMPERATURE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that Identifies the types of temperature sensor that can be specified."},
			new SingleValuePropertyType("SetPointTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeWindSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("WindSensorType", new [] { "CUP", "WINDMILL", "HOTWIRE", "LASERDOPPLER", "SONIC", "PLATE", "TUBE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that Identifies the types of wind sensors that can be specified."},
			new SingleValuePropertyType("SetPointSpeed", "IfcLinearVelocityMeasure") { Definition = "The wind speed value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_ServiceLife", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MeanTimeBetweenFailure", "IfcDuration") { Definition = "The average time duration between instances of failure of a product."},
			new SingleValuePropertyType("ServiceLifeDuration", "IfcDuration") { Definition = "The length or duration of a service life.  \n\nThe lower bound indicates pessimistic service life, the upper bound indicates optimistic service life, and the setpoint indicates the typical service life."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_ServiceLifeFactors", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DesignLevel", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of design level employed."},
			new SingleValuePropertyType("IndoorEnvironment", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the indoor environment (where appropriate)."},
			new SingleValuePropertyType("InUseConditions", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the conditions in which components are operating."},
			new SingleValuePropertyType("MaintenanceLevel", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the level or degree of maintenance applied to dcomponents."},
			new SingleValuePropertyType("OutdoorEnvironment", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the outdoor environment (where appropriate)"},
			new SingleValuePropertyType("QualityOfComponents", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the quality of components used."},
			new SingleValuePropertyType("WorkExecutionLevel", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the quality of work executed."} },
				new [] { "IfcSystem" });
		yield return new PropertySetInfo("Pset_ShadingDeviceCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ShadingDeviceType", new [] { "FIXED", "MOVABLE", "OVERHANG", "SIDEFIN", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Specifies the type of shading device."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("MechanicalOperated", "IfcBoolean") { Definition = "Indication whether the element is operated machanically (TRUE) or not, i.e. manually  (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("Roughness", "IfcLabel") { Definition = "A measure of the vertical deviations of the surface."},
			new SingleValuePropertyType("SolarReflectance", "IfcPositiveRatioMeasure") { Definition = "(Rsol): The ratio of incident solar radiation that is reflected by a shading system (also named ρe). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("SolarTransmittance", "IfcPositiveRatioMeasure") { Definition = "(Tsol): The ratio of incident solar radiation that directly passes through a shading system (also named τe). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("SurfaceColor", "IfcLabel") { Definition = "The color of the surface."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material of a certain thickness for this element."},
			new SingleValuePropertyType("VisibleLightReflectance", "IfcPositiveRatioMeasure") { Definition = "Fraction of the visible light that is reflected by the glazing at normal incidence. It is a value without unit."},
			new SingleValuePropertyType("VisibleLightTransmittance", "IfcPositiveRatioMeasure") { Definition = "Fraction of the visible light that passes the shading system  at normal incidence. It is a value without unit."} },
				new [] { "IfcShadingDevice" });
		yield return new PropertySetInfo("Pset_ShadingDevicePHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcShadingDevice" });
		yield return new PropertySetInfo("Pset_SiteCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BuildableArea", "IfcAreaMeasure") { Definition = "The area of site utilization expressed as a maximum value according to local building codes."},
			new SingleValuePropertyType("BuildingHeightLimit", "IfcPositiveLengthMeasure") { Definition = "Allowed maximum height of buildings on this site - according to local building codes."},
			new SingleValuePropertyType("FloorAreaRatio", "IfcPositiveRatioMeasure") { Definition = "The ratio of all floor areas to the buildable area as the maximum floor area utilization of the site as a maximum value according to local building codes."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal project type."},
			new SingleValuePropertyType("SiteCoverageRatio", "IfcPositiveRatioMeasure") { Definition = "The ratio of the utilization,  TotalArea / BuildableArea, expressed as a maximum value. The ratio value may be used to derive BuildableArea."},
			new SingleValuePropertyType("TotalArea", "IfcAreaMeasure") { Definition = "Total planned area for the site. Used for programming the site space."} },
				new [] { "IfcSite" });
		yield return new PropertySetInfo("Pset_SlabCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Compartmentation", "IfcBoolean") { Definition = "Indication whether the object is designed to serve as a fire compartmentation (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("PitchAngle", "IfcPlaneAngleMeasure") { Definition = "Angle of the slab to the horizontal when used as a component for the roof (specified as 0 degrees or not asserted for cases where the slab is not used as a roof component).      \n\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface, It is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material. Here the total thermal transmittance coefficient through the slab (including all materials)."} },
				new [] { "IfcSlab" });
		yield return new PropertySetInfo("Pset_SolarDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcSolarDevice" });
		yield return new PropertySetInfo("Pset_SoundAttenuation", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SoundScale", new [] { "DBA", "DBB", "DBC", "NC", "NR" } ) { Definition = "The reference sound scale.  \n\nDBA: Decibels in an A-weighted scale\nDBB: Decibels in an B-weighted scale\nDBC: Decibels in an C-weighted scale\nNC: Noise criteria\nNR: Noise rating"},
			new SingleValuePropertyType("SoundFrequency", "IfcFrequencyMeasure") { Definition = "List of nominal sound frequencies, correlated to the SoundPressure time series values (IfcTimeSeries.ListValues)"} },
				new [] { "IfcAnnotation" });
		yield return new PropertySetInfo("Pset_SoundGeneration", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcDistributionFlowElement" });
		yield return new PropertySetInfo("Pset_SpaceCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossPlannedArea", "IfcAreaMeasure") { Definition = "Total planned gross area for the space. Used for programming the space."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication whether this space (in case of e.g., a toilet) is designed to serve as an accessible space for handicapped people, e.g., for a public toilet (TRUE) or not (FALSE). This information is often used to declare the need for access for the disabled and for special design requirements of this space."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("NetPlannedArea", "IfcAreaMeasure") { Definition = "Total planned net area for the space. Used for programming the space."},
			new SingleValuePropertyType("PubliclyAccessible", "IfcBoolean") { Definition = "Indication whether this space (in case of e.g., a toilet) is designed to serve as a publicly accessible space, e.g., for a public toilet (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal project type."} },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceCoveringRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CeilingCovering", "IfcLabel") { Definition = "Label to indicate the material or finish of the space flooring. The label is used for room book information and often displayed in room stamp.\n\nThe material information is provided in absence of an IfcCovering (type=CEILING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("CeilingCoveringThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material layer(s) for the space ceiling.  \n\nThe thickness information is provided in absence of an IfcCovering (type=CEILING) object with own shape representation. In cases of inconsistency between the geometric parameters of an assigned IfcCovering and this attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("ConcealedCeiling", "IfcBoolean") { Definition = "Indication whether this space is designed to have a concealed flooring space (TRUE) or not (FALSE). A concealed ceiling space is normally meant to be the space between a slab and a ceiling."},
			new SingleValuePropertyType("ConcealedFlooring", "IfcBoolean") { Definition = "Indication whether this space is designed to have a concealed flooring space (TRUE) or not (FALSE). A concealed flooring space is normally meant to be the space beneath a raised floor."},
			new SingleValuePropertyType("FloorCovering", "IfcLabel") { Definition = "Label to indicate the material or finish of the space flooring. The label is used for room book information and often displayed in room stamp.\n\nThe material information is provided in absence of an IfcCovering (type=FLOORING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("FloorCoveringThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material layer(s) for the space flooring.  \n\nThe thickness information is provided in absence of an IfcCovering (type=FLOORING) object with own shape representation. In cases of inconsistency between the geometric parameters of an assigned IfcCovering and this attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("Molding", "IfcLabel") { Definition = "Label to indicate the material or construction of the molding around the space ceiling. The label is used for room book information.\n\nThe material information is provided in absence of an IfcCovering (type=MOLDING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("MoldingHeight", "IfcPositiveLengthMeasure") { Definition = "Height of the molding.\n\nThe height information is provided in absence of an IfcCovering (type=MOLDING) object with own shape representation and material assignment. In case of inconsistency the height assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("SkirtingBoard", "IfcLabel") { Definition = "Label to indicate the material or construction of the skirting board around the space flooring. The label is used for room book information.\n\nThe material information is provided in absence of an IfcCovering (type=SKIRTINGBOARD) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("SkirtingBoardHeight", "IfcPositiveLengthMeasure") { Definition = "Height of the skirting board.\n\nThe height information is provided in absence of an IfcCovering (type=SKIRTINGBOARD) object with own shape representation and material assignment. In case of inconsistency the height assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("WallCovering", "IfcLabel") { Definition = "Label to indicate the material or finish of the space flooring. The label is used for room book information and often displayed in room stamp.\n\nThe material information is provided in absence of an IfcCovering (type=CLADDING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("WallCoveringThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material layer(s) for the space cladding.  \n\nThe thickness information is provided in absence of an IfcCovering (type=CLADDING) object with own shape representation. In cases of inconsistency between the geometric parameters of an assigned IfcCovering and this attached property, the geometric parameters take precedence."} },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceFireSafetyRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirPressurization", "IfcBoolean") { Definition = "Indication whether the space is required to have pressurized air (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere whether the space (in case of e.g., a corridor) is designed to serve as an exit space, e.g., for fire escape purposes."},
			new SingleValuePropertyType("FireRiskFactor", "IfcLabel") { Definition = "Fire Risk factor assigned to the space according to local building regulations. It defines the fire risk of the space at several levels of fire hazard."},
			new SingleValuePropertyType("FlammableStorage", "IfcBoolean") { Definition = "Indication whether the space is intended to serve as a storage of flammable material (which is regarded as such by the presiding building code. (TRUE) indicates yes, (FALSE) otherwise."},
			new SingleValuePropertyType("SprinklerProtection", "IfcBoolean") { Definition = "Indication whether the space is sprinkler protected (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SprinklerProtectionAutomatic", "IfcBoolean") { Definition = "Indication whether the space has an automatic sprinkler protection (TRUE) or not (FALSE).\nIt should only be given, if the property \"SprinklerProtection\" is set to TRUE."} },
				new [] { "IfcSpace", "IfcSpatialZone", "IfcZone" });
		yield return new PropertySetInfo("Pset_SpaceHeaterPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcSpaceHeater" });
		yield return new PropertySetInfo("Pset_SpaceHeaterTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EnergySource", new [] { "COAL", "COAL_PULVERIZED", "ELECTRICITY", "GAS", "OIL", "PROPANE", "WOOD", "WOOD_CHIP", "WOOD_PELLET", "WOOD_PULVERIZED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the energy source or fuel combusted to generate heat if applicable.  Note: hydronic heaters shall use UNSET; dual-use hydronic/electric heaters shall use ELECTRICITY."},
			new EnumerationPropertyType("HeatTransferDimension", new [] { "POINT", "PATH", "SURFACE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates how heat is transmitted according to the shape of the space heater."},
			new EnumerationPropertyType("HeatTransferMedium", new [] { "WATER", "STEAM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the heat transfer medium if applicable."},
			new EnumerationPropertyType("PlacementType", new [] { "BASEBOARD", "TOWELWARMER", "SUSPENDED", "WALL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates how the space heater is designed to be placed."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("TemperatureClassification", new [] { "LOWTEMPERATURE", "HIGHTEMPERATURE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the temperature classification of the space heater surface temperature.\nlow temperature - surface temperature is relatively low, usually heated by hot water or electricity.\nhigh temperature - surface temperature is relatively high, usually heated by gas or steam."},
			new SingleValuePropertyType("BodyMass", "IfcMassMeasure") { Definition = "Overall body mass of the heater."},
			new SingleValuePropertyType("NumberOfPanels", "IfcInteger") { Definition = "Number of panels."},
			new SingleValuePropertyType("NumberOfSections", "IfcInteger") { Definition = "Number of vertical sections, measured in the direction of flow."},
			new SingleValuePropertyType("OutputCapacity", "IfcPowerMeasure") { Definition = "Total nominal heat output as listed by the manufacturer."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("ThermalEfficiency", "IfcNormalisedRatioMeasure") { Definition = "Overall Thermal Efficiency is defined as gross energy output of the heat transfer device divided by the energy input."},
			new SingleValuePropertyType("ThermalMassHeatCapacity", "IfcReal") { Definition = "Product of component mass and specific heat."} },
				new [] { "IfcSpaceHeater" });
		yield return new PropertySetInfo("Pset_SpaceHeaterTypeConvector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConvectorType", new [] { "FORCED", "NATURAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of convector, whether forced air (mechanically driven) or natural (gravity)."} },
				new [] { "IfcSpaceHeater" });
		yield return new PropertySetInfo("Pset_SpaceHeaterTypeRadiator", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RadiatorType", new [] { "FINNEDTUBE", "PANEL", "SECTIONAL", "TUBULAR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of radiator."},
			new SingleValuePropertyType("TubingLength", "IfcPositiveLengthMeasure") { Definition = "Water tube length inside the component."},
			new SingleValuePropertyType("WaterContent", "IfcMassMeasure") { Definition = "Weight of water content within the heater."} },
				new [] { "IfcSpaceHeater" });
		yield return new PropertySetInfo("Pset_SpaceLightingRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ArtificialLighting", "IfcBoolean") { Definition = "Indication whether this space  requires artificial lighting (as natural lighting would be not sufficient). (TRUE) indicates yes (FALSE) otherwise."},
			new SingleValuePropertyType("Illuminance", "IfcIlluminanceMeasure") { Definition = "Required average illuminance value for this space."} },
				new [] { "IfcSpace", "IfcSpatialZone", "IfcZone" });
		yield return new PropertySetInfo("Pset_SpaceOccupancyRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AreaPerOccupant", "IfcAreaMeasure") { Definition = "Design occupancy loading for this type of usage assigned to this space."},
			new SingleValuePropertyType("IsOutlookDesirable", "IfcBoolean") { Definition = "An indication of whether the outlook is desirable (set TRUE) or not (set FALSE)"},
			new SingleValuePropertyType("MinimumHeadroom", "IfcLengthMeasure") { Definition = "Headroom required for the activity assigned to this space."},
			new SingleValuePropertyType("OccupancyNumber", "IfcCountMeasure") { Definition = "Number of people required for the activity assigned to this space."},
			new SingleValuePropertyType("OccupancyNumberPeak", "IfcCountMeasure") { Definition = "Maximal number of people required for the activity assigned to this space in peak time."},
			new SingleValuePropertyType("OccupancyTimePerDay", "IfcTimeMeasure") { Definition = "The amount of time during the day that the activity is required within this space."},
			new SingleValuePropertyType("OccupancyType", "IfcLabel") { Definition = "Occupancy type for this object. It is defined according to the presiding national building code."} },
				new [] { "IfcSpace", "IfcSpatialZone", "IfcZone" });
		yield return new PropertySetInfo("Pset_SpaceParking", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsAisle", "IfcBoolean") { Definition = "Indicates that this parking zone is for accessing the parking units, i.e. an aisle (TRUE) and not a parking unit itself (FALSE)"},
			new SingleValuePropertyType("IsOneWay", "IfcBoolean") { Definition = "Indicates whether the parking aisle is designed for oneway traffic (TRUE) or twoway traffic (FALSE). Should only be provided if the property IsAisle is set to TRUE."},
			new SingleValuePropertyType("ParkingUnits", "IfcCountMeasure") { Definition = "Indicates the number of transporation units of the type specified by the property ParkingUse that may be accommodated within the space. Generally, this value should default to 1 unit. However, where the parking space is for motorcycles or bicycles, provision may be made for more than one unit in the space."},
			new SingleValuePropertyType("ParkingUse", "IfcLabel") { Definition = "Identifies the type of transporation for which the parking space is designed. Values are not predefined but might include car, compact car, motorcycle, bicycle, truck, bus etc."} },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceThermalDesign", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BoundaryAreaHeatLoss", "IfcHeatFluxDensityMeasure") { Definition = "Heat loss per unit area for the boundary object. This is a design input value for use in the absence of calculated load data."},
			new SingleValuePropertyType("CeilingRAPlenum", "IfcBoolean") { Definition = "Ceiling plenum used for return air or not. TRUE = Yes, FALSE = No."},
			new SingleValuePropertyType("CoolingDesignAirflow", "IfcVolumetricFlowRateMeasure") { Definition = "The air flowrate required during the peak cooling conditions."},
			new SingleValuePropertyType("CoolingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Inside dry bulb temperature for cooling design."},
			new SingleValuePropertyType("CoolingRelativeHumidity", "IfcPositiveRatioMeasure") { Definition = "Inside relative humidity for cooling design."},
			new SingleValuePropertyType("ExhaustAirFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Design exhaust air flow rate for the space."},
			new SingleValuePropertyType("HeatingDesignAirflow", "IfcVolumetricFlowRateMeasure") { Definition = "The air flowrate required during the peak heating conditions, but could also be determined by minimum ventilation requirement or minimum air change requirements."},
			new SingleValuePropertyType("HeatingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Inside dry bulb temperature for heating design."},
			new SingleValuePropertyType("HeatingRelativeHumidity", "IfcPositiveRatioMeasure") { Definition = "Inside relative humidity for heating design."},
			new SingleValuePropertyType("TotalHeatGain", "IfcPowerMeasure") { Definition = "The total amount of heat or energy gained by the space at the time of the space's peak cooling conditions."},
			new SingleValuePropertyType("TotalHeatLoss", "IfcPowerMeasure") { Definition = "The total amount of heat or energy lost by the space at the time of the space's peak heating conditions."},
			new SingleValuePropertyType("TotalSensibleHeatGain", "IfcPowerMeasure") { Definition = "The total sensible heat or energy gained by the space during the peak cooling conditions."},
			new SingleValuePropertyType("VentilationAirFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Ventilation outside air requirement for the space."} },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceThermalLoad", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirExchangeRate", "IfcPowerMeasure") { Definition = "Loads from the air exchange rate."},
			new SingleValuePropertyType("DryBulbTemperature", "IfcPowerMeasure") { Definition = "Loads from the dry bulb temperature."},
			new SingleValuePropertyType("EquipmentSensible", "IfcPowerMeasure") { Definition = "Heat gains and losses from equipment."},
			new SingleValuePropertyType("ExhaustAir", "IfcPowerMeasure") { Definition = "Loads from exhaust air."},
			new SingleValuePropertyType("InfiltrationSensible", "IfcPowerMeasure") { Definition = "Heat gains and losses from infiltration."},
			new SingleValuePropertyType("Lighting", "IfcPowerMeasure") { Definition = "Lighting loads."},
			new SingleValuePropertyType("People", "IfcPowerMeasure") { Definition = "Heat gains and losses from people."},
			new SingleValuePropertyType("RecirculatedAir", "IfcPowerMeasure") { Definition = "Loads from recirculated air."},
			new SingleValuePropertyType("RelativeHumidity", "IfcPowerMeasure") { Definition = "Loads from the relative humidity."},
			new SingleValuePropertyType("TotalLatentLoad", "IfcPowerMeasure") { Definition = "Total energy added or removed from air that affects its humidity or concentration of water vapor.  If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space."},
			new SingleValuePropertyType("TotalRadiantLoad", "IfcPowerMeasure") { Definition = "Total electromagnetic energy added or removed by emission or absorption.  If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space."},
			new SingleValuePropertyType("TotalSensibleLoad", "IfcPowerMeasure") { Definition = "Total energy added or removed from air that affects its temperature.  If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space."},
			new SingleValuePropertyType("VentilationIndoorAir", "IfcPowerMeasure") { Definition = "Ventilation loads from indoor air."},
			new SingleValuePropertyType("VentilationOutdoorAir", "IfcPowerMeasure") { Definition = "Ventilation loads from outdoor air."} },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceThermalLoadPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceThermalPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcSpace" });
		yield return new PropertySetInfo("Pset_SpaceThermalRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirConditioning", "IfcBoolean") { Definition = "Indication whether this space requires air conditioning provided (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("AirConditioningCentral", "IfcBoolean") { Definition = "Indication whether the space  requires a central air conditioning provided (TRUE) or not (FALSE).\nIt should only be given, if the property \"AirConditioning\" is set to TRUE."},
			new SingleValuePropertyType("DiscontinuedHeating", "IfcBoolean") { Definition = "Indication whether discontinued heating is required/desirable from user/designer view point. (TRUE) if yes, (FALSE) otherwise."},
			new SingleValuePropertyType("MechanicalVentilationRate", "IfcCountMeasure") { Definition = "Indication of the requirement of a particular mechanical air ventilation rate, given in air changes per hour."},
			new SingleValuePropertyType("NaturalVentilation", "IfcBoolean") { Definition = "Indication whether the space is required to have natural ventilation (TRUE) or mechanical ventilation (FALSE)."},
			new SingleValuePropertyType("NaturalVentilationRate", "IfcCountMeasure") { Definition = "Indication of the requirement of a particular natural air ventilation rate, given in air changes per hour."},
			new SingleValuePropertyType("SpaceHumidity", "IfcRatioMeasure") { Definition = "Humidity of the space or zone that is required from user/designer view point.  If no summer or winter space humidity requirements are given, it applies all year, otherwise for the intermediate period. Provide this property, if no humidity range (Min-Max) is available."},
			new SingleValuePropertyType("SpaceHumidityMax", "IfcRatioMeasure") { Definition = "Maximal permitted humidity of the space or zone that is required from user/designer view point.  If no summer or winter space humidity requirements are given, it applies all year, otherwise for the intermediate period."},
			new SingleValuePropertyType("SpaceHumidityMin", "IfcRatioMeasure") { Definition = "Minimal permitted humidity of the space or zone that is required from user/designer view point.  If no summer or winter space humidity requirements are given, it applies all year, otherwise for the intermediate period."},
			new SingleValuePropertyType("SpaceHumiditySummer", "IfcRatioMeasure") { Definition = "Humidity of the space or zone for the hot (summer) period, that is required from user/designer view point and provided as requirement for cooling."},
			new SingleValuePropertyType("SpaceHumidityWinter", "IfcRatioMeasure") { Definition = "Humidity of the space or zone for the cold (winter) period that is required from user/designer view point and provided as requirement for heating."},
			new SingleValuePropertyType("SpaceTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature of the space or zone, that is required from user/designer view point.  If no summer or winter space temperature requirements are given, it applies all year, otherwise for the intermediate period. Provide this value, if no temperatur range (Min-Max) is available."},
			new SingleValuePropertyType("SpaceTemperatureMax", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximal temperature of the space or zone, that is required from user/designer view point.  If no summer or winter space temperature requirements are given, it applies all year, otherwise for the intermediate period."},
			new SingleValuePropertyType("SpaceTemperatureMin", "IfcThermodynamicTemperatureMeasure") { Definition = "Minimal temperature of the space or zone, that is required from user/designer view point. If no summer or winter space temperature requirements are given, it applies all year, otherwise for the intermediate period."},
			new SingleValuePropertyType("SpaceTemperatureSummerMax", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximal temperature of the space or zone for the hot (summer) period, that is required from user/designer view point and provided as requirement for cooling."},
			new SingleValuePropertyType("SpaceTemperatureSummerMin", "IfcThermodynamicTemperatureMeasure") { Definition = "Minimal temperature of the space or zone for the hot (summer) period, that is required from user/designer view point and provided as requirement for cooling."},
			new SingleValuePropertyType("SpaceTemperatureWinterMax", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximal temperature of the space or zone for the cold (winter) period, that is required from user/designer view point and provided as requirement for heating."},
			new SingleValuePropertyType("SpaceTemperatureWinterMin", "IfcThermodynamicTemperatureMeasure") { Definition = "Minimal temperature of the space or zone for the cold (winter) period, that is required from user/designer view point and provided as requirement for heating."} },
				new [] { "IfcSpace", "IfcSpatialZone", "IfcZone" });
		yield return new PropertySetInfo("Pset_StackTerminalTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcStackTerminal" });
		yield return new PropertySetInfo("Pset_StairCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere it defines an exit stair in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. \nSet to (TRUE) if this stair is rated as handicap accessible  according the local building codes, otherwise (FALSE). Accessibility maybe provided by additional means."},
			new SingleValuePropertyType("HasNonSkidSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("NosingLength", "IfcLengthMeasure") { Definition = "Horizontal distance from the front of the tread to the riser underneath. It is the overhang of the tread."},
			new SingleValuePropertyType("NumberOfRiser", "IfcCountMeasure") { Definition = "Total number of the risers included in the stair."},
			new SingleValuePropertyType("NumberOfTreads", "IfcCountMeasure") { Definition = "Total number of treads included in the stair."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("RequiredHeadroom", "IfcPositiveLengthMeasure") { Definition = "Required headroom clearance for the passageway according to the applicable building code or additional requirements."},
			new SingleValuePropertyType("RiserHeight", "IfcPositiveLengthMeasure") { Definition = "Vertical distance from tread to tread. \nThe riser height is supposed to be equal for all steps of a stair or stair flight."},
			new SingleValuePropertyType("TreadLength", "IfcPositiveLengthMeasure") { Definition = "Horizontal distance from the front of the thread to the front of the next tread. \nThe tread length is supposed to be equal for all steps of the stair or stair flight at the walking line."},
			new SingleValuePropertyType("TreadLengthAtInnerSide", "IfcPositiveLengthMeasure") { Definition = "Minimum length of treads at the inner side of the winder. \nOnly relevant in case of winding flights, for straight flights it is identical with IfcStairFlight.TreadLength. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence."},
			new SingleValuePropertyType("TreadLengthAtOffset", "IfcPositiveLengthMeasure") { Definition = "Length of treads at a given offset.\nWalking line position is given by the 'WalkingLineOffset'. The resulting value should normally be identical with TreadLength, it may be given in addition, if the walking line offset for building code calculations is different from that used in design."},
			new SingleValuePropertyType("WaistThickness", "IfcPositiveLengthMeasure") { Definition = "Minimum thickness of the stair flight, measured perpendicular to the slope of the flight to the inner corner of riser and tread. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence."},
			new SingleValuePropertyType("WalkingLineOffset", "IfcPositiveLengthMeasure") { Definition = "Offset of the walking line from the inner side of the flight. \nNote: the walking line may have a own shape representation (in case of inconsistencies, the value derived from the shape representation shall take precedence)."} },
				new [] { "IfcStair" });
		yield return new PropertySetInfo("Pset_StairFlightCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Headroom", "IfcPositiveLengthMeasure") { Definition = "Actual headroom clearance for the passageway according to the current design. \nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("NosingLength", "IfcLengthMeasure") { Definition = "Horizontal distance from the front of the tread to the riser underneath. It is the overhang of the tread."},
			new SingleValuePropertyType("NumberOfRiser", "IfcCountMeasure") { Definition = "Total number of the risers included in the stair flight."},
			new SingleValuePropertyType("NumberOfTreads", "IfcCountMeasure") { Definition = "Total number of treads included in the stair flight."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("RiserHeight", "IfcPositiveLengthMeasure") { Definition = "Vertical distance from tread to tread. \nThe riser height is supposed to be equal for all steps of a stair or stair flight."},
			new SingleValuePropertyType("TreadLength", "IfcPositiveLengthMeasure") { Definition = "Horizontal distance from the front of the thread to the front of the next tread. \nThe tread length is supposed to be equal for all steps of the stair or stair flight at the walking line."},
			new SingleValuePropertyType("TreadLengthAtInnerSide", "IfcPositiveLengthMeasure") { Definition = "Minimum length of treads at the inner side of the winder. \nOnly relevant in case of winding flights, for straight flights it is identical with IfcStairFlight.TreadLength. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence."},
			new SingleValuePropertyType("TreadLengthAtOffset", "IfcPositiveLengthMeasure") { Definition = "Length of treads at a given offset.\nWalking line position is given by the 'WalkingLineOffset'. The resulting value should normally be identical with TreadLength, it may be given in addition, if the walking line offset for building code calculations is different from that used in design."},
			new SingleValuePropertyType("WaistThickness", "IfcPositiveLengthMeasure") { Definition = "Minimum thickness of the stair flight, measured perpendicular to the slope of the flight to the inner corner of riser and tread. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence."},
			new SingleValuePropertyType("WalkingLineOffset", "IfcPositiveLengthMeasure") { Definition = "Offset of the walking line from the inner side of the flight. \nNote: the walking line may have a own shape representation (in case of inconsistencies, the value derived from the shape representation shall take precedence)."} },
				new [] { "IfcStairFlight" });
		yield return new PropertySetInfo("Pset_StructuralSurfaceMemberVaryingThickness", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Location1Global", "IfcLengthMeasure") { Definition = "Global X,Y,Z coordinates of the point in which Thickness1 is given"},
			new SingleValuePropertyType("Location1Local", "IfcLengthMeasure") { Definition = "Local x,y coordinates of the point in which Thickness1 is given"},
			new SingleValuePropertyType("Location2Global", "IfcLengthMeasure") { Definition = "Global X,Y,Z coordinates of the point in which Thickness2 is given"},
			new SingleValuePropertyType("Location2Local", "IfcLengthMeasure") { Definition = "Local x,y coordinates of the point in which Thickness2 is given"},
			new SingleValuePropertyType("Location3Global", "IfcLengthMeasure") { Definition = "Global X,Y,Z coordinates of the point in which Thickness3 is given"},
			new SingleValuePropertyType("Location3Local", "IfcLengthMeasure") { Definition = "Local x,y coordinates of the point in which Thickness3 is given"},
			new SingleValuePropertyType("Thickness1", "IfcPositiveLengthMeasure") { Definition = "First thickness parameter of a surface member with varying thickness"},
			new SingleValuePropertyType("Thickness2", "IfcPositiveLengthMeasure") { Definition = "Second thickness parameter of a surface member with varying thickness"},
			new SingleValuePropertyType("Thickness3", "IfcPositiveLengthMeasure") { Definition = "Third thickness parameter of a surface member with varying thickness"} },
				new [] { "IfcStructuralSurfaceMemberVarying" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("SwitchFunction", new [] { "ONOFFSWITCH", "INTERMEDIATESWITCH", "DOUBLETHROWSWITCH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates types of switches which differs in functionality."},
			new SingleValuePropertyType("HasLock", "IfcBoolean") { Definition = "Indication of whether a switching device has a key operated lock (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("IsIlluminated", "IfcBoolean") { Definition = "An indication of whether there is an illuminated indicator to show that the switch is on (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("Legend", "IfcLabel") { Definition = "A text inscribed or applied to the switch as a legend to indicate purpose or function."},
			new SingleValuePropertyType("NumberOfGangs", "IfcInteger") { Definition = "Number of gangs/buttons on this switch."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeContactor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ContactorType", new [] { "CAPACITORSWITCHING", "LOWCURRENT", "MAGNETICLATCHING", "MECHANICALLATCHING", "MODULAR", "REVERSING", "STANDARD", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of contactor from which that required may be selected where:\n\nCapacitorSwitching: for switching 3 phase single or multi-step capacitor banks.\nLowCurrent: requires the use of low resistance contacts.\nMagneticLatching: enables the contactor to remain in the on position when the coil is no longer energized.\nMechanicalLatching: requires that the contactor is mechanically retained in the on position.\nModular: are totally enclosed and self contained.\nReversing: has a double set of contactors that are prewired.\nStandard: is a generic device that controls the flow of power in a circuit on or off."} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeDimmerSwitch", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DimmerType", new [] { "ROCKER", "SELECTOR", "TWIST", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of dimmer switch from which that required may be selected."} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeEmergencyStop", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SwitchOperation", new [] { "MUSHROOM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates operation of emergency stop switch."} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeKeypad", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("KeypadType", new [] { "BUTTONS", "TOUCHSCREEN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of keypad switch from which that required may be selected."} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeMomentarySwitch", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MomentaryType", new [] { "BUTTON", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of momentary switch from which that required may be selected."} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypePHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeSelectorSwitch", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SelectorType", new [] { "BUTTONS", "SLIDE", "TWIST", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of selector switch from which that required may be selected."},
			new EnumerationPropertyType("SwitchActivation", new [] { "ACTUATOR", "FOOT", "HAND", "PROXIMITY", "SOUND", "TWOHAND", "WIRE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available activations for selector switches from which that required may be selected."},
			new EnumerationPropertyType("SwitchUsage", new [] { "EMERGENCY", "GUARD", "LIMIT", "START", "STOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available usages for selector switches from which that required may be selected."} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeStarter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("StarterType", new [] { "AUTOTRANSFORMER", "MANUAL", "DIRECTONLINE", "FREQUENCY", "NSTEP", "RHEOSTATIC", "STARDELTA", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of starter from which that required may be selected where:\n\nAutoTransformer: A starter for an induction motor which uses for starting one or more reduced voltages derived from an auto transformer. (IEC 441-14-45)\nManual: A starter in which the force for closing the main contacts is provided exclusively by manual energy. (IEC 441-14-39)\nDirectOnLine: A starter which connects the line voltage across the motor terminals in one step. (IEC 441-14-40)\nFrequency: A starter in which the frequency of the power supply is progressively increased until the normal operation frequency is attained.\nnStep: A starter in which there are (n-1) intermediate accelerating positions between the off and full on positions. (IEC 441-14-41)\nRheostatic: A starter using one or several resistors for obtaining, during starting, stated motor torque characteristics and for limiting the current. (IEC 441-14-425)\nStarDelta: A starter for a 3 phase induction motor such that in the starting position the stator windings are connected in star and in the final running position they are connected in delta. (IEC 441-14-44)"} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeSwitchDisconnector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LoadDisconnectionType", new [] { "OFFLOAD", "ONLOAD", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of load disconnection from which that required may be selected."},
			new EnumerationPropertyType("SwitchDisconnectorType", new [] { "CENTERBREAK", "DIVIDEDSUPPORT", "DOUBLEBREAK", "EARTHINGSWITCH", "ISOLATOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of switch disconnector from which that required may be selected where:\n\nCenterBreak: A disconnector in which both contacts of each pole are movable and engage at a point substantially midway between their supports. (IEC 441-14-08)\nDividedSupport: A disconnector in which the fixed and moving contacts of each pole are not supported by a common base or frame. (IEC 441-14-06)\nDoubleBreak: A disconnector that opens a circuit at two points. (IEC 441-14-09)\nEarthingSwitch: A disconnector in which the fixed and moving contacts of each pole are not supported by a common base or frame. (IEC 441-14-07)\nIsolator: A disconnector which in the open position satisfies isolating requirements. (IEC 441-14-12)"} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeToggleSwitch", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SwitchActivation", new [] { "ACTUATOR", "FOOT", "HAND", "PROXIMITY", "SOUND", "TWOHAND", "WIRE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available activations for toggle switches from which that required may be selected."},
			new EnumerationPropertyType("SwitchUsage", new [] { "EMERGENCY", "GUARD", "LIMIT", "START", "STOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available usages for toggle switches from which that required may be selected."},
			new EnumerationPropertyType("ToggleSwitchType", new [] { "BREAKGLASS", "CHANGEOVER", "KEYOPERATED", "MANUALPULL", "PUSHBUTTON", "PULLCORD", "ROCKER", "SELECTOR", "TWIST", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of toggle switch from which that required may be selected."} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SystemFurnitureElementTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Finishing", "IfcLabel") { Definition = "The finishing applied to system furniture elements of this type e.g. walnut, fabric."},
			new SingleValuePropertyType("GroupCode", "IfcIdentifier") { Definition = "e.g. panels, worksurfaces, storage, etc."},
			new SingleValuePropertyType("IsUsed", "IfcBoolean") { Definition = "Indicates whether the element is being used in a workstation (= TRUE) or not.(= FALSE)."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the system furniture elements of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal width of the system furniture elements of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcSystemFurnitureElement" });
		yield return new PropertySetInfo("Pset_SystemFurnitureElementTypePanel", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FurniturePanelType", new [] { "ACOUSTICAL", "GLAZED", "HORZ_SEG", "MONOLITHIC", "OPEN", "ENDS", "DOOR", "SCREEN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Available panel types from which that required may be selected."},
			new SingleValuePropertyType("HasOpening", "IfcBoolean") { Definition = "indicates whether the panel has an opening (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("NominalThickness", "IfcPositiveLengthMeasure") { Definition = "The nominal thickness of the panel."} },
				new [] { "IfcSystemFurnitureElement" });
		yield return new PropertySetInfo("Pset_SystemFurnitureElementTypeWorkSurface", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SupportType", new [] { "FREESTANDING", "SUPPORTED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Available support types from which that required may be selected."},
			new SingleValuePropertyType("HangingHeight", "IfcPositiveLengthMeasure") { Definition = "The hanging height of the worksurface."},
			new SingleValuePropertyType("NominalThickness", "IfcPositiveLengthMeasure") { Definition = "The nominal thickness of the work surface."},
			new SingleValuePropertyType("ShapeDescription", "IfcLabel") { Definition = "A description of the shape of the work surface e.g. corner square, rectangle, etc."},
			new SingleValuePropertyType("UsePurpose", "IfcLabel") { Definition = "The principal purpose for which the work surface is intended to be used e.g. writing/reading, computer, meeting, printer, reference files, etc."} },
				new [] { "IfcSystemFurnitureElement" });
		yield return new PropertySetInfo("Pset_TankOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TankComposition", new [] { "COMPLEX", "ELEMENT", "PARTIAL", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the level of element composition where.\n\nCOMPLEX: A set of elementary units aggregated together to fulfill the overall  required purpose.\nELEMENT: A single elementary unit that may exist of itself or as an aggregation of partial units..\nPARTIAL: A partial elementary unit."},
			new SingleValuePropertyType("HasLadder", "IfcBoolean") { Definition = "Indication of whether the tank is provided with a ladder (set TRUE) for access to the top. If no ladder is provided then value is set FALSE.\n\nNote: No indication is given of the type of ladder (gooseneck etc.)"},
			new SingleValuePropertyType("HasVisualIndicator", "IfcBoolean") { Definition = "Indication of whether the tank is provided with a visual indicator (set TRUE) that shows the water level in the tank. If no visual indicator is provided then value is set FALSE."} },
				new [] { "IfcTank" });
		yield return new PropertySetInfo("Pset_TankTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AccessType", new [] { "NONE", "LOOSECOVER", "MANHOLE", "SECUREDCOVER", "SECUREDCOVERWITHMANHOLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of access (or cover) to a tank that may be specified.\n\nNote that covers are generally specified for rectangular tanks. For cylindrical tanks, access will normally be via a manhole."},
			new EnumerationPropertyType("EndShapeType", new [] { "CONCAVECONVEX", "FLATCONVEX", "CONVEXCONVEX", "CONCAVEFLAT", "FLATFLAT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of end shapes that can be used for preformed tanks. The convention for reading these enumerated values is that for a vertical cylinder, the first value is the base and the second is the top; for a horizontal cylinder, the order of reading should be left to right. For a speherical tank, the value UNSET should be used."},
			new EnumerationPropertyType("PatternType", new [] { "HORIZONTALCYLINDER", "VERTICALCYLINDER", "RECTANGULAR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of pattern (or shape of a tank that may be specified."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("StorageType", new [] { "ICE", "WATER", "RAINWATER", "WASTEWATER", "POTABLEWATER", "FUEL", "OIL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the general material category intended to be stored."},
			new SingleValuePropertyType("EffectiveCapacity", "IfcVolumeMeasure") { Definition = "The total effective or actual volumetric capacity of the tank."},
			new SingleValuePropertyType("FirstCurvatureRadius", "IfcPositiveLengthMeasure") { Definition = "FirstCurvatureRadius should be defined as the base or left side radius of curvature value."},
			new SingleValuePropertyType("NominalCapacity", "IfcVolumeMeasure") { Definition = "The total nominal or design volumetric capacity of the tank."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "The nominal depth of the tank.\n\nNote: Not required for a horizontal cylindrical tank."},
			new SingleValuePropertyType("NominalLengthOrDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal length or, in the case of a vertical cylindrical tank, the nominal diameter of the tank."},
			new SingleValuePropertyType("NominalWidthOrDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal width or, in the case of a horizontal cylindrical tank, the nominal diameter of the tank.\n\nNote: Not required for a vertical cylindrical tank."},
			new SingleValuePropertyType("NumberOfSections", "IfcInteger") { Definition = "Number of sections used in the construction of the tank. Default is 1.\n\nNote: All sections assumed to be the same size."},
			new SingleValuePropertyType("OperatingWeight", "IfcMassMeasure") { Definition = "Operating weight of the tank including all of its contents."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("SecondCurvatureRadius", "IfcPositiveLengthMeasure") { Definition = "SecondCurvatureRadius should be defined as the top or right side radius of curvature value."} },
				new [] { "IfcTank" });
		yield return new PropertySetInfo("Pset_TankTypeExpansion", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ChargePressure", "IfcPressureMeasure") { Definition = "Nominal or design operating pressure of the tank."},
			new SingleValuePropertyType("PressureRegulatorSetting", "IfcPressureMeasure") { Definition = "Pressure that is automatically maintained in the tank."},
			new SingleValuePropertyType("ReliefValveSetting", "IfcPressureMeasure") { Definition = "Pressure at which the relief valve activates."} },
				new [] { "IfcTank" });
		yield return new PropertySetInfo("Pset_TankTypePreformed", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EndShapeType", new [] { "CONCAVECONVEX", "FLATCONVEX", "CONVEXCONVEX", "CONCAVEFLAT", "FLATFLAT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of end shapes that can be used for preformed tanks. The convention for reading these enumerated values is that for a vertical cylinder, the first value is the base and the second is the top; for a horizontal cylinder, the order of reading should be left to right. For a speherical tank, the value UNSET should be used."},
			new EnumerationPropertyType("PatternType", new [] { "HORIZONTALCYLINDER", "VERTICALCYLINDER", "RECTANGULAR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of pattern (or shape of a tank that may be specified."},
			new SingleValuePropertyType("FirstCurvatureRadius", "IfcPositiveLengthMeasure") { Definition = "FirstCurvatureRadius should be defined as the base or left side radius of curvature value."},
			new SingleValuePropertyType("SecondCurvatureRadius", "IfcPositiveLengthMeasure") { Definition = "SecondCurvatureRadius should be defined as the top or right side radius of curvature value."} },
				new [] { "IfcTank" });
		yield return new PropertySetInfo("Pset_TankTypePressureVessel", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ChargePressure", "IfcPressureMeasure") { Definition = "Nominal or design operating pressure of the tank."},
			new SingleValuePropertyType("PressureRegulatorSetting", "IfcPressureMeasure") { Definition = "Pressure that is automatically maintained in the tank."},
			new SingleValuePropertyType("ReliefValveSetting", "IfcPressureMeasure") { Definition = "Pressure at which the relief valve activates."} },
				new [] { "IfcTank" });
		yield return new PropertySetInfo("Pset_TankTypeSectional", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfSections", "IfcInteger") { Definition = "Number of sections used in the construction of the tank\n\nNote: All sections assumed to be the same size."},
			new SingleValuePropertyType("SectionLength", "IfcPositiveLengthMeasure") { Definition = "The length of a section used in the construction of the tank."},
			new SingleValuePropertyType("SectionWidth", "IfcPositiveLengthMeasure") { Definition = "The width of a section used in the construction of the tank."} },
				new [] { "IfcTank" });
		yield return new PropertySetInfo("Pset_ThermalLoadAggregate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ApplianceDiversity", "IfcPositiveRatioMeasure") { Definition = "Diversity of appliance load."},
			new SingleValuePropertyType("InfiltrationDiversitySummer", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Summer infiltration."},
			new SingleValuePropertyType("InfiltrationDiversityWinter", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Winter infiltration."},
			new SingleValuePropertyType("LightingDiversity", "IfcPositiveRatioMeasure") { Definition = "Lighting diversity."},
			new SingleValuePropertyType("LoadSafetyFactor", "IfcPositiveRatioMeasure") { Definition = "Load safety factor."},
			new SingleValuePropertyType("TotalCoolingLoad", "IfcPowerMeasure") { Definition = "The peak total cooling load for the building, zone or space."},
			new SingleValuePropertyType("TotalHeatingLoad", "IfcPowerMeasure") { Definition = "The peak total heating load for the building, zone or space."} },
				new [] { "IfcSpatialElement" });
		yield return new PropertySetInfo("Pset_ThermalLoadDesignCriteria", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AppliancePercentLoadToRadiant", "IfcPositiveRatioMeasure") { Definition = "Percent of sensible load to radiant heat."},
			new SingleValuePropertyType("LightingLoadIntensity", "IfcReal") { Definition = "Average lighting load intensity in the space per unit area (PowerMeasure/IfcAreaMeasure)."},
			new SingleValuePropertyType("LightingPercentLoadToReturnAir", "IfcPositiveRatioMeasure") { Definition = "Percent of lighting load to the return air plenum."},
			new SingleValuePropertyType("OccupancyDiversity", "IfcPositiveRatioMeasure") { Definition = "Diversity factor that may be applied to the number of people in the space."},
			new SingleValuePropertyType("OutsideAirPerPerson", "IfcVolumetricFlowRateMeasure") { Definition = "Design quantity of outside air to be provided per person in the space."},
			new SingleValuePropertyType("ReceptacleLoadIntensity", "IfcReal") { Definition = "Average power use intensity of appliances and other non-HVAC equipment in the space per unit area.(PowerMeasure/IfcAreaMeasure)."} },
				new [] { "IfcSpatialElement" });
		yield return new PropertySetInfo("Pset_TransformerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SecondaryCurrentType", new [] { "AC", "DC", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the secondary current types that can result from transformer output."},
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("TransformerVectorGroup", new [] { "DD0", "DD6", "DY5", "DY11", "YD5", "YD11", "DZ0", "DZ6", "YY0", "YY6", "YZ5", "YZ11", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "List of the possible vector groups for the transformer from which that required may be set. Values in the enumeration list follow a standard international code where the first letter  describes how the primary windings are connected,\nthe second letter describes how the secondary windings are connected, and the numbers describe the rotation of voltages and currents from the primary to the secondary side in multiples of 30 degrees.\n\nD: means that the windings are delta-connected.\nY: means that the windings are star-connected. \nZ: means that the windings are zig-zag connected (a special start-connected providing low reactance of the transformer); \nThe connectivity is only relevant for three-phase transformers."},
			new SingleValuePropertyType("ImaginaryImpedanceRatio", "IfcRatioMeasure") { Definition = "The ratio between the imaginary part of the zero sequence impedance and the imaginary part of the positive impedance (i.e. imaginary part of the short-circuit voltage) of the transformer.\nUsed for three-phase transformer which includes a N-conductor."},
			new SingleValuePropertyType("IsNeutralPrimaryTerminalAvailable", "IfcBoolean") { Definition = "An indication of whether the neutral point of the primary winding is available as a terminal (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("IsNeutralSecondaryTerminalAvailable", "IfcBoolean") { Definition = "An indication of whether the neutral point of the secondary winding is available as a terminal (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("MaximumApparentPower", "IfcPowerMeasure") { Definition = "Maximum apparent power/capacity in VA (volt ampere)."},
			new SingleValuePropertyType("PrimaryApparentPower", "IfcPowerMeasure") { Definition = "The power in VA (volt ampere) that has been transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryVoltage", "IfcElectricVoltageMeasure") { Definition = "The voltage that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("RealImpedanceRatio", "IfcRatioMeasure") { Definition = "The ratio between the real part of the zero sequence impedance and the real part of the positive impedance (i.e. real part of the short-circuit voltage) of the transformer.\nUsed for three-phase transformer which includes a N-conductor."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."},
			new SingleValuePropertyType("SecondaryApparentPower", "IfcPowerMeasure") { Definition = "The power in VA (volt ampere) that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryVoltage", "IfcElectricVoltageMeasure") { Definition = "The voltage that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("ShortCircuitVoltage", "IfcComplexNumber") { Definition = "A complex number that specifies the real and imaginary parts of the short-circuit voltage at rated current of a transformer given in %."} },
				new [] { "IfcTransformer" });
		yield return new PropertySetInfo("Pset_TransportElementCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("CapacityPeople", "IfcCountMeasure") { Definition = "Capacity of the transportation element measured in numbers of person."},
			new SingleValuePropertyType("CapacityWeight", "IfcMassMeasure") { Definition = "Capacity of the transport element measured by weight."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\nHere whether the transport element (in case of e.g., a lift) is designed to serve as a fire exit, e.g., for fire escape purposes."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal construction type."} },
				new [] { "IfcTransportElement" });
		yield return new PropertySetInfo("Pset_TransportElementElevator", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ClearDepth", "IfcPositiveLengthMeasure") { Definition = "Clear depth of the object (elevator). It indicates the distance from the inner surface of the elevator door to the opposite surface of the elevator car. \nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("ClearHeight", "IfcPositiveLengthMeasure") { Definition = "Clear height of the object (elevator).  \nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("ClearWidth", "IfcPositiveLengthMeasure") { Definition = "Clear width of the object (elevator). It indicates the distance from the inner surfaces of the elevator car left and right from the elevator door. \nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("FireFightingLift", "IfcBoolean") { Definition = "Indication whether the elevator is designed to serve as a fire fighting lift the case of fire (TRUE) or not (FALSE). A fire fighting lift is used by fire fighters to access the location of fire and to evacuate people."} },
				new [] { "IfcTransportElement" });
		yield return new PropertySetInfo("Pset_TubeBundleTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FoulingFactor", "IfcThermalResistanceMeasure") { Definition = "Fouling factor of the tubes in the tube bundle."},
			new SingleValuePropertyType("HasTurbulator", "IfcBoolean") { Definition = "TRUE if the tube has a turbulator, FALSE if it does not."},
			new SingleValuePropertyType("HorizontalSpacing", "IfcPositiveLengthMeasure") { Definition = "Horizontal spacing between tubes in the tube bundle."},
			new SingleValuePropertyType("InLineRowSpacing", "IfcPositiveLengthMeasure") { Definition = "In-line tube row spacing."},
			new SingleValuePropertyType("InsideDiameter", "IfcPositiveLengthMeasure") { Definition = "Actual inner diameter of the tube in the tube bundle."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "Length of the tubes in the tube bundle."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal diameter or width of the tubes in the tube bundle."},
			new SingleValuePropertyType("NumberOfCircuits", "IfcInteger") { Definition = "Number of parallel fluid tube circuits."},
			new SingleValuePropertyType("NumberOfRows", "IfcInteger") { Definition = "Number of tube rows in the tube bundle assembly."},
			new SingleValuePropertyType("OutsideDiameter", "IfcPositiveLengthMeasure") { Definition = "Actual outside diameter of the tube in the tube bundle."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("StaggeredRowSpacing", "IfcPositiveLengthMeasure") { Definition = "Staggered tube row spacing."},
			new SingleValuePropertyType("ThermalConductivity", "IfcThermalConductivityMeasure") { Definition = "The thermal conductivity of the tube."},
			new SingleValuePropertyType("VerticalSpacing", "IfcPositiveLengthMeasure") { Definition = "Vertical spacing between tubes in the tube bundle."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Total volume of fluid in the tubes and their headers."} },
				new [] { "IfcTubeBundle" });
		yield return new PropertySetInfo("Pset_TubeBundleTypeFinned", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Diameter", "IfcPositiveLengthMeasure") { Definition = "Actual diameter of a fin for circular fins only."},
			new SingleValuePropertyType("FinCorrugatedType", "IfcLabel") { Definition = "Description of a fin corrugated type."},
			new SingleValuePropertyType("HasCoating", "IfcBoolean") { Definition = "TRUE if the fin has a coating, FALSE if it does not."},
			new SingleValuePropertyType("Height", "IfcPositiveLengthMeasure") { Definition = "Length of the fin as measured perpendicular to the direction of airflow."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "Length of the fin as measured parallel to the direction of airflow."},
			new SingleValuePropertyType("Spacing", "IfcPositiveLengthMeasure") { Definition = "Distance between fins on a tube in the tube bundle."},
			new SingleValuePropertyType("ThermalConductivity", "IfcThermalConductivityMeasure") { Definition = "The thermal conductivity of the fin."},
			new SingleValuePropertyType("Thickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the fin."} },
				new [] { "IfcTubeBundle" });
		yield return new PropertySetInfo("Pset_UnitaryControlElementPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcUnitaryControlElement" });
		yield return new PropertySetInfo("Pset_UnitaryControlElementTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcUnitaryControlElement" });
		yield return new PropertySetInfo("Pset_UnitaryControlElementTypeIndicatorPanel", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Application", new [] { "LiftPositionIndicator", "LiftHallLantern", "LiftArrivalGong", "LiftCarDirectionLantern", "LiftFireSystemsPort", "LiftVoiceAnnouncer", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The application of the unitary control element."} },
				new [] { "IfcUnitaryControlElement" });
		yield return new PropertySetInfo("Pset_UnitaryControlElementTypeThermostat", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("TemperatureSetPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature setpoint range and default setpoint."} },
				new [] { "IfcUnitaryControlElement" });
		yield return new PropertySetInfo("Pset_UnitaryEquipmentTypeAirConditioningUnit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CondenserEnteringTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature of fluid entering condenser."},
			new SingleValuePropertyType("CondenserFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Flow rate of fluid through the condenser."},
			new SingleValuePropertyType("CondenserLeavingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Termperature of fluid leaving condenser."},
			new SingleValuePropertyType("CoolingEfficiency", "IfcPositiveRatioMeasure") { Definition = "Coefficient of Performance: Ratio of cooling energy output to energy input under full load operating conditions."},
			new SingleValuePropertyType("HeatingCapacity", "IfcPowerMeasure") { Definition = "Heating capacity."},
			new SingleValuePropertyType("HeatingEfficiency", "IfcPositiveRatioMeasure") { Definition = "Heating efficiency under full load heating conditions."},
			new SingleValuePropertyType("LatentCoolingCapacity", "IfcPowerMeasure") { Definition = "Latent cooling capacity."},
			new SingleValuePropertyType("OutsideAirFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Flow rate of outside air entering the unit."},
			new SingleValuePropertyType("SensibleCoolingCapacity", "IfcPowerMeasure") { Definition = "Sensible cooling capacity."} },
				new [] { "IfcUnitaryEquipment" });
		yield return new PropertySetInfo("Pset_UnitaryEquipmentTypeAirHandler", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirHandlerConstruction", new [] { "MANUFACTUREDITEM", "CONSTRUCTEDONSITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining how the air handler might be fabricated."},
			new EnumerationPropertyType("AirHandlerFanCoilArrangement", new [] { "BLOWTHROUGH", "DRAWTHROUGH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the arrangement of the supply air fan and the cooling coil."},
			new SingleValuePropertyType("DualDeck", "IfcBoolean") { Definition = "Does the AirHandler have a dual deck? TRUE = Yes, FALSE = No."} },
				new [] { "IfcUnitaryEquipment" });
		yield return new PropertySetInfo("Pset_UnitaryEquipmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."} },
				new [] { "IfcUnitaryEquipment" });
		yield return new PropertySetInfo("Pset_UtilityConsumptionPHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_ValvePHistory", new IPropertyTypeInfo[] {
			 },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypeAirRelease", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsAutomatic", "IfcBoolean") { Definition = "Indication of whether the valve is automatically operated (TRUE) or manually operated (FALSE)."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ValveMechanism", new [] { "BALL", "BUTTERFLY", "CONFIGUREDGATE", "GLAND", "GLOBE", "LUBRICATEDPLUG", "NEEDLE", "PARALLELSLIDE", "PLUG", "WEDGEGATE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The mechanism by which the valve function is achieved where:\n\nBALL: Valve that has a ported ball that can be turned relative to the body seat ports.\nBUTTERFLY: Valve in which a streamlined disc pivots about a diametric axis.\nCONFIGUREDGATE: Screwdown valve in which the closing gate is shaped in a configured manner to have a more precise control of pressure and flow change across the valve.\nGLAND: Valve with a tapered seating, in which a rotatable plug is retained by means of a gland and gland packing.\nGLOBE: Screwdown valve that has a spherical body.\nLUBRICATEDPLUG: Plug valve in which a lubricant is injected under pressure between the plug face and the body.\nNEEDLE: Valve for regulating the flow in or from a pipe, in which a slender cone moves along the axis of flow to close against a fixed conical seat.\nPARALLELSLIDE: Screwdown valve that has a machined plate that slides in formed grooves to form a seal.\nPLUG: Valve that has a ported plug that can be turned relative to the body seat ports.\nWEDGEGATE: Screwdown valve that has a wedge shaped plate fitting into tapered guides to form a seal."},
			new EnumerationPropertyType("ValveOperation", new [] { "DROPWEIGHT", "FLOAT", "HYDRAULIC", "LEVER", "LOCKSHIELD", "MOTORIZED", "PNEUMATIC", "SOLENOID", "SPRING", "THERMOSTATIC", "WHEEL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The method of valve operation where:\n\nDROPWEIGHT: A valve that is closed by the action of a weighted lever being released, the weight normally being prevented from dropping by being held by a wire, the closure normally being made by the action of heat on a fusible link in the wire\nFLOAT: A valve that is opened and closed by the action of a float that rises and falls with water level. The float may be a ball attached to a lever or other mechanism\nHYDRAULIC: A valve that is opened and closed by hydraulic actuation\nLEVER: A valve that is opened and closed by the action of a lever rotating the gate within the valve.\nLOCKSHIELD: A valve that requires the use of a special lockshield key for opening and closing, the operating mechanism being protected by a shroud during normal operation.\nMOTORIZED: A valve that is opened and closed by the action of an electric motor on an actuator\nPNEUMATIC: A valve that is opened and closed by pneumatic actuation\nSOLENOID: A valve that is normally held open by a magnetic field in a coil acting on the gate but that is closed immediately if the electrical current generating the magnetic field is removed. \nSPRING: A valve that is normally held in position by the pressure of a spring on a plate but that may be caused to open if the pressure of the fluid is sufficient to overcome the spring pressure. \nTHERMOSTATIC: A valve in which the ports are opened or closed to maintain a required predetermined temperature.\nWHEEL: A valve that is opened and closed by the action of a wheel moving the gate within the valve."},
			new EnumerationPropertyType("ValvePattern", new [] { "SINGLEPORT", "ANGLED_2_PORT", "STRAIGHT_2_PORT", "STRAIGHT_3_PORT", "CROSSOVER_4_PORT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The configuration of the ports of a valve according to either the linear route taken by a fluid flowing through the valve or by the number of ports where:\n\nSINGLEPORT: Valve that has a single entry port from the system that it serves, the exit port being to the surrounding environment.\nANGLED_2_PORT: Valve in which the direction of flow is changed through 90 degrees.\nSTRAIGHT_2_PORT: Valve in which the flow is straight through.\nSTRAIGHT_3_PORT: Valve with three separate ports.\nCROSSOVER_4_PORT: Valve with 4 separate ports."},
			new SingleValuePropertyType("CloseOffRating", "IfcPressureMeasure") { Definition = "Close off rating."},
			new SingleValuePropertyType("FlowCoefficient", "IfcReal") { Definition = "Flow coefficient (the quantity of fluid that passes through a fully open valve at unit pressure drop), typically expressed as the Kv or Cv value for the valve."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("Size", "IfcPositiveLengthMeasure") { Definition = "The size of the connection to the valve (or to each connection for faucets, mixing valves, etc.)."},
			new SingleValuePropertyType("TestPressure", "IfcPressureMeasure") { Definition = "The maximum pressure to which the valve has been subjected under test."},
			new SingleValuePropertyType("WorkingPressure", "IfcPressureMeasure") { Definition = "The normally expected maximum working pressure of the valve."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypeDrawOffCock", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasHoseUnion", "IfcBoolean") { Definition = "Indicates whether the drawoff cock is fitted with a hose union connection (= TRUE) or not (= FALSE)."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypeFaucet", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FaucetFunction", new [] { "COLD", "HOT", "MIXED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the operating temperature of a faucet that may be specified."},
			new EnumerationPropertyType("FaucetOperation", new [] { "CERAMICDISC", "LEVERHANDLE", "NONCONCUSSIVESELFCLOSING", "QUATERTURN", "QUICKACTION", "SCREWDOWN", "SELFCLOSING", "TIMEDSELFCLOSING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the range of ways in which a faucet can be operated that may be specified where:\n\nCeramicDisc: Quick action faucet with a ceramic seal to open or close the orifice\n.\nLeverHandle: Quick action faucet that is operated by a lever handle\n.\nNonConcussiveSelfClosing:\t Self closing faucet that does not induce surge pressure\n.\nQuarterTurn: Quick action faucet that can be fully opened or shut by turning the operating mechanism through 90 degrees.\nQuickAction: Faucet that can be opened or closed fully with a single small movement of the operating mechanism\n.\nScrewDown: Faucet in which a plate or disc is moved, by the rotation of a screwed spindle, to close or open the orifice.\nSelfClosing: Faucet that is opened by pressure of the top of an operating spindle and is closed under the action of a spring or weight when the pressure is released.\nTimedSelfClosing: \tSelf closing faucet that discharges for a predetermined period of time\n."},
			new EnumerationPropertyType("FaucetType", new [] { "BIB", "GLOBE", "DIVERTER", "DIVIDEDFLOWCOMBINATION", "PILLAR", "SINGLEOUTLETCOMBINATION", "SPRAY", "SPRAYMIXING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the range of faucet types that may be specified where:\n\nBib:\t Faucet with a horizontal inlet and a nozzle that discharges downwards.\nGlobe:\t Faucet fitted through the end of a bath, with a horizontal inlet, a partially spherical body and a vertical nozzle.\nDiverter: \tCombination faucet assembly with a valve to enable the flow of mixed water to be transferred to a showerhead.\nDividedFlowCombination:\t Combination faucet assembly in which hot and cold water are kept separate until emerging from a common nozzle\n.\nPillar:\t Faucet that has a vertical inlet and a nozzle that discharges downwards\n.\nSingleOutletCombination =\t Combination faucet assembly in which hot and cold water mix before emerging from a common nozzle\n.\nSpray:\t Faucet with a spray outlet\n.\nSprayMixing:\t Spray faucet connected to hot and cold water supplies that delivers water at a temperature determined during use."},
			new SingleValuePropertyType("FaucetTopDescription", "IfcText") { Definition = "Description of the operating mechanism/top of the faucet."},
			new SingleValuePropertyType("Finish", "IfcText") { Definition = "Description of the finish applied to the faucet."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypeFlushing", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FlushingRate", "IfcVolumetricFlowRateMeasure") { Definition = "The predetermined quantity of water to be flushed."},
			new SingleValuePropertyType("HasIntegralShutOffDevice", "IfcBoolean") { Definition = "Indication of whether the flushing valve has an integral shut off device fitted (set TRUE) or not (set FALSE)."},
			new SingleValuePropertyType("IsHighPressure", "IfcBoolean") { Definition = "Indication of whether the flushing valve is suitable for use on a high pressure water main (set TRUE) or not (set FALSE)."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypeGasTap", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasHoseUnion", "IfcBoolean") { Definition = "Indicates whether the gas tap is fitted with a hose union connection (= TRUE) or not (= FALSE)."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypeIsolating", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("IsolatingPurpose", new [] { "LANDING", "LANDINGWITHPRESSUREREGULATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the purpose for which the isolating valve is used since the way in which the valve is identified as an isolating valve may be in the context of its use. Note that unless there is a contextual name for the isolating valve (as in the case of a Landing Valve on a rising fire main), then the value assigned shoulkd be UNSET."},
			new SingleValuePropertyType("IsNormallyOpen", "IfcBoolean") { Definition = "If TRUE, the valve is normally open. If FALSE is is normally closed."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypeMixing", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MixerControl", new [] { "MANUAL", "PREDEFINED", "THERMOSTATIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the form of control of the mixing valve."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The size of the pipework connection from the mixing valve."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypePressureReducing", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DownstreamPressure", "IfcPressureMeasure") { Definition = "The operating pressure of the fluid downstream of the pressure reducing valve."},
			new SingleValuePropertyType("UpstreamPressure", "IfcPressureMeasure") { Definition = "The operating pressure of the fluid upstream of the pressure reducing valve."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypePressureRelief", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ReliefPressure", "IfcPressureMeasure") { Definition = "The pressure at which the spring or weight in the valve is set to discharge fluid."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_VibrationIsolatorTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Height", "IfcPositiveLengthMeasure") { Definition = "Height of the vibration isolator before tha application of load."},
			new SingleValuePropertyType("IsolatorCompressibility", "IfcRatioMeasure") { Definition = "The compressibility of the vibration isolator."},
			new SingleValuePropertyType("IsolatorStaticDeflection", "IfcLengthMeasure") { Definition = "Static deflection of the vibration isolator."},
			new SingleValuePropertyType("MaximumSupportedWeight", "IfcMassMeasure") { Definition = "The maximum weight that can be carried by the vibration isolator."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1')."},
			new SingleValuePropertyType("VibrationTransmissibility", "IfcPositiveRatioMeasure") { Definition = "The vibration transmissibility percentage."} },
				new [] { "IfcVibrationIsolator" });
		yield return new PropertySetInfo("Pset_WallCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Compartmentation", "IfcBoolean") { Definition = "Indication whether the object is designed to serve as a fire compartmentation (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("ExtendToStructure", "IfcBoolean") { Definition = "Indicates whether the object extend to the structure above (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface,\nIt is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nHere the total thermal transmittance coefficient through the wall (including all materials)."} },
				new [] { "IfcWall" });
		yield return new PropertySetInfo("Pset_Warranty", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Exclusions", "IfcText") { Definition = "Items, conditions or actions that may be excluded from the warranty or that may cause the warranty to become void."},
			new SingleValuePropertyType("IsExtendedWarranty", "IfcBoolean") { Definition = "Indication of whether this is an extended warranty whose duration is greater than that normally assigned to an artefact (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("WarrantyContent", "IfcText") { Definition = "The content of the warranty."},
			new SingleValuePropertyType("WarrantyEndDate", "IfcDate") { Definition = "The date on which the warranty expires."},
			new SingleValuePropertyType("WarrantyIdentifier", "IfcIdentifier") { Definition = "The identifier assigned to a warranty."},
			new SingleValuePropertyType("WarrantyPeriod", "IfcTimeMeasure") { Definition = "The time duration during which a manufacturer or supplier guarantees or warrants the performance of an artefact."},
			new SingleValuePropertyType("WarrantyStartDate", "IfcDate") { Definition = "The date on which the warranty commences."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used."} },
				new [] { "IfcWasteTerminal" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeFloorTrap", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("InletPatternType", new [] { "NONE", "1", "2", "3", "4", "12", "13", "14", "23", "24", "34", "123", "124", "134", "234", "1234" } ) { Definition = "Identifies the pattern of inlet connections to a trap.\n\nA trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south)."},
			new EnumerationPropertyType("TrapType", new [] { "NONE", "P_TRAP", "Q_TRAP", "S_TRAP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of waste trap used in combination with the floor trap from which the type required may be set."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the trap."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the  trap."},
			new SingleValuePropertyType("HasStrainer", "IfcBoolean") { Definition = "Indicates whether the gully trap has a strainer (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection(s), where used, of the inlet connections.\n\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("IsForSullageWater", "IfcBoolean") { Definition = "Indicates if the purpose of the floor trap is to receive sullage water, or if that is amongst its purposes (= TRUE), or not (= FALSE). Note that if TRUE, it is expected that an upstand or kerb will be placed around the floor trap to prevent the ingress of surface water runoff; the provision of the upstand or kerb is not dealt with in this property set."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the chamber of the  trap."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the chamber of the trap."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the chamber of the trap."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the terminal."} },
				new [] { "IfcWasteTerminal" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeFloorWaste", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the waste."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the  waste."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the waste."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the waste."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the waste."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeGullySump", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BackInletPatternType", new [] { "NONE", "1", "2", "3", "4", "12", "13", "14", "23", "24", "34", "123", "124", "134", "234", "1234" } ) { Definition = "Identifies the pattern of inlet connections to a gully trap.\n\nA gulley trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the gully trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south).\n\n               2\n               |\n   ----------------\n   !                       |\n1-|                       |-3\n   !                       |\n   ----------------\n               |\n              4"},
			new EnumerationPropertyType("GullyType", new [] { "VERTICAL", "BACKINLET", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of gully from which the type required may be set."},
			new EnumerationPropertyType("TrapType", new [] { "NONE", "P_TRAP", "Q_TRAP", "S_TRAP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of trap from which the type required may be set."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the gully trap."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the gully trap."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection(s), where used, of the inlet connections.\n\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("NominalSumpDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the sump."},
			new SingleValuePropertyType("NominalSumpLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the sump."},
			new SingleValuePropertyType("NominalSumpWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the sump."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeGullyTrap", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BackInletPatternType", new [] { "NONE", "1", "2", "3", "4", "12", "13", "14", "23", "24", "34", "123", "124", "134", "234", "1234" } ) { Definition = "Identifies the pattern of inlet connections to a gully trap.\n\nA gulley trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the gully trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south)."},
			new EnumerationPropertyType("GullyType", new [] { "VERTICAL", "BACKINLET", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of gully from which the type required may be set."},
			new EnumerationPropertyType("TrapType", new [] { "NONE", "P_TRAP", "Q_TRAP", "S_TRAP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of trap from which the type required may be set."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the gully trap."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the gully trap."},
			new SingleValuePropertyType("HasStrainer", "IfcBoolean") { Definition = "Indicates whether the gully trap has a strainer (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection(s), where used, of the inlet connections.\n\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the chamber of the gully trap."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the chamber of the gully trap."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the chamber of the gully trap."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeRoofDrain", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the drain."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the  drain."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the drain."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the drain."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the drain."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeWasteDisposalUnit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DrainConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the drain connection inlet to the waste disposal unit."},
			new SingleValuePropertyType("NominalDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted depth of the object measured from the inlet drain connection to the base of the unit."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the waste disposal unit."} },
				new [] { "IfcWasteTerminal" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeWasteTrap", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("WasteTrapType", new [] { "NONE", "P_TRAP", "Q_TRAP", "S_TRAP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of trap from which the type required may be set."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection(s), where used, of the inlet connections.\n\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal" });
		yield return new PropertySetInfo("Pset_WindowCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "NEW", "EXISTING", "DEMOLISH", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values)."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE). Here it defines an exit window in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object.\nIt is given according to the national fire safety classification."},
			new SingleValuePropertyType("GlazingAreaFraction", "IfcPositiveRatioMeasure") { Definition = "Fraction of the glazing area relative to the total area of the filling element. \nIt shall be used, if the glazing area is not given separately for all panels within the filling element."},
			new SingleValuePropertyType("HasDrive", "IfcBoolean") { Definition = "Indication whether this object has an automatic drive to operate it (TRUE) or no drive (FALSE)"},
			new SingleValuePropertyType("HasSillExternal", "IfcBoolean") { Definition = "Indication whether the window opening has an external sill (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("HasSillInternal", "IfcBoolean") { Definition = "Indication whether the window opening has an internal sill (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Infiltration", "IfcVolumetricFlowRateMeasure") { Definition = "Infiltration flowrate of outside air for the filler object based on the area of the filler object at a pressure level of 50 Pascals. It shall be used, if the length of all joints is unknown."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types."},
			new SingleValuePropertyType("SecurityRating", "IfcLabel") { Definition = "Index based rating system indicating security level.\nIt is giving according to the national building code."},
			new SingleValuePropertyType("SmokeStop", "IfcBoolean") { Definition = "Indication whether the object is designed to provide a smoke stop (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nIt applies to the total door construction."} },
				new [] { "IfcWindow" });
		yield return new PropertySetInfo("Pset_WorkControlCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WorkDayDuration", "IfcDuration") { Definition = "The elapsed time within a worktime-based day. For presentation purposes, applications may choose to display IfcTask durations in work days where IfcTaskTime.DurationType=WORKTIME. This value must be less than or equal to 24 hours (an elapsed day); if omitted then 8 hours is assumed."},
			new SingleValuePropertyType("WorkFinishTime", "IfcTime") { Definition = "The default time of day a task is scheduled to finish. For presentation purposes, if the finish time of a task matches the WorkFinishTime, then applications may choose to display the date only. Conversely when entering dates without specifying time, applications may automatically append the WorkFinishTime."},
			new SingleValuePropertyType("WorkMonthDuration", "IfcDuration") { Definition = "The elapsed time within a worktime-based month. For presentation purposes, applications may choose to display IfcTask durations in work months where IfcTaskTime.DurationType=WORKTIME. This value must be less than or equal to 744 hours (an elapsed month of 31 days); if omitted then 160 hours is assumed."},
			new SingleValuePropertyType("WorkStartTime", "IfcTime") { Definition = "The default time of day a task is scheduled to start. For presentation purposes, if the start time of a task matches the WorkStartTime, then applications may choose to display the date only. Conversely when entering dates without specifying time, applications may automatically append the WorkStartTime."},
			new SingleValuePropertyType("WorkWeekDuration", "IfcDuration") { Definition = "The elapsed time within a worktime-based week. For presentation purposes, applications may choose to display IfcTask durations in work weeks where IfcTaskTime.DurationType=WORKTIME. This value must be less than or equal to 168 hours (an elapsed week); if omitted then 40 hours is assumed."} },
				new [] { "IfcWorkControl" });
		yield return new PropertySetInfo("Pset_ZoneCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossPlannedArea", "IfcAreaMeasure") { Definition = "Total planned gross area for the zone. Used for programming the zone."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication whether this space (in case of e.g., a toilet) is designed to serve as an accessible space for handicapped people, e.g., for a public toilet (TRUE) or not (FALSE). This information is often used to declare the need for access for the disabled and for special design requirements of this space."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external zone at the outside of the building."},
			new SingleValuePropertyType("NetPlannedArea", "IfcAreaMeasure") { Definition = "Total planned net area for the zone. Used for programming the zone."},
			new SingleValuePropertyType("PubliclyAccessible", "IfcBoolean") { Definition = "Indication whether this space (in case of e.g., a toilet) is designed to serve as a publicly accessible space, e.g., for a public toilet (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal project type."} },
				new [] { "IfcZone" });
	}

    private static IEnumerable<PropertySetInfo> GetPropertiesIFC4x3()
	{
		yield return new PropertySetInfo("Pset_ActionRequest", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("RequestComments", "IfcText") { Definition = "Comments that may be made on the request."},
			new SingleValuePropertyType("RequestSourceLabel", "IfcLabel") { Definition = "A specific name or label that further qualifies the identity of a request source. In the event of an email, this may be the email address."},
			new SingleValuePropertyType("RequestSourceName", "IfcPerson") { Definition = "The person making the request, where known."} },
				new [] { "IfcActionRequest" });
		yield return new PropertySetInfo("Pset_ActorCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ActorCategory", "IfcLabel") { Definition = "Designation of the category into which the actors in the population belong."},
			new SingleValuePropertyType("NumberOfActors", "IfcCountMeasure") { Definition = "The number of actors that are to be dealt with together in the population."},
			new SingleValuePropertyType("SkillLevel", "IfcLabel") { Definition = "Skill level exhibited by the actor and which indicates an extent of their capability to perform actions on the artefacts upon which they can act."} },
				new [] { "IfcActor" });
		yield return new PropertySetInfo("Pset_ActuatorPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("PositionHistory", "IfcTimeSeries") { Definition = "Indicates position of the actuator over time where 0.0 is fully closed and 1.0 is fully open."},
			new SingleValuePropertyType("QualityHistory", "IfcTimeSeries") { Definition = "Indicates the quality of measurement or failure condition, which may be further qualified by the Status.  True: measured values are considered reliable; False: measured values are considered not reliable (i.e. a fault has been detected); Unknown: reliability of values is uncertain."},
			new SingleValuePropertyType("StatusHistory", "IfcTimeSeries") { Definition = "Indicates an error code or identifier, whose meaning is specific to the particular automation system.  Example values include: 'ConfigurationError', 'NotConnected', 'DeviceFailure', 'SensorFailure', 'LastKnown, 'CommunicationsFailure', 'OutOfService'."} },
				new [] { "IfcActuator" });
		yield return new PropertySetInfo("Pset_ActuatorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ActuatorApplication", new [] { "DAMPERACTUATOR", "ENTRYEXITDEVICE", "FIRESMOKEDAMPERACTUATOR", "LAMPACTUATOR", "SUNBLINDACTUATOR", "VALVEPOSITIONER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates application of actuator."},
			new EnumerationPropertyType("ActuatorStatus", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("FailPosition", new [] { "FAILCLOSED", "FAILOPEN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Specifies the required fail-safe position of the actuator."},
			new SingleValuePropertyType("ManualOverride", "IfcBoolean") { Definition = "Identifies whether hand-operated operation is provided as an override (= TRUE) or not (= FALSE). Note that this value should be set to FALSE by default in the case of a Hand Operated Actuator."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcActuator", "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_ActuatorTypeElectricActuator", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectricActuatorType", new [] { "MAGNETIC", "MOTORDRIVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies electric actuator as defined by its operational principle."},
			new SingleValuePropertyType("ActuatorInputPower", "IfcPowerMeasure") { Definition = "Maximum input power requirement."},
			new SingleValuePropertyType("ControlPulseCurrent", "IfcElectricCurrentMeasure") { Definition = "The current of the electric actuator control pulse."} },
				new [] { "IfcActuator", "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_ActuatorTypeHydraulicActuator", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InputFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum input flowrate requirement.\n\nHydraulic flowrate."},
			new SingleValuePropertyType("InputPressure", "IfcPressureMeasure") { Definition = "Maximum input or design pressure for the object.\n\nMaximum design pressure for the actuator."} },
				new [] { "IfcActuator", "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_ActuatorTypeLinearActuation", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Force", "IfcForceMeasure") { Definition = "Indicates the maximum close-off force for the actuator."},
			new SingleValuePropertyType("Stroke", "IfcLengthMeasure") { Definition = "Indicates the maximum distance the actuator must traverse."} },
				new [] { "IfcActuator", "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_ActuatorTypePneumaticActuator", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InputFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum input flowrate requirement.\n\nControl air flowrate."},
			new SingleValuePropertyType("InputPressure", "IfcPressureMeasure") { Definition = "Maximum input or design pressure for the object.\n\nControl air pressure."} },
				new [] { "IfcActuator", "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_ActuatorTypeRotationalActuation", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("RangeAngle", "IfcPlaneAngleMeasure") { Definition = "Indicates the maximum rotation the actuator must traverse."},
			new SingleValuePropertyType("Torque", "IfcTorqueMeasure") { Definition = "Indicates the maximum close-off torque for the actuator."} },
				new [] { "IfcActuator", "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_Address", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Purpose", new [] { "DISTRIBUTIONPOINT", "HOME", "OFFICE", "SITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indication of the purpose of this object"},
			new SingleValuePropertyType("AddressLines", "IfcLabel") { Definition = "The postal address.NOTE  A postal address may occupy several lines (or elements) when recorded. It is expected that normal usage will incorporate relevant elements of the following address concepts: A location within a building (e.g. 3rd Floor) Building name (e.g. Interoperability House) Street number (e.g. 6400) Street name (e.g. Alliance Boulevard). Typical content of address lines may vary in different countries."},
			new SingleValuePropertyType("Country", "IfcLabel") { Definition = "The two letter country code (from ISO 3166)."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "The Description of the object."},
			new SingleValuePropertyType("ElectronicMailAddresses", "IfcLabel") { Definition = "The list of Email addresses at which Email messages may be received."},
			new SingleValuePropertyType("FacsimileNumbers", "IfcLabel") { Definition = "The list of fax numbers at which fax messages may be received."},
			new SingleValuePropertyType("InternalLocation", "IfcLabel") { Definition = "An organization defined address for internal mail delivery."},
			new SingleValuePropertyType("MessagingIDs", "IfcURIReference") { Definition = "IDs or addresses for any other means of telecommunication, for example instant messaging, voice-over-IP, or file transfer protocols. The communication protocol is indicated by the URI value with scheme designations such as irc:, sip:, or ftp:."},
			new SingleValuePropertyType("PagerNumber", "IfcLabel") { Definition = "The pager number at which paging messages may be received."},
			new SingleValuePropertyType("PostalBox", "IfcLabel") { Definition = "An address that is implied by an identifiable mail drop."},
			new SingleValuePropertyType("PostalCode", "IfcLabel") { Definition = "The code that is used by the country's postal service."},
			new SingleValuePropertyType("Region", "IfcLabel") { Definition = "The name of a region.EXAMPLE  The counties of the United Kingdom and the states of North America are examples of regions."},
			new SingleValuePropertyType("TelephoneNumbers", "IfcLabel") { Definition = "The list of telephone numbers at which telephone messages may be received."},
			new SingleValuePropertyType("Town", "IfcLabel") { Definition = "The name of a town."},
			new SingleValuePropertyType("UserDefinedPurpose", "IfcLabel") { Definition = "Allows for specification of user specific purpose of the address beyond the enumeration values provided by Purpose attribute of type IfcAddressTypeEnum. When a value is provided for attribute UserDefinedPurpose, in parallel the attribute Purpose shall have enumeration value USERDEFINED."},
			new SingleValuePropertyType("WWWHomePageURL", "IfcURIReference") { Definition = "The world wide web address at which the preliminary page of information for the person or organization can be located.NOTE  Information on the world wide web for a person or organization may be separated into a number of pages and across a number of host sites, all of which may be linked together. It is assumed that all such information may be referenced from a single page that is termed the home page for that person or organization."} },
				new [] { "IfcActor", "IfcBuilding", "IfcSite" });
		yield return new PropertySetInfo("Pset_AirSideSystemInformation", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirSideSystemDistributionType", new [] { "DUALDUCT", "MULTIZONE", "SINGLEDUCT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "This enumeration defines the basic types of air side systems (e.g., SingleDuct, DualDuct, Multizone, etc.)."},
			new EnumerationPropertyType("AirSideSystemType", new [] { "CONSTANTVOLUME", "CONSTANTVOLUMEBYPASS", "CONSTANTVOLUMEMULTIPLEZONEREHEAT", "CONSTANTVOLUMESINGLEZONE", "VARIABLEAIRVOLUME", "VARIABLEAIRVOLUMEDUALCONDUIT", "VARIABLEAIRVOLUMEFANPOWERED", "VARIABLEAIRVOLUMEINDUCTION", "VARIABLEAIRVOLUMEREHEAT", "VARIABLEAIRVOLUMEVARIABLEDIFFUSERS", "VARIABLEAIRVOLUMEVARIABLETEMPERATURE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "This enumeration specifies the basic types of possible air side systems (e.g., Constant Volume, Variable Volume, etc.)."},
			new SingleValuePropertyType("AirFlowSensible", "IfcVolumetricFlowRateMeasure"),
			new SingleValuePropertyType("ApplianceDiversity", "IfcPositiveRatioMeasure") { Definition = "Diversity of appliance load."},
			new SingleValuePropertyType("CoolingTemperatureDelta", "IfcThermodynamicTemperatureMeasure") { Definition = "Cooling temperature difference for calculating space air flow rates."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "The Description of the object."},
			new SingleValuePropertyType("EnergyGainSensible", "IfcPowerMeasure") { Definition = "The sum of total energy gains for the spaces served by the system during the peak cooling conditions, plus any system-level sensible energy gains."},
			new SingleValuePropertyType("EnergyGainTotal", "IfcPowerMeasure") { Definition = "The total amount of energy gains for the spaces served by the system during the peak cooling conditions, plus any system-level total energy gains."},
			new SingleValuePropertyType("EnergyLoss", "IfcPowerMeasure") { Definition = "The sum of energy losses for the spaces served by the system during the peak heating conditions."},
			new SingleValuePropertyType("FanPower", "IfcPowerMeasure") { Definition = "Fan motor loads contributing to the cooling load."},
			new SingleValuePropertyType("HeatingTemperatureDelta", "IfcThermodynamicTemperatureMeasure") { Definition = "Heating temperature difference for calculating space air flow rates."},
			new SingleValuePropertyType("InfiltrationDiversitySummer", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Summer infiltration."},
			new SingleValuePropertyType("InfiltrationDiversityWinter", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Winter infiltration."},
			new SingleValuePropertyType("TotalAirFlow", "IfcVolumetricFlowRateMeasure"),
			new SingleValuePropertyType("Ventilation", "IfcVolumetricFlowRateMeasure") { Definition = "Required outside air ventilation."} },
				new [] { "IfcSpatialElement", "IfcSpatialZone", "IfcZone" });
		yield return new PropertySetInfo("Pset_AirTerminalBoxPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirFlowCurve", "IfcTimeSeries"),
			new SingleValuePropertyType("AtmosphericPressure", "IfcTimeSeries") { Definition = "Ambient atmospheric pressure."},
			new SingleValuePropertyType("DamperPosition", "IfcTimeSeries") { Definition = "Control damper position, ranging from 0 to 1; damper position (0=closed=90deg position angle, 1=open=0deg position angle)."},
			new SingleValuePropertyType("Sound", "IfcTimeSeries") { Definition = "Sound performance."} },
				new [] { "IfcAirTerminalBox" });
		yield return new PropertySetInfo("Pset_AirTerminalBoxTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ArrangementType", new [] { "DUALDUCT", "SINGLEDUCT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Terminal box arrangement.\nSingleDuct: Terminal box receives warm or cold air from a single air supply duct.\nDualDuct: Terminal box receives warm and cold air from separate air supply ducts."},
			new EnumerationPropertyType("ReheatType", new [] { "ELECTRICALREHEAT", "GASREHEAT", "NONE", "STEAMCOILREHEAT", "WATERCOILREHEAT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Terminal box reheat type."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AirFlowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered."},
			new SingleValuePropertyType("AirPressureRange", "IfcPressureMeasure") { Definition = "Allowable air static pressure range at the entrance of the air terminal box."},
			new SingleValuePropertyType("HasFan", "IfcBoolean") { Definition = "Terminal box has a fan inside (fan powered box)."},
			new SingleValuePropertyType("HasReturnAir", "IfcBoolean") { Definition = "Terminal box has return air mixed with supply air from duct work."},
			new SingleValuePropertyType("HasSoundAttenuator", "IfcBoolean") { Definition = "If TRUE, the object has sound attenuation."},
			new SingleValuePropertyType("HousingThickness", "IfcLengthMeasure") { Definition = "Air terminal box housing material thickness."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal air flow rate."},
			new SingleValuePropertyType("NominalDamperDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal damper diameter."},
			new SingleValuePropertyType("NominalInletAirPressure", "IfcPressureMeasure") { Definition = "Nominal airflow inlet static pressure."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range.\n\nAllowable operational range of the ambient air temperature."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("ReturnAirFractionRange", "IfcPositiveRatioMeasure") { Definition = "Allowable return air fraction range as a fraction of discharge airflow."} },
				new [] { "IfcAirTerminalBox", "IfcAirTerminalBoxType" });
		yield return new PropertySetInfo("Pset_AirTerminalOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirFlowType", new [] { "EXHAUSTAIR", "RETURNAIR", "SUPPLYAIR", "OTHER", "NOTKNOWN", "UNSET" } ),
			new EnumerationPropertyType("AirTerminalLocation", new [] { "CEILINGINTERIOR", "CEILINGPERIMETER", "FLOOR", "SIDEWALLHIGH", "SIDEWALLLOW", "SILL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Location  (a single type of diffuser can be used for multiple locations); high means close to ceiling."},
			new SingleValuePropertyType("AirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Air flow rate.\n\nThe actual airflow rate as designed."} },
				new [] { "IfcAirTerminal" });
		yield return new PropertySetInfo("Pset_AirTerminalPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirFlowRateHistory", "IfcTimeSeries") { Definition = "Volumetric flow rate."},
			new SingleValuePropertyType("NeckAirVelocity", "IfcTimeSeries") { Definition = "Air velocity at the neck."},
			new SingleValuePropertyType("PressureDrop", "IfcTimeSeries") { Definition = "Pressure drop.\n\nDrop in total pressure between inlet and outlet at nominal air-flow rate."},
			new SingleValuePropertyType("SupplyAirTemperatureCooling", "IfcTimeSeries") { Definition = "Supply air temperature in cooling mode."},
			new SingleValuePropertyType("SupplyAirTemperatureHeating", "IfcTimeSeries") { Definition = "Supply air temperature in heating mode."},
			new TableValuePropertyType("CenterlineAirVelocity", "IfcLinearVelocityMeasure", "IfcLengthMeasure") { Definition = "Centerline air velocity versus distance from the diffuser and temperature differential; a function of distance from diffuser and temperature difference between supply air and room air."},
			new TableValuePropertyType("InductionRatio", "IfcReal", "IfcLengthMeasure") { Definition = "Induction ratio versus distance from the diffuser and its discharge direction; induction ratio (or entrainment ratio) is the ratio of the volumetric flow rate in the jet to the volumetric flow rate at the air terminal."} },
				new [] { "IfcAirTerminal" });
		yield return new PropertySetInfo("Pset_AirTerminalTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirTerminalMountingType", new [] { "FLATFLUSH", "LAYIN", "SURFACE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The way the air terminal is mounted to the ceiling, wall, etc.Surface: mounted to the surface of something (e.g., wall, duct, etc.).\nFlat flush: mounted flat and flush with a surface.\nLay-in: mounted in a lay-in type ceiling (e.g., a dropped ceiling grid)."},
			new EnumerationPropertyType("AirTerminalShape", new [] { "RECTANGULAR", "ROUND", "SLOT", "SQUARE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Shape of the air terminal. Slot is typically a long narrow supply device with an aspect ratio generally greater than 10 to 1."},
			new EnumerationPropertyType("CoreType", new [] { "CURVEDBLADE", "NONE", "REMOVABLE", "REVERSIBLE", "SHUTTERBLADE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the way the core of the AirTerminal is constructed."},
			new EnumerationPropertyType("DischargeDirection", new [] { "ADJUSTABLE", "PARALLEL", "PERPENDICULAR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Discharge direction of the air terminal.Parallel: discharges parallel to mounting surface designed so that flow attaches to the surface.\nPerpendicular:  discharges away from mounting surface.\nAdjustable: both parallel and perpendicular discharge."},
			new EnumerationPropertyType("FaceType", new [] { "DOUBLEDEFLECTION", "EGGCRATE", "FOURWAYPATTERN", "LOUVERED", "PERFORATED", "SIGHTPROOF", "SINGLEDEFLECTION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies how the terminal face of an AirTerminal is constructed."},
			new EnumerationPropertyType("FinishType", new [] { "ANNODIZED", "NONE", "PAINTED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of finish for the air terminal."},
			new EnumerationPropertyType("FlowControlType", new [] { "BELLOWS", "DAMPER", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of flow control element that may be included as a part of the construction of the air terminal."},
			new EnumerationPropertyType("FlowPattern", new [] { "COMPACTJET", "DISPLACMENT", "LINEARDOUBLE", "LINEARFOURWAY", "LINEARSINGLE", "RADIAL", "SWIRL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Flow pattern."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AirDiffusionPerformanceIndex", "IfcReal") { Definition = "The Air Diffusion Performance Index (ADPI) is used for cooling mode conditions. If several measurements of air velocity and air temperature are made throughout the occupied zone of a space, the ADPI is the percentage of locations where measurements were taken that meet the specifications for effective draft temperature and air velocity."},
			new SingleValuePropertyType("AirFlowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered.\n\nAir flowrate range within which the air terminal is designed to operate."},
			new SingleValuePropertyType("CoreSetHorizontal", "IfcPlaneAngleMeasure") { Definition = "Degree of horizontal (in the X-axis of the LocalPlacement) blade set from the centerline."},
			new SingleValuePropertyType("CoreSetVertical", "IfcPlaneAngleMeasure") { Definition = "Degree of vertical (in the Y-axis of the LocalPlacement) blade set from the centerline."},
			new SingleValuePropertyType("EffectiveArea", "IfcAreaMeasure") { Definition = "Effective discharge area of the air terminal."},
			new SingleValuePropertyType("FinishColour", "IfcLabel") { Definition = "The finish colour of the object."},
			new SingleValuePropertyType("HasIntegralControl", "IfcBoolean") { Definition = "If TRUE, a self powered temperature control is included in the AirTerminal."},
			new SingleValuePropertyType("HasSoundAttenuator", "IfcBoolean") { Definition = "If TRUE, the object has sound attenuation."},
			new SingleValuePropertyType("HasThermalInsulation", "IfcBoolean") { Definition = "If TRUE, the air terminal has thermal insulation."},
			new SingleValuePropertyType("NeckArea", "IfcAreaMeasure") { Definition = "Neck area of the air terminal."},
			new SingleValuePropertyType("NumberOfSlots", "IfcCountMeasure") { Definition = "Indicates the number of  slots."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SlotLength", "IfcPositiveLengthMeasure") { Definition = "Slot length."},
			new SingleValuePropertyType("SlotWidth", "IfcPositiveLengthMeasure") { Definition = "Slot width."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature.\n\nTemperature range within which the air terminal is designed to operate."},
			new SingleValuePropertyType("ThrowLength", "IfcLengthMeasure") { Definition = "The horizontal or vertical axial distance an airstream travels after leaving an AirTerminal before the maximum stream velocity is reduced to a specified terminal velocity under isothermal conditions at the upper value of the AirFlowrateRange."},
			new TableValuePropertyType("AirFlowrateVersusFlowControlElement", "IfcVolumetricFlowRateMeasure", "IfcPositiveRatioMeasure") { Definition = "Air flowrate versus flow control element position at nominal pressure drop."} },
				new [] { "IfcAirTerminal", "IfcAirTerminalType" });
		yield return new PropertySetInfo("Pset_AirToAirHeatRecoveryPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirPressureDropCurves", "IfcTimeSeries") { Definition = "Air pressure drop as function of air flow rate."},
			new SingleValuePropertyType("DefrostTemperatureEffectiveness", "IfcTimeSeries") { Definition = "Temperature heat transfer effectiveness when defrosting is active."},
			new SingleValuePropertyType("HumidityEffectiveness", "IfcTimeSeries") { Definition = "Humidity heat transfer effectiveness: The ratio of primary airflow absolute humidity changes to maximum possible absolute humidity changes."},
			new SingleValuePropertyType("LatentHeatTransferRate", "IfcTimeSeries") { Definition = "Latent heat transfer rate."},
			new SingleValuePropertyType("SensibleEffectiveness", "IfcTimeSeries") { Definition = "Sensible heat transfer effectiveness, where effectiveness is defined as the ratio of heat transfer to maximum possible heat transfer."},
			new SingleValuePropertyType("SensibleEffectivenessTable", "IfcTimeSeries") { Definition = "Sensible heat transfer effectiveness curve as a function of the primary and secondary air flow rate."},
			new SingleValuePropertyType("SensibleHeatTransferRate", "IfcTimeSeries") { Definition = "Sensible heat transfer rate."},
			new SingleValuePropertyType("TemperatureEffectiveness", "IfcTimeSeries") { Definition = "Temperature heat transfer effectiveness: The ratio of primary airflow temperature changes to maximum possible temperature changes."},
			new SingleValuePropertyType("TotalEffectiveness", "IfcTimeSeries") { Definition = "Total heat transfer effectiveness: The ratio of heat transfer to the maximum possible heat transfer."},
			new SingleValuePropertyType("TotalEffectivenessTable", "IfcTimeSeries") { Definition = "Total heat transfer effectiveness curve as a function of the primary and secondary air flow rate."},
			new SingleValuePropertyType("TotalHeatTransferRate", "IfcTimeSeries") { Definition = "Total heat transfer rate."} },
				new [] { "IfcAirToAirHeatRecovery" });
		yield return new PropertySetInfo("Pset_AirToAirHeatRecoveryTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("HeatTransferTypeEnum", new [] { "LATENT", "SENSIBLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of heat transfer between the two air streams."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("HasDefrost", "IfcBoolean") { Definition = "has the heat exchanger has defrost function or not."},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature range in which the device operates normally.\n\nAllowable operation ambient air temperature range."},
			new SingleValuePropertyType("PrimaryAirFlowRateRange", "IfcVolumetricFlowRateMeasure"),
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SecondaryAirFlowRateRange", "IfcPressureMeasure") },
				new [] { "IfcAirToAirHeatRecovery", "IfcAirToAirHeatRecoveryType" });
		yield return new PropertySetInfo("Pset_AlarmPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Acknowledge", "IfcTimeSeries") { Definition = "Indicates acknowledgement status where False indicates acknowlegement is required and outstanding, True indicates condition has been acknowedged, and Unknown indicates no acknowledgement is required.  Upon resetting the condition, then acknowledgement reverts to Unknown."},
			new SingleValuePropertyType("ConditionHistory", "IfcTimeSeries") { Definition = "Indicates alarm condition over time.  The range of possible values and their meanings is defined by Pset_AlarmTypeCommon.Condition.  An empty value indicates no present alarm condition."},
			new SingleValuePropertyType("Enabled", "IfcTimeSeries") { Definition = "Indicates whether alarm is enabled or disabled over time."},
			new SingleValuePropertyType("Severity", "IfcTimeSeries") { Definition = "Indicates alarm severity over time, where the scale of values is determined by the control system configuration.  A zero value indicates no present alarm."},
			new SingleValuePropertyType("UserHistory", "IfcTimeSeries") { Definition = "Indicates acknowledging user over time by identification corresponding to IfcPerson.Identification on an IfcActor."} },
				new [] { "IfcAlarm" });
		yield return new PropertySetInfo("Pset_AlarmTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new TableValuePropertyType("AlarmCondition", "IfcIdentifier", "IfcLabel") { Definition = "Table mapping alarm condition identifiers to descriptive labels, which may be used for interpreting Pset_AlarmPHistory.Condition."} },
				new [] { "IfcAlarm", "IfcAlarmType" });
		yield return new PropertySetInfo("Pset_AlignmentCantSegmentCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CantDeficiency", "IfcLengthMeasure") { Definition = "Difference between applied cant and a higher equilibrium cant."},
			new SingleValuePropertyType("CantEquilibrium", "IfcLengthMeasure") { Definition = "Cant at a particular speed at which the vehicle will have a resultant force perpendicular to the running plane."},
			new SingleValuePropertyType("EndSmoothingLength", "IfcPositiveLengthMeasure") { Definition = "Length for the circular transition change of curvature at the end of the cant segment, measured from the start of the circular transition change of curvature to the end of the cant segment."},
			new SingleValuePropertyType("StartSmoothingLength", "IfcPositiveLengthMeasure") { Definition = "Length for the circular transition change of curvature at the start of the cant segment, measured from the start of the cant segment to the end of the circular transition change of curvature."} },
				new [] { "IfcAlignmentSegment" });
		yield return new PropertySetInfo("Pset_AlignmentVerticalSegmentCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EndElevation", "IfcLengthMeasure") { Definition = "Elevation of the end point relative to the mean sea level."},
			new SingleValuePropertyType("StartElevation", "IfcLengthMeasure") { Definition = "Elevation of the start point relative to the mean sea level."} },
				new [] { "IfcAlignmentSegment" });
		yield return new PropertySetInfo("Pset_AnnotationContourLine", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ContourValue", "IfcLengthMeasure") { Definition = "Value of the elevation of the contour above or below a reference plane."} },
				new [] { "IfcAnnotation" });
		yield return new PropertySetInfo("Pset_AnnotationLineOfSight", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("RoadVisibleDistanceLeft", "IfcPositiveLengthMeasure") { Definition = "Distance visible to the left of the access."},
			new SingleValuePropertyType("RoadVisibleDistanceRight", "IfcPositiveLengthMeasure") { Definition = "Distance visible to the right of the access."},
			new SingleValuePropertyType("SetbackDistance", "IfcPositiveLengthMeasure") { Definition = "Setback distance from the point of connection on the major element along the axis of the minor element (e.g. distance from a public road at which the line of sigfht is measured."},
			new SingleValuePropertyType("VisibleAngleLeft", "IfcPositivePlaneAngleMeasure") { Definition = "Angle of visibility to the left of the access."},
			new SingleValuePropertyType("VisibleAngleRight", "IfcPositivePlaneAngleMeasure") { Definition = "Angle of visibility to the right of the access."} },
				new [] { "IfcAnnotation" });
		yield return new PropertySetInfo("Pset_AnnotationSurveyArea", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AcquisitionMethod", new [] { "GPS", "LASERSCAN_AIRBORNE", "LASERSCAN_GROUND", "SONAR", "THEODOLITE", "NOTKNOWN", "UNSET", "USERDEFINED" } ) { Definition = "The means by which survey data was acquired."},
			new SingleValuePropertyType("AccuracyQualityExpected", "IfcRatioMeasure") { Definition = "A measure of the accuracy quality of survey points as expected expressed in percentage terms."},
			new SingleValuePropertyType("AccuracyQualityObtained", "IfcRatioMeasure") { Definition = "A measure of the accuracy quality of survey points as obtained expressed in percentage terms."} },
				new [] { "IfcAnnotation" });
		yield return new PropertySetInfo("Pset_Asset", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssetAccountingType", new [] { "FIXED", "NONFIXED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of risk from which the type required may be set."},
			new EnumerationPropertyType("AssetInsuranceType", new [] { "PERSONAL", "REAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of insurance rating from which the type required may be set."},
			new EnumerationPropertyType("AssetTaxType", new [] { "CAPITALISED", "EXPENSED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of taxation group from which the type required may be set."},
			new SingleValuePropertyType("AssetStatus", "IfcLabel") { Definition = "Current status or stage in life cycle."},
			new SingleValuePropertyType("AssetUse", "IfcLabel") { Definition = "General use category of the asset"} },
				new [] { "IfcAsset" });
		yield return new PropertySetInfo("Pset_AudioVisualAppliancePHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AudioVolumeHistory", "IfcTimeSeries") { Definition = "Indicates the audio volume level where the integer level corresponds to an entry or interpolation within Pset_AudioVisualApplianceTypeCommon.AudioVolume."},
			new SingleValuePropertyType("MediaContent", "IfcTimeSeries") { Definition = "Indicates the media content storage location, such as URLs to camera footage within particular time periods."},
			new SingleValuePropertyType("MediaSourceHistory", "IfcTimeSeries") { Definition = "Indicates the media source where the identifier corresponds to an entry within the table of available media sources on Pset_AudioVisualApplianceTypeCommon.MediaSource."},
			new SingleValuePropertyType("PowerState", "IfcTimeSeries") { Definition = "Indicates the power state of the device where True is on and False is off."} },
				new [] { "IfcAudioVisualAppliance" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeAmplifier", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AmplifierType", new [] { "FIXED", "VARIABLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of amplifier."},
			new TableValuePropertyType("AudioAmplification", "IfcFrequencyMeasure", "IfcSoundPowerMeasure") { Definition = "Indicates audio amplification frequency ranges."},
			new TableValuePropertyType("AudioMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates audio sound modes and corresponding labels, if applicable."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeCamera", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CameraType", new [] { "AUDIOVIDEO", "PHOTO", "VIDEO", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of camera."},
			new SingleValuePropertyType("IsOutdoors", "IfcBoolean") { Definition = "Indicates if camera is designed to be used outdoors."},
			new SingleValuePropertyType("PanHorizontal", "IfcLengthMeasure") { Definition = "Indicates horizontal range for panning."},
			new SingleValuePropertyType("PanVertical", "IfcLengthMeasure") { Definition = "Indicates vertical range for panning."},
			new SingleValuePropertyType("TiltHorizontal", "IfcPlaneAngleMeasure") { Definition = "Indicates horizontal range for pivoting, where positive values indicate the camera rotating clockwise,"},
			new SingleValuePropertyType("TiltVertical", "IfcPlaneAngleMeasure") { Definition = "Indicates vertical range for pivoting, where 0.0 is level, +90 degrees is looking up, -90 degrees is looking down."},
			new SingleValuePropertyType("VideoResolutionHeight", "IfcInteger") { Definition = "Indicates the number of vertical pixels (the largest native video resolution height)."},
			new SingleValuePropertyType("VideoResolutionWidth", "IfcInteger") { Definition = "Indicates the number of horizontal pixels (the largest native video resolution width)."},
			new SingleValuePropertyType("Zoom", "IfcPositiveLengthMeasure") { Definition = "Indicates the zoom range."},
			new TableValuePropertyType("PanTiltZoomPreset", "IfcIdentifier", "IfcLabel") { Definition = "Indicates pan/tilt/zoom position presets."},
			new TableValuePropertyType("VideoCaptureInterval", "IfcIdentifier", "IfcTimeMeasure") { Definition = "Indicates video frame capture time intervals."},
			new TableValuePropertyType("VideoResolutionMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates video resolution modes."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new TableValuePropertyType("AudioVolume", "IfcInteger", "IfcSoundPowerMeasure") { Definition = "Indicates discrete audio volume levels and corresponding sound power offsets, if applicable.  Missing values may be interpolated."},
			new TableValuePropertyType("MediaSource", "IfcIdentifier", "IfcLabel") { Definition = "Indicates media sources and corresponding names of ports (IfcDistributionPort with FlowDirection=SINK and PredefinedType=AUDIOVISUAL) or aggregated audio/video components (IfcAudioVisualAppliance)."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeDisplay", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DisplayType", new [] { "CRT", "DLP", "LCD", "LED", "PLASMA", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of display."},
			new EnumerationPropertyType("TouchScreen", new [] { "MULTITOUCH", "NONE", "SINGLETOUCH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates touchscreen support."},
			new SingleValuePropertyType("Brightness", "IfcIlluminanceMeasure") { Definition = "Indicates the display brightness."},
			new SingleValuePropertyType("ContrastRatio", "IfcPositiveRatioMeasure") { Definition = "Indicates the display contrast ratio."},
			new SingleValuePropertyType("DisplayHeight", "IfcPositiveLengthMeasure") { Definition = "Indicates the physical height of the screen (only the display surface)."},
			new SingleValuePropertyType("DisplayWidth", "IfcPositiveLengthMeasure") { Definition = "Indicates the physical width of the screen (only the display surface)."},
			new SingleValuePropertyType("NominalSize", "IfcPositiveLengthMeasure") { Definition = "Indicates the diagonal screen size."},
			new SingleValuePropertyType("RefreshRate", "IfcFrequencyMeasure") { Definition = "Indicates the display refresh frequency."},
			new SingleValuePropertyType("VideoResolutionHeight", "IfcInteger") { Definition = "Indicates the number of vertical pixels (the largest native video resolution height)."},
			new SingleValuePropertyType("VideoResolutionWidth", "IfcInteger") { Definition = "Indicates the number of horizontal pixels (the largest native video resolution width)."},
			new TableValuePropertyType("AudioMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates audio sound modes and corresponding labels, if applicable."},
			new TableValuePropertyType("VideoCaptionMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates video closed captioning modes."},
			new TableValuePropertyType("VideoResolutionMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates video resolution modes."},
			new TableValuePropertyType("VideoScaleMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates video scaling modes."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypePlayer", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PlayerType", new [] { "AUDIO", "VIDEO", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of player."},
			new SingleValuePropertyType("PlayerMediaEject", "IfcBoolean") { Definition = "Indicates whether the media can be ejected from the player (if physical media)."},
			new TableValuePropertyType("PlayerMediaFormat", "IfcIdentifier", "IfcLabel") { Definition = "Indicates supported media formats."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeProjector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ProjectorType", new [] { "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of projector."},
			new SingleValuePropertyType("VideoResolutionHeight", "IfcInteger") { Definition = "Indicates the number of vertical pixels (the largest native video resolution height)."},
			new SingleValuePropertyType("VideoResolutionWidth", "IfcInteger") { Definition = "Indicates the number of horizontal pixels (the largest native video resolution width)."},
			new TableValuePropertyType("VideoCaptionMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates video closed captioning modes."},
			new TableValuePropertyType("VideoResolutionMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates video resolution modes."},
			new TableValuePropertyType("VideoScaleMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates video scaling modes."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeRailwayCommunicationTerminal", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RailwayCommunicationTerminalType", new [] { "IP", "LEGACY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of railway communication terminal."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeReceiver", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ReceiverType", new [] { "AUDIO", "AUDIOVIDEO", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of receiver."},
			new TableValuePropertyType("AudioAmplification", "IfcFrequencyMeasure", "IfcRatioMeasure") { Definition = "Indicates audio amplification frequency ranges."},
			new TableValuePropertyType("AudioMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates audio sound modes and corresponding labels, if applicable."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeRecordingEquipment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("StorageCapacity", "IfcInteger") { Definition = "Indicates the total data storage capacity of the device. It is defined by bytes."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeSpeaker", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SpeakerMounting", new [] { "CEILING", "FREESTANDING", "OUTDOOR", "WALL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates how the speaker is designed to be mounted."},
			new EnumerationPropertyType("SpeakerType", new [] { "COAXIAL", "FULLRANGE", "MIDRANGE", "TWEETER", "WOOFER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of speaker."},
			new SingleValuePropertyType("Impedence", "IfcFrequencyMeasure") { Definition = "Indicates the speaker impedence."},
			new TableValuePropertyType("FrequencyResponse", "IfcFrequencyMeasure", "IfcSoundPowerMeasure") { Definition = "Indicates the output over a specified range of frequencies."},
			new TableValuePropertyType("SpeakerDriverSize", "IfcIdentifier", "IfcPositiveLengthMeasure") { Definition = "Indicates the number of drivers and their sizes."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AudioVisualApplianceTypeTuner", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TunerType", new [] { "AUDIO", "VIDEO", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the tuner type."},
			new SingleValuePropertyType("TunerFrequency", "IfcFrequencyMeasure") { Definition = "Indicates the tuner frequencies, if applicable."},
			new TableValuePropertyType("TunerChannel", "IfcIdentifier", "IfcLabel") { Definition = "Indicates the tuner channels, if applicable."},
			new TableValuePropertyType("TunerMode", "IfcIdentifier", "IfcLabel") { Definition = "Indicates the tuner modes (or bands).  For example, 'AnalogCable', 'DigitalAir', 'AM', 'FM'."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Pset_AxleCountingEquipment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AxleCountingEquipmentType", new [] { "EVALUATOR", "WHEELDETECTOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of axle counting equipment."},
			new SingleValuePropertyType("AxleCounterResponseTime", "IfcTimeMeasure") { Definition = "The time that axle counter can detect the axles of locomotive and vehicle."},
			new SingleValuePropertyType("DetectionRange", "IfcPositiveLengthMeasure") { Definition = "The detection range of the equipment."},
			new SingleValuePropertyType("FailureInformation", "IfcText") { Definition = "The information for failure description."},
			new SingleValuePropertyType("ImpactParameter", "IfcAccelerationMeasure") { Definition = "Impact parameter of the equipment."},
			new SingleValuePropertyType("InsulationResistance", "IfcElectricResistanceMeasure") { Definition = "Minimum resistance between one terminal or several terminals connected together and the case or enclosure of a component at specified voltage."},
			new SingleValuePropertyType("MaximumVibration", "IfcFrequencyMeasure") { Definition = "Maximum tolerable vibration level of the device."},
			new SingleValuePropertyType("NominalWeight", "IfcMassMeasure") { Definition = "Nominal weight of the object."},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature range in which the device operates normally."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_BalanceWeightTensionerDesignCriteria", new IPropertyTypeInfo[] {
			new TableValuePropertyType("ReferenceDistanceRopeToPulley", "IfcThermodynamicTemperatureMeasure", "IfcPositiveLengthMeasure") { Definition = "The reference design criteria for distance from the end of the rope to the fixed pulley.It defines the nominal distance in relation to temperature."},
			new TableValuePropertyType("ReferenceDistanceTensionerToGround", "IfcThermodynamicTemperatureMeasure", "IfcPositiveLengthMeasure") { Definition = "The reference design criteria distance from the last tensioner to the ground or the base surface (B value). It defines the nominal distance in relation to temperature."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_BeamCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("Roll", "IfcPlaneAngleMeasure") { Definition = "Rotation against the longitudinal axis.\n\nRelative to the global Z direction for all beams that are non-vertical in regard to the global coordinate system (Profile direction equals global Z is Roll = 0.)The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only.Note: new property in IFC4"},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only."},
			new SingleValuePropertyType("Span", "IfcPositiveLengthMeasure") { Definition = "Clear span for this object.The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcBeam", "IfcBeamType" });
		yield return new PropertySetInfo("Pset_BearingCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DisplacementAccommodated", "IfcBoolean") { Definition = "A list of exactly three boolean values representing an accommodated displacement (value TRUE or 1) or no displacement (value FALSE or 0) on the corresponding axis where the first value represents axis X, second value axis Y and third value axis Z."},
			new SingleValuePropertyType("RotationAccommodated", "IfcBoolean") { Definition = "A list of exactly three boolean values representing an accommodated rotation (value TRUE or 1) or no rotation (value FALSE or 0) about the corresponding axis where the first value represents axis X, second value axis Y and third value axis Z."} },
				new [] { "IfcBearing", "IfcBearingType" });
		yield return new PropertySetInfo("Pset_BerthCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BerthApproach", new [] { "END", "SIDE" } ) { Definition = "How the vessel approaches the berth"},
			new EnumerationPropertyType("BerthMode", new [] { "BOW", "STERN" } ) { Definition = "Orientation of vessel as it approaches berth"},
			new SingleValuePropertyType("AbnormalBerthingFactor", "IfcPositiveRatioMeasure") { Definition = "Risk assessed safety factor"},
			new SingleValuePropertyType("BerthingAngle", "IfcPlaneAngleMeasure") { Definition = "Angle of approach for the vessel to the berth"},
			new SingleValuePropertyType("BerthingVelocity", "IfcLinearVelocityMeasure") { Definition = "Velocity of the vessel as it berths"} },
				new [] { "IfcSpace", "IfcSpaceType" });
		yield return new PropertySetInfo("Pset_BoilerPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AuxiliaryEnergyConsumption", "IfcTimeSeries") { Definition = "Boiler secondary energy source consumption (i.e., the electricity consumed by electrical devices such as fans and pumps)."},
			new SingleValuePropertyType("CombustionChamberTemperature", "IfcTimeSeries") { Definition = "Average combustion chamber temperature."},
			new SingleValuePropertyType("CombustionEfficiency", "IfcTimeSeries") { Definition = "Combustion efficiency under nominal condition."},
			new SingleValuePropertyType("EnergySourceConsumption", "IfcTimeSeries") { Definition = "Energy consumption."},
			new SingleValuePropertyType("Load", "IfcTimeSeries") { Definition = "Boiler real load."},
			new SingleValuePropertyType("OperationalEfficiency", "IfcTimeSeries") { Definition = "Operational efficiency: boiler output divided by total energy input (electrical and fuel)."},
			new SingleValuePropertyType("PartLoadRatio", "IfcTimeSeries") { Definition = "Ratio of the real to the nominal capacity."},
			new SingleValuePropertyType("PrimaryEnergyConsumption", "IfcTimeSeries") { Definition = "Boiler primary energy source consumption (i.e., the fuel consumed for changing the thermodynamic state of the fluid)."},
			new SingleValuePropertyType("WorkingPressureHistory", "IfcTimeSeries") { Definition = "Boiler working pressure."} },
				new [] { "IfcBoiler" });
		yield return new PropertySetInfo("Pset_BoilerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EnergySource", new [] { "COAL", "COAL_PULVERIZED", "ELECTRICITY", "GAS", "OIL", "PROPANE", "WOOD", "WOOD_CHIP", "WOOD_PELLET", "WOOD_PULVERIZED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the energy source or fuel cumbusted."},
			new EnumerationPropertyType("OperatingMode", new [] { "FIXED", "MODULATING", "TWOSTEP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the operating mode of the boiler."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("HeatTransferSurfaceArea", "IfcAreaMeasure") { Definition = "Total heat transfer area of the vessel."},
			new SingleValuePropertyType("IsWaterStorageHeater", "IfcBoolean") { Definition = "This is used to identify if the boiler has storage capacity (TRUE). If FALSE, then there is no storage capacity built into the boiler, such as an instantaneous hot water heater."},
			new SingleValuePropertyType("NominalEnergyConsumption", "IfcPowerMeasure") { Definition = "Nominal fuel consumption rate required to produce the total boiler heat output."},
			new SingleValuePropertyType("NominalPartLoadRatio", "IfcReal") { Definition = "Allowable part load ratio range."},
			new SingleValuePropertyType("OutletTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable outlet temperature of either the water or the steam."},
			new SingleValuePropertyType("PressureRating", "IfcPressureMeasure") { Definition = "Pressure rating of the object.\n\nNominal pressure rating of the boiler as rated by the agency having jurisdiction."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("WaterInletTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable water inlet temperature range."},
			new SingleValuePropertyType("WaterStorageCapacity", "IfcVolumeMeasure") { Definition = "Water storage capacity."},
			new TableValuePropertyType("PartialLoadEfficiencyCurves", "IfcPositiveRatioMeasure", "IfcNormalisedRatioMeasure") { Definition = "Boiler efficiency as a function of the partial load factor; E = f (partialLaodfactor)."} },
				new [] { "IfcBoiler", "IfcBoilerType" });
		yield return new PropertySetInfo("Pset_BoilerTypeSteam", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaximumOutletPressure", "IfcLabel") { Definition = "Maximum steam outlet pressure."},
			new TableValuePropertyType("HeatOutput", "IfcThermodynamicTemperatureMeasure", "IfcEnergyMeasure") { Definition = "Total nominal heat output as listed by the Boiler manufacturer.\n\nFor steam boilers, it is a function of inlet temperature versus steam pressure.  Note: as two variables are used, DefiningValues and DefinedValues are null, and values are stored in IfcTable in the following order: InletTemperature(IfcThermodynamicTemperatureMeasure) and OutletTemperature(IfcThermodynamicTemperatureMeasure) in DefiningValues, and HeatOutput(IfcEnergyMeasure) in DefinedValues. For example, DefiningValues(InletTemp, OutletTemp), DefinedValues(null, HeatOutput). The IfcTable is related to IfcPropertyTableValue using IfcMetric and IfcResourceConstraintRelationship."},
			new TableValuePropertyType("NominalEfficiencyTable", "IfcThermodynamicTemperatureMeasure", "IfcNormalisedRatioMeasure") { Definition = "The nominal efficiency of the boiler as defined by the manufacturer. For steam boilers, a function of inlet temperature versus steam pressure.  Note: as two variables are used, DefiningValues and DefinedValues are null, and values are stored in IfcTable in the following order: InletTemperature(IfcThermodynamicTemperatureMeasure) and OutletTemperature(IfcThermodynamicTemperatureMeasure) in DefiningValues, and NominalEfficiency(IfcNormalisedRatioMeasure) in DefinedValues. For example, DefininfValues(InletTemp, OutletTemp), DefinedValues(null, NominalEfficiency).  The IfcTable is related to IfcPropertyTableValue using IfcMetric and IfcResourceConstraintRelationship."} },
				new [] { "IfcBoiler", "IfcBoilerType" });
		yield return new PropertySetInfo("Pset_BoilerTypeWater", new IPropertyTypeInfo[] {
			new TableValuePropertyType("HeatOutput", "IfcThermodynamicTemperatureMeasure", "IfcEnergyMeasure") { Definition = "Total nominal heat output as listed by the Boiler manufacturer.\n\nFor water boilers, it is a function of inlet versus outlet temperature. For steam boilers, it is a function of inlet temperature versus steam pressure.  Note: as two variables are used, DefiningValues and DefinedValues are null, and values are stored in IfcTable in the following order: InletTemperature(IfcThermodynamicTemperatureMeasure), OutletTemperature(IfcThermodynamicTemperatureMeasure), HeatOutput(IfcEnergyMeasure).  The IfcTable is related to IfcPropertyTableValue using IfcMetric and IfcResourceConstraintRelationship."},
			new TableValuePropertyType("NominalEfficiency", "IfcThermodynamicTemperatureMeasure", "IfcNormalisedRatioMeasure") { Definition = "Nominal object efficiency under nominal conditions.\n\nThe nominal efficiency of the boiler as defined by the manufacturer. For water boilers, a function of inlet versus outlet temperature. Note: as two variables are used, DefiningValues and DefinedValues are null, and values are stored in IfcTable in the following order: InletTemperature(IfcThermodynamicTemperatureMeasure), OutletTemperature(IfcThermodynamicTemperatureMeasure), NominalEfficiency(IfcNormalisedRatioMeasure).  The IfcTable is related to IfcPropertyTableValue using IfcMetric and IfcResourceConstraintRelationship."} },
				new [] { "IfcBoiler", "IfcBoilerType" });
		yield return new PropertySetInfo("Pset_BoreholeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BoreholeState", new [] { "CAP_REPLACED", "CASING_INSTALLED", "CASING_PARTIALLY_REPLACED", "CASING_REPLACED", "CHAMBER_RECONDITIONED", "DECONSTRUCTED", "INSTALLED", "PARTIALLY_DECONSTRUCTED", "PARTIALLY_REFILLED", "RECONDITIONED", "REFILLED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The state the borehole or trial pit has been left in. (boreholeML)."},
			new SingleValuePropertyType("CapDepth", "IfcPositiveLengthMeasure") { Definition = "Depth of cap (boreholeML)."},
			new SingleValuePropertyType("CapMaterial", "IfcLabel") { Definition = "Cap material or 'NOT CAPPED' or 'UNKNOWN' (boreholeML)."},
			new SingleValuePropertyType("FillingDepth", "IfcPositiveLengthMeasure") { Definition = "Depth of filling (boreholeML)."},
			new SingleValuePropertyType("FillingMaterial", "IfcLabel") { Definition = "Filling material or 'NOT FILLED' or 'UNKNOWN' (boreholeML)."},
			new SingleValuePropertyType("GroundwaterDepth", "IfcPositiveLengthMeasure") { Definition = "Depth groundwater encountered (boreholeML)."},
			new SingleValuePropertyType("LiningMaterial", "IfcLabel") { Definition = "Lining material or 'NOT LINED' or 'UNKNOWN' (boreholeML)."},
			new SingleValuePropertyType("LiningThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the lining."} },
				new [] { "IfcBorehole" });
		yield return new PropertySetInfo("Pset_BoundedCourseCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SpreadingRate", "IfcNumericMeasure") { Definition = "The nominal overall mass of material per area covered by the course."} },
				new [] { "IfcCourse", "IfcCourseType" });
		yield return new PropertySetInfo("Pset_BreakwaterCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Elevation", "IfcLengthMeasure") { Definition = "Elevation of the entity"},
			new SingleValuePropertyType("StructuralStyle", "IfcLabel") { Definition = "Structural style of the element"} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_BridgeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("StructureIndicator", new [] { "COATED", "COMPOSITE", "HOMOGENEOUS" } ) { Definition = "The type of bridge structure (composite, coated, homogeneous or other)"} },
				new [] { "IfcBridge" });
		yield return new PropertySetInfo("Pset_BuildingCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BuildingID", "IfcIdentifier") { Definition = "A unique identifier assigned to a building. A temporary identifier is initially assigned at the time of making a planning application. This temporary identifier is changed to a permanent identifier when the building is registered into a statutory buildings and properties database."},
			new SingleValuePropertyType("ConstructionMethod", "IfcLabel") { Definition = "The type of construction action to the object, e.g. new construction, renovation, refurbishment, etc."},
			new SingleValuePropertyType("ElevationOfRefHeight", "IfcLengthMeasure") { Definition = "Elevation above sea level of the reference height used for all storey elevation measures, equals to height 0.0. It is usually the ground floor level."},
			new SingleValuePropertyType("ElevationOfTerrain", "IfcLengthMeasure") { Definition = "Elevation above the minimal terrain level around the foot print of the building, given in elevation above sea level."},
			new SingleValuePropertyType("FireProtectionClass", "IfcLabel") { Definition = "Main fire protection class for the building which is assigned from the fire protection classification table as given by the relevant national building code."},
			new SingleValuePropertyType("GrossPlannedArea", "IfcAreaMeasure") { Definition = "Total planned gross area of the spatial structure element. Used for programming the spatial structure element."},
			new SingleValuePropertyType("IsLandmarked", "IfcLogical") { Definition = "This builing is listed as a historic building (TRUE), or not (FALSE), or unknown."},
			new SingleValuePropertyType("IsPermanentID", "IfcBoolean") { Definition = "Indicates whether the identity assigned to the object is permanent (= TRUE) or temporary (=FALSE)."},
			new SingleValuePropertyType("NetPlannedArea", "IfcAreaMeasure") { Definition = "Total planned net area of the object. Used for programming the object."},
			new SingleValuePropertyType("NumberOfStoreys", "IfcCountMeasure") { Definition = "The number of storeys within a building.\nCaptured for those cases where the IfcBuildingStorey entity is not used. Note that if IfcBuildingStorey is asserted and the number of storeys in a building can be determined from it, then this approach should be used in preference to setting a property for the number of storeys."},
			new SingleValuePropertyType("OccupancyType", "IfcLabel") { Definition = "Occupancy type for this object.\nIt is defined according to the presiding national building code."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SprinklerProtection", "IfcBoolean") { Definition = "Indication whether this object is sprinkler protected (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SprinklerProtectionAutomatic", "IfcBoolean") { Definition = "Indication whether this object has an automatic sprinkler protection (TRUE) or not (FALSE).\nIt should only be given, if the property \"SprinklerProtection\" is set to TRUE."},
			new SingleValuePropertyType("YearOfConstruction", "IfcLabel") { Definition = "Year of construction of this building, including expected year of completion."},
			new SingleValuePropertyType("YearOfLastRefurbishment", "IfcLabel") { Definition = "Year of last major refurbishment, or reconstruction, of the building (applies to reconstruction works)."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_BuildingElementProxyCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcBuildingElementProxy", "IfcBuildingElementProxyType" });
		yield return new PropertySetInfo("Pset_BuildingStoreyCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AboveGround", "IfcLogical") { Definition = "Indication whether this building storey is fully above ground (TRUE), or below ground (FALSE), or partially above and below ground (UNKNOWN) - as in sloped terrain."},
			new SingleValuePropertyType("ElevationOfFFLRelative", "IfcLengthMeasure") { Definition = "Elevation of the top surface of the finished floor level given in elevation above the local zero height. If the level varies and there is no significantly more prominent elevation, then this property may be omitted. In case of any inconsistency with the geometric positioning of the top surface, the geometric representation takes precedence."},
			new SingleValuePropertyType("ElevationOfSSLRelative", "IfcLengthMeasure") { Definition = "Elevation of the top surface of the structural slab level given in elevation above the local zero height. If the level varies and there is no significantly more prominent elevation, then this property may be omitted. In case of any inconsistency with the geometric positioning of the top surface, the geometric representation takes precedence."},
			new SingleValuePropertyType("EntranceLevel", "IfcBoolean") { Definition = "Indication whether this building storey is an entrance level to the building (TRUE), or (FALSE) if otherwise."},
			new SingleValuePropertyType("GrossPlannedArea", "IfcAreaMeasure") { Definition = "Total planned gross area of the spatial structure element. Used for programming the spatial structure element."},
			new SingleValuePropertyType("LoadBearingCapacity", "IfcPlanarForceMeasure") { Definition = "Maximum load bearing capacity of the floor structure throughtout the storey as designed."},
			new SingleValuePropertyType("NetPlannedArea", "IfcAreaMeasure") { Definition = "Total planned net area of the object. Used for programming the object."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SprinklerProtection", "IfcBoolean") { Definition = "Indication whether this object is sprinkler protected (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SprinklerProtectionAutomatic", "IfcBoolean") { Definition = "Indication whether this object has an automatic sprinkler protection (TRUE) or not (FALSE).\nIt should only be given, if the property \"SprinklerProtection\" is set to TRUE."} },
				new [] { "IfcBuildingStorey" });
		yield return new PropertySetInfo("Pset_BuildingSystemCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcBuildingSystem" });
		yield return new PropertySetInfo("Pset_BuildingUse", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MarketCategory", "IfcLabel") { Definition = "Category of use e.g. residential, commercial, recreation etc."},
			new SingleValuePropertyType("MarketSubCategoriesAvailableFuture", "IfcLabel") { Definition = "A list of the sub categories of property that are expected to be available in the future expressed in terms of IfcLabel."},
			new SingleValuePropertyType("MarketSubCategoriesAvailableNow", "IfcLabel") { Definition = "A list of the sub categories of property that are currently available expressed in terms of IfcLabel."},
			new SingleValuePropertyType("MarketSubCategory", "IfcLabel") { Definition = "Subset of category of use e.g. multi-family, 2 bedroom, low rise."},
			new SingleValuePropertyType("NarrativeText", "IfcText") { Definition = "Added information relating to the adjacent building use that is not appropriate to the general descriptive text associated with an entity through the inherited IfcRoot.Description."},
			new SingleValuePropertyType("PlanningControlStatus", "IfcLabel") { Definition = "Label of zoning category or class, or planning control category for the site or facility."},
			new SingleValuePropertyType("RentalRatesInCategoryFuture", "IfcMonetaryMeasure") { Definition = "Range of the cost rates for property expected to be available in the future in the required category."},
			new SingleValuePropertyType("RentalRatesInCategoryNow", "IfcMonetaryMeasure") { Definition = "Range of the cost rates for property currently available in the required category."},
			new SingleValuePropertyType("TenureModesAvailableFuture", "IfcLabel") { Definition = "A list of the tenure modes that are expected to be available in the future expressed in terms of IfcLabel."},
			new SingleValuePropertyType("TenureModesAvailableNow", "IfcLabel") { Definition = "A list of the tenure modes that are currently available expressed in terms of IfcLabel."},
			new SingleValuePropertyType("VacancyRateInCategoryFuture", "IfcPositiveRatioMeasure") { Definition = "Percentage of vacancy found in the particular category expected in the future."},
			new SingleValuePropertyType("VacancyRateInCategoryNow", "IfcPositiveRatioMeasure") { Definition = "Percentage of vacancy found in the particular category currently."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_BuildingUseAdjacent", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MarketCategory", "IfcLabel") { Definition = "Category of use e.g. residential, commercial, recreation etc."},
			new SingleValuePropertyType("MarketSubCategory", "IfcLabel") { Definition = "Subset of category of use e.g. multi-family, 2 bedroom, low rise."},
			new SingleValuePropertyType("NarrativeText", "IfcText") { Definition = "Added information relating to the adjacent building use that is not appropriate to the general descriptive text associated with an entity through the inherited IfcRoot.Description."},
			new SingleValuePropertyType("PlanningControlStatus", "IfcLabel") { Definition = "Label of zoning category or class, or planning control category for the site or facility."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_BuiltSystemRailwayLine", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LineCharacteristic", new [] { "ENTERDEPOT", "EXITDEPOT", "FREIGHT", "PASSENGER", "PASSENGERANDFREIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the characteristic of the line."},
			new SingleValuePropertyType("IsElectrified", "IfcBoolean") { Definition = "Indicates whether the track system is electrified or not."},
			new SingleValuePropertyType("LineID", "IfcIdentifier") { Definition = "The unique identifier of the line."} },
				new [] { "IfcBuiltSystem" });
		yield return new PropertySetInfo("Pset_BuiltSystemRailwayTrack", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TrackCharacteristic", new [] { "FUNICULAR", "NORMAL", "RACK", "RIGIDOVERHEAD", "THIRDRAIL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the characteristic of the track."},
			new EnumerationPropertyType("TrackUsage", new [] { "CATCHSIDING", "CLASSIFICATIONTRACK", "CONNECTINGLINE", "FREIGHTTRACK", "LOCOMOTIVEHOLDTRACK", "LOCOMOTIVERUNNINGTRACK", "LOCOMOTIVESERVICETRACK", "MAINTRACK", "MULTIPLEUNITRUNNINGTRACK", "RECEIVINGDEPARTURETRACK", "REFUGESIDING", "REPAIRSIDING", "ROLLINGFORBIDDENTRACK", "ROLLINGTRACK", "ROUNDABOUTLINE", "STORAGETRACK", "SWITCHINGLEAD", "UNTWININGLINE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The expected primary usage of the track."},
			new SingleValuePropertyType("TrackID", "IfcIdentifier") { Definition = "The unique identification number of the track."},
			new SingleValuePropertyType("TrackNumber", "IfcIdentifier") { Definition = "Indicates the local identification number of the track."} },
				new [] { "IfcBuiltSystem" });
		yield return new PropertySetInfo("Pset_BurnerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EnergySource", new [] { "COAL", "COAL_PULVERIZED", "ELECTRICITY", "GAS", "OIL", "PROPANE", "WOOD", "WOOD_CHIP", "WOOD_PELLET", "WOOD_PULVERIZED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the energy source or fuel cumbusted."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcBurner", "IfcBurnerType" });
		yield return new PropertySetInfo("Pset_CableCarrierFittingTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcCableCarrierFitting", "IfcCableCarrierFittingType" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCableLadderSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("LadderConfiguration", "IfcText") { Definition = "Description of the configuration of the ladder structure used."} },
				new [] { "IfcCableCarrierSegment", "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCableTraySegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasCover", "IfcBoolean") { Definition = "Indication of whether the cable tray has a cover (=TRUE) or not (= FALSE). By default, this value should be set to FALSE.."} },
				new [] { "IfcCableCarrierSegment", "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCableTrunkingSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfCompartments", "IfcCountMeasure") { Definition = "The number of separate internal compartments within the trunking."} },
				new [] { "IfcCableCarrierSegment", "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCatenaryWire", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ACResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under AC."},
			new SingleValuePropertyType("CatenaryWireType", "IfcLabel") { Definition = "Indicate the type of Catenary wire."},
			new SingleValuePropertyType("CurrentCarryingCapacity", "IfcElectricCurrentMeasure") { Definition = "Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a  specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature."},
			new SingleValuePropertyType("DCResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under direct current and 20 degrees centigrade."},
			new SingleValuePropertyType("LayRatio", "IfcPositiveRatioMeasure") { Definition = "The ratio between lay length and the diameter of the single conductor."},
			new SingleValuePropertyType("MassPerLength", "IfcMassPerLengthMeasure") { Definition = "Mass per length, i.e. mass of a beam with a unit length of extrusion. For example measured in kg/m."},
			new SingleValuePropertyType("MechanicalTension", "IfcForceMeasure") { Definition = "Nominal value of mechanical force applied to a flow segment."},
			new SingleValuePropertyType("PhysicalDescriptionReference", "IfcExternalReference") { Definition = "Physical description as external reference of the equipment, including e.g.weight, shape, model, length, height, diameter."},
			new SingleValuePropertyType("StrandingMethod", "IfcLabel") { Definition = "Specifies the method used to strand the cable. Stranding is the process where a particular number of stranding elements are joined together while winding them round a common axis."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("ThermalExpansionCoefficient", "IfcThermalExpansionCoefficientMeasure") { Definition = "Quantity characterizing the variation with thermodynamic temperature T of the distance l between two points of a body, under given conditions (IEC 113-04-27). The ratio is defined per Kelvin."},
			new SingleValuePropertyType("UltimateTensileStrength", "IfcForceMeasure") { Definition = "Indicates the maximum stress that a material or element can withstand before breaking while being stretched or pulled."},
			new SingleValuePropertyType("YoungModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the Young's modulus of elasticity of the material."} },
				new [] { "IfcCableCarrierSegment", "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcCableCarrierSegment", "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeConduitSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConduitShapeType", new [] { "CIRCULAR", "OVAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The shape of the conduit segment."},
			new SingleValuePropertyType("IsRigid", "IfcBoolean") { Definition = "Indication of whether the conduit is rigid (= TRUE) or flexible (= FALSE)."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal diameter or width of the object."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcCableCarrierSegment", "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableCarrierSegmentTypeDropper", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("CurrentCarryingCapacity", "IfcElectricCurrentMeasure") { Definition = "Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a  specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature."},
			new SingleValuePropertyType("IsAdjustable", "IfcBoolean") { Definition = "Indicates whether the element is adjustable or not."},
			new SingleValuePropertyType("IsCurrentCarrying", "IfcBoolean") { Definition = "To indicate whether the current will go through the dropper."},
			new SingleValuePropertyType("IsRigid", "IfcBoolean") { Definition = "Indication of whether the conduit is rigid (= TRUE) or flexible (= FALSE)."},
			new SingleValuePropertyType("NominalLoad", "IfcForceMeasure") { Definition = "The nominal load that a component can support."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("UltimateTensileStrength", "IfcForceMeasure") { Definition = "Indicates the maximum stress that a material or element can withstand before breaking while being stretched or pulled."} },
				new [] { "IfcCableCarrierSegment", "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Pset_CableFittingTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcCableFitting", "IfcCableFittingType" });
		yield return new PropertySetInfo("Pset_CableFittingTypeExit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GroundResistance", "IfcElectricResistanceMeasure") { Definition = "The soil or ground resistance to electrical current from the cable fitting."} },
				new [] { "IfcCableFitting", "IfcCableFittingType" });
		yield return new PropertySetInfo("Pset_CableFittingTypeFanout", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfTubes", "IfcCountMeasure") { Definition = "Number of fiber tubes."},
			new SingleValuePropertyType("TubeDiameter", "IfcPositiveLengthMeasure") { Definition = "Indicates the diameter of the fiber tubes that are used in the fan out."} },
				new [] { "IfcCableFitting", "IfcCableFittingType" });
		yield return new PropertySetInfo("Pset_CableSegmentConnector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConnectorAGender", new [] { "FEMALE", "MALE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the gender of A-end connector."},
			new EnumerationPropertyType("ConnectorBGender", new [] { "FEMALE", "MALE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the gender of B-end connector."},
			new SingleValuePropertyType("ConnectorAColour", "IfcLabel") { Definition = "Indicates the colour A- end of connector."},
			new SingleValuePropertyType("ConnectorAType", "IfcLabel") { Definition = "Indicates the type of A-end connector."},
			new SingleValuePropertyType("ConnectorBColour", "IfcLabel") { Definition = "Indicates the colour B- end of connector."},
			new SingleValuePropertyType("ConnectorBType", "IfcLabel") { Definition = "Indicates the type of B-end connector."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentOccurenceFiberSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InUse", "IfcBoolean") { Definition = "Indicates whether the fiber has been assigned to some specific use."} },
				new [] { "IfcCableSegment" });
		yield return new PropertySetInfo("Pset_CableSegmentOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("InstallationMethodFlagEnum", new [] { "BELOWCEILING", "INDUCT", "INSOIL", "ONWALL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Special installation conditions relating to particular types of installation based on IEC60364-5-52:2001 reference installation methods C and D."},
			new EnumerationPropertyType("MountingMethod", new [] { "LADDER", "PERFORATEDTRAY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The method of mounting cable segment occurrences on a cable carrier occurrence from which the method required can be selected. This is for the purpose of carrying out 'worst case' cable sizing calculations and may be a conceptual requirement rather than a statement of the physical occurrences of cable and carrier segments."},
			new SingleValuePropertyType("CarrierStackNumber", "IfcInteger") { Definition = "Number of carrier segments (tray, ladder etc.) that are vertically stacked (vertical is measured as the z-axis of the local coordinate system of the carrier segment)."},
			new SingleValuePropertyType("CurrentCarryingCapacity", "IfcElectricCurrentMeasure") { Definition = "Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a  specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature."},
			new SingleValuePropertyType("DesignAmbientTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The highest and lowest local ambient temperature likely to be encountered."},
			new SingleValuePropertyType("DistanceBetweenParallelCircuits", "IfcLengthMeasure") { Definition = "Distance measured between parallel circuits."},
			new SingleValuePropertyType("InstallationMethod", "IfcLabel") { Definition = "Method of installation of cable/conductor. Installation methods are typically defined by reference in standards such as IEC 60364-5-52, table 52A-1 or BS7671 Appendix 4 Table 4A1 etc. Selection of the value to be used should be determined from such a standard according to local usage."},
			new SingleValuePropertyType("IsHorizontalCable", "IfcBoolean") { Definition = "Indication of whether the cable occurrences are mounted horizontally (= TRUE) or vertically (= FALSE)."},
			new SingleValuePropertyType("IsMountedFlatCable", "IfcBoolean") { Definition = "Indication of whether the cable occurrences are mounted flat (= TRUE) or in a trefoil pattern (= FALSE)."},
			new SingleValuePropertyType("MaximumCableLength", "IfcLengthMeasure") { Definition = "Maximum cable length based on voltagedrop. NOTE: This value may also be specified as a constraint within an IFC model if required but is included within the property set at this stage pending implementation of the required capabilities within software applications."},
			new SingleValuePropertyType("NumberOfParallelCircuits", "IfcCountMeasure") { Definition = "Number of parallel circuits."},
			new SingleValuePropertyType("PowerLoss", "IfcPowerMeasure") { Definition = "The power loss in [W].\n\nTotal loss of power across this cable."},
			new SingleValuePropertyType("SequentialCode", "IfcLabel") { Definition = "Indicates the sequential code of the cable or wire."},
			new SingleValuePropertyType("SoilConductivity", "IfcThermalConductivityMeasure") { Definition = "Thermal conductivity of soil. Generally, within standards such as IEC 60364-5-52, table 52A-16, the resistivity of soil is required (measured in [SI] units of degK.m /W). This is the reciprocal of the conductivity value and needs to be calculated accordingly."},
			new SingleValuePropertyType("UserCorrectionFactor", "IfcReal") { Definition = "An arbitrary correction factor that may be applied by the user."} },
				new [] { "IfcCableSegment" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeBusBarSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("InsulationMethod", new [] { "LONGRODINSULATOR", "PININSULATOR", "POSTINSULATOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The method used to insulate."},
			new SingleValuePropertyType("ACResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under AC."},
			new SingleValuePropertyType("CrossSectionalArea", "IfcAreaMeasure") { Definition = "Cross section area of the phase(s) lead(s)."},
			new SingleValuePropertyType("CurrentCarryingCapacity", "IfcElectricCurrentMeasure") { Definition = "Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a  specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature."},
			new SingleValuePropertyType("DCResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under direct current and 20 degrees centigrade."},
			new SingleValuePropertyType("IsHorizontalBusbar", "IfcBoolean") { Definition = "Indication of whether the busbar occurrences are routed horizontally (= TRUE) or vertically (= FALSE)."},
			new SingleValuePropertyType("MassPerLength", "IfcMassPerLengthMeasure") { Definition = "Mass per length, i.e. mass of a beam with a unit length of extrusion. For example measured in kg/m."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured."},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature range in which the device operates normally.\n\nAllowable operation ambient air temperature range."},
			new SingleValuePropertyType("OverallDiameter", "IfcPositiveLengthMeasure") { Definition = "The overall diameter of a object."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("ThermalExpansionCoefficient", "IfcThermalExpansionCoefficientMeasure") { Definition = "Quantity characterizing the variation with thermodynamic temperature T of the distance l between two points of a body, under given conditions (IEC 113-04-27). The ratio is defined per Kelvin."},
			new SingleValuePropertyType("UltimateTensileStrength", "IfcForceMeasure") { Definition = "Indicates the maximum stress that a material or element can withstand before breaking while being stretched or pulled."},
			new SingleValuePropertyType("YoungModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the Young's modulus of elasticity of the material."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeCableSegment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ACResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under AC."},
			new SingleValuePropertyType("CurrentCarryingCapacity", "IfcElectricCurrentMeasure") { Definition = "Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a  specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature."},
			new SingleValuePropertyType("DCResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under direct current and 20 degrees centigrade."},
			new SingleValuePropertyType("FunctionReliable", "IfcBoolean") { Definition = "Element (such as cable, bus, core) maintain given properties/functions over a given (tested) time and conditions. According to IEC standard."},
			new SingleValuePropertyType("HalogenProof", "IfcBoolean") { Definition = "Produces small amount of smoke and irritating Deaerator/Gas."},
			new SingleValuePropertyType("HasProtectiveEarth", "IfcBoolean") { Definition = "Indicates whether the object has a protective earth connection (=TRUE) or not (= FALSE).\n\nOne core has protective earth marked insulation, Yellow/Green."},
			new SingleValuePropertyType("InsulationVoltage", "IfcElectricVoltageMeasure") { Definition = "The insulation voltage.\n\nIt indicates the wire-to-ground (metal sheath) insulation voltage or the insulation voltage between the wires."},
			new SingleValuePropertyType("MassPerLength", "IfcMassPerLengthMeasure") { Definition = "Mass per length, i.e. mass of a beam with a unit length of extrusion. For example measured in kg/m."},
			new SingleValuePropertyType("MaximumBendingRadius", "IfcPositiveLengthMeasure") { Definition = "The maximum bending radius that the cable could withstand."},
			new SingleValuePropertyType("MaximumCurrent", "IfcElectricCurrentMeasure") { Definition = "The maximum allowed current that a device is certified to handle."},
			new SingleValuePropertyType("MaximumOperatingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The maximum temperature at which a cable or bus is certified to operate."},
			new SingleValuePropertyType("MaximumShortCircuitTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The maximum short circuit temperature at which a cable or bus is certified to operate."},
			new SingleValuePropertyType("NumberOfCores", "IfcCountMeasure") { Definition = "The number of cores."},
			new SingleValuePropertyType("NumberOfWires", "IfcCountMeasure") { Definition = "The number of wires used in the element."},
			new SingleValuePropertyType("OverallDiameter", "IfcPositiveLengthMeasure") { Definition = "The overall diameter of a object."},
			new SingleValuePropertyType("RatedTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The range of allowed temperature that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("ScreenDiameter", "IfcPositiveLengthMeasure") { Definition = "The diameter of the screen around an object (if present)."},
			new SingleValuePropertyType("SelfExtinguishing60332_1", "IfcBoolean") { Definition = "Self Extinguishing cable/core according to IEC 60332.1."},
			new SingleValuePropertyType("SelfExtinguishing60332_3", "IfcBoolean") { Definition = "Self Extinguishing cable/core according to IEC 60332.3."},
			new SingleValuePropertyType("SpecialConstruction", "IfcLabel") { Definition = "Special construction capabilities like self-supporting, flat devidable cable or bus flat non devidable cable or bus supporting elements inside (steal, textile, concentric conductor). Note that materials used should be agreed between exchange participants before use."},
			new SingleValuePropertyType("Standard", "IfcLabel") { Definition = "The designation of the standard applicable for the definition of the object used."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object\n\nWeight of cable kg/km."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeConductorSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConductorMaterial", new [] { "ALUMINIUM", "COPPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of material from which the conductor is constructed."},
			new EnumerationPropertyType("ConductorShape", new [] { "CIRCULARCONDUCTOR", "HELICALCONDUCTOR", "RECTANGULARCONDUCTOR", "SECTORCONDUCTOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indication of the shape of the conductor."},
			new EnumerationPropertyType("Construction", new [] { "FLEXIBLESTRANDEDCONDUCTOR", "SOLIDCONDUCTOR", "STRANDEDCONDUCTOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Purpose of informing on how the vonductor is constructed (interwined or solid). I.e. Solid (IEV 461-01-06), stranded (IEV 461-01-07), solid-/finestranded(IEV 461-01-11) (not flexible/flexible)."},
			new EnumerationPropertyType("Function", new [] { "LINE", "NEUTRAL", "PROTECTIVEEARTH", "PROTECTIVEEARTHNEUTRAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of function for which the conductor is intended."},
			new SingleValuePropertyType("ACResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under AC."},
			new SingleValuePropertyType("CrossSectionalArea", "IfcAreaMeasure") { Definition = "Cross section area of the phase(s) lead(s)."},
			new SingleValuePropertyType("CurrentCarryingCapacity", "IfcElectricCurrentMeasure") { Definition = "Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a  specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature."},
			new SingleValuePropertyType("DCResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under direct current and 20 degrees centigrade."},
			new SingleValuePropertyType("MassPerLength", "IfcMassPerLengthMeasure") { Definition = "Mass per length, i.e. mass of a beam with a unit length of extrusion. For example measured in kg/m."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured."},
			new SingleValuePropertyType("NumberOfCores", "IfcCountMeasure") { Definition = "The number of cores."},
			new SingleValuePropertyType("OverallDiameter", "IfcPositiveLengthMeasure") { Definition = "The overall diameter of a object."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("ThermalExpansionCoefficient", "IfcThermalExpansionCoefficientMeasure") { Definition = "Quantity characterizing the variation with thermodynamic temperature T of the distance l between two points of a body, under given conditions (IEC 113-04-27). The ratio is defined per Kelvin."},
			new SingleValuePropertyType("UltimateTensileStrength", "IfcForceMeasure") { Definition = "Indicates the maximum stress that a material or element can withstand before breaking while being stretched or pulled."},
			new SingleValuePropertyType("YoungModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the Young's modulus of elasticity of the material."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeContactWire", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ACResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under AC."},
			new SingleValuePropertyType("CrossSectionalArea", "IfcAreaMeasure") { Definition = "Cross section area of the phase(s) lead(s)."},
			new SingleValuePropertyType("CurrentCarryingCapacity", "IfcElectricCurrentMeasure") { Definition = "Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a  specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature."},
			new SingleValuePropertyType("DCResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under direct current and 20 degrees centigrade."},
			new SingleValuePropertyType("MassPerLength", "IfcMassPerLengthMeasure") { Definition = "Mass per length, i.e. mass of a beam with a unit length of extrusion. For example measured in kg/m."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("ThermalExpansionCoefficient", "IfcThermalExpansionCoefficientMeasure") { Definition = "Quantity characterizing the variation with thermodynamic temperature T of the distance l between two points of a body, under given conditions (IEC 113-04-27). The ratio is defined per Kelvin."},
			new SingleValuePropertyType("TorsionalStrength", "IfcPressureMeasure") { Definition = "Shear strength in torsion."},
			new SingleValuePropertyType("YoungModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the Young's modulus of elasticity of the material."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeCoreSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SheathColours", new [] { "BLACK", "BLUE", "BROWN", "GOLD", "GREEN", "GREENANDYELLOW", "GREY", "ORANGE", "PINK", "RED", "SILVER", "TURQUOISE", "VIOLET", "WHITE", "YELLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Colour of the core (derived from IEC 60757). Note that the combined color 'GreenAndYellow' shall be used only as Protective Earth (PE) conductors according to the requirements of IEC 60446."},
			new SingleValuePropertyType("ACResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under AC."},
			new SingleValuePropertyType("CoreIdentifier", "IfcIdentifier") { Definition = "The core identification used  Identifiers may be used such as by color (Black, Brown, Grey) or by number (1, 2, 3) or by IEC phase reference (L1, L2, L3) etc."},
			new SingleValuePropertyType("CurrentCarryingCapacity", "IfcElectricCurrentMeasure") { Definition = "Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a  specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature."},
			new SingleValuePropertyType("DCResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under direct current and 20 degrees centigrade."},
			new SingleValuePropertyType("FunctionReliable", "IfcBoolean") { Definition = "Element (such as cable, bus, core) maintain given properties/functions over a given (tested) time and conditions. According to IEC standard."},
			new SingleValuePropertyType("HalogenProof", "IfcBoolean") { Definition = "Produces small amount of smoke and irritating Deaerator/Gas."},
			new SingleValuePropertyType("LayRatio", "IfcPositiveRatioMeasure") { Definition = "The ratio between lay length and the diameter of the single conductor."},
			new SingleValuePropertyType("MassPerLength", "IfcMassPerLengthMeasure") { Definition = "Mass per length, i.e. mass of a beam with a unit length of extrusion. For example measured in kg/m."},
			new SingleValuePropertyType("OverallDiameter", "IfcPositiveLengthMeasure") { Definition = "The overall diameter of a object.\n\nThe overall diameter of a core (maximum space used)."},
			new SingleValuePropertyType("RatedTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The range of allowed temperature that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("ScreenDiameter", "IfcPositiveLengthMeasure") { Definition = "The diameter of the screen around an object (if present)."},
			new SingleValuePropertyType("SelfExtinguishing60332_1", "IfcBoolean") { Definition = "Self Extinguishing cable/core according to IEC 60332.1."},
			new SingleValuePropertyType("SelfExtinguishing60332_3", "IfcBoolean") { Definition = "Self Extinguishing cable/core according to IEC 60332.3."},
			new SingleValuePropertyType("Standard", "IfcLabel") { Definition = "The designation of the standard applicable for the definition of the object used."},
			new SingleValuePropertyType("StrandingMethod", "IfcLabel") { Definition = "Specifies the method used to strand the cable. Stranding is the process where a particular number of stranding elements are joined together while winding them round a common axis."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("ThermalExpansionCoefficient", "IfcThermalExpansionCoefficientMeasure") { Definition = "Quantity characterizing the variation with thermodynamic temperature T of the distance l between two points of a body, under given conditions (IEC 113-04-27). The ratio is defined per Kelvin."},
			new SingleValuePropertyType("UltimateTensileStrength", "IfcForceMeasure") { Definition = "Indicates the maximum stress that a material or element can withstand before breaking while being stretched or pulled."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object\n\nWeight of core kg/km."},
			new SingleValuePropertyType("YoungModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the Young's modulus of elasticity of the material."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeEarthingConductor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ResistanceToGround", "IfcElectricResistanceMeasure") { Definition = "The resistance through earthing conductor to the ground. Real part of the impedance to earth [SOURCE IEC: 195-01-18]"} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeFiberSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FiberColour", new [] { "AQUA", "BLACK", "BLUE", "BROWN", "GREEN", "ORANGE", "RED", "ROSE", "SLATE", "VIOLET", "WHITE", "YELLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the colour of a single fiber."},
			new EnumerationPropertyType("FiberType", new [] { "BEND_INSENSITIVEFIBER", "CUTOFFSHIFTEDFIBER", "DISPERSIONSHIFTEDFIBER", "LOWWATERPEAKFIBER", "NON_ZERODISPERSIONSHIFTEDFIBER", "OM1", "OM2", "OM3", "OM4", "OM5", "STANDARDSINGLEMODEFIBER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of the single fiber."},
			new SingleValuePropertyType("HasTightJacket", "IfcBoolean") { Definition = "Indicates whether the fiber has a tight jacket or not."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeFiberTubeSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FiberTubeColour", new [] { "AQUA", "BLACK", "BLUE", "BROWN", "GREEN", "ORANGE", "RED", "ROSE", "SLATE", "VIOLET", "WHITE", "YELLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the colour of a single fiber tube."},
			new SingleValuePropertyType("NumberOfFibers", "IfcCountMeasure") { Definition = "Indicates the number of fibers in the single tube or cable."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeOpticalCableSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FiberMode", new [] { "MULTIMODE", "SINGLEMODE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the fiber mode."},
			new EnumerationPropertyType("OpticalCableStructure", new [] { "BREAKOUT", "LOOSETUBE", "PATCHCORD", "PIGTAIL", "TIGHTBUFFERED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Distinguishes between different structures of an optical fiber cable."},
			new SingleValuePropertyType("NumberOfFibers", "IfcCountMeasure") { Definition = "Indicates the number of fibers in the single tube or cable."},
			new SingleValuePropertyType("NumberOfMultiModeFibers", "IfcCountMeasure") { Definition = "Total number of multi-mode fibers in the optical fiber cable."},
			new SingleValuePropertyType("NumberOfSingleModeFibers", "IfcCountMeasure") { Definition = "Total number of single-mode fibers in the optical fiber cable."},
			new SingleValuePropertyType("NumberOfTubes", "IfcCountMeasure") { Definition = "Number of fiber tubes."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeStitchWire", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("MechanicalTension", "IfcForceMeasure") { Definition = "Nominal value of mechanical force applied to a flow segment."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("UltimateTensileStrength", "IfcForceMeasure") { Definition = "Indicates the maximum stress that a material or element can withstand before breaking while being stretched or pulled."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CableSegmentTypeWirePairSegment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("WirePairType", new [] { "COAXIAL", "TWISTED", "UNTWISTED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of wire pair, i.e., twisted, untwisted or coaxial pair."},
			new SingleValuePropertyType("CharacteristicImpedance", "IfcElectricResistanceMeasure") { Definition = "A quantity defined for a mode of propagation at a given frequency in a specific uniform transmission line or uniform waveguide by one of the three following relations:\nZ1 = S/ |I|2\nZ2 = |U|2 / S\nZ3 = U / I\nwhere Z is the complex characteristic impedance, S the complex power and U and I are the values, usually complex, respectively of a voltage and a current conventionally defined for each type of mode by analogy with transmission line equations."},
			new SingleValuePropertyType("ConductorDiameter", "IfcPositiveLengthMeasure") { Definition = "Indicates the conductor diameter. It is only used for twisted and untwisted wire pair."},
			new SingleValuePropertyType("CoreConductorDiameter", "IfcPositiveLengthMeasure") { Definition = "Indicates the core conductor diameter. It is only used for coaxial wire pair."},
			new SingleValuePropertyType("JacketColour", "IfcLabel") { Definition = "Indicates the colour of the cable or fitting jacket."},
			new SingleValuePropertyType("ShieldConductorDiameter", "IfcPositiveLengthMeasure") { Definition = "Indicates the shielded conductor diameter. It is only used for coaxial wire pair."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CargoCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AdditionalProcessing", new [] { "INSPECTION", "ISOLATION", "NONE", "TARIFFS" } ) { Definition = "Any additional or special processing requirements on the associated cargo."},
			new EnumerationPropertyType("ProcessDirection", new [] { "EXPORT", "IMPORT", "TRANSFER" } ) { Definition = "The direction of flow of the cargo within the process."},
			new EnumerationPropertyType("ProcessItem", new [] { "BARREL", "CGT", "PASSENGER", "TEU", "TONNE", "VEHICLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of item (and its measurement method) being modelled within a process. This can be cargo, passengers or vehicles that pass through the system."} },
				new [] { "IfcVehicle", "IfcVehicleType" });
		yield return new PropertySetInfo("Pset_CessBetweenRails", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CheckRailType", new [] { "TYPE_33C1", "TYPE_40C1", "TYPE_47C1", "TYPE_CR3_60U", "TYPE_R260", "TYPE_R320CR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of the check rail. Check rail types enumerated in this property are defined based on EN 13674."},
			new EnumerationPropertyType("JointRelativePosition", new [] { "LEFT", "MIDDLE", "RIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the relative position of the joint, which lies in the left or right rail or in the middle, or in combination. The left rail is to the left as facing in the direction of increasing stationing values, and the right rail is to the right."},
			new EnumerationPropertyType("UsagePurpose", new [] { "MAINTENANCE", "RESCUESERVICES", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The purpose of usage of the cess between rails, e.g. maintenance, rescue services."},
			new SingleValuePropertyType("LoadCapacity", "IfcForceMeasure") { Definition = "Indicates the highest permissible load capacity."} },
				new [] { "IfcSlab", "IfcSlabType" });
		yield return new PropertySetInfo("Pset_ChillerPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Capacity", "IfcTimeSeries") { Definition = "The capacity of the element.\n\nThe product of the ideal capacity and the overall volumetric efficiency of the compressor."},
			new SingleValuePropertyType("CoefficientOfPerformance", "IfcTimeSeries") { Definition = "The Coefficient of performance (COP) is the ratio of heat removed to energy input.\nThe energy input may be obtained by multiplying\nPset_DistributionPortPHistoryGas.FlowRate on the 'Fuel' port of the IfcChiller by Pset_MaterialFuel.LowerHeatingValue.\nThe IfcDistributionPort for fuel has an associated IfcMaterial with fuel properties and is assigned to an IfcPerformanceHistory object nested within this IfcPerformanceHistory object."},
			new SingleValuePropertyType("EnergyEfficiencyRatio", "IfcTimeSeries") { Definition = "Energy efficiency ratio (EER).\n\nRatio of net cooling capacity to the total input rate of electric power applied.  By definition, the units are BTU/hour per Watt.\nThe input electric power may be obtained from Pset_DistributionPortPHistoryElectrical.RealPower on the 'Power' port of the IfcChiller."} },
				new [] { "IfcChiller" });
		yield return new PropertySetInfo("Pset_ChillerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ChillerCapacity", "IfcPowerMeasure") { Definition = "Nominal cooling capacity of chiller at standardized conditions as defined by the agency having jurisdiction."},
			new SingleValuePropertyType("NominalCondensingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Chiller condensing temperature."},
			new SingleValuePropertyType("NominalEfficiency", "IfcPositiveRatioMeasure") { Definition = "Nominal object efficiency under nominal conditions."},
			new SingleValuePropertyType("NominalEvaporatingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Chiller evaporating temperature."},
			new SingleValuePropertyType("NominalHeatRejectionRate", "IfcPowerMeasure") { Definition = "Sum of the refrigeration effect and the heat equivalent of the power input to the compressor."},
			new SingleValuePropertyType("NominalPowerConsumption", "IfcPowerMeasure") { Definition = "Nominal total power consumption."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new TableValuePropertyType("CapacityCurve", "IfcThermodynamicTemperatureMeasure", "IfcPowerMeasure") { Definition = "Chiller cooling capacity is a function of condensing temperature and evaporating temperature, data is in table form, Capacity = f (TempCon, TempEvp), capacity = a1+b1*Tei+c1*Tei\\^2+d1*Tci+e1*Tci\\^2+f1*Tei*Tci.\nThis table uses multiple input variables; to represent, both DefiningValues and DefinedValues lists are null and IfcTable is attached using IfcResourceConstraintRelationship and IfcMetric.  Columns are specified in the following order:\n1.IfcPowerMeasure:Capacity\n2.IfcThermodynamicTemperatureMeasure:CondensingTemperature\n3.IfcThermodynamicTemperatureMeasure:EvaporatingTemperature"},
			new TableValuePropertyType("CoefficientOfPerformanceCurve", "IfcThermodynamicTemperatureMeasure", "IfcReal") { Definition = "Chiller coefficient of performance (COP) is function of condensing temperature and evaporating temperature, data is in table form, COP= f (TempCon, TempEvp), COP = a2+b2*Tei+c2*Tei\\^2+d2*Tci+e2*Tci\\^2+f2*Tei*Tci.\nThis table uses multiple input variables; to represent, both DefiningValues and DefinedValues lists are null and IfcTable is attached using IfcResourceConstraintRelationship and IfcMetric.  Columns are specified in the following order:\n1.IfcPositiveRatioMeasure:CoefficientOfPerformance\n2.IfcThermodynamicTemperatureMeasure:CondensingTemperature\n3.IfcThermodynamicTemperatureMeasure:EvaporatingTemperature"},
			new TableValuePropertyType("FullLoadRatioCurve", "IfcPositiveRatioMeasure", "IfcNormalisedRatioMeasure") { Definition = "Ratio of actual power to full load power as a quadratic function of part load, at certain condensing and evaporating temperature, FracFullLoadPower = f ( PartLoadRatio)."} },
				new [] { "IfcChiller", "IfcChillerType" });
		yield return new PropertySetInfo("Pset_ChimneyCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("NumberOfDrafts", "IfcCountMeasure") { Definition = "Number of the chimney drafts, continuous holes in the chimney through which the air passes, within the single chimney."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcChimney", "IfcChimneyType" });
		yield return new PropertySetInfo("Pset_CivilElementCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcCivilElement", "IfcCivilElementType" });
		yield return new PropertySetInfo("Pset_CoaxialCable", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CharacteristicImpedance", "IfcElectricResistanceMeasure") { Definition = "A quantity defined for a mode of propagation at a given frequency in a specific uniform transmission line or uniform waveguide by one of the three following relations:\nZ1 = S/ |I|2\nZ2 = |U|2 / S\nZ3 = U / I\nwhere Z is the complex characteristic impedance, S the complex power and U and I are the values, usually complex, respectively of a voltage and a current conventionally defined for each type of mode by analogy with transmission line equations."},
			new SingleValuePropertyType("CouplingLoss", "IfcNormalisedRatioMeasure") { Definition = "Indicates the coupling loss of a leaky coaxial cable (radiating cable)."},
			new SingleValuePropertyType("MaximumTransmissionAttenuation", "IfcSoundPowerLevelMeasure") { Definition = "Indicates the Maximum transmission attenuation of feeder."},
			new SingleValuePropertyType("NumberOfCoaxialPairs", "IfcCountMeasure") { Definition = "Indicates the total number of coaxial pairs in the coaxial cable."},
			new SingleValuePropertyType("PropagationSpeedCoefficient", "IfcRatioMeasure") { Definition = "Indicates the propagation speed coefficient."},
			new SingleValuePropertyType("RadiantFrequency", "IfcFrequencyMeasure") { Definition = "Indicates the radiant frequency of the leaky coaxial cable (radiating cable)."},
			new SingleValuePropertyType("TransmissionLoss", "IfcNormalisedRatioMeasure") { Definition = "Indicates the transmission loss of the leaky coaxial cable (radiating cable)."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_CoilOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasSoundAttenuation", "IfcBoolean") { Definition = "TRUE if the coil has sound attenuation, FALSE if it does not."} },
				new [] { "IfcCoil" });
		yield return new PropertySetInfo("Pset_CoilPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirPressureDropCurveHistory", "IfcTimeSeries") { Definition = "Air pressure drop curve, pressure drop – flow rate curve, AirPressureDrop = f (AirflowRate)."},
			new SingleValuePropertyType("AtmosphericPressure", "IfcTimeSeries") { Definition = "Ambient atmospheric pressure."},
			new SingleValuePropertyType("FaceVelocity", "IfcTimeSeries") { Definition = "Air velocity through the coil."},
			new SingleValuePropertyType("SoundCurveHistory", "IfcTimeSeries") { Definition = "Regenerated sound versus air-flow rate."} },
				new [] { "IfcCoil" });
		yield return new PropertySetInfo("Pset_CoilTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CoilPlacement", new [] { "CEILING", "FLOOR", "UNIT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the placement of the coil.\nFLOOR indicates an under floor heater (if coil type is WATERHEATINGCOIL or ELECTRICHEATINGCOIL);\nCEILING indicates a cooling ceiling (if coil type is WATERCOOLINGCOIL);\nUNIT indicates that the coil is part of a cooling or heating unit, like cooled beam, etc."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AirFlowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered.\n\nFor cases where there is no airflow across the coil (e.g. electric coil in a floor slab), then the value is zero."},
			new SingleValuePropertyType("NominalLatentCapacity", "IfcPowerMeasure") { Definition = "Nominal latent capacity."},
			new SingleValuePropertyType("NominalSensibleCapacity", "IfcPowerMeasure") { Definition = "Nominal sensible capacity."},
			new SingleValuePropertyType("NominalUA", "IfcReal") { Definition = "Nominal UA value."},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature range in which the device operates normally.\n\nAllowable operational air temperature range."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcCoil", "IfcCoilType" });
		yield return new PropertySetInfo("Pset_CoilTypeHydronic", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CoilConnectionDirection", new [] { "LEFT", "RIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Coil connection direction (facing into the air stream)."},
			new EnumerationPropertyType("CoilCoolant", new [] { "BRINE", "GLYCOL", "WATER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The fluid used for heating or cooling used by the hydronic coil."},
			new EnumerationPropertyType("CoilFluidArrangement", new [] { "CROSSCOUNTERFLOW", "CROSSFLOW", "CROSSPARALLELFLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Fluid flow arrangement of the coil.CrossCounterFlow: Air and water flow enter in different directions.\nCrossFlow: Air and water flow are perpendicular.\nCrossParallelFlow: Air and water flow enter in same directions."},
			new SingleValuePropertyType("BypassFactor", "IfcNormalisedRatioMeasure") { Definition = "Fraction of air that is bypassed by the coil (0-1)."},
			new SingleValuePropertyType("CoilFaceArea", "IfcAreaMeasure") { Definition = "Coil face area in the direction against air the flow."},
			new SingleValuePropertyType("FluidPressureRange", "IfcPressureMeasure") { Definition = "Allowable water working pressure range inside the tube."},
			new SingleValuePropertyType("HeatExchangeSurfaceArea", "IfcAreaMeasure") { Definition = "Heat exchange surface area associated with U-value."},
			new SingleValuePropertyType("PrimarySurfaceArea", "IfcAreaMeasure") { Definition = "Primary heat transfer surface area of the tubes and headers."},
			new SingleValuePropertyType("SecondarySurfaceArea", "IfcAreaMeasure") { Definition = "Secondary heat transfer surface area created by fins."},
			new SingleValuePropertyType("SensibleHeatRatio", "IfcNormalisedRatioMeasure") { Definition = "Air-side sensible heat ratio, or fraction of sensible heat transfer to the total heat transfer."},
			new SingleValuePropertyType("WetCoilFraction", "IfcNormalisedRatioMeasure") { Definition = "Fraction of coil surface area that is wet (0-1)."},
			new TableValuePropertyType("TotalUACurves", "IfcReal", "IfcVolumetricFlowRateMeasure") { Definition = "Total UA curves, UA - air and water velocities, UA = [(C1 * AirFlowRate\\^0.8)\\^-1 + (C2 * WaterFlowRate\\^0.8)\\^-1]\\^-1.  Note: as two variables are used, DefiningValues and DefinedValues are null, and values are stored in IfcTable in the following order: AirFlowRate,WaterFlowRate,UA.  The IfcTable is related to IfcPropertyTableValue using IfcMetric and IfcResourceConstraintRelationship."},
			new TableValuePropertyType("WaterPressureDropCurve", "IfcVolumetricFlowRateMeasure", "IfcPressureMeasure") { Definition = "Water pressure drop curve, pressure drop – flow rate curve, WaterPressureDrop = f(WaterflowRate)."} },
				new [] { "IfcCoil", "IfcCoilType" });
		yield return new PropertySetInfo("Pset_ColumnCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("Roll", "IfcPlaneAngleMeasure") { Definition = "Rotation against the longitudinal axis.\n\nRelative to the global  X direction for all columns that are vertical in regard to the global coordinate system (Profile direction equals global X is Roll = 0.). For all non-vertical columns the following applies:  Roll is relative to the global Z direction f(Profile direction of non-vertical columns that equals global Z is Roll = 0.)The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only.Note: new property in IFC4"},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcColumn", "IfcColumnType" });
		yield return new PropertySetInfo("Pset_CommunicationsAppliancePHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("PowerState", "IfcTimeSeries") { Definition = "Indicates the power state of the device where True is on and False is off."} },
				new [] { "IfcCommunicationsAppliance" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeAntenna", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AntennaType", new [] { "CEILING", "PANEL", "YAGI", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of antenna."},
			new EnumerationPropertyType("PolarizationMode", new [] { "DUALPOLARIZATION", "SINGLEPOLARIZATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the polarization mode of antenna."},
			new EnumerationPropertyType("RadiationPattern", new [] { "DIRECTIONAL", "FANBEAM", "OMNIDIRECTIONAL", "PENCILBEAM", "SHAPEDBEAM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the radiation pattern of antenna."},
			new SingleValuePropertyType("AntennaGain", "IfcRatioMeasure") { Definition = "Indicates the antenna gain, which is a ratio of the power transmitted by an antenna in a specific direction compared to an isotropic antenna."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeAutomaton", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("InputSignalType", new [] { "CURRENT", "VOLTAGE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of the input signal."},
			new EnumerationPropertyType("OutputSignalType", new [] { "CURRENT", "VOLTAGE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of the output signal."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeComputer", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("UserInterfaceType", new [] { "CLI", "GUI", "TOUCHSCREEN", "TOUCHTONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the user interface of the computer."},
			new SingleValuePropertyType("StorageCapacity", "IfcInteger") { Definition = "Indicates the total data storage capacity of the device. It is defined by bytes."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeGateway", new IPropertyTypeInfo[] {
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeIntelligentPeripheral", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("UserCapacity", "IfcInteger") { Definition = "Indicates the user capacity of the device, defined as the maximum number of users that can be active at the same time."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeIpNetworkEquipment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EquipmentCapacity", "IfcIntegerCountRateMeasure") { Definition = "Indicates the equipment capacity of the appliance. The value is defined in bits/s."},
			new SingleValuePropertyType("ManagingSoftware", "IfcLabel") { Definition = "Indicates the type of software responsible for managing the equipment."},
			new SingleValuePropertyType("NumberOfCoolingFans", "IfcCountMeasure") { Definition = "Indicates the number of cooling fans in the equipment."},
			new SingleValuePropertyType("NumberOfSlots", "IfcCountMeasure") { Definition = "Indicates the number of  slots."},
			new SingleValuePropertyType("SupportedProtocol", "IfcLabel") { Definition = "Indicates the protocol supported by the IP network equipment."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeModem", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CommonInterfaceType", new [] { "DRYCONTACTSINTERFACE", "MANAGEMENTINTERFACE", "OTHER_IO_INTERFACE", "SYNCHRONIZATIONINTERFACE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of the device common interfaces."},
			new EnumerationPropertyType("TrafficInterfaceType", new [] { "E1", "FASTETHERNET", "XDSL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of the device traffic interfaces."},
			new TableValuePropertyType("NumberOfCommonInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the number of common interfaces on the device."},
			new TableValuePropertyType("NumberOfTrafficInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the number of traffic interfaces on the device."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeOpticalLineTerminal", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfSlots", "IfcCountMeasure") { Definition = "Indicates the number of  slots."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeOpticalNetworkUnit", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("OpticalNetworkUnitType", new [] { "ACTIVE", "PASSIVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of the optical network unit equipment."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeTelecommand", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfCPUs", "IfcCountMeasure") { Definition = "The number of CPUs used by the equipment."},
			new TableValuePropertyType("NumberOfWorkstations", "IfcLabel", "IfcInteger") { Definition = "Indicates the types or purposes of workstations and their number in the equipment. The defined purpose can be e.g. 'Diagnostic and maintenance', 'Traffic and electric traction', etc."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeTelephonyExchange", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("UserCapacity", "IfcInteger") { Definition = "Indicates the user capacity of the device, defined as the maximum number of users that can be active at the same time."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CommunicationsApplianceTypeTransportEquipment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TransportEquipmentAssemblyType", new [] { "FIXEDCONFIGURATION", "MODULARCONFIGURATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of transport equipment assembly."},
			new EnumerationPropertyType("TransportEquipmentType", new [] { "MPLS_TP", "OTN", "PDH", "SDH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of transport equipment."},
			new SingleValuePropertyType("ElectricalCrossCapacity", "IfcLabel") { Definition = "Indicates the electrical cross capacity of the transport equipment."},
			new SingleValuePropertyType("IsUpgradable", "IfcBoolean") { Definition = "Indicates whether the transport equipment can be upgraded or not."},
			new SingleValuePropertyType("NumberOfSlots", "IfcCountMeasure") { Definition = "Indicates the number of  slots."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_CompressorPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoefficientOfPerformance", "IfcTimeSeries") { Definition = "The Coefficient of performance (COP) is the ratio of heat removed to energy input.\nThe energy input may be obtained by multiplying\nPset_DistributionPortPHistoryGas.FlowRate on the 'Fuel' port of the IfcChiller by Pset_MaterialFuel.LowerHeatingValue.\nThe IfcDistributionPort for fuel has an associated IfcMaterial with fuel properties and is assigned to an IfcPerformanceHistory object nested within this IfcPerformanceHistory object."},
			new SingleValuePropertyType("CompressionEfficiency", "IfcTimeSeries") { Definition = "Ratio of the work required for isentropic compression of the gas to the work delivered to the gas within the compression volume (as obtained by measurement)."},
			new SingleValuePropertyType("CompressorCapacity", "IfcTimeSeries") { Definition = "The product of the  ideal capacity and the overall volumetric efficiency of the compressor."},
			new SingleValuePropertyType("CompressorTotalEfficiency", "IfcTimeSeries") { Definition = "Ratio of the thermal cooling capacity to electrical input."},
			new SingleValuePropertyType("CompressorTotalHeatGain", "IfcTimeSeries") { Definition = "Compressor total heat gain."},
			new SingleValuePropertyType("EnergyEfficiencyRatio", "IfcTimeSeries") { Definition = "Energy efficiency ratio (EER)."},
			new SingleValuePropertyType("FrictionHeatGain", "IfcTimeSeries") { Definition = "Friction heat gain."},
			new SingleValuePropertyType("FullLoadRatio", "IfcTimeSeries") { Definition = "Ratio of actual power to full load power as a quadratic function of part load, at certain condensing and evaporating temperature, FracFullLoadPower = f ( PartLoadRatio)."},
			new SingleValuePropertyType("InputPower", "IfcTimeSeries") { Definition = "Input power to the compressor motor."},
			new SingleValuePropertyType("IsentropicEfficiency", "IfcTimeSeries") { Definition = "Ratio of the work required for isentropic compression of the gas to work input to the compressor shaft."},
			new SingleValuePropertyType("LubricantPumpHeatGain", "IfcTimeSeries") { Definition = "Lubricant pump heat gain."},
			new SingleValuePropertyType("MechanicalEfficiency", "IfcTimeSeries") { Definition = "The objects operational mechanical efficiency.\n\nRatio of the work (as measured) delivered to the gas to the work input to the compressor shaft."},
			new SingleValuePropertyType("ShaftPower", "IfcTimeSeries") { Definition = "The actual shaft power input to the compressor."},
			new SingleValuePropertyType("VolumetricEfficiency", "IfcTimeSeries") { Definition = "Ratio of the actual volume of gas entering the compressor to the theoretical displacement of the compressor."} },
				new [] { "IfcCompressor" });
		yield return new PropertySetInfo("Pset_CompressorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PowerSource", new [] { "ENGINEDRIVEN", "GASTURBINE", "MOTORDRIVEN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of power driving the compressor."},
			new EnumerationPropertyType("RefrigerantClass", new [] { "AMMONIA", "CFC", "CO2", "H2O", "HCFC", "HFC", "HYDROCARBONS", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Refrigerant class used by the object.\nCFC: Chlorofluorocarbons.\nHCFC: Hydrochlorofluorocarbons.\nHFC: Hydrofluorocarbons."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("CompressorSpeed", "IfcRotationalFrequencyMeasure") { Definition = "Compressor speed."},
			new SingleValuePropertyType("HasHotGasBypass", "IfcBoolean") { Definition = "Whether or not hot gas bypass is provided for the compressor. TRUE = Yes, FALSE = No."},
			new SingleValuePropertyType("IdealCapacity", "IfcPowerMeasure") { Definition = "Compressor capacity under ideal conditions."},
			new SingleValuePropertyType("IdealShaftPower", "IfcPowerMeasure") { Definition = "Compressor shaft power under ideal conditions."},
			new SingleValuePropertyType("ImpellerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of object - used to scale performance of geometrically similar objects."},
			new SingleValuePropertyType("MaximumPartLoadRatio", "IfcPositiveRatioMeasure") { Definition = "Maximum part load ratio as a fraction of nominal capacity."},
			new SingleValuePropertyType("MinimumPartLoadRatio", "IfcPositiveRatioMeasure") { Definition = "Minimum part load ratio as a fraction of nominal capacity."},
			new SingleValuePropertyType("NominalCapacity", "IfcPowerMeasure") { Definition = "The total nominal or volumetric capacity of the object.\n\nCompressor nameplate capacity."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcCompressor", "IfcCompressorType" });
		yield return new PropertySetInfo("Pset_ConcreteElementGeneral", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssemblyPlace", new [] { "FACTORY", "OFFSITE", "SITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining where the assembly is intended to take place, either in a factory, other offsite location or on the building site."},
			new EnumerationPropertyType("CastingMethod", new [] { "INSITU", "MIXED", "PRECAST", "PRINTED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The method of casting the concrete into its designed form."},
			new SingleValuePropertyType("ConcreteCover", "IfcPositiveLengthMeasure") { Definition = "The protective concrete cover at the reinforcing bars according to local building regulations."},
			new SingleValuePropertyType("ConcreteCoverAtLinks", "IfcPositiveLengthMeasure") { Definition = "The protective concrete cover at the reinforcement links according to local building regulations."},
			new SingleValuePropertyType("ConcreteCoverAtMainBars", "IfcPositiveLengthMeasure") { Definition = "The protective concrete cover at the main reinforcing bars according to local building regulations."},
			new SingleValuePropertyType("ConstructionToleranceClass", "IfcLabel") { Definition = "Classification designation of the on-site construction tolerances according to local standards."},
			new SingleValuePropertyType("DimensionalAccuracyClass", "IfcLabel") { Definition = "Classification designation of the dimensional accuracy requirement according to local standards."},
			new SingleValuePropertyType("ExposureClass", "IfcLabel") { Definition = "Classification of exposure to environmental conditions, usually specified in accordance with the concrete design code which is applied in the project."},
			new SingleValuePropertyType("ReinforcementAreaRatio", "IfcAreaDensityMeasure") { Definition = "The required ratio of the effective area of the reinforcement to the effective area of the concrete At any section of a reinforced concrete structural element."},
			new SingleValuePropertyType("ReinforcementStrengthClass", "IfcLabel") { Definition = "Classification of the reinforcement strength in accordance with the concrete design code which is applied in the project. The reinforcing strength class often combines strength and ductility."},
			new SingleValuePropertyType("ReinforcementVolumeRatio", "IfcMassDensityMeasure") { Definition = "The required ratio of the effective mass of the reinforcement to the effective volume of the concrete of a reinforced concrete structural element."},
			new SingleValuePropertyType("StrengthClass", "IfcLabel") { Definition = "Classification of the concrete strength in accordance with the concrete design code which is applied in the project."},
			new SingleValuePropertyType("StructuralClass", "IfcLabel") { Definition = "The structural class defined for the concrete structure (e.g. '1')."} },
				new [] { "IfcBeam", "IfcBeamType", "IfcBuildingElementProxy", "IfcBuildingElementProxyType", "IfcChimney", "IfcChimneyType", "IfcCivilElement", "IfcCivilElementType", "IfcColumn", "IfcColumnType", "IfcFooting", "IfcFootingType", "IfcMember", "IfcMemberType", "IfcPile", "IfcPileType", "IfcPlate", "IfcPlateType", "IfcRailing", "IfcRailingType", "IfcRamp", "IfcRampFlight", "IfcRampFlightType", "IfcRampType", "IfcRoof", "IfcRoofType", "IfcSlab", "IfcSlabType", "IfcStair", "IfcStairFlight", "IfcStairFlightType", "IfcStairType", "IfcWall", "IfcWallType" });
		yield return new PropertySetInfo("Pset_CondenserPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CompressorCondenserHeatGain", "IfcTimeSeries") { Definition = "Heat gain between condenser inlet to compressor outlet."},
			new SingleValuePropertyType("CompressorCondenserPressureDrop", "IfcTimeSeries") { Definition = "Pressure drop between condenser inlet and compressor outlet."},
			new SingleValuePropertyType("CondenserMeanVoidFraction", "IfcTimeSeries") { Definition = "Mean void fraction in condenser."},
			new SingleValuePropertyType("CondensingTemperature", "IfcTimeSeries") { Definition = "Refrigerant condensing temperature."},
			new SingleValuePropertyType("ExteriorHeatTransferCoefficient", "IfcTimeSeries") { Definition = "Exterior heat transfer coefficient associated with exterior surface area."},
			new SingleValuePropertyType("HeatRejectionRate", "IfcTimeSeries") { Definition = "Sum of the refrigeration effect and the heat equivalent of the power input to the compressor."},
			new SingleValuePropertyType("InteriorHeatTransferCoefficient", "IfcTimeSeries") { Definition = "Interior heat transfer coefficient associated with interior surface area."},
			new SingleValuePropertyType("LogarithmicMeanTemperatureDifference", "IfcTimeSeries") { Definition = "Logarithmic mean temperature difference between refrigerant and water or air."},
			new SingleValuePropertyType("RefrigerantFoulingResistance", "IfcTimeSeries") { Definition = "Fouling resistance on the refrigerant side."},
			new SingleValuePropertyType("UAcurves", "IfcTimeSeries") { Definition = "UV = f (VExterior, VInterior), UV as a function of interior and exterior fluid flow velocity at the entrance."},
			new SingleValuePropertyType("WaterFoulingResistance", "IfcTimeSeries") { Definition = "Fouling resistance on water/air side."} },
				new [] { "IfcCondenser" });
		yield return new PropertySetInfo("Pset_CondenserTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RefrigerantClass", new [] { "AMMONIA", "CFC", "CO2", "H2O", "HCFC", "HFC", "HYDROCARBONS", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Refrigerant class used by the object.\nCFC: Chlorofluorocarbons.\nHCFC: Hydrochlorofluorocarbons.\nHFC: Hydrofluorocarbons."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ExternalSurfaceArea", "IfcAreaMeasure") { Definition = "External surface area (both primary and secondary area)."},
			new SingleValuePropertyType("InternalRefrigerantVolume", "IfcVolumeMeasure") { Definition = "Internal volume of object (refrigerant side)."},
			new SingleValuePropertyType("InternalSurfaceArea", "IfcAreaMeasure") { Definition = "Internal surface area."},
			new SingleValuePropertyType("InternalWaterVolume", "IfcVolumeMeasure") { Definition = "Internal volume of object (water side)."},
			new SingleValuePropertyType("NominalHeatTransferArea", "IfcAreaMeasure") { Definition = "Nominal heat transfer surface area associated with nominal overall heat transfer coefficient."},
			new SingleValuePropertyType("NominalHeatTransferCoefficient", "IfcThermalTransmittanceMeasure") { Definition = "Nominal overall heat transfer coefficient associated with nominal heat transfer area."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcCondenser", "IfcCondenserType" });
		yield return new PropertySetInfo("Pset_Condition", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssessmentCondition", "IfcLabel") { Definition = "The overall condition of a product based on an assessment of the contributions to the overall condition made by the various criteria considered. The meanings given to the values of assessed condition should be agreed and documented by local agreements. For instance, is overall condition measured on a scale of 1 - 10 or by assigning names such as Good, OK, Poor."},
			new SingleValuePropertyType("AssessmentDate", "IfcDate") { Definition = "Date on which the overall condition is assessed"},
			new SingleValuePropertyType("AssessmentDescription", "IfcText") { Definition = "Qualitative description of the condition."},
			new SingleValuePropertyType("AssessmentFrequency", "IfcTimeMeasure") { Definition = "Indicates how often the equipment should be assessed, to have a clear estimation on its working state, based on which the maintenance staff can decide whether it requires maintenance or requires to be updated or replaced."},
			new SingleValuePropertyType("AssessmentMethod", "IfcDocumentReference") { Definition = "External reference to assessment method or application used to perform the assessment."},
			new SingleValuePropertyType("AssessmentType", "IfcLabel") { Definition = "Category of latest condition assessment report of the asset."},
			new SingleValuePropertyType("LastAssessmentReport", "IfcLabel") { Definition = "Reference to latest condition (state of health) report."},
			new SingleValuePropertyType("NextAssessmentDate", "IfcDate") { Definition = "Date of next condition inspection"} },
				new [] { "IfcAsset", "IfcElement", "IfcElementType", "IfcSystem" });
		yield return new PropertySetInfo("Pset_ConstructionAdministration", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ProcurementMethod", "IfcLabel") { Definition = "The method by which an IfcProductType/IfcProduct is acquired and installed. The value provided shall be one of the following four character acronyms: “CFCI” (meaning Contractor Furnished Contractor Installed), “OFCI” (meaning Owner Furnished Contractor Installed), or “OFOI” (meaning Owner Furnished Owner Installed)."},
			new SingleValuePropertyType("SpecificationSectionNumber", "IfcLabel") { Definition = "A reference number to an external contract technical specification section describing either (a) minimum performance requirements of a given IfcProductType/IfcProduct or (b) a preselection for a specific IfcProductType/IfcProduct made for this project."},
			new SingleValuePropertyType("SubmittalIdentifer", "IfcLabel") { Definition = "The reference number to an external construction administration submittal used by the construction contractor and/or subcontractor to verify that the referenced IfcProductType/IfcProduct selection conforms with the requirements found in the referenced SpecificationSectionNumber."} },
				new [] { "IfcElement", "IfcElementType" });
		yield return new PropertySetInfo("Pset_ConstructionOccurence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssetIdentifier", "IfcLabel") { Definition = "A unique identification assigned to an asset that enables its differentiation from other assets.NOTE  The asset identifier is unique within the asset register. It differs from the globally unique id assigned to the instance of an entity populating a database."},
			new SingleValuePropertyType("InstallationDate", "IfcDate") { Definition = "Date on which the element is installed."},
			new SingleValuePropertyType("ModelNumber", "IfcLabel") { Definition = "The model number and/or unit designator assigned by the manufacturer of the manufactured item."},
			new SingleValuePropertyType("TagNumber", "IfcLabel") { Definition = "Tag number."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_ConstructionResource", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ActualCompletion", "IfcTimeSeries") { Definition = "The actual completion percentage of the allocation."},
			new SingleValuePropertyType("ActualCost", "IfcTimeSeries") { Definition = "The actual cost on behalf of the resource allocation."},
			new SingleValuePropertyType("ActualWorkTime", "IfcTimeSeries") { Definition = "The actual work on behalf of the resource allocation."},
			new SingleValuePropertyType("RemainingCost", "IfcTimeSeries") { Definition = "The remaining cost on behalf of the resource allocation."},
			new SingleValuePropertyType("RemainingWorkProgression", "IfcTimeSeries") { Definition = "The remaining work on behalf of the resource allocation."},
			new SingleValuePropertyType("ScheduleCompletion", "IfcTimeSeries") { Definition = "The scheduled completion percentage of the allocation."},
			new SingleValuePropertyType("ScheduleCost", "IfcTimeSeries") { Definition = "The budgeted cost on behalf of the resource allocation."},
			new SingleValuePropertyType("ScheduleWorkProgression", "IfcTimeSeries") { Definition = "The scheduled work on behalf of the resource allocation."} },
				new [] { "IfcConstructionResource", "IfcConstructionResourceType" });
		yield return new PropertySetInfo("Pset_ControllerPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Quality", "IfcTimeSeries") { Definition = "Indicates the quality of measurement or failure condition, which may be further qualified by the Status.  True: measured values are considered reliable; False: measured values are considered not reliable (i.e. a fault has been detected); Unknown: reliability of values is uncertain."},
			new SingleValuePropertyType("Status", "IfcTimeSeries") { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure).\n\nIndicates an error code or identifier, whose meaning is specific to the particular automation system.  Example values include: 'ConfigurationError', 'NotConnected', 'DeviceFailure', 'SensorFailure', 'LastKnown, 'CommunicationsFailure', 'OutOfService'."},
			new SingleValuePropertyType("ValueHistory", "IfcTimeSeries") { Definition = "Indicates values over time which may be recorded continuously or only when changed beyond a particular deadband.  The range of possible values is defined by the Value property on the corresponding occurrence property set (Pset_ControllerTypeFloating, Pset_ControllerTypeProportional, Pset_ControllerTypeMultiPosition, or Pset_ControllerTypeTwoPosition)."} },
				new [] { "IfcController" });
		yield return new PropertySetInfo("Pset_ControllerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcController", "IfcControllerType" });
		yield return new PropertySetInfo("Pset_ControllerTypeFloating", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "ABSOLUTE", "ACCUMULATOR", "AVERAGE", "BINARY", "CONSTANT", "DERIVATIVE", "DIVIDE", "HYSTERESIS", "INPUT", "INTEGRAL", "INVERSE", "LOWERLIMITCONTROL", "MAXIMUM", "MINIMUM", "MODIFIER", "OUTPUT", "PRODUCT", "PULSECONVERTER", "REPORT", "RUNNINGAVERAGE", "SPLIT", "SUBTRACT", "SUM", "UPPERLIMITCONTROL", "VARIABLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type controller, signal modification effected and applicable ports\n\nCONSTANT: No inputs; SignalOffset is written to the output value.\nMODIFIER: Single analog input is read, added to SignalOffset, multiplied by SignalFactor, and written to the output value.\nABSOLUTE: Single analog input is read and absolute value is written to the output value.\nINVERSE: Single analog input is read, 1.0 is divided by the input value and written to the output value.\nHYSTERISIS: Single analog input is read, delayed according to SignalTime, and written to the output value.\nRUNNINGAVERAGE: Single analog input is read, averaged over SignalTime, and written to the output value.\nDERIVATIVE: Single analog input is read and the rate of change during the SignalTime is written to the output value.\nINTEGRAL: Single analog input is read and the average value during the SignalTime is written to the output value.\nBINARY: Single binary input is read and SignalOffset is written to the output value if True.\nACCUMULATOR: Single binary input is read, and for each pulse the SignalOffset is added to the accumulator, and while the accumulator is greater than the SignalFactor, the accumulator is decremented by SignalFactor and the integer result is incremented by one.\nPULSECONVERTER: Single integer input is read, and for each increment the SignalMultiplier is added and written to the output value.\nSUM: Two analog inputs are read, added, and written to the output value.\nSUBTRACT: Two analog inputs are read, subtracted, and written to the output value.\nPRODUCT: Two analog inputs are read, multiplied, and written to the output value.\nDIVIDE: Two analog inputs are read, divided, and written to the output value.\nAVERAGE: Two analog inputs are read and the average is written to the output value.\nMAXIMUM: Two analog inputs are read and the maximum is written to the output value.\nMINIMUM: Two analog inputs are read and the minimum is written to the output value..\nINPUT: Controller element is a dedicated input.\nOUTPUT: Controller element is a dedicated output.\nVARIABLE: Controller element is an in-memory variable."},
			new SingleValuePropertyType("Range", "IfcReal") { Definition = "The physical range of values supported by the device."},
			new SingleValuePropertyType("SignalFactor", "IfcReal") { Definition = "Factor multiplied onto offset signal."},
			new SingleValuePropertyType("SignalOffset", "IfcReal") { Definition = "Offset constant added to modified signal."},
			new SingleValuePropertyType("SignalTime", "IfcTimeMeasure") { Definition = "Time factor used for integral and running average controllers."},
			new SingleValuePropertyType("Value", "IfcReal") { Definition = "The expected range and default value.\n\nThe expected range and default value.  While the property data type is IfcReal (to support all cases including when the units are unknown), a unit may optionally be provided to indicate the measure and unit.  The LowerLimitValue and UpperLimitValue must fall within the physical Range and may be used to determine extents when charting Pset_ControllerPHistory.Value."},
			new TableValuePropertyType("Labels", "IfcReal", "IfcLabel") { Definition = "Table mapping values to labels\n\nLabels indicate transition points such as 'Hi', 'Lo', 'HiHi', or 'LoLo'."} },
				new [] { "IfcController", "IfcControllerType" });
		yield return new PropertySetInfo("Pset_ControllerTypeMultiPosition", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "INPUT", "OUTPUT", "VARIABLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type controller, signal modification effected and applicable ports\n\nINPUT: Controller element is a dedicated input.\nOUTPUT: Controller element is a dedicated output.\nVARIABLE: Controller element is an in-memory variable."},
			new SingleValuePropertyType("IntegerRange", "IfcInteger") { Definition = "The physical range of values supported by the device."},
			new SingleValuePropertyType("Value", "IfcInteger") { Definition = "The expected range and default value.\n\nThe expected range and default value.  The LowerLimitValue and UpperLimitValue must fall within the physical Range."},
			new TableValuePropertyType("Labels", "IfcInteger", "IfcLabel") { Definition = "Table mapping values to labels\n\nEach entry corresponds to an integer within the ValueRange."} },
				new [] { "IfcController", "IfcControllerType" });
		yield return new PropertySetInfo("Pset_ControllerTypeProgrammable", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Application", new [] { "BOILERCONTROLLER", "CONSTANTLIGHTCONTROLLER", "DISCHARGEAIRCONTROLLER", "FANCOILUNITCONTROLLER", "LIGHTINGPANELCONTROLLER", "MODEMCONTROLLER", "OCCUPANCYCONTROLLER", "PARTITIONWALLCONTROLLER", "PUMPCONTROLLER", "REALTIMEBASEDSCHEDULER", "REALTIMEKEEPER", "ROOFTOPUNITCONTROLLER", "SCENECONTROLLER", "SPACECONFORTCONTROLLER", "SUNBLINDCONTROLLER", "TELEPHONEDIRECTORY", "UNITVENTILATORCONTROLLER", "VAV", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates application of controller."},
			new EnumerationPropertyType("ControlType", new [] { "PRIMARY", "SECONDARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type controller, signal modification effected and applicable ports\n\nPRIMARY: Controller has built-in communication interface for PC connection, may manage secondary controllers.\nSECONDARY: Controller communicates with primary controller and its own managed devices."},
			new SingleValuePropertyType("FirmwareVersion", "IfcLabel") { Definition = "Indicates version of device firmware according to device manufacturer."},
			new SingleValuePropertyType("SoftwareVersion", "IfcLabel") { Definition = "Indicates version of application software according to systems integrator."} },
				new [] { "IfcController", "IfcControllerType" });
		yield return new PropertySetInfo("Pset_ControllerTypeProportional", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "PROPORTIONAL", "PROPORTIONALINTEGRAL", "PROPORTIONALINTEGRALDERIVATIVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type controller, signal modification effected and applicable ports\n\nPROPORTIONAL: Output is proportional to the control error. The gain of a proportional control (Kp) will have the effect of reducing the rise time and reducing , but never eliminating, the steady-state error of the variable controlled.\nPROPORTIONALINTEGRAL: Part of the output is proportional to the control error and part is proportional to the time integral of the control error. Adding the gain of an integral control (Ki) will have the effect of eliminating the steady-state error of the variable controlled, but it may make the transient response worse.\nPROPORTIONALINTEGRALDERIVATIVE: Part of the output is proportional to the control error, part is proportional to the time integral of the control error and part is proportional to the time derivative of the control error. Adding the gain of a derivative control (Kd) will have the effect of increasing the stability of the system, reducing the overshoot, and improving the transient response of the variable controlled."},
			new SingleValuePropertyType("DerivativeConstant", "IfcReal") { Definition = "The derivative gain factor of the controller (usually referred to as Kd).  Asserted where ControlType is PROPORTIONALINTEGRALDERIVATIVE."},
			new SingleValuePropertyType("IntegralConstant", "IfcReal") { Definition = "The integral gain factor of the controller (usually referred to as Ki).  Asserted where ControlType is PROPORTIONALINTEGRAL or PROPORTIONALINTEGRALDERIVATIVE."},
			new SingleValuePropertyType("ProportionalConstant", "IfcReal") { Definition = "The proportional gain factor of the controller (usually referred to as Kp)."},
			new SingleValuePropertyType("Range", "IfcReal") { Definition = "The physical range of values supported by the device."},
			new SingleValuePropertyType("SignalTimeDecrease", "IfcTimeMeasure") { Definition = "Time factor used for exponential decrease."},
			new SingleValuePropertyType("SignalTimeIncrease", "IfcTimeMeasure") { Definition = "Time factor used for exponential increase."},
			new SingleValuePropertyType("Value", "IfcReal") { Definition = "The expected range and default value.\n\nThe expected range and default value.  While the property data type is IfcReal (to support all cases including when the units are unknown), a unit may optionally be provided to indicate the measure and unit."},
			new TableValuePropertyType("Labels", "IfcReal", "IfcLabel") { Definition = "Table mapping values to labels\n\nLabels indicate transition points such as 'Hi', 'Lo', 'HiHi', or 'LoLo'."} },
				new [] { "IfcController", "IfcControllerType" });
		yield return new PropertySetInfo("Pset_ControllerTypeTwoPosition", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlType", new [] { "AND", "AVERAGE", "CALENDAR", "INPUT", "LOWERBANDSWITCH", "LOWERLIMITSWITCH", "NOT", "OR", "OUTPUT", "UPPERBANDSWITCH", "UPPERLIMITSWITCH", "VARIABLE", "XOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type controller, signal modification effected and applicable ports\n\nLOWERLIMITSWITCH: Single analog input is read and if less than Value.LowerBound then True is written to the output value.\nUPPERLIMITSWITCH: Single analog input is read and if more than Value.UpperBound then True is written to the output value.\nLOWERBANDSWITCH: Single analog input is read and if less than Value.LowerBound+BandWidth then True is written to the output value.\nUPPERBANDSWITCH: Single analog input is read and if more than Value.UpperBound-BandWidth then True is written to the output value.\nNOT: Single binary input is read and the opposite value is written to the output value.\nAND: Two binary inputs are read and if both are True then True is written to the output value.\nOR: Two binary inputs are read and if either is True then True is written to the output value.\nXOR: Two binary inputs are read and if one is true then True is written to the output value.\nCALENDAR: No inputs; the current time is compared with an IfcWorkCalendar to which the IfcController is assigned and True is written if active.\nINPUT: Controller element is a dedicated input.\nOUTPUT: Controller element is a dedicated output.\nVARIABLE: Controller element is an in-memory variable."},
			new SingleValuePropertyType("Polarity", "IfcBoolean") { Definition = "True indicates normal polarity; False indicates reverse polarity."},
			new SingleValuePropertyType("Value", "IfcBoolean") { Definition = "The expected range and default value.\n\nThe default value such as normally-closed or normally-open."},
			new TableValuePropertyType("Labels", "IfcBoolean", "IfcLabel") { Definition = "Table mapping values to labels\n\nLabels indicate the meanings of True and False, such as 'Open' and 'Closed'"} },
				new [] { "IfcController", "IfcControllerType" });
		yield return new PropertySetInfo("Pset_CooledBeamPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BeamCoolingCapacity", "IfcTimeSeries") { Definition = "Cooling capacity of beam. This excludes cooling capacity of supply air."},
			new SingleValuePropertyType("BeamHeatingCapacity", "IfcTimeSeries") { Definition = "Heating capacity of beam. This excludes heating capacity of supply air."},
			new SingleValuePropertyType("CoolingWaterFlowRate", "IfcTimeSeries") { Definition = "Water flow rate for cooling."},
			new SingleValuePropertyType("CorrectionFactorForCooling", "IfcTimeSeries") { Definition = "Correction factor k as a function of water flow rate (used to calculate cooling capacity)."},
			new SingleValuePropertyType("CorrectionFactorForHeating", "IfcTimeSeries") { Definition = "Correction factor k as a function of water flow rate (used to calculate heating capacity)."},
			new SingleValuePropertyType("HeatingWaterFlowRate", "IfcTimeSeries") { Definition = "Water flow rate for heating."},
			new SingleValuePropertyType("ReturnWaterTemperatureCooling", "IfcTimeSeries") { Definition = "Return water temperature in cooling mode."},
			new SingleValuePropertyType("ReturnWaterTemperatureHeating", "IfcTimeSeries") { Definition = "Return water temperature in heating mode."},
			new SingleValuePropertyType("SupplyWaterTemperatureCooling", "IfcTimeSeries") { Definition = "Supply water temperature in cooling mode."},
			new SingleValuePropertyType("SupplyWaterTemperatureHeating", "IfcTimeSeries") { Definition = "Supply water temperature in heating mode."},
			new SingleValuePropertyType("TotalCoolingCapacity", "IfcTimeSeries") { Definition = "Total cooling capacity. This includes cooling capacity of beam and cooling capacity of supply air."},
			new SingleValuePropertyType("TotalHeatingCapacity", "IfcTimeSeries") { Definition = "Total heating capacity. This includes heating capacity of beam and heating capacity of supply air."},
			new SingleValuePropertyType("WaterPressureDropCurves", "IfcTimeSeries") { Definition = "Water pressure drop as function of water flow rate."} },
				new [] { "IfcCooledBeam" });
		yield return new PropertySetInfo("Pset_CooledBeamPHistoryActive", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirFlowRate", "IfcTimeSeries") { Definition = "Air flow rate."},
			new SingleValuePropertyType("AirPressureDropCurves", "IfcTimeSeries") { Definition = "Air pressure drop as function of air flow rate."},
			new SingleValuePropertyType("Throw", "IfcTimeSeries") { Definition = "Distance cooled beam throws the air."} },
				new [] { "IfcCooledBeam" });
		yield return new PropertySetInfo("Pset_CooledBeamTypeActive", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirFlowConfiguration", new [] { "BIDIRECTIONAL", "UNIDIRECTIONALLEFT", "UNIDIRECTIONALRIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Air flow configuration type of cooled beam."},
			new EnumerationPropertyType("SupplyAirConnectionType", new [] { "LEFT", "RIGHT", "STRAIGHT", "TOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The manner in which the pipe connection is made to the cooled beam."},
			new SingleValuePropertyType("AirFlowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The connection size of the object.\n\nDuct connection diameter."} },
				new [] { "IfcCooledBeam", "IfcCooledBeamType" });
		yield return new PropertySetInfo("Pset_CooledBeamTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("IntegratedLightingType", new [] { "DIRECT", "DIRECTANDINDIRECT", "INDIRECT", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Integrated lighting in cooled beam."},
			new EnumerationPropertyType("PipeConnection", new [] { "LEFT", "RIGHT", "STRAIGHT", "TOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The manner in which the pipe connection is made to the cooled beam."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("WaterFlowControlSystemType", new [] { "2WAYVALVE", "3WAYVALVE", "NONE", "ONOFFVALVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Factory fitted waterflow control system."},
			new SingleValuePropertyType("CoilLength", "IfcPositiveLengthMeasure") { Definition = "Length of coil."},
			new SingleValuePropertyType("CoilWidth", "IfcPositiveLengthMeasure") { Definition = "Width of coil."},
			new SingleValuePropertyType("FinishColour", "IfcLabel") { Definition = "The finish colour of the object."},
			new SingleValuePropertyType("IsFreeHanging", "IfcBoolean") { Definition = "Is it free hanging type (not mounted in a false ceiling)?"},
			new SingleValuePropertyType("NominalCoolingCapacity", "IfcPowerMeasure") { Definition = "Nominal cooling capacity."},
			new SingleValuePropertyType("NominalHeatingCapacity", "IfcPowerMeasure") { Definition = "Nominal heating capacity."},
			new SingleValuePropertyType("NominalReturnWaterTemperatureCooling", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal return water temperature (refers to nominal cooling capacity)."},
			new SingleValuePropertyType("NominalReturnWaterTemperatureHeating", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal return water temperature (refers to nominal heating capacity)."},
			new SingleValuePropertyType("NominalSupplyWaterTemperatureCooling", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal supply water temperature (refers to nominal cooling capacity)."},
			new SingleValuePropertyType("NominalSupplyWaterTemperatureHeating", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal supply water temperature (refers to nominal heating capacity)."},
			new SingleValuePropertyType("NominalSurroundingHumidityCooling", "IfcNormalisedRatioMeasure") { Definition = "Nominal surrounding humidity (refers to nominal cooling capacity)."},
			new SingleValuePropertyType("NominalSurroundingTemperatureCooling", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal surrounding temperature (refers to nominal cooling capacity)."},
			new SingleValuePropertyType("NominalSurroundingTemperatureHeating", "IfcThermodynamicTemperatureMeasure") { Definition = "Nominal surrounding temperature (refers to nominal heating capacity)."},
			new SingleValuePropertyType("NominalWaterFlowCooling", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal water flow (refers to nominal cooling capacity)."},
			new SingleValuePropertyType("NominalWaterFlowHeating", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal water flow (refers to nominal heating capacity)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("WaterPressureRange", "IfcPressureMeasure") { Definition = "Allowable water circuit working pressure range."} },
				new [] { "IfcCooledBeam", "IfcCooledBeamType" });
		yield return new PropertySetInfo("Pset_CoolingTowerPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Capacity", "IfcTimeSeries") { Definition = "The capacity of the element.\n\nHeat transfer rate of the cooling tower between air stream and water stream."},
			new SingleValuePropertyType("HeatTransferCoefficient", "IfcTimeSeries") { Definition = "Heat transfer coefficient-area product."},
			new SingleValuePropertyType("Performance", "IfcTimeSeries") { Definition = "Water temperature change as a function of wet-bulb temperature, water entering temperature, water flow rate, air flow rate, Tdiff = f ( Twet-bulb, Twater,in, mwater, mair)."},
			new SingleValuePropertyType("SumpHeaterPower", "IfcTimeSeries") { Definition = "Electrical heat power of sump heater."},
			new SingleValuePropertyType("UACurve", "IfcTimeSeries") { Definition = "UA value.\n\nAs a function of fan speed at certain water flow rate, UA = f ( fan speed)."} },
				new [] { "IfcCoolingTower" });
		yield return new PropertySetInfo("Pset_CoolingTowerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CapacityControl", new [] { "BYPASSVALVECONTROL", "DAMPERSCONTROL", "FANCYCLING", "MULTIPLESERIESPUMPS", "TWOSPEEDFAN", "TWOSPEEDPUMP", "VARIABLESPEEDFAN", "VARIABLESPEEDPUMP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "FanCycling: Fan is cycled on and off to control duty.\nTwoSpeedFan: Fan is switched between low and high speed to control duty.\nVariableSpeedFan: Fan speed is varied to control duty.\nDampersControl: Dampers modulate the air flow to control duty.\nBypassValveControl: Bypass valve modulates the water flow to control duty.\nMultipleSeriesPumps: Turn on/off multiple series pump to control duty.\nTwoSpeedPump: Switch between high/low pump speed to control duty.\nVariableSpeedPump: vary pump speed to control duty."},
			new EnumerationPropertyType("CircuitType", new [] { "CLOSEDCIRCUITDRY", "CLOSEDCIRCUITDRYWET", "CLOSEDCIRCUITWET", "OPENCIRCUIT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "OpenCircuit: Exposes water directly to the cooling atmosphere.\nCloseCircuit: The fluid is separated from the atmosphere by a heat exchanger.\nWet: The air stream or the heat exchange surface is evaporatively cooled.\nDry: No evaporation into the air stream.\nDryWet: A combination of a dry tower and a wet tower."},
			new EnumerationPropertyType("ControlStrategy", new [] { "FIXEDEXITINGWATERTEMP", "WETBULBTEMPRESET", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "FixedExitingWaterTemp: The capacity is controlled to maintain a fixed exiting water temperature.\nWetBulbTempReset: The set-point is reset based on the wet-bulb temperature."},
			new EnumerationPropertyType("FlowArrangement", new [] { "COUNTERFLOW", "CROSSFLOW", "PARALLELFLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the basic flow arrangements for the heat exchanger or cooler tower:COUNTERFLOW: Air and water flow enter in different directions.\nCROSSFLOW: Air and water flow are perpendicular.\nPARALLELFLOW: Air and water flow enter in same directions.\nMULTIPASS: Multipass flow heat exchanger arrangement. \nOTHER: Other type of heat exchanger flow arrangement not defined above."},
			new EnumerationPropertyType("SprayType", new [] { "FILMTYPEFILL", "SPLASHTYPEFILL", "SPRAYFILLED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "SprayFilled: Water is sprayed into airflow.\nSplashTypeFill: water cascades over successive rows of splash bars.\nFilmTypeFill: water flows in a thin layer over closely spaced sheets."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AmbientDesignDryBulbTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ambient design dry bulb temperature used for selecting the cooling tower."},
			new SingleValuePropertyType("AmbientDesignWetBulbTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ambient design wet bulb temperature used for selecting the cooling tower."},
			new SingleValuePropertyType("BasinReserveVolume", "IfcVolumeMeasure") { Definition = "Volume between operating and overflow levels in cooling tower basin."},
			new SingleValuePropertyType("LiftElevationDifference", "IfcPositiveLengthMeasure") { Definition = "Elevation difference between cooling tower sump and the top of the tower."},
			new SingleValuePropertyType("NominalCapacity", "IfcPowerMeasure") { Definition = "The total nominal or volumetric capacity of the object.\n\nNominal cooling tower capacity in terms of heat transfer rate of the cooling tower between air stream and water stream at nominal conditions."},
			new SingleValuePropertyType("NumberOfCells", "IfcCountMeasure") { Definition = "Number of cells in one cooling tower unit."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("WaterRequirement", "IfcVolumetricFlowRateMeasure") { Definition = "Make-up water requirement."} },
				new [] { "IfcCoolingTower", "IfcCoolingTowerType" });
		yield return new PropertySetInfo("Pset_CourseApplicationConditions", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ApplicationTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Indicates the ambient temperature at which the course is applied"},
			new SingleValuePropertyType("WeatherConditions", "IfcText") { Definition = "Indicates the weather conditions during the application of the course"} },
				new [] { "IfcCourse", "IfcCourseType" });
		yield return new PropertySetInfo("Pset_CourseCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalThickness", "IfcNonNegativeLengthMeasure") { Definition = "The nominal thickness of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcCourse", "IfcCourseType" });
		yield return new PropertySetInfo("Pset_CoveringCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorption values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Finish", "IfcText") { Definition = "Description of the (surface) finish of the object for informational purposes."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("FlammabilityRating", "IfcLabel") { Definition = "Flammability Rating for this object.\nIt is given according to the national building code that governs the rating of flammability for materials."},
			new SingleValuePropertyType("FragilityRating", "IfcLabel") { Definition = "Indication on the fragility of the covering (e.g., under fire conditions).  It is given according to the national building code that might provide a classification for fragility."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface,\nIt is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcCovering", "IfcCoveringType" });
		yield return new PropertySetInfo("Pset_CoveringFlooring", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasAntiStaticSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent electrostatic charge (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("HasNonSkidSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE)."} },
				new [] { "IfcCovering", "IfcCoveringType" });
		yield return new PropertySetInfo("Pset_CoveringTypeMembrane", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalInstallationDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal installation depth underground."},
			new SingleValuePropertyType("NominalTransverseInclination", "IfcPlaneAngleMeasure") { Definition = "Required nominal angle of transverse slope."} },
				new [] { "IfcCovering", "IfcCoveringType" });
		yield return new PropertySetInfo("Pset_CurrentInstrumentTransformer", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccuracyClass", "IfcRatioMeasure") { Definition = "A designation assigned to an instrument transformer the current (or voltage) error and phase displacement of which remain within specified limits under prescribed conditions of use (IEC 321-01-24)."},
			new SingleValuePropertyType("AccuracyGrade", "IfcLabel") { Definition = "The grade of accuracy."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured."},
			new SingleValuePropertyType("NominalPower", "IfcPowerMeasure") { Definition = "A conventional value of apparent power determining a value of the rated current that may be carried with rated voltage applied, under specified conditions. ( IEV ref 421-04-04)"},
			new SingleValuePropertyType("NumberOfPhases", "IfcCountMeasure") { Definition = "Number of phases that the equipment operates on."},
			new SingleValuePropertyType("PrimaryCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("SecondaryCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that has been transformed and is running out of the transformer on the secondary side."} },
				new [] { "IfcFlowInstrument", "IfcFlowInstrument", "IfcFlowInstrumentType", "IfcFlowInstrumentType" });
		yield return new PropertySetInfo("Pset_CurtainWallCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorption values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface,\nIt is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcCurtainWall", "IfcCurtainWallType" });
		yield return new PropertySetInfo("Pset_DamperOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SizingMethod", new [] { "EXACT", "NOMINAL", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies whether the damper is sized nominally or with exact measurements:NOMINAL: Nominal sizing method.\nEXACT: Exact sizing method."} },
				new [] { "IfcDamper" });
		yield return new PropertySetInfo("Pset_DamperPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirFlowRate", "IfcTimeSeries") { Definition = "Air flow rate."},
			new SingleValuePropertyType("BladePositionAngle", "IfcTimeSeries") { Definition = "Blade position angle; angle between the blade and flow direction ( 0 - 90)."},
			new SingleValuePropertyType("DamperPosition", "IfcTimeSeries") { Definition = "Control damper position, ranging from 0 to 1; damper position (0=closed=90deg position angle, 1=open=0deg position angle)."},
			new SingleValuePropertyType("Leakage", "IfcTimeSeries") { Definition = "Air leakage rate."},
			new SingleValuePropertyType("PressureDrop", "IfcTimeSeries") { Definition = "Pressure drop."},
			new SingleValuePropertyType("PressureLossCoefficient", "IfcTimeSeries") { Definition = "Pressure loss coefficient."} },
				new [] { "IfcDamper" });
		yield return new PropertySetInfo("Pset_DamperTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BladeAction", new [] { "FOLDINGCURTAIN", "OPPOSED", "PARALLEL", "SINGLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Blade action."},
			new EnumerationPropertyType("BladeEdge", new [] { "CRIMPED", "UNCRIMPED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Blade edge."},
			new EnumerationPropertyType("BladeShape", new [] { "EXTRUDEDAIRFOIL", "FABRICATEDAIRFOIL", "FLAT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Blade shape. Flat means triple V-groove."},
			new EnumerationPropertyType("Operation", new [] { "AUTOMATIC", "MANUAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The operational mechanism for the damper operation."},
			new EnumerationPropertyType("Orientation", new [] { "HORIZONTAL", "VERTICAL", "VERTICALORHORIZONTAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The intended orientation for the damper as specified by the manufacturer."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("BladeThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the damper blade."},
			new SingleValuePropertyType("CloseOffRating", "IfcPressureMeasure") { Definition = "Close off rating."},
			new SingleValuePropertyType("FaceArea", "IfcAreaMeasure") { Definition = "Face area open to the airstream."},
			new SingleValuePropertyType("FrameDepth", "IfcPositiveLengthMeasure") { Definition = "The length (or depth) of the frame.\n\nFor a damper, it is the length (or depth) of the damper frame."},
			new SingleValuePropertyType("FrameThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the frame.\n\nFor a damper, it is the thickness of the damper frame material."},
			new SingleValuePropertyType("FrameType", "IfcLabel") { Definition = "The type of frame used by the damper (e.g., Standard, Single Flange, Single Reversed Flange, Double Flange, etc.)."},
			new SingleValuePropertyType("LeakageFullyClosed", "IfcVolumetricFlowRateMeasure") { Definition = "Leakage when fully closed."},
			new SingleValuePropertyType("MaximumAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum allowable air flow rate."},
			new SingleValuePropertyType("MaximumWorkingPressure", "IfcPressureMeasure") { Definition = "Maximum pressure that the object is manufactured to withstand."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal air flow rate."},
			new SingleValuePropertyType("NumberofBlades", "IfcInteger") { Definition = "Number of blades."},
			new SingleValuePropertyType("OpenPressureDrop", "IfcPressureMeasure") { Definition = "Total pressure drop across damper."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."},
			new SingleValuePropertyType("TemperatureRating", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature rating."},
			new TableValuePropertyType("LeakageCurve", "IfcVolumetricFlowRateMeasure", "IfcPressureMeasure") { Definition = "Leakage versus pressure drop; Leakage = f (pressure)."},
			new TableValuePropertyType("LossCoefficentCurve", "IfcPositivePlaneAngleMeasure", "IfcReal") { Definition = "Loss coefficient – blade position angle curve; ratio of pressure drop to velocity pressure versus blade angle; C = f (blade angle position)."},
			new TableValuePropertyType("RegeneratedSoundCurve", "IfcVolumetricFlowRateMeasure", "IfcSoundPressureMeasure") { Definition = "Regenerated sound versus air flow rate."} },
				new [] { "IfcDamper", "IfcDamperType" });
		yield return new PropertySetInfo("Pset_DamperTypeControlDamper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControlDamperOperation", new [] { "EXPONENTIAL", "LINEAR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The inherent characteristic of the control damper operation."},
			new SingleValuePropertyType("TorqueRange", "IfcTorqueMeasure") { Definition = "Torque range: minimum operational torque to maximum allowable torque."} },
				new [] { "IfcDamper", "IfcDamperType" });
		yield return new PropertySetInfo("Pset_DamperTypeFireDamper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ActuationType", new [] { "GRAVITY", "SPRING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the different types of dampers."},
			new EnumerationPropertyType("ClosureRatingEnum", new [] { "DYNAMIC", "STATIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the closure rating for the damper."},
			new SingleValuePropertyType("FireResistanceRating", "IfcLabel") { Definition = "Measure of the fire resistance rating in hours (e.g., 1.5 hours, 2 hours, etc.)."},
			new SingleValuePropertyType("FusibleLinkTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature that the fusible link melts."} },
				new [] { "IfcDamper", "IfcDamperType" });
		yield return new PropertySetInfo("Pset_DamperTypeFireSmokeDamper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ActuationType", new [] { "GRAVITY", "SPRING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the different types of dampers."},
			new EnumerationPropertyType("ClosureRatingEnum", new [] { "DYNAMIC", "STATIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the closure rating for the damper."},
			new SingleValuePropertyType("DamperControlType", "IfcLabel") { Definition = "The type of control used to operate the damper (e.g., Open/Closed Indicator, Resettable Temperature Sensor, Temperature Override, etc.)."},
			new SingleValuePropertyType("FireResistanceRating", "IfcLabel") { Definition = "Measure of the fire resistance rating in hours (e.g., 1.5 hours, 2 hours, etc.)."},
			new SingleValuePropertyType("FusibleLinkTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature that the fusible link melts."} },
				new [] { "IfcDamper", "IfcDamperType" });
		yield return new PropertySetInfo("Pset_DamperTypeSmokeDamper", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ControlType", "IfcLabel") { Definition = "The type controller, signal modification effected and applicable ports"} },
				new [] { "IfcDamper", "IfcDamperType" });
		yield return new PropertySetInfo("Pset_DataTransmissionUnit", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DataTransmissionUnitUsage", new [] { "EARTHQUAKE", "FOREIGNOBJECT", "WINDANDRAIN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the usage of the data transmission unit. It can be used to transmit data for different types of sensors."},
			new EnumerationPropertyType("SerialInterfaceType", new [] { "RS_232", "RS_422", "RS_485", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of serial interface used by the device."},
			new SingleValuePropertyType("WorkingState", "IfcLabel") { Definition = "Indicates the working state of device or system."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryColumnShoe", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ColumnShoeBasePlateDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the column shoe base plate."},
			new SingleValuePropertyType("ColumnShoeBasePlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the column shoe base plate."},
			new SingleValuePropertyType("ColumnShoeBasePlateWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the column shoe base plate."},
			new SingleValuePropertyType("ColumnShoeCasingDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the column shoe casing."},
			new SingleValuePropertyType("ColumnShoeCasingHeight", "IfcPositiveLengthMeasure") { Definition = "The height of the column shoe casing."},
			new SingleValuePropertyType("ColumnShoeCasingWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the column shoe casing."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryCornerFixingPlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CornerFixingPlateFlangeWidthInPlaneX", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped corner plate in plane X."},
			new SingleValuePropertyType("CornerFixingPlateFlangeWidthInPlaneZ", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped corner plate in plane Z."},
			new SingleValuePropertyType("CornerFixingPlateLength", "IfcPositiveLengthMeasure") { Definition = "The length of the L-shaped corner plate."},
			new SingleValuePropertyType("CornerFixingPlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the L-shaped corner plate."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryDiagonalTrussConnector", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DiagonalTrussBaseBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the base bar."},
			new SingleValuePropertyType("DiagonalTrussCrossBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the diagonal cross-bars."},
			new SingleValuePropertyType("DiagonalTrussCrossBarSpacing", "IfcPositiveLengthMeasure") { Definition = "The spacing between diagonal cross-bar sections."},
			new SingleValuePropertyType("DiagonalTrussHeight", "IfcPositiveLengthMeasure") { Definition = "The overall height of the truss connector."},
			new SingleValuePropertyType("DiagonalTrussLength", "IfcPositiveLengthMeasure") { Definition = "The overall length of the truss connector."},
			new SingleValuePropertyType("DiagonalTrussSecondaryBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the secondary bar."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryEdgeFixingPlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EdgeFixingPlateFlangeWidthInPlaneX", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped edge plate in plane X."},
			new SingleValuePropertyType("EdgeFixingPlateFlangeWidthInPlaneZ", "IfcPositiveLengthMeasure") { Definition = "The flange width of the L-shaped edge plate in plane Z."},
			new SingleValuePropertyType("EdgeFixingPlateLength", "IfcPositiveLengthMeasure") { Definition = "The length of the L-shaped edge plate."},
			new SingleValuePropertyType("EdgeFixingPlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the L-shaped edge plate."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryFixingSocket", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FixingSocketHeight", "IfcPositiveLengthMeasure") { Definition = "The overall height of the fixing socket."},
			new SingleValuePropertyType("FixingSocketThreadDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the thread."},
			new SingleValuePropertyType("FixingSocketThreadLength", "IfcPositiveLengthMeasure") { Definition = "The length of the threaded part of the fixing socket."},
			new SingleValuePropertyType("FixingSocketTypeReference", "IfcExternalReference") { Definition = "Type reference for the fixing socket according to local standards."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryLadderTrussConnector", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("LadderTrussBaseBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the base bar."},
			new SingleValuePropertyType("LadderTrussCrossBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the straight cross-bars."},
			new SingleValuePropertyType("LadderTrussCrossBarSpacing", "IfcPositiveLengthMeasure") { Definition = "The spacing between the straight cross-bars."},
			new SingleValuePropertyType("LadderTrussHeight", "IfcPositiveLengthMeasure") { Definition = "The overall height of the truss connector."},
			new SingleValuePropertyType("LadderTrussLength", "IfcPositiveLengthMeasure") { Definition = "The overall length of the truss connector."},
			new SingleValuePropertyType("LadderTrussSecondaryBarDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the secondary bar."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryStandardFixingPlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("StandardFixingPlateDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the standard fixing plate."},
			new SingleValuePropertyType("StandardFixingPlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the standard fixing plate."},
			new SingleValuePropertyType("StandardFixingPlateWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the standard fixing plate."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryTypeBracket", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsInsulated", "IfcBoolean") { Definition = "Indicates whether the element is insulated or not."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryTypeCableArranger", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CableArrangerPosition", new [] { "FRONTSIDE", "HORIZONTAL", "REARSIDE", "VERTICAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the directional position of the cable arranger: vertical, horizontal, front or rear. It is relative to the element (usually a cabinet) that the cable arranger is affiliated."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryTypeInsulator", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("InsulationMethod", new [] { "LONGRODINSULATOR", "PININSULATOR", "POSTINSULATOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The method used to insulate."},
			new SingleValuePropertyType("BendingStrength", "IfcPressureMeasure") { Definition = "Bending strength."},
			new SingleValuePropertyType("BreakdownVoltageTolerance", "IfcElectricVoltageMeasure") { Definition = "Nominal value of the spark gap breakdown voltage tolerance."},
			new SingleValuePropertyType("CreepageDistance", "IfcPositiveLengthMeasure") { Definition = "Shortest distance or the sum of the shortest distances along the surface on an insulator between two conductive parts which normally have the operating voltage between them. (IEV ref 471-01-04)"},
			new SingleValuePropertyType("InstallationMethod", "IfcLabel") { Definition = "Method of installation of cable/conductor. Installation methods are typically defined by reference in standards such as IEC 60364-5-52, table 52A-1 or BS7671 Appendix 4 Table 4A1 etc. Selection of the value to be used should be determined from such a standard according to local usage."},
			new SingleValuePropertyType("InsulationVoltage", "IfcElectricVoltageMeasure") { Definition = "The insulation voltage.\n\nThe max voltage for normal insulation operation."},
			new SingleValuePropertyType("LightningPeakVoltage", "IfcElectricVoltageMeasure") { Definition = "The peak lightning voltage that the insulator could withstand."},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature range in which the device operates normally."},
			new SingleValuePropertyType("RatedCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that a device is designed to handle."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("RMSWithstandVoltage", "IfcElectricVoltageMeasure") { Definition = "Rms value of sinusoidal power frequency voltage that the insulation of the given equipment can withstand during tests made under specified conditions and for a specified duration. (IEV ref 614-03-22）"},
			new SingleValuePropertyType("Voltage", "IfcElectricVoltageMeasure") { Definition = "The actual voltage and operable range."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryTypeLock", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InstallationPlan", "IfcExternalReference") { Definition = "Reference to external information source about installation or construction plan of the element."},
			new SingleValuePropertyType("RequiredClosureSpacing", "IfcPositiveLengthMeasure") { Definition = "Required length of the closure spacing."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryTypeRailBrace", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsTemporary", "IfcBoolean") { Definition = "Indicates if the installation of the element is temporary or not."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryTypeRailLubrication", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LubricationPowerSupplyType", new [] { "ELECTRIC", "PHOTOVOLTAIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of power supply method used by the rail lubrication."},
			new EnumerationPropertyType("LubricationSystemType", new [] { "ACTIVE_LUBRICATION", "PASSIVE_LUBRICATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Design and type of lubricating system e.g. active, passive."},
			new EnumerationPropertyType("PositionInTrack", new [] { "LEFT", "MIDDLE", "RIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the relative position of the element in track, which lies to the left or right as facing in the direction of increasing stationing values."},
			new SingleValuePropertyType("MaximumNoiseEmissions", "IfcSoundPowerLevelMeasure") { Definition = "Maximum noise emissions limit at this location."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryTypeRailPad", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RailPadStiffness", new [] { "MEDIUM", "SOFT", "STIFF", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the stiffness of a rail pad."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryTypeSlidingChair", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsSelfLubricated", "IfcBoolean") { Definition = "Indicates whether the element is self lubricated or not."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryTypeSoundAbsorption", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SoundAbsorptionLimit", "IfcSoundPowerLevelMeasure") { Definition = "Mandatory limit values in sound absorption."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryTypeTensioningEquipment", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("HasBreakLineLock", "IfcBoolean") { Definition = "Indicates whether the equipment has the function of brake line lock or not."},
			new SingleValuePropertyType("RatioOfWireTension", "IfcPositiveRatioMeasure") { Definition = "The ratio of wire tension to tensioner weight."},
			new SingleValuePropertyType("ReferenceEnvironmentTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ideal temperature range."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("TransmissionEfficiency", "IfcRatioMeasure") { Definition = "Transmission efficiency of the tensioning equipment."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DiscreteAccessoryWireLoop", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WireDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the wire."},
			new SingleValuePropertyType("WireEmbeddingLength", "IfcPositiveLengthMeasure") { Definition = "The length of the part of wire which is embedded in the precast concrete element."},
			new SingleValuePropertyType("WireLoopBasePlateLength", "IfcPositiveLengthMeasure") { Definition = "The length of the base plate."},
			new SingleValuePropertyType("WireLoopBasePlateThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the base plate."},
			new SingleValuePropertyType("WireLoopBasePlateWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the base plate."},
			new SingleValuePropertyType("WireLoopLength", "IfcPositiveLengthMeasure") { Definition = "The length of the fastening loop part of the wire."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_DistributionBoardOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsMain", "IfcBoolean") { Definition = "Identifies if the current instance is a main distribution point or topmost level in an electrical distribution hierarchy (= TRUE) or a sub-main distribution point (= FALSE)."},
			new SingleValuePropertyType("IsSkilledOperator", "IfcBoolean") { Definition = "Identifies if the current instance requires a skilled person or instructed person to perform operations on the distribution board (= TRUE) or whether operations may be performed by a person without appropriate skills or instruction (= FALSE)."} },
				new [] { "IfcElectricDistributionBoard" });
		yield return new PropertySetInfo("Pset_DistributionBoardTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcElectricDistributionBoard", "IfcElectricDistributionBoardType" });
		yield return new PropertySetInfo("Pset_DistributionBoardTypeDispatchingBoard", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DispatchingBoardType", new [] { "CENTER", "STATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of dispatching board."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcDistributionBoard", "IfcDistributionBoardType" });
		yield return new PropertySetInfo("Pset_DistributionBoardTypeDistributionFrame", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("PortCapacity", "IfcInteger") { Definition = "Indicates the number of ports in the passive device that can be used to interconnect cables."} },
				new [] { "IfcDistributionBoard", "IfcDistributionBoardType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead.\n\nE.g.  'WWS/VS1/400/001', which indicates the occurrence belongs to system WWS, subsystems VSI/400, and has the component number 001."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeFormedDuct", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccessCoverLoadRating", "IfcText") { Definition = "The load rating of the access cover (which may be a value or an alphanumerically defined class rating)."},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the base construction, assumed to be constructed at a single thickness."},
			new SingleValuePropertyType("CableDuctOccupancyRatio", "IfcNormalisedRatioMeasure") { Definition = "Indicates the ratio between the number of cables in the duct and the maximum number of cables that the duct can contain."},
			new SingleValuePropertyType("ClearDepth", "IfcPositiveLengthMeasure") { Definition = "The clear depth.\n\nIt indicates the formed space in the duct."},
			new SingleValuePropertyType("ClearWidth", "IfcPositiveLengthMeasure") { Definition = "The clear width.\n\nIt indicates the formed space in the duct."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the wall construction.\nNOTE: It is assumed that walls will be constructed at a single thickness."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeInspectionChamber", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccessCoverLoadRating", "IfcText") { Definition = "The load rating of the access cover (which may be a value or an alphanumerically defined class rating)."},
			new SingleValuePropertyType("AccessCoverMaterial", "IfcMaterialDefinition") { Definition = "The material from which the access cover to the chamber is constructed.\nNOTE: It is assumed that chamber walls will be constructed of a single material."},
			new SingleValuePropertyType("AccessLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "The length of the chamber access cover or, where the plan shape of the cover is circular, the radius."},
			new SingleValuePropertyType("AccessWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the chamber access cover where the plan shape of the cover is not circular."},
			new SingleValuePropertyType("BaseMaterial", "IfcMaterialDefinition") { Definition = "The material from which the base of the chamber is constructed.\nNOTE: It is assumed that chamber base will be constructed of a single material."},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the base construction, assumed to be constructed at a single thickness."},
			new SingleValuePropertyType("ChamberLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "Length or, in the event of the shape being circular in plan, the radius of the chamber."},
			new SingleValuePropertyType("ChamberWidth", "IfcPositiveLengthMeasure") { Definition = "Width, in the event of the shape being non circular in plan."},
			new SingleValuePropertyType("InspectionChamberInvertLevel", "IfcLengthMeasure") { Definition = "Level of the lowest part of the cross section as measured from ground level."},
			new SingleValuePropertyType("SoffitLevel", "IfcLengthMeasure") { Definition = "Level of the highest internal part of the cross section as measured from ground level."},
			new SingleValuePropertyType("WallMaterial", "IfcMaterialDefinition") { Definition = "The material from which the wall of the chamber is constructed.\nNOTE: It is assumed that chamber walls will be constructed of a single material."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the wall construction.\nNOTE: It is assumed that walls will be constructed at a single thickness."},
			new SingleValuePropertyType("WithBackdrop", "IfcBoolean") { Definition = "Indicates whether the chamber has a backdrop or tumbling bay (TRUE) or not (FALSE)."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeInspectionPit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcPositiveLengthMeasure") { Definition = "The depth of the object."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeManhole", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TypeOfShaft", new [] { "DIVERSIONSHAFT", "FLUSHINGCHAMBER", "GATESHAFT", "GULLY", "INSPECTIONCHAMBER", "PUMPSHAFT", "ROOFWATERSHAFT", "SHAFTWITHCHECKVALVE", "SLURRYCOLLECTOR", "SOAKAWAY", "WELL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Additional information on the purpose of the shaft."},
			new SingleValuePropertyType("AccessCoverLoadRating", "IfcText") { Definition = "The load rating of the access cover (which may be a value or an alphanumerically defined class rating)."},
			new SingleValuePropertyType("AccessCoverMaterial", "IfcMaterialDefinition") { Definition = "The material from which the access cover to the chamber is constructed.\nNOTE: It is assumed that chamber walls will be constructed of a single material."},
			new SingleValuePropertyType("AccessLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "The length of the chamber access cover or, where the plan shape of the cover is circular, the radius."},
			new SingleValuePropertyType("AccessWidth", "IfcPositiveLengthMeasure") { Definition = "The width of the chamber access cover where the plan shape of the cover is not circular."},
			new SingleValuePropertyType("BaseMaterial", "IfcMaterialDefinition") { Definition = "The material from which the base of the chamber is constructed.\nNOTE: It is assumed that chamber base will be constructed of a single material."},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the base construction, assumed to be constructed at a single thickness."},
			new SingleValuePropertyType("HasSteps", "IfcBoolean") { Definition = "Indicates whether the chamber has steps (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("InvertLevel", "IfcLengthMeasure") { Definition = "Level of the lowest part of the cross section as measured from ground level."},
			new SingleValuePropertyType("IsAccessibleOnFoot", "IfcBoolean") { Definition = "Indicates whether the element is accessible on foot (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsLocked", "IfcBoolean") { Definition = "Indicates whether the element is locked (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsShallow", "IfcBoolean") { Definition = "Indicates whether the chamber has been designed as being shallow (TRUE) or deep (FALSE)."},
			new SingleValuePropertyType("NumberOfCableEntries", "IfcCountMeasure") { Definition = "Indicates the number of cable entries in the manhole."},
			new SingleValuePropertyType("NumberOfManholeCovers", "IfcCountMeasure") { Definition = "Indicates the number of manhole covers."},
			new SingleValuePropertyType("SoffitLevel", "IfcLengthMeasure") { Definition = "Level of the highest internal part of the cross section as measured from ground level."},
			new SingleValuePropertyType("WallMaterial", "IfcMaterialDefinition") { Definition = "The material from which the wall of the chamber is constructed.\nNOTE: It is assumed that chamber walls will be constructed of a single material."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the wall construction.\nNOTE: It is assumed that walls will be constructed at a single thickness."},
			new SingleValuePropertyType("WithBackdrop", "IfcBoolean") { Definition = "Indicates whether the chamber has a backdrop or tumbling bay (TRUE) or not (FALSE)."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeMeterChamber", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccessCoverMaterial", "IfcMaterialDefinition") { Definition = "The material from which the access cover to the chamber is constructed.\nNOTE: It is assumed that chamber walls will be constructed of a single material."},
			new SingleValuePropertyType("BaseMaterial", "IfcMaterialDefinition") { Definition = "The material from which the base of the chamber is constructed.\nNOTE: It is assumed that chamber base will be constructed of a single material."},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the base construction, assumed to be constructed at a single thickness."},
			new SingleValuePropertyType("ChamberLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "Length or, in the event of the shape being circular in plan, the radius of the chamber."},
			new SingleValuePropertyType("ChamberWidth", "IfcPositiveLengthMeasure") { Definition = "Width, in the event of the shape being non circular in plan."},
			new SingleValuePropertyType("WallMaterial", "IfcMaterialDefinition") { Definition = "The material from which the wall of the chamber is constructed.\nNOTE: It is assumed that chamber walls will be constructed of a single material."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the wall construction.\nNOTE: It is assumed that walls will be constructed at a single thickness."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeSump", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("SumpInvertLevel", "IfcPositiveLengthMeasure") { Definition = "The lowest point in the cross section of the sump."},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeTrench", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcPositiveLengthMeasure") { Definition = "The depth of the object."},
			new SingleValuePropertyType("InvertLevel", "IfcLengthMeasure") { Definition = "Level of the lowest part of the cross section as measured from ground level."},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionChamberElementTypeValveChamber", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccessCoverMaterial", "IfcMaterialDefinition") { Definition = "The material from which the access cover to the chamber is constructed.\nNOTE: It is assumed that chamber walls will be constructed of a single material."},
			new SingleValuePropertyType("BaseMaterial", "IfcMaterialDefinition") { Definition = "The material from which the base of the chamber is constructed.\nNOTE: It is assumed that chamber base will be constructed of a single material."},
			new SingleValuePropertyType("BaseThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the base construction, assumed to be constructed at a single thickness."},
			new SingleValuePropertyType("ChamberLengthOrRadius", "IfcPositiveLengthMeasure") { Definition = "Length or, in the event of the shape being circular in plan, the radius of the chamber."},
			new SingleValuePropertyType("ChamberWidth", "IfcPositiveLengthMeasure") { Definition = "Width, in the event of the shape being non circular in plan."},
			new SingleValuePropertyType("WallMaterial", "IfcMaterialDefinition") { Definition = "The material from which the wall of the chamber is constructed.\nNOTE: It is assumed that chamber walls will be constructed of a single material."},
			new SingleValuePropertyType("WallThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the wall construction.\nNOTE: It is assumed that walls will be constructed at a single thickness."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Pset_DistributionPortCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ColourCode", "IfcLabel") { Definition = "Name of a colour for identifying the connector, if applicable."},
			new SingleValuePropertyType("PortNumber", "IfcInteger") { Definition = "The port index for logically ordering the port within the containing element or element type."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortPHistoryCable", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ApparentPower", "IfcTimeSeries") { Definition = "Apparent power."},
			new SingleValuePropertyType("CurrentHistory", "IfcTimeSeries") { Definition = "Log of electrical current."},
			new SingleValuePropertyType("DataReceived", "IfcTimeSeries") { Definition = "For data ports, captures log of data received.  The LIST at IfcTimeSeriesValue.Values may split out data according to Pset_DistributionPortTypeCable.Protocols."},
			new SingleValuePropertyType("DataTransmitted", "IfcTimeSeries") { Definition = "For data ports, captures log of data transmitted.  The LIST at IfcTimeSeriesValue.Values may split out data according to Pset_DistributionPortTypeCable.Protocols."},
			new SingleValuePropertyType("PowerFactorHistory", "IfcTimeSeries") { Definition = "Power factor."},
			new SingleValuePropertyType("ReactivePower", "IfcTimeSeries") { Definition = "Reactive power."},
			new SingleValuePropertyType("RealPower", "IfcTimeSeries") { Definition = "Real power."},
			new SingleValuePropertyType("VoltageHistory", "IfcTimeSeries") { Definition = "Log of electrical voltage."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortPHistoryDuct", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FlowConditionHistory", "IfcTimeSeries") { Definition = "Defines the flow condition as a percentage of the cross-sectional area."},
			new SingleValuePropertyType("MassFlowRateHistory", "IfcTimeSeries") { Definition = "The mass flow rate of the fluid."},
			new SingleValuePropertyType("PressureHisotry", "IfcTimeSeries") { Definition = "The pressure of the fluid."},
			new SingleValuePropertyType("TemperatureHistory", "IfcTimeSeries") { Definition = "Temperature of the fluid. For air this value represents the dry bulb temperature."},
			new SingleValuePropertyType("VelocityHistory", "IfcTimeSeries") { Definition = "The velocity of the fluid."},
			new SingleValuePropertyType("VolumetricFlowRateHistory", "IfcTimeSeries") { Definition = "The volumetric flow rate of the fluid."},
			new SingleValuePropertyType("WetBulbTemperatureHistory", "IfcTimeSeries") { Definition = "Wet bulb temperature of the fluid; only applicable if the fluid is air."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortPHistoryPipe", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Flowrate", "IfcTimeSeries") { Definition = "The flowrate of the fluid."},
			new SingleValuePropertyType("Pressure", "IfcTimeSeries") { Definition = "The pressure of  fluid."},
			new SingleValuePropertyType("Temperature", "IfcTimeSeries") { Definition = "Temperature of the fluid."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortTypeCable", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConductorFunction", new [] { "NEUTRAL", "PHASE_L1", "PHASE_L2", "PHASE_L3", "PROTECTIVEEARTH", "PROTECTIVEEARTHNEUTRAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates function of the conductors to which the load is connected. Where L1, L2 and L3 represent the phase lines according to IEC 60446 notation (sometimes phase lines may be referenced by color [Red, Blue, Yellow] or by number [1, 2, 3] etc). Protective Earth is sometimes also known as CPC or common protective conductor. Note that for an electrical device, a set of line conductor functions may be applied."},
			new EnumerationPropertyType("ConnectionGender", new [] { "FEMALE", "MALE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The physical connection gender."},
			new EnumerationPropertyType("ElectricalConnectionType", new [] { "ACPLUG", "COAXIAL", "CRIMP", "DCPLUG", "DIN", "DSUB", "DVI", "EIAJ", "HDMI", "RADIO", "RCA", "RJ", "SOCKET", "TRS", "USB", "XLR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The physical port connection:ACPLUG: AC plug\nDCPLUG: DC plug\nCRIMP: bare wire"},
			new SingleValuePropertyType("ConnectionSubtype", "IfcLabel") { Definition = "The physical port connection subtype that further qualifies the ConnectionType. The following values are recommended:ACPLUG: A, B, C, D, E, F, EF, G, H, I, J, K, L, M\nDIN: Mini3P, Mini4P, Mini5P, Mini6P, Mini7P, Mini8P, Mini9P\nDSub: DA15, DB25, DC37, DD50, DE9, DE15\nEIAJ: RC5720\nHDMI: A, B, C\nRADIO: IEEE802.11g, IEEE802.11n\nRJ: 4P4C, 6P2C, 8P8C\nSOCKET: E-11, E-12, E-14, E-17, E-26, E-27, E-39, E-40\nTRS: TS_Mini, TS_SubMini, TRS_Mini, TRS_SubMini"},
			new SingleValuePropertyType("Current", "IfcElectricCurrentMeasure") { Definition = "The actual current and operable range."},
			new SingleValuePropertyType("CurrentContent3rdHarmonic", "IfcPositiveRatioMeasure") { Definition = "The ratio between the third harmonic current and the phase current."},
			new SingleValuePropertyType("HasConnector", "IfcBoolean") { Definition = "Indicate whether the wire pair end point is terminated with a connector or not."},
			new SingleValuePropertyType("IsWelded", "IfcBoolean") { Definition = "Indicates whether the wire pair end point is joined to another wire pair end point by means of a welded junction."},
			new SingleValuePropertyType("Power", "IfcPowerMeasure") { Definition = "The actual power and operable range."},
			new SingleValuePropertyType("Protocols", "IfcIdentifier") { Definition = "For data ports, identifies the protocols used as defined by the Open System Interconnection (OSI) Basic Reference Model (ISO 7498).  Layers include: 1. Physical; 2. DataLink; 3. Network; 4. Transport; 5. Session; 6. Presentation; 7. Application.  Example: 3:IP, 4:TCP, 5:HTTP"},
			new SingleValuePropertyType("Voltage", "IfcElectricVoltageMeasure") { Definition = "The actual voltage and operable range."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortTypeDuct", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConnectionType", new [] { "BEADEDSLEEVE", "COMPRESSION", "CRIMP", "DRAWBAND", "DRIVESLIP", "FLANGED", "NONE", "OUTSIDESLEEVE", "SLIPON", "SOLDERED", "SSLIP", "STANDINGSEAM", "SWEDGE", "WELDED", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "The end-style treatment of the duct port:BEADEDSLEEVE: Beaded Sleeve.\nCOMPRESSION: Compression.\nCRIMP: Crimp.\nDRAWBAND: Drawband.\nDRIVESLIP: Drive slip.\nFLANGED: Flanged.\nOUTSIDESLEEVE: Outside Sleeve.\nSLIPON: Slipon.\nSOLDERED: Soldered.\nSSLIP: S-Slip.\nSTANDINGSEAM: Standing seam.\nSWEDGE: Swedge.\nWELDED: Welded.\nOTHER: Another type of end-style has been applied.\nNONE: No end-style has been applied."},
			new SingleValuePropertyType("ConnectionSubtype", "IfcLabel") { Definition = "The physical port connection subtype that further qualifies the ConnectionType. The following values are recommended:ACPLUG: A, B, C, D, E, F, EF, G, H, I, J, K, L, M\nDIN: Mini3P, Mini4P, Mini5P, Mini6P, Mini7P, Mini8P, Mini9P\nDSub: DA15, DB25, DC37, DD50, DE9, DE15\nEIAJ: RC5720\nHDMI: A, B, C\nRADIO: IEEE802.11g, IEEE802.11n\nRJ: 4P4C, 6P2C, 8P8C\nSOCKET: E-11, E-12, E-14, E-17, E-26, E-27, E-39, E-40\nTRS: TS_Mini, TS_SubMini, TRS_Mini, TRS_SubMini"},
			new SingleValuePropertyType("DryBulbTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Dry bulb temperature of the object.\n\nIndicates dry bulb temperature of the air."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence.\n\nThe nominal height of the duct connection. Only provided for rectangular shaped ducts."},
			new SingleValuePropertyType("NominalThickness", "IfcNonNegativeLengthMeasure") { Definition = "The nominal thickness of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("Pressure", "IfcPressureMeasure") { Definition = "The pressure of  fluid."},
			new SingleValuePropertyType("Velocity", "IfcLinearVelocityMeasure") { Definition = "The velocity of the fluid."},
			new SingleValuePropertyType("VolumetricFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric flow rate of the fluid."},
			new SingleValuePropertyType("WetBulbTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Wet bulb temperature of the air."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionPortTypePipe", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConnectionType", new [] { "BRAZED", "COMPRESSION", "FLANGED", "GROOVED", "NONE", "OUTSIDESLEEVE", "SOLDERED", "SWEDGE", "THREADED", "WELDED", "OTHER", "UNSET" } ) { Definition = "The end-style treatment of the duct port:BEADEDSLEEVE: Beaded Sleeve.\nCOMPRESSION: Compression.\nCRIMP: Crimp.\nDRAWBAND: Drawband.\nDRIVESLIP: Drive slip.\nFLANGED: Flanged.\nOUTSIDESLEEVE: Outside Sleeve.\nSLIPON: Slipon.\nSOLDERED: Soldered.\nSSLIP: S-Slip.\nSTANDINGSEAM: Standing seam.\nSWEDGE: Swedge.\nWELDED: Welded.\nOTHER: Another type of end-style has been applied.\nNONE: No end-style has been applied."},
			new SingleValuePropertyType("ConnectionSubtype", "IfcLabel") { Definition = "The physical port connection subtype that further qualifies the ConnectionType. The following values are recommended:ACPLUG: A, B, C, D, E, F, EF, G, H, I, J, K, L, M\nDIN: Mini3P, Mini4P, Mini5P, Mini6P, Mini7P, Mini8P, Mini9P\nDSub: DA15, DB25, DC37, DD50, DE9, DE15\nEIAJ: RC5720\nHDMI: A, B, C\nRADIO: IEEE802.11g, IEEE802.11n\nRJ: 4P4C, 6P2C, 8P8C\nSOCKET: E-11, E-12, E-14, E-17, E-26, E-27, E-39, E-40\nTRS: TS_Mini, TS_SubMini, TRS_Mini, TRS_SubMini"},
			new SingleValuePropertyType("FlowCondition", "IfcPositiveRatioMeasure") { Definition = "Defines the flow condition as a percentage of the cross-sectional area."},
			new SingleValuePropertyType("InnerDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual inner diameter of the object."},
			new SingleValuePropertyType("MassFlowRate", "IfcMassFlowRateMeasure") { Definition = "The mass flow rate of the fluid."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal diameter or width of the object.\n\nThe nominal diameter of the pipe connection."},
			new SingleValuePropertyType("OuterDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual outer diameter of the object."},
			new SingleValuePropertyType("Pressure", "IfcPressureMeasure") { Definition = "The pressure of  fluid."},
			new SingleValuePropertyType("Temperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature of the fluid."},
			new SingleValuePropertyType("Velocity", "IfcLinearVelocityMeasure") { Definition = "The velocity of the fluid."},
			new SingleValuePropertyType("VolumetricFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric flow rate of the fluid."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_DistributionSystemCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead.\n\nE.g. 'WWS/VS1', which indicates the system to be WWS, subsystems VSI/400."} },
				new [] { "IfcDistributionSystem" });
		yield return new PropertySetInfo("Pset_DistributionSystemTypeElectrical", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectricalSystemCategory", new [] { "EXTRALOWVOLTAGE", "HIGHVOLTAGE", "LOWVOLTAGE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Designates the voltage range of the circuit, according to IEC.  HIGHVOLTAGE indicates >1000V AC or >1500V DV; LOWVOLTAGE indicates 50-1000V AC or 120-1500V DC; EXTRALOWVOLTAGE indicates <50V AC or <120V DC."},
			new EnumerationPropertyType("ElectricalSystemType", new [] { "IT", "TN", "TN_C", "TN_C_S", "TN_S", "TT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "For certain purposes of electrical regulations, IEC 60364 defines types of system using type identifiers. Assignment of identifiers depends upon the relationship of the source, and of exposed conductive parts of the installation, to Ground (Earth).   Identifiers that may be assigned through IEC 60364 are:•TN type system, a system having one or more points of the source of energy directly earthed, the exposed conductive parts of the installation being connected to that point by protective conductors,\n•TN C type system, a TN type system in which neutral and protective functions are combined in a single conductor throughout the system,\n•TN S type system, a TN type system having separate neutral and protective conductors throughout the system,\n•TN C S type system, a TN type system in which neutral and protective functions are combined in a single conductor in part of the system,\n•TT type system, a system having one point of the source of energy directly earthed, the exposed conductive parts of the installation being connected to earth electrodes electrically independent of the earth electrodes of the source,\n•IT type system, a system having no direct connection between live parts and Earth, the exposed conductive parts of the electrical installation being earthed."},
			new SingleValuePropertyType("Diversity", "IfcPositiveRatioMeasure") { Definition = "The ratio, expressed as a numerical\nvalue or as a percentage, of the\nsimultaneous maximum demand of\na group of electrical appliances or\nconsumers within a specified period,\nto the sum of their individual maximum\ndemands within the same\nperiod. The group of electrical appliances is in this case connected to this circuit. Definition from IEC 60050, IEV 691-10-04\nNOTE1: It is often not desirable to size each conductor in a distribution system to support the total connected load at that point in the network. Diversity is applied on the basis of the anticipated loadings that are likely to result from all loads not being connected at the same time.\nNOTE2: Diversity is applied to final circuits only, not to sub-main circuits supplying other DBs."},
			new SingleValuePropertyType("MaximumAllowedVoltageDrop", "IfcElectricVoltageMeasure") { Definition = "The maximum voltage drop across the circuit that must not be exceeded.\nThere are two  voltage drop limit settings that may be applied; one for sub-main circuits, and one in each Distribution Board or Consumer Unit for final circuits connected to that board. The settings should limit the overall voltage drop to the required level. Default settings of 1.5% for sub-main circuits and 2.5% for final circuits, giving an overall limit of 4% may be applied.\nNOTE: This value may also be specified as a constraint within an IFC model if required but is included within the property set at this stage pending implementation of the required capabilities within software applications."},
			new SingleValuePropertyType("NetImpedance", "IfcElectricResistanceMeasure") { Definition = "The maximum earth loop impedance upstream of a circuit (typically stated as the variable Zs). This value is for 55o C (130oF) Celsius usage."},
			new SingleValuePropertyType("NumberOfLiveConductors", "IfcCountMeasure") { Definition = "Number of live conductors within this circuit. Either this property or the ConductorFunction property (if only one) may be asserted."},
			new SingleValuePropertyType("RatedVoltageRange", "IfcElectricVoltageMeasure") { Definition = "Voltage range as declared by the manufacturer expressed by its lower and upper rated voltages [Source : IEC 62368-1:2010, 3.3.10.5]."} },
				new [] { "IfcDistributionSystem" });
		yield return new PropertySetInfo("Pset_DistributionSystemTypeOverheadContactlineSystem", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("OCSType", new [] { "COMPOUND_CATENARY_SUSPENSION", "OCL_WITH_CATENARY_SUSPENSION", "OCL_WITH_STITCHED_CATENARY_SUSPENSION", "RIGID_CATENARY", "TROLLY_TYPE_CONTACT_LINE", "TROLLY_TYPE_WITH_STITCHWIRE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of overhead contactline system (OCS)."},
			new SingleValuePropertyType("ContactWireNominalDrop", "IfcPositiveLengthMeasure") { Definition = "Vertical distance between the main catenary wire and the contact wire measured at a support point."},
			new SingleValuePropertyType("ContactWireNominalHeight", "IfcPositiveLengthMeasure") { Definition = "Nominal distance from the top of the rail to the lower face of the contact wire, measured perpendicular to the track."},
			new SingleValuePropertyType("ContactWireStagger", "IfcPositiveLengthMeasure") { Definition = "Lateral displacement of the contact wire to opposite sides of the track centre at successive supports."},
			new SingleValuePropertyType("ContactWireUplift", "IfcNonNegativeLengthMeasure") { Definition = "Vertical upward movement of the contact wire due to the force produced from the pantograph."},
			new SingleValuePropertyType("ElectricalClearance", "IfcPositiveLengthMeasure") { Definition = "The recommended air clearances between earth and the live parts of the overhead contactline system."},
			new SingleValuePropertyType("NumberOfOverlappingSpans", "IfcCountMeasure") { Definition = "Number of overlapping spans in the overhead contactline system."},
			new SingleValuePropertyType("PantographType", "IfcLabel") { Definition = "Indicates the type of pantograph as a design parameter for the overhead contactline system."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("SpanNominalLength", "IfcPositiveLengthMeasure") { Definition = "The length of span as a design parameter for the overhead contactline system."},
			new SingleValuePropertyType("TensionLength", "IfcPositiveLengthMeasure") { Definition = "Length of overhead contactline between two terminating points. It is a design parameter for the overhead contactline system."} },
				new [] { "IfcDistributionSystem" });
		yield return new PropertySetInfo("Pset_DistributionSystemTypeVentilation", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DuctSizingMethod", new [] { "CONSTANTFRICTION", "CONSTANTPRESSURE", "STATICREGAIN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the methodology to be used to size system components."},
			new SingleValuePropertyType("AspectRatio", "IfcReal") { Definition = "The default aspect ratio."},
			new SingleValuePropertyType("DesignName", "IfcLabel") { Definition = "A name for the design values."},
			new SingleValuePropertyType("DuctSealant", "IfcMaterialDefinition") { Definition = "Type of sealant used on the duct and fittings."},
			new SingleValuePropertyType("FrictionLoss", "IfcReal") { Definition = "The pressure loss due to friction per unit length. (Data type = PressureMeasure/LengthMeasure)"},
			new SingleValuePropertyType("LeakageClass", "IfcPressureMeasure") { Definition = "Nominal leakage rating for the system components."},
			new SingleValuePropertyType("MaximumVelocity", "IfcLinearVelocityMeasure") { Definition = "The maximum design velocity of the air in the duct or fitting."},
			new SingleValuePropertyType("MinimumHeight", "IfcPositiveLengthMeasure") { Definition = "The minimum duct height for rectangular, oval or round duct."},
			new SingleValuePropertyType("MinimumWidth", "IfcPositiveLengthMeasure") { Definition = "The minimum duct width for oval or rectangular duct."},
			new SingleValuePropertyType("PressureClass", "IfcPressureMeasure") { Definition = "Nominal pressure rating of the object.\n\nNominal pressure rating of the system components."},
			new SingleValuePropertyType("ScrapFactor", "IfcReal") { Definition = "Sheet metal scrap factor."} },
				new [] { "IfcDistributionSystem" });
		yield return new PropertySetInfo("Pset_DoorCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorption values)."},
			new SingleValuePropertyType("DurabilityRating", "IfcLabel") { Definition = "Durability against mechanical stress. It is given according to the national code or regulation."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\n\nHere it defines an exit door in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("GlazingAreaFraction", "IfcPositiveRatioMeasure") { Definition = "Fraction of the glazing area relative to the total area of the filling element.\nIt shall be used, if the glazing area is not given separately for all panels within the filling element."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. Set to (TRUE) if this object is rated as handicap accessible according to the local building codes, otherwise (FALSE). It is giving according to the requirements of the national building code."},
			new SingleValuePropertyType("HasDrive", "IfcBoolean") { Definition = "Indication whether this object has an automatic drive to operate it (TRUE) or no drive (FALSE)"},
			new SingleValuePropertyType("HygrothermalRating", "IfcLabel") { Definition = "Resistance against hygrothermal impact from different temperatures and humidities inside and outside. It is given according to the national code or regulation."},
			new SingleValuePropertyType("Infiltration", "IfcVolumetricFlowRateMeasure") { Definition = "Infiltration flowrate of outside air for the filler object based on the area of the filler object at a pressure level of 50 Pascals. It shall be used, if the length of all joints is unknown."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("MechanicalLoadRating", "IfcLabel") { Definition = "Mechanical load rating for this object.\nIt is provided according to the national building code."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SecurityRating", "IfcLabel") { Definition = "Index based rating system indicating security level.\nIt is giving according to the national building code."},
			new SingleValuePropertyType("SelfClosing", "IfcBoolean") { Definition = "Indication whether this object is designed to close automatically after use (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SmokeStop", "IfcBoolean") { Definition = "Indication whether the object is designed to provide a smoke stop (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."},
			new SingleValuePropertyType("WaterTightnessRating", "IfcLabel") { Definition = "Water tightness rating for this object.\nIt is provided according to the national building code."},
			new SingleValuePropertyType("WindLoadRating", "IfcLabel") { Definition = "Wind load resistance rating for this object.\nIt is provided according to the national building code."} },
				new [] { "IfcDoor", "IfcDoorType" });
		yield return new PropertySetInfo("Pset_DoorLiningProperties", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CasingDepth", "IfcPositiveLengthMeasure") { Definition = "Depth of the casing.\n\nFor a door, it is the dimension in the plane perpendicular to door leaf. If given it is applied equally to all four sides of the adjacent wall."},
			new SingleValuePropertyType("CasingThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the casing.\n\nFor a door, it is the dimension in plane of the door leaf. If given it is applied equally to all four sides of the adjacent wall."},
			new SingleValuePropertyType("LiningDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the lining.\n\nFor a door, it is the depth of the door lining, measured perpendicular to the plane of the door lining. If omitted (and with a given value to lining thickness) it indicates an adjustable depth (i.e. a depth that adjusts to the thickness of the wall into which the occurrence of this door style is inserted)."},
			new SingleValuePropertyType("LiningOffset", "IfcLengthMeasure") { Definition = "Offset of the lining.\n\nFor a door, it is the offset (dimension in plane perpendicular to door leaf) of the door lining. The offset is given as distance to the x axis of the local placement."},
			new SingleValuePropertyType("LiningThickness", "IfcNonNegativeLengthMeasure") { Definition = "Thickness of the lining.\n\nFor a door, it is the thickness of the door lining as explained in the figure above. If LiningThickness value is 0. (zero) it denotes a door without a lining (all other lining parameters shall be set to NIL in this case). If the LiningThickness is NIL it denotes that the value is not available."},
			new SingleValuePropertyType("LiningToPanelOffsetX", "IfcLengthMeasure") { Definition = "Offset between the lining and the panel, measured along the x-axis of the local placement.\n\nFor a door, it is the offset between the lining and the window panel."},
			new SingleValuePropertyType("LiningToPanelOffsetY", "IfcLengthMeasure") { Definition = "Offset between the lining and the panel, measured along the y-axis of the local placement.\n\nFor a door, it is the offset between the lining and the door panel."},
			new SingleValuePropertyType("ThresholdDepth", "IfcPositiveLengthMeasure") { Definition = "Depth (dimension in plane perpendicular to door leaf) of the door threshold. Only given if the door lining includes a threshold. If omitted (and with a given value to threshold thickness) it indicates an adjustable depth (i.e. a depth that adjusts to the thickness of the wall into which the occurrence of this door style is inserted)."},
			new SingleValuePropertyType("ThresholdOffset", "IfcLengthMeasure") { Definition = "Offset (dimension in plane perpendicular to door leaf) of the door threshold. The offset is given as distance to the x axis of the local placement. Only given if the door lining includes a threshold and the parameter is known."},
			new SingleValuePropertyType("ThresholdThickness", "IfcNonNegativeLengthMeasure") { Definition = "Thickness of the door threshold as explained in the figure above. If ThresholdThickness value is 0. (zero) it denotes a door without a threshold (ThresholdDepth shall be set to NIL in this case). If the ThresholdThickness is NIL it denotes that the information about a threshold is not available."},
			new SingleValuePropertyType("TransomOffset", "IfcLengthMeasure") { Definition = "Offset of the transom (if given) which divides the door leaf from a glazing (or window) above. The offset is given from the bottom of the door opening."},
			new SingleValuePropertyType("TransomThickness", "IfcNonNegativeLengthMeasure") { Definition = "Thickness of the transom.\n\nFor a door, it is the thickness (width in plane parallel to door leaf) of the transom (if provided - that is, if the TransomOffset attribute is set), which divides the door leaf from a glazing (or window) above. If the TransomThickness is set to zero (and the TransomOffset set to a positive length), then the door is divided vertically into a leaf and transom window area without a physical frame."} },
				new [] { "IfcDoor", "IfcDoorType", "IfcMember", "IfcMemberType" });
		yield return new PropertySetInfo("Pset_DoorPanelProperties", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PanelOperation", new [] { "DOUBLE_ACTING", "FIXEDPANEL", "FOLDING", "REVOLVING", "ROLLINGUP", "SLIDING", "SWINGING", "OTHER", "NOTKNOWN", "UNSET", "NOTDEFINED" } ) { Definition = "The way of operation of a panel.\n\nFor a door, it is the way of operation of the panel. The PanelOperation of the door panel shall correspond to the OperationType of the IfcDoorType by which it is referenced."},
			new EnumerationPropertyType("PanelPosition", new [] { "LEFT", "MIDDLE", "RIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Position of the panel.\n\nFor a door, it is the position of the panel within the door. The PanelPosition of the door panel shall correspond to the OperationType of the IfcDoorType by which it is referenced."},
			new SingleValuePropertyType("PanelDepth", "IfcPositiveLengthMeasure") { Definition = "Depth of the panel.\n\nFor a door, it is the depth of the door panel, measured perpendicular to the plane of the door leaf."},
			new SingleValuePropertyType("PanelWidth", "IfcNormalisedRatioMeasure") { Definition = "Width of the panel.\n\nFor a door, it is the width of the panel, given as ratio relative to the total clear opening width of the door. If omitted, it defaults to 1. A value shall be provided for all doors with OperationType's at IfcDoorType defining a door with more then one panel."} },
				new [] { "IfcDoor", "IfcDoorType", "IfcPlate", "IfcPlateType" });
		yield return new PropertySetInfo("Pset_DoorTypeTurnstile", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TurnstileType", new [] { "SWINGGATEBRAKE", "THREEPOLEROTARYBRAKE", "WINGGATEBRAKE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of turnstile gate."},
			new SingleValuePropertyType("IsBidirectional", "IfcBoolean") { Definition = "Indicates whether the turnstile is bidirectional."},
			new SingleValuePropertyType("NarrowChannelWidth", "IfcPositiveLengthMeasure") { Definition = "Indicates the width of the narrow channel."},
			new SingleValuePropertyType("WideChannelWidth", "IfcPositiveLengthMeasure") { Definition = "Indicates the width of the wide channel."} },
				new [] { "IfcDoor", "IfcDoorType" });
		yield return new PropertySetInfo("Pset_DoorWindowGlazingType", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FillGas", "IfcLabel") { Definition = "Name of the gas by which the gap between two glass layers is filled. It is given for information purposes only."},
			new SingleValuePropertyType("GlassColour", "IfcLabel") { Definition = "Colour (tint) selection for this glazing. It is given for information purposes only."},
			new SingleValuePropertyType("GlassLayers", "IfcCountMeasure") { Definition = "Number of glass layers within the frame. E.g. \"2\" for double glazing."},
			new SingleValuePropertyType("GlassThickness1", "IfcPositiveLengthMeasure") { Definition = "Thickness of the first (inner) glass layer."},
			new SingleValuePropertyType("GlassThickness2", "IfcPositiveLengthMeasure") { Definition = "Thickness of the second (intermediate or outer) glass layer."},
			new SingleValuePropertyType("GlassThickness3", "IfcPositiveLengthMeasure") { Definition = "Thickness of the third (outer) glass layer."},
			new SingleValuePropertyType("IsCoated", "IfcBoolean") { Definition = "Indication whether the glass is coated with a material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsLaminated", "IfcBoolean") { Definition = "Indication whether the glass is layered with other materials (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsTempered", "IfcBoolean") { Definition = "Indication whether the glass is tempered (TRUE) or not (FALSE) ."},
			new SingleValuePropertyType("IsWired", "IfcBoolean") { Definition = "Indication whether the glass includes a contained wire mesh to prevent break-in (TRUE) or not (FALSE)"},
			new SingleValuePropertyType("ShadingCoefficient", "IfcNormalisedRatioMeasure") { Definition = "(SC): The measure of the ability of a glazing to transmit solar heat, relative to that ability for 3 mm (1/8-inch) clear, double-strength, single glass. Shading coefficient is being phased out in favor of the solar heat gain coefficient (SHGC), and is approximately equal to the SHGC multiplied by 1.15. The shading coefficient is expressed as a number without units between 0 and 1."},
			new SingleValuePropertyType("SolarAbsorption", "IfcNormalisedRatioMeasure") { Definition = "(Asol) The ratio of incident solar radiation that is absorbed by a glazing system. It is the sum of the absorption distributed to the exterior (a) and to the interior (qi). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("SolarHeatGainTransmittance", "IfcNormalisedRatioMeasure") { Definition = "(SHGC): The ratio of incident solar radiation that contributes to the heat gain of the interior, it is the solar radiation that directly passes (Tsol or τe) plus the part of the absorbed radiation that is distributed to the interior (qi). The SHGC is referred to also as g-value (g = τe + qi)."},
			new SingleValuePropertyType("SolarReflectance", "IfcNormalisedRatioMeasure") { Definition = "(Rsol): The ratio of incident solar radiation that is reflected by a glazing system (also named ρe). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("SolarTransmittance", "IfcNormalisedRatioMeasure") { Definition = "The ratio of incident solar radiation that directly passes through a system (also named τe). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("ThermalTransmittanceSummer", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nSummer thermal transmittance coefficient of the glazing only, often referred to as (U-value)."},
			new SingleValuePropertyType("ThermalTransmittanceWinter", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of a material.\nWinter thermal transmittance coefficient of the glazing only, often referred to as (U-value)."},
			new SingleValuePropertyType("VisibleLightReflectance", "IfcNormalisedRatioMeasure") { Definition = "Fraction of the visible light that is reflected by the glazing at normal incidence. It is a value without unit."},
			new SingleValuePropertyType("VisibleLightTransmittance", "IfcNormalisedRatioMeasure") { Definition = "Fraction of the visible light that passes the object at normal incidence. It is a value without unit."} },
				new [] { "IfcDoor", "IfcDoorType", "IfcWindow", "IfcWindowType" });
		yield return new PropertySetInfo("Pset_DuctFittingOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Colour", "IfcLabel") { Definition = "Colour of this object."},
			new SingleValuePropertyType("HasLiner", "IfcBoolean") { Definition = "TRUE if the fitting has interior duct insulating lining, FALSE if it does not."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness of the material of the object."} },
				new [] { "IfcDuctFitting" });
		yield return new PropertySetInfo("Pset_DuctFittingPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirFlowLeakage", "IfcTimeSeries") { Definition = "Volumetric leakage flow rate."},
			new SingleValuePropertyType("AtmosphericPressure", "IfcTimeSeries") { Definition = "Ambient atmospheric pressure."},
			new SingleValuePropertyType("LossCoefficient", "IfcTimeSeries") { Definition = "Dimensionless loss coefficient used for calculating fluid resistance representing the ratio of total pressure loss to velocity pressure at a referenced cross-section."} },
				new [] { "IfcDuctFitting" });
		yield return new PropertySetInfo("Pset_DuctFittingTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("PressureClass", "IfcPressureMeasure") { Definition = "Nominal pressure rating of the object.\n\nPressure classification as defined by the authority having jurisdiction (e.g., SMACNA, etc.)."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."} },
				new [] { "IfcDuctFitting", "IfcDuctFittingType" });
		yield return new PropertySetInfo("Pset_DuctSegmentOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Colour", "IfcLabel") { Definition = "Colour of this object."},
			new SingleValuePropertyType("HasLiner", "IfcBoolean") { Definition = "TRUE if the fitting has interior duct insulating lining, FALSE if it does not."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness of the material of the object."} },
				new [] { "IfcDuctSegment" });
		yield return new PropertySetInfo("Pset_DuctSegmentPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AtmosphericPressure", "IfcTimeSeries") { Definition = "Ambient atmospheric pressure."},
			new SingleValuePropertyType("FluidFlowLeakage", "IfcTimeSeries") { Definition = "Volumetric leakage flow rate."},
			new SingleValuePropertyType("LeakageCurveHistory", "IfcTimeSeries") { Definition = "Leakage per unit length curve versus working pressure. If a scalar is expressed then it represents LeakageClass which is flowrate per unit area at a specified pressure rating (e.g., ASHRAE Fundamentals 2001 34.16.)."},
			new SingleValuePropertyType("LossCoefficient", "IfcTimeSeries") { Definition = "Dimensionless loss coefficient used for calculating fluid resistance representing the ratio of total pressure loss to velocity pressure at a referenced cross-section."} },
				new [] { "IfcDuctSegment" });
		yield return new PropertySetInfo("Pset_DuctSegmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CrossSectionShape", new [] { "FLATOVAL", "RECTANGULAR", "ROUND", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Cross sectional shape. Note that this shape is uniform throughout the length of the segment. For nonuniform shapes, a transition fitting should be used instead."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("LongitudinalSeam", "IfcText") { Definition = "The type of seam to be used along the longitudinal axis of the duct segment."},
			new SingleValuePropertyType("NominalDiameterOrWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter or width of the duct segment."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("Reinforcement", "IfcLabel") { Definition = "The type of reinforcement, if any, used for the duct segment."},
			new SingleValuePropertyType("ReinforcementSpacing", "IfcPositiveLengthMeasure") { Definition = "The spacing between reinforcing elements."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."},
			new SingleValuePropertyType("WorkingPressure", "IfcPressureMeasure") { Definition = "Working pressure.\n\nPressure classification as defined by the authority having jurisdiction (e.g., SMACNA, etc.)."} },
				new [] { "IfcDuctSegment", "IfcDuctSegmentType" });
		yield return new PropertySetInfo("Pset_DuctSilencerPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirFlowRate", "IfcTimeSeries") { Definition = "Air flow rate.\n\nVolumetric air flow rate."},
			new SingleValuePropertyType("AirPressureDropCurve", "IfcTimeSeries") { Definition = "Air pressure drop as a function of air flow rate."} },
				new [] { "IfcDuctSilencer" });
		yield return new PropertySetInfo("Pset_DuctSilencerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AirFlowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Possible range of airflow that can be delivered."},
			new SingleValuePropertyType("HasExteriorInsulation", "IfcBoolean") { Definition = "TRUE if the silencer has exterior insulation. FALSE if it does not."},
			new SingleValuePropertyType("HydraulicDiameter", "IfcLengthMeasure") { Definition = "Hydraulic diameter."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"},
			new SingleValuePropertyType("WorkingPressureRange", "IfcPressureMeasure") { Definition = "Allowable minimum and maximum  working pressure (relative to ambient pressure)."} },
				new [] { "IfcDuctSilencer", "IfcDuctSilencerType" });
		yield return new PropertySetInfo("Pset_ElectricalDeviceCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConductorFunction", new [] { "NEUTRAL", "PHASE_L1", "PHASE_L2", "PHASE_L3", "PROTECTIVEEARTH", "PROTECTIVEEARTHNEUTRAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates function of the conductors to which the load is connected. Where L1, L2 and L3 represent the phase lines according to IEC 60446 notation (sometimes phase lines may be referenced by color [Red, Blue, Yellow] or by number [1, 2, 3] etc). Protective Earth is sometimes also known as CPC or common protective conductor. Note that for an electrical device, a set of line conductor functions may be applied."},
			new EnumerationPropertyType("InsulationStandardClass", new [] { "CLASS0APPLIANCE", "CLASS0IAPPLIANCE", "CLASSIAPPLIANCE", "CLASSIIAPPLIANCE", "CLASSIIIAPPLIANCE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Insulation standard classes provides basic protection information against electric shock. Defines levels of insulation required in terms of constructional requirements (creepage and clearance distances) and electrical requirements (compliance with electric strength tests). Basic insulation is considered to be shorted under single fault conditions. The actual values required depend on the working voltage to which the insulation is subjected, as well as other factors. Also indicates whether the electrical device has a protective earth connection."},
			new SingleValuePropertyType("EarthingStyle", "IfcLabel") { Definition = "Indicates the earthing style of the electric device."},
			new SingleValuePropertyType("HasProtectiveEarth", "IfcBoolean") { Definition = "Indicates whether the object has a protective earth connection (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("HeatDissipation", "IfcPowerMeasure") { Definition = "Indicates the heat dissipation of the electric device measured in power."},
			new SingleValuePropertyType("IK_Code", "IfcLabel") { Definition = "IK Code according to IEC 62262 (2002) is a numeric classification for the degree of protection provided by enclosures for electrical equipment against external mechanical impacts.NOTE  In earlier labeling, the third numeral (1..) had been occasionally added to the closely related IP Code on ingress protection, to indicate the level of impact protection."},
			new SingleValuePropertyType("IP_Code", "IfcLabel") { Definition = "IP Code, the International Protection Marking, IEC 60529), classifies and rates the degree of protection provided against intrusion."},
			new SingleValuePropertyType("NominalFrequencyRange", "IfcFrequencyMeasure") { Definition = "The upper and lower limits of frequency for which the operation of the device is certified."},
			new SingleValuePropertyType("NominalPowerConsumption", "IfcPowerMeasure") { Definition = "Nominal total power consumption."},
			new SingleValuePropertyType("NumberOfPoles", "IfcCountMeasure") { Definition = "Number of poles that the object would affect.\n\nThe number of live lines that is intended to be handled by the device."},
			new SingleValuePropertyType("Power", "IfcPowerMeasure") { Definition = "The actual power and operable range."},
			new SingleValuePropertyType("PowerFactor", "IfcNormalisedRatioMeasure") { Definition = "Power factor; usually as ratio.\n\nThe ratio between the rated electrical power and the product of the rated current and rated voltage"},
			new SingleValuePropertyType("RatedCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that a device is designed to handle."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new TableValuePropertyType("NumberOfPowerSupplyPorts", "IfcLabel", "IfcInteger") { Definition = "Indicates the number of power supply ports of the electric device."} },
				new [] { "IfcDistributionElement", "IfcDistributionElementType" });
		yield return new PropertySetInfo("Pset_ElectricalDeviceCompliance", new IPropertyTypeInfo[] {
			new TableValuePropertyType("ElectroMagneticStandardsCompliance", "IfcLabel", "IfcBoolean") { Definition = "Information about compliance with regard to electro magnetic related standards."},
			new TableValuePropertyType("ExplosiveAtmosphereStandardsCompliance", "IfcLabel", "IfcBoolean") { Definition = "Information about compliance with regard to explosive atmosphere related standards."},
			new TableValuePropertyType("FireProofingStandardsCompliance", "IfcLabel", "IfcBoolean") { Definition = "Information about compliance with regard to fire proofing related standards."},
			new TableValuePropertyType("LightningProtectionStandardsCompliance", "IfcLabel", "IfcBoolean") { Definition = "Information about compliance with regard to lightning protection related standards."} },
				new [] { "IfcDistributionElement", "IfcDistributionElementType" });
		yield return new PropertySetInfo("Pset_ElectricalFeederLine", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectricalFeederType", new [] { "ALONGTRACKFEEDER", "BYPASSFEEDER", "NEGATIVEFEEDER", "POSITIVEFEEDER", "REINFORCINGFEEDER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of electrical feeder."},
			new SingleValuePropertyType("CurrentCarryingCapacity", "IfcElectricCurrentMeasure") { Definition = "Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a  specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature."},
			new SingleValuePropertyType("DesignAmbientTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The highest and lowest local ambient temperature likely to be encountered."},
			new SingleValuePropertyType("ElectricalClearanceDistance", "IfcPositiveLengthMeasure") { Definition = "The distance between two conductive parts along a string stretched the shortest way between these conductive parts. (IEV ref 441-17-31)"} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_ElectricAppliancePHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("PowerState", "IfcTimeSeries") { Definition = "Indicates the power state of the device where True is on and False is off."} },
				new [] { "IfcElectricAppliance" });
		yield return new PropertySetInfo("Pset_ElectricApplianceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcElectricAppliance", "IfcElectricApplianceType" });
		yield return new PropertySetInfo("Pset_ElectricApplianceTypeDishwasher", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DishwasherType", new [] { "BOTTLEWASHER", "CUTLERYWASHER", "DISHWASHER", "POTWASHER", "TRAYWASHER", "UNKNOWN", "OTHER", "UNSET" } ) { Definition = "Type of dishwasher."} },
				new [] { "IfcElectricAppliance", "IfcElectricApplianceType" });
		yield return new PropertySetInfo("Pset_ElectricApplianceTypeElectricCooker", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectricCookerType", new [] { "COOKINGKETTLE", "DEEPFRYER", "OVEN", "STEAMCOOKER", "STOVE", "TILTINGFRYINGPAN", "UNKNOWN", "OTHER", "UNSET" } ) { Definition = "Type of electric cooker."} },
				new [] { "IfcElectricAppliance", "IfcElectricApplianceType" });
		yield return new PropertySetInfo("Pset_ElectricFlowStorageDeviceTypeBattery", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BatteryChargingType", new [] { "RECHARGEABLE", "SINGLECHARGE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of battery charging."},
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("CurrentRegulationRate", "IfcRatioMeasure") { Definition = "It shows the ability of DC regulated power supply to suppress the fluctuation of output voltage caused by the change of load current (output current) when the input voltage is constant."},
			new SingleValuePropertyType("EncapsulationTechnologyCode", "IfcIdentifier") { Definition = "Code indicating the encapsulation technology which has been applied in an electric, electronic or electromechanical component."},
			new SingleValuePropertyType("NominalSupplyCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current of the supply."},
			new SingleValuePropertyType("OpenCircuitVoltage", "IfcElectricVoltageMeasure") { Definition = "Voltage of a cell or battery when the discharge current is zero  [Source IEC 482-03-32]"},
			new SingleValuePropertyType("VoltageRegulationRate", "IfcRatioMeasure") { Definition = "When the input side voltage changes from the lowest allowable input value to the specified maximum value, the relative change value of the output voltage is the percentage of the rated output voltage."} },
				new [] { "IfcElectricFlowStorageDevice", "IfcElectricFlowStorageDeviceType" });
		yield return new PropertySetInfo("Pset_ElectricFlowStorageDeviceTypeCapacitor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfPhases", "IfcCountMeasure") { Definition = "Number of phases that the equipment operates on."} },
				new [] { "IfcElectricFlowStorageDevice", "IfcElectricFlowStorageDeviceType" });
		yield return new PropertySetInfo("Pset_ElectricFlowStorageDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConnectedConductorFunction", new [] { "NEUTRAL", "PHASE_L1", "PHASE_L2", "PHASE_L3", "PROTECTIVEEARTH", "PROTECTIVEEARTHNEUTRAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Function of the conductors to which the load is connected."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("EarthFault1PoleMaximumState", "IfcElectricCurrentMeasure") { Definition = "Maximum 1 pole earth fault current provided at the point of supply i.e. the fault between 1 phase and PE/PEN."},
			new SingleValuePropertyType("EarthFault1PoleMinimumState", "IfcElectricCurrentMeasure") { Definition = "Minimum 1 pole earth fault current provided at the point of supply i.e. the fault between 1 phase and PE/PEN."},
			new SingleValuePropertyType("EarthFault1PolePowerFactorMaximumState", "IfcReal") { Definition = "Power factor of the maximum 1 pole earth fault  current provided at the point of supply i.e. the fault between 1 phase and PE/PEN."},
			new SingleValuePropertyType("EarthFault1PolePowerFactorMinimumState", "IfcReal") { Definition = "Power factor of the minimum 1 pole earth fault current provided at the point of supply i.e. the fault between 1 phase and PE/PEN."},
			new SingleValuePropertyType("MaximumInsulatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The max voltage that the insulation would operate normally"},
			new SingleValuePropertyType("NominalFrequency", "IfcFrequencyMeasure") { Definition = "The nominal frequency of the supply."},
			new SingleValuePropertyType("NominalSupplyVoltage", "IfcElectricVoltageMeasure") { Definition = "The nominal voltage of the supply."},
			new SingleValuePropertyType("NominalSupplyVoltageOffset", "IfcElectricVoltageMeasure") { Definition = "The maximum and minimum allowed voltage of the supply e.g. boundaries of 380V/440V may be applied for a nominal voltage of 400V."},
			new SingleValuePropertyType("PowerCapacity", "IfcElectricChargeMeasure") { Definition = "Power capacity of the equipment"},
			new SingleValuePropertyType("RatedCapacitance", "IfcElectricCapacitanceMeasure") { Definition = "Capacitance value determined under specified conditions and declared by the manufacturer."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("ShortCircuit1PoleMaximumState", "IfcElectricCurrentMeasure") { Definition = "Maximum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N."},
			new SingleValuePropertyType("ShortCircuit1PoleMinimumState", "IfcElectricCurrentMeasure") { Definition = "Minimum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N."},
			new SingleValuePropertyType("ShortCircuit1PolePowerFactorMaximumState", "IfcReal") { Definition = "Power factor of the maximum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N."},
			new SingleValuePropertyType("ShortCircuit1PolePowerFactorMinimumState", "IfcReal") { Definition = "Power factor of the minimum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N."},
			new SingleValuePropertyType("ShortCircuit2PoleMinimumState", "IfcElectricCurrentMeasure") { Definition = "Minimum 2 pole short circuit current provided at the point of supply."},
			new SingleValuePropertyType("ShortCircuit2PolePowerFactorMinimumState", "IfcReal") { Definition = "Power factor of the minimum 2 pole short circuit current provided at the point of supply."},
			new SingleValuePropertyType("ShortCircuit3PoleMaximumState", "IfcElectricCurrentMeasure") { Definition = "Maximum 3 pole short circuit current provided at the point of supply."},
			new SingleValuePropertyType("ShortCircuit3PolePowerFactorMaximumState", "IfcReal") { Definition = "Power factor of the maximum 3 pole short circuit current provided at the point of supply."} },
				new [] { "IfcElectricFlowStorageDevice", "IfcElectricFlowStorageDeviceType" });
		yield return new PropertySetInfo("Pset_ElectricFlowStorageDeviceTypeInductor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Inductance", "IfcInductanceMeasure") { Definition = "Measure of the Inductance."},
			new SingleValuePropertyType("NumberOfPhases", "IfcCountMeasure") { Definition = "Number of phases that the equipment operates on."} },
				new [] { "IfcElectricFlowStorageDevice", "IfcElectricFlowStorageDeviceType" });
		yield return new PropertySetInfo("Pset_ElectricFlowStorageDeviceTypeRecharger", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalSupplyCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current of the supply."} },
				new [] { "IfcElectricFlowStorageDevice", "IfcElectricFlowStorageDeviceType" });
		yield return new PropertySetInfo("Pset_ElectricFlowStorageDeviceTypeUPS", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("CurrentRegulationRate", "IfcRatioMeasure") { Definition = "It shows the ability of DC regulated power supply to suppress the fluctuation of output voltage caused by the change of load current (output current) when the input voltage is constant."},
			new SingleValuePropertyType("NominalSupplyCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current of the supply."},
			new SingleValuePropertyType("VoltageRegulationRate", "IfcRatioMeasure") { Definition = "When the input side voltage changes from the lowest allowable input value to the specified maximum value, the relative change value of the output voltage is the percentage of the rated output voltage."} },
				new [] { "IfcElectricFlowStorageDevice", "IfcElectricFlowStorageDeviceType" });
		yield return new PropertySetInfo("Pset_ElectricFlowTreatmentDeviceTypeElectronicFilter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectronicFilterType", new [] { "BANDPASSFLITER", "BANDSTOPFILTER", "FILTERCAPACITOR", "HARMONICFILTER", "HIGHPASSFILTER", "LOWPASSFILTER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of electronic filter."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured."},
			new SingleValuePropertyType("NominalPower", "IfcPowerMeasure") { Definition = "A conventional value of apparent power determining a value of the rated current that may be carried with rated voltage applied, under specified conditions. ( IEV ref 421-04-04)"},
			new SingleValuePropertyType("PrimaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("SecondaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that has been transformed and is running out of the transformer on the secondary side."} },
				new [] { "IfcElectricFlowTreatmentDevice", "IfcElectricFlowTreatmentDeviceType" });
		yield return new PropertySetInfo("Pset_ElectricGeneratorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ElectricGeneratorEfficiency", "IfcPositiveRatioMeasure") { Definition = "The ratio of output capacity to intake capacity."},
			new SingleValuePropertyType("MaximumPowerOutput", "IfcPowerMeasure") { Definition = "The maximum output power rating of the engine."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("StartCurrentFactor", "IfcReal") { Definition = "IEC. Start current factor defines how large the peak starting current will become on the engine. StartCurrentFactor is multiplied to NominalCurrent and to give the start current."} },
				new [] { "IfcElectricGenerator", "IfcElectricGeneratorType" });
		yield return new PropertySetInfo("Pset_ElectricMotorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MotorEnclosureType", new [] { "OPENDRIPPROOF", "TOTALLYENCLOSEDAIROVER", "TOTALLYENCLOSEDFANCOOLED", "TOTALLYENCLOSEDNONVENTILATED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of motor enclosure from which that required may be selected."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ElectricMotorEfficiency", "IfcPositiveRatioMeasure") { Definition = "The ratio of output capacity to intake capacity."},
			new SingleValuePropertyType("FrameSize", "IfcLabel") { Definition = "Designation of the frame size according to the named range of frame sizes designated at the place of use or according to a given standard."},
			new SingleValuePropertyType("HasPartWinding", "IfcBoolean") { Definition = "Indication of whether the motor is single speed, i.e. has a single winding (= FALSE) or multi-speed i.e.has part winding (= TRUE) ."},
			new SingleValuePropertyType("IsGuarded", "IfcBoolean") { Definition = "Indication of whether the motor enclosure is guarded (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("LockedRotorCurrent", "IfcElectricCurrentMeasure") { Definition = "Input current when a motor armature is energized but not rotating."},
			new SingleValuePropertyType("MaximumPowerOutput", "IfcPowerMeasure") { Definition = "The maximum output power rating of the engine."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("StartCurrentFactor", "IfcReal") { Definition = "IEC. Start current factor defines how large the peak starting current will become on the engine. StartCurrentFactor is multiplied to NominalCurrent and to give the start current."},
			new SingleValuePropertyType("StartingTime", "IfcTimeMeasure") { Definition = "The time (in s) needed for the motor to reach its rated speed with its driven equipment attached, starting from standstill and at the nominal voltage applied at its terminals."},
			new SingleValuePropertyType("TeTime", "IfcTimeMeasure") { Definition = "The maximum time (in s) at which the motor could run with locked rotor when the motor is used in an EX-environment. The time indicates that a protective device should trip before this time when the starting current of the motor is slowing through the device."} },
				new [] { "IfcElectricMotor", "IfcElectricMotorType" });
		yield return new PropertySetInfo("Pset_ElectricTimeControlTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcElectricTimeControl", "IfcElectricTimeControlType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeCantilever", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CantileverType", new [] { "CENTER_CANTILEVER", "DIRECT_SUSPENSION", "INSULATED_OVERLAP_CANTILEVER", "INSULATED_SUSPENSION_SET", "MECHANICAL_OVERLAP_CANTILEVER", "MIDPOINT_CANTILEVER", "MULTIPLE_TRACK_CANTILEVER", "OUT_OF_RUNNING_CANTILEVER", "PHASE_SEPARATION_CANTILEVER", "SINGLE", "SYSTEM_SEPARATION_CANTILEVER", "TRANSITION_CANTILEVER", "TURNOUT_CANTILEVER", "UNDERBRIDGE_CANTILEVER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of cantilever assembly."},
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("ContactWireStagger", "IfcPositiveLengthMeasure") { Definition = "Lateral displacement of the contact wire to opposite sides of the track centre at successive supports."},
			new SingleValuePropertyType("SystemHeight", "IfcPositiveLengthMeasure") { Definition = "Vertical distance between the main catenary wire and the contact wire measured at a support point."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeDilatationPanel", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BladesOrientation", new [] { "BLADESINSIDE", "BLADESOUTSIDE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Orientation of internal blades."},
			new EnumerationPropertyType("ExpansionDirection", new [] { "BI_DIRECTION", "SINGLE_DIRECTION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The expansion direction, e.g. single direction, bi-direction"},
			new SingleValuePropertyType("DilatationLength", "IfcPositiveLengthMeasure") { Definition = "Length dilatation admitted by the element."},
			new SingleValuePropertyType("InstallationPlan", "IfcDocumentReference") { Definition = "Reference to external information source about installation or construction plan of the element."},
			new SingleValuePropertyType("TechnicalStandard", "IfcExternalReference") { Definition = "The technical standard which the element should comply with."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeHeadSpan", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("NumberOfTracksCrossed", "IfcCountMeasure") { Definition = "Indicates the number of tracks which OCS supporting system crosses."},
			new SingleValuePropertyType("Span", "IfcPositiveLengthMeasure") { Definition = "Clear span for this object.The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeMast", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WithLightningRod", "IfcBoolean") { Definition = "Indicates whether the element is equipped with a lightning rod (TRUE) or not (FALSE)."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeOCSSuspension", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ContactWireHeight", "IfcPositiveLengthMeasure") { Definition = "Distance from the top of the rail to the lower face of the contact wire, measured perpendicular to the track."},
			new SingleValuePropertyType("ContactWireStagger", "IfcPositiveLengthMeasure") { Definition = "Lateral displacement of the contact wire to opposite sides of the track centre at successive supports."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeRigidFrame", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("LoadCapacity", "IfcForceMeasure") { Definition = "Indicates the highest permissible load capacity."},
			new SingleValuePropertyType("NumberOfTracksCrossed", "IfcCountMeasure") { Definition = "Indicates the number of tracks which OCS supporting system crosses."},
			new SingleValuePropertyType("Span", "IfcPositiveLengthMeasure") { Definition = "Clear span for this object.The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeSteadyDevice", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SteadyDeviceType", new [] { "PULL_OFF", "PUSH_OFF", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of Steady Device: To indicate the mode of registration."},
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("ContactWireStagger", "IfcPositiveLengthMeasure") { Definition = "Lateral displacement of the contact wire to opposite sides of the track centre at successive supports."},
			new SingleValuePropertyType("IsSetOnWorkingWire", "IfcBoolean") { Definition = "Indicates whether the steady device is set on the working wire."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeSupportingAssembly", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TypeOfSupportingSystem", new [] { "ENDCATENARYSUPPORT", "HEADSPANSUPPORT", "HERSE", "MULTITRACKSUPPORT", "RIGIDGANTRY", "SIMPLESUPPORT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of foundation in the OCS supporting system."},
			new SingleValuePropertyType("NumberOfCantilevers", "IfcCountMeasure") { Definition = "Indicates the number of cantilevers in the OCS supporting system."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeTrackPanel", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InstallationPlan", "IfcDocumentReference") { Definition = "Reference to external information source about installation or construction plan of the element."},
			new SingleValuePropertyType("IsAccessibleByVehicle", "IfcBoolean") { Definition = "Indicates whether the element is accessible by a vehicle or not."},
			new SingleValuePropertyType("TrackExpansion", "IfcPositiveLengthMeasure") { Definition = "In curvature context, bounded value of the expansion distance that can be added to rail gauge."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeTractionSwitchingAssembly", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DesignAmbientTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The highest and lowest local ambient temperature likely to be encountered."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured.\n\nA set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the\nUltimateRatedCurrent associated with the same breaker unit."},
			new SingleValuePropertyType("NominalPower", "IfcPowerMeasure") { Definition = "A conventional value of apparent power determining a value of the rated current that may be carried with rated voltage applied, under specified conditions. ( IEV ref 421-04-04)"},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementAssemblyTypeTurnoutPanel", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BranchLineDirection", new [] { "LEFTDEVIATION", "LEFT_LEFTDEVIATION", "LEFT_RIGHTDEVIATION", "RIGHTDEVIATION", "RIGHT_LEFTDEVIATION", "RIGHT_RIGHTDEVIATION", "SYMETRIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Describes the direction associated to the branch line of the turnout (deviated branch)."},
			new EnumerationPropertyType("TrackElementOrientation", new [] { "BACK", "FRONT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Turnout panels can be placed in 2 mirror-symmetric directions in the field. To distinguish both ends of the turnout panel, a definition of an orientation system with respect to the panel is necessary. The orientation defines, if the panel is oriented in a way or opposite with respect to the direction of the alignment/stationing."},
			new EnumerationPropertyType("TurnoutHeaterType", new [] { "ELECTRIC", "GAS", "GEOTHERMAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the kind of turnout heater installed."},
			new EnumerationPropertyType("TypeOfCurvedTurnout", new [] { "CIRCULAR_ARC", "STRAIGHT", "TRANSITION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Turnouts that are positioned in the curved part of the alignment."},
			new EnumerationPropertyType("TypeOfDrivingDevice", new [] { "ELECTRIC", "HYDRAULIC", "MANUAL", "MIXED", "MOTORISED", "PNEUMATIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of the driving device used for the turnout."},
			new EnumerationPropertyType("TypeOfJunction", new [] { "ISOLATED_JOINT", "JOINTED", "WELDED_AND_INSERTABLE", "WELDED_AND_NOT_INSERTABLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The turnout part of the continuous welded rail."},
			new EnumerationPropertyType("TypeOfTurnout", new [] { "DERAILMENT_TURNOUT", "DIAMOND_CROSSING", "DOUBLE_SLIP_CROSSING", "SCISSOR_CROSSOVER", "SINGLE_SLIP_CROSSING", "SLIP_TURNOUT_AND_SCISSORS_CROSSING", "SYMMETRIC_TURNOUT", "THREE_WAYS_TURNOUT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of turnout."},
			new SingleValuePropertyType("InstallationPlan", "IfcDocumentReference") { Definition = "Reference to external information source about installation or construction plan of the element."},
			new SingleValuePropertyType("IsAccessibleByVehicle", "IfcBoolean") { Definition = "Indicates whether the element is accessible by a vehicle or not."},
			new SingleValuePropertyType("IsSharedTurnout", "IfcBoolean") { Definition = "Indicates if the turnout makes a connection to another infrastructure owner (for sharing costs)."},
			new SingleValuePropertyType("MaximumSpeedLimitOfDivergingLine", "IfcLinearVelocityMeasure") { Definition = "Maximum speed for diverging line that corresponds to the type of turnout and design constraints."},
			new SingleValuePropertyType("PercentShared", "IfcPositiveRatioMeasure") { Definition = "Percent of costs paid by the other infrastructure owner."},
			new SingleValuePropertyType("TrackExpansion", "IfcPositiveLengthMeasure") { Definition = "In curvature context, bounded value of the expansion distance that can be added to rail gauge."},
			new SingleValuePropertyType("TrackGaugeLength", "IfcPositiveLengthMeasure") { Definition = "Basic track gauge of permanent way."},
			new SingleValuePropertyType("TurnoutCurvedRadius", "IfcLengthMeasure") { Definition = "If turnout is curved, the main branch radius of curvature."},
			new SingleValuePropertyType("TurnoutPointMachineCount", "IfcCountMeasure") { Definition = "Count of point machines inside turnout panel."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_ElementComponentCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CorrosionTreatment", new [] { "EPOXYCOATED", "GALVANISED", "NONE", "PAINTED", "STAINLESS", "NOTDEFINED" } ) { Definition = "Determines corrosion treatment for metal components. This property is provided if the requirement needs to be expressed (a) independently of a material specification and (b) as a mere requirements statement rather than a workshop design/ processing feature."},
			new EnumerationPropertyType("DeliveryType", new [] { "ATTACHED_FOR_DELIVERY", "CAST_IN_PLACE", "LOOSE", "PRECAST", "WELDED_TO_STRUCTURE", "NOTDEFINED" } ) { Definition = "Determines how the accessory will be delivered to the site."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcElementComponent", "IfcElementComponentType" });
		yield return new PropertySetInfo("Pset_ElementKinematics", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CyclicRange", "IfcPlaneAngleMeasure") { Definition = "Identifies the angular range of the kinematic behaviour"},
			new SingleValuePropertyType("LinearRange", "IfcPositiveLengthMeasure") { Definition = "Identifies the linear range of the kinematic behaviour."},
			new SingleValuePropertyType("MaximumAngularVelocity", "IfcAngularVelocityMeasure") { Definition = "Identifies the maximum angular velocity of the kinematic behaviour."},
			new SingleValuePropertyType("MaximumConstantSpeed", "IfcLinearVelocityMeasure") { Definition = "Identifies the maximum constant speed over the kinematic path."},
			new SingleValuePropertyType("MinimumTime", "IfcTimeMeasure") { Definition = "Identifies the minimum time for the kinematic behaviour."},
			new TableValuePropertyType("CyclicPath", "IfcTimeMeasure", "IfcPlaneAngleMeasure") { Definition = "Represents the time:angle table of the kinematic behaviour."},
			new TableValuePropertyType("LinearPath", "IfcTimeMeasure", "IfcLengthMeasure") { Definition = "Represents the time:distance table of the kinematic behaviour."} },
				new [] { "IfcElement", "IfcElementType" });
		yield return new PropertySetInfo("Pset_ElementSize", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcPositiveLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType", "IfcEnergyConversionDevice", "IfcEnergyConversionDeviceType", "IfcFlowController", "IfcFlowControllerType", "IfcFlowMovingDevice", "IfcFlowMovingDeviceType", "IfcFlowStorageDevice", "IfcFlowStorageDeviceType", "IfcFlowTerminal", "IfcFlowTerminalType", "IfcFlowTreatmentDevice", "IfcFlowTreatmentDeviceType" });
		yield return new PropertySetInfo("Pset_EmbeddedTrack", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasDrainage", "IfcBoolean") { Definition = "Indicates whether the infrastructure element has drainage embedded or not."},
			new SingleValuePropertyType("IsAccessibleByVehicle", "IfcBoolean") { Definition = "Indicates whether the element is accessible by a vehicle or not."},
			new SingleValuePropertyType("PermissibleRoadLoad", "IfcMassMeasure") { Definition = "Permissible traffic load for the road design."} },
				new [] { "IfcSlab", "IfcSlabType" });
		yield return new PropertySetInfo("Pset_EnergyRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EnergyConsumption", "IfcEnergyMeasure") { Definition = "Annual energy consumption requirement"},
			new SingleValuePropertyType("EnergyConversionEfficiency", "IfcRatioMeasure") { Definition = "Measure of the efficiency of conversion of fuel energy to mechanical energy"},
			new SingleValuePropertyType("EnergySourceLabel", "IfcLabel") { Definition = "Type of energy source e.g. Electricity, Diesel, LPG etc. utilised by the element."},
			new SingleValuePropertyType("PowerDemand", "IfcPowerMeasure") { Definition = "Power demand of the element"} },
				new [] { "IfcDistributionElement", "IfcDistributionElementType", "IfcTransportationDevice", "IfcTransportationDeviceType" });
		yield return new PropertySetInfo("Pset_EngineTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EnergySource", new [] { "BIFUEL", "BIODIESEL", "DIESEL", "GASOLINE", "HYDROGEN", "NATURALGAS", "PROPANE", "SEWAGEGAS", "UNKNOWN", "OTHER", "UNSET" } ) { Definition = "Enumeration defining the energy source or fuel cumbusted."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcEngine", "IfcEngineType" });
		yield return new PropertySetInfo("Pset_EnvironmentalCondition", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaximumAtmosphericPressure", "IfcPressureMeasure") { Definition = "Maximum level of atmospheric pressure that the equipment can operate effectively in."},
			new SingleValuePropertyType("MaximumRainIntensity", "IfcReal") { Definition = "Maximum level of rain intensity that the equipment can operate effectively in. It is usually measured in millimeter per hour (mm/h)."},
			new SingleValuePropertyType("MaximumSolarRadiation", "IfcReal") { Definition = "Maximum level of solar irradiance that the equipment can operate effectively in. This is usually tested and measured by a national or international standard. The value indicates power density measured in watt per square meter (w/m2)."},
			new SingleValuePropertyType("MaximumWindSpeed", "IfcLinearVelocityMeasure") { Definition = "Maximum resistance to wind load exposure."},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature range in which the device operates normally.\n\nAllowable operation ambient air temperature range."},
			new SingleValuePropertyType("ReferenceAirRelativeHumidity", "IfcNormalisedRatioMeasure") { Definition = "Measurement of the ratio of water vapor in the air."},
			new SingleValuePropertyType("ReferenceEnvironmentTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ideal temperature range."},
			new SingleValuePropertyType("SaltMistLevel", "IfcLabel") { Definition = "Maximum level of salt mist that the equipment can operate effectively in. It is provided according to an international or national standard."},
			new SingleValuePropertyType("SeismicResistance", "IfcReal") { Definition = "Maximum magnitude of earthquake that the equipment complies with. The value indicates earthquake intensity measured in Richter scale."},
			new SingleValuePropertyType("SmokeLevel", "IfcLabel") { Definition = "Maximum level of smoke that the equipment complies with. It is provided according to an international or national standard."},
			new SingleValuePropertyType("StorageTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowed storage temperature range that the element complies with."} },
				new [] { "IfcElement", "IfcElementType" });
		yield return new PropertySetInfo("Pset_EnvironmentalEmissions", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CarbonDioxideEmissions", "IfcMassFlowRateMeasure") { Definition = "Rate of emission of carbon dioxide"},
			new SingleValuePropertyType("NitrogenOxidesEmissions", "IfcMassFlowRateMeasure") { Definition = "Rate of emission of nitrogen oxides"},
			new SingleValuePropertyType("NoiseEmissions", "IfcSoundPowerLevelMeasure") { Definition = "Level of sound emission"},
			new SingleValuePropertyType("ParticulateMatterEmissions", "IfcMassFlowRateMeasure") { Definition = "Rate of emission of particulate matter"},
			new SingleValuePropertyType("SulphurDioxideEmissions", "IfcMassFlowRateMeasure") { Definition = "Rate of emission of sulphur dioxide"} },
				new [] { "IfcDistributionElement", "IfcDistributionElementType", "IfcTransportationDevice", "IfcTransportationDeviceType" });
		yield return new PropertySetInfo("Pset_EnvironmentalImpactIndicators", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LifeCyclePhase", new [] { "ACQUISITION", "CRADLETOSITE", "DECONSTRUCTION", "DISPOSAL", "DISPOSALTRANSPORT", "GROWTH", "INSTALLATION", "MAINTENANCE", "MANUFACTURE", "OCCUPANCY", "OPERATION", "PROCUREMENT", "PRODUCTION", "PRODUCTIONTRANSPORT", "RECOVERY", "REFURBISHMENT", "REPAIR", "REPLACEMENT", "TRANSPORT", "USAGE", "WASTE", "WHOLELIFECYCLE", "USERDEFINED", "NOTDEFINED" } ) { Definition = "The whole life cycle or only a given phase  from which environmental data are valid."},
			new SingleValuePropertyType("AtmosphericAcidificationPerUnit", "IfcMassMeasure") { Definition = "Quantity of gases responsible for the atmospheric acidification calculated in equivalent SO2"},
			new SingleValuePropertyType("ClimateChangePerUnit", "IfcMassMeasure") { Definition = "Quantity of greenhouse gases emitted calculated in equivalent CO2"},
			new SingleValuePropertyType("EutrophicationPerUnit", "IfcMassMeasure") { Definition = "Quantity of eutrophicating compounds calculated in equivalent PO4"},
			new SingleValuePropertyType("ExpectedServiceLife", "IfcTimeMeasure") { Definition = "Expected service life in years."},
			new SingleValuePropertyType("FunctionalUnitReference", "IfcLabel") { Definition = "Reference to a database or a classification"},
			new SingleValuePropertyType("HazardousWastePerUnit", "IfcMassMeasure") { Definition = "Quantity of hazardous waste generated"},
			new SingleValuePropertyType("IndicatorsUnit", "IfcText") { Definition = "The unit of the quantity the environmental indicators values are related with."},
			new SingleValuePropertyType("InertWastePerUnit", "IfcMassMeasure") { Definition = "Quantity of inert waste generated"},
			new SingleValuePropertyType("NonHazardousWastePerUnit", "IfcMassMeasure") { Definition = "Quantity of non hazardous waste generated"},
			new SingleValuePropertyType("NonRenewableEnergyConsumptionPerUnit", "IfcEnergyMeasure") { Definition = "Quantity of non-renewable energy used as defined in ISO21930:2007"},
			new SingleValuePropertyType("PhotochemicalOzoneFormationPerUnit", "IfcMassMeasure") { Definition = "Quantity of gases creating the photochemical ozone calculated in equivalent ethylene"},
			new SingleValuePropertyType("RadioactiveWastePerUnit", "IfcMassMeasure") { Definition = "Quantity of radioactive waste generated"},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("RenewableEnergyConsumptionPerUnit", "IfcEnergyMeasure") { Definition = "Quantity of renewable energy used as defined in ISO21930:2007"},
			new SingleValuePropertyType("ResourceDepletionPerUnit", "IfcMassMeasure") { Definition = "Quantity of resources used calculated in equivalent antimony"},
			new SingleValuePropertyType("StratosphericOzoneLayerDestructionPerUnit", "IfcMassMeasure") { Definition = "Quantity of gases destroying the stratospheric ozone layer calculated in equivalent CFC-R11"},
			new SingleValuePropertyType("TotalPrimaryEnergyConsumptionPerUnit", "IfcEnergyMeasure") { Definition = "Quantity of energy used as defined in ISO21930:2007."},
			new SingleValuePropertyType("WaterConsumptionPerUnit", "IfcVolumeMeasure") { Definition = "Quantity of water used."} },
				new [] { "IfcElement", "IfcElementType" });
		yield return new PropertySetInfo("Pset_EnvironmentalImpactValues", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AtmosphericAcidification", "IfcMassMeasure") { Definition = "Quantity of gases responsible for the atmospheric acidification calculated in equivalent SO2."},
			new SingleValuePropertyType("ClimateChange", "IfcMassMeasure") { Definition = "Quantity of greenhouse gases emitted calculated in equivalent CO2."},
			new SingleValuePropertyType("Duration", "IfcDuration") { Definition = "Duration.\n\nDuration of process."},
			new SingleValuePropertyType("Eutrophication", "IfcMassMeasure") { Definition = "Quantity of eutrophicating compounds calculated in equivalent PO4."},
			new SingleValuePropertyType("HazardousWaste", "IfcMassMeasure") { Definition = "Quantity of hazardous waste generated."},
			new SingleValuePropertyType("InertWaste", "IfcMassMeasure") { Definition = "Quantity of inert waste generated ."},
			new SingleValuePropertyType("LeadInTime", "IfcDuration") { Definition = "Lead in time before start of process."},
			new SingleValuePropertyType("LeadOutTime", "IfcDuration") { Definition = "Lead out time after end of process."},
			new SingleValuePropertyType("NonHazardousWaste", "IfcMassMeasure") { Definition = "Quantity of non hazardous waste generated."},
			new SingleValuePropertyType("NonRenewableEnergyConsumption", "IfcEnergyMeasure") { Definition = "Quantity of non-renewable energy used as defined in ISO21930:2007"},
			new SingleValuePropertyType("PhotochemicalOzoneFormation", "IfcMassMeasure") { Definition = "Quantity of gases creating the photochemical ozone calculated in equivalent ethylene."},
			new SingleValuePropertyType("RadioactiveWaste", "IfcMassMeasure") { Definition = "Quantity of radioactive waste generated."},
			new SingleValuePropertyType("RenewableEnergyConsumption", "IfcEnergyMeasure") { Definition = "Quantity of renewable energy used as defined in ISO21930:2007"},
			new SingleValuePropertyType("ResourceDepletion", "IfcMassMeasure") { Definition = "Quantity of resources used calculated in equivalent antimony."},
			new SingleValuePropertyType("StratosphericOzoneLayerDestruction", "IfcMassMeasure") { Definition = "Quantity of gases destroying the stratospheric ozone layer calculated in equivalent CFC-R11."},
			new SingleValuePropertyType("TotalPrimaryEnergyConsumption", "IfcEnergyMeasure") { Definition = "Quantity of energy used as defined in ISO21930:2007."},
			new SingleValuePropertyType("WaterConsumption", "IfcVolumeMeasure") { Definition = "Quantity of water used."} },
				new [] { "IfcElement", "IfcElementType" });
		yield return new PropertySetInfo("Pset_EvaporativeCoolerPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Effectiveness", "IfcTimeSeries") { Definition = "Effectiveness, represented as ratio.\n\nRatio of the change in dry bulb temperature of the (primary) air stream to the difference between the entering dry bulb temperature of the (primary) air and the wet-bulb temperature of the (secondary) air."},
			new SingleValuePropertyType("LatentHeatTransferRate", "IfcTimeSeries") { Definition = "Latent heat transfer rate.\n\nTo primary air flow."},
			new SingleValuePropertyType("SensibleHeatTransferRate", "IfcTimeSeries") { Definition = "Sensible heat transfer rate.\n\nSensible heat transfer rate to primary air flow."},
			new SingleValuePropertyType("TotalHeatTransferRate", "IfcTimeSeries") { Definition = "Total heat transfer rate."},
			new SingleValuePropertyType("WaterSumpTemperature", "IfcTimeSeries") { Definition = "Water sump temperature."} },
				new [] { "IfcEvaporativeCooler" });
		yield return new PropertySetInfo("Pset_EvaporativeCoolerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FlowArrangement", new [] { "COUNTERFLOW", "CROSSFLOW", "PARALLELFLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the basic flow arrangements for the heat exchanger or cooler tower:COUNTERFLOW: Air and water flow enter in different directions.\nCROSSFLOW: Air and water flow are perpendicular.\nPARALLELFLOW: Air and water flow enter in same directions.\nMULTIPASS: Multipass flow heat exchanger arrangement. \nOTHER: Other type of heat exchanger flow arrangement not defined above."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("HeatExchangeArea", "IfcAreaMeasure") { Definition = "Heat exchange area."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("WaterRequirement", "IfcVolumetricFlowRateMeasure") { Definition = "Make-up water requirement."},
			new TableValuePropertyType("AirPressureDropCurve", "IfcVolumetricFlowRateMeasure", "IfcPressureMeasure") { Definition = "Air pressure drop as a function of air flow rate."},
			new TableValuePropertyType("EffectivenessTable", "IfcVolumetricFlowRateMeasure", "IfcReal") { Definition = "Total heat transfer effectiveness curve as a function of the primary air flow rate."},
			new TableValuePropertyType("WaterPressDropCurve", "IfcVolumetricFlowRateMeasure", "IfcPressureMeasure") { Definition = "Water pressure drop as function of water flow rate."} },
				new [] { "IfcEvaporativeCooler", "IfcEvaporativeCoolerType" });
		yield return new PropertySetInfo("Pset_EvaporatorPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CompressorEvaporatorHeatGain", "IfcTimeSeries") { Definition = "Heat gain between the evaporator outlet and the compressor inlet."},
			new SingleValuePropertyType("CompressorEvaporatorPressureDrop", "IfcTimeSeries") { Definition = "Pressure drop between the evaporator outlet and the compressor inlet."},
			new SingleValuePropertyType("EvaporatingTemperature", "IfcTimeSeries") { Definition = "Refrigerant evaporating temperature."},
			new SingleValuePropertyType("EvaporatorMeanVoidFraction", "IfcTimeSeries") { Definition = "Mean void fraction in evaporator."},
			new SingleValuePropertyType("ExteriorHeatTransferCoefficient", "IfcTimeSeries") { Definition = "Exterior heat transfer coefficient associated with exterior surface area."},
			new SingleValuePropertyType("HeatRejectionRate", "IfcTimeSeries") { Definition = "Sum of the refrigeration effect and the heat equivalent of the power input to the compressor."},
			new SingleValuePropertyType("InteriorHeatTransferCoefficient", "IfcTimeSeries") { Definition = "Interior heat transfer coefficient associated with interior surface area."},
			new SingleValuePropertyType("LogarithmicMeanTemperatureDifference", "IfcTimeSeries") { Definition = "Logarithmic mean temperature difference between refrigerant and water or air."},
			new SingleValuePropertyType("RefrigerantFoulingResistance", "IfcTimeSeries") { Definition = "Fouling resistance on the refrigerant side."},
			new SingleValuePropertyType("UAcurves", "IfcTimeSeries") { Definition = "UV = f (VExterior, VInterior), UV as a function of interior and exterior fluid flow velocity at the entrance."},
			new SingleValuePropertyType("WaterFoulingResistance", "IfcTimeSeries") { Definition = "Fouling resistance on water/air side."} },
				new [] { "IfcEvaporator" });
		yield return new PropertySetInfo("Pset_EvaporatorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EvaporatorCoolant", new [] { "BRINE", "GLYCOL", "WATER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The fluid used for the coolant in the evaporator."},
			new EnumerationPropertyType("EvaporatorMediumType", new [] { "COLDAIR", "COLDLIQUID", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "ColdLiquid: Evaporator is using liquid type of fluid to exchange heat with refrigerant.\nColdAir: Evaporator is using air to exchange heat with refrigerant."},
			new EnumerationPropertyType("RefrigerantClass", new [] { "AMMONIA", "CFC", "CO2", "H2O", "HCFC", "HFC", "HYDROCARBONS", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Refrigerant class used by the object.\nCFC: Chlorofluorocarbons.\nHCFC: Hydrochlorofluorocarbons.\nHFC: Hydrofluorocarbons."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ExternalSurfaceArea", "IfcAreaMeasure") { Definition = "External surface area (both primary and secondary area)."},
			new SingleValuePropertyType("InternalRefrigerantVolume", "IfcVolumeMeasure") { Definition = "Internal volume of object (refrigerant side)."},
			new SingleValuePropertyType("InternalSurfaceArea", "IfcAreaMeasure") { Definition = "Internal surface area."},
			new SingleValuePropertyType("InternalWaterVolume", "IfcVolumeMeasure") { Definition = "Internal volume of object (water side)."},
			new SingleValuePropertyType("NominalHeatTransferArea", "IfcAreaMeasure") { Definition = "Nominal heat transfer surface area associated with nominal overall heat transfer coefficient."},
			new SingleValuePropertyType("NominalHeatTransferCoefficient", "IfcThermalTransmittanceMeasure") { Definition = "Nominal overall heat transfer coefficient associated with nominal heat transfer area."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcEvaporator", "IfcEvaporatorType" });
		yield return new PropertySetInfo("Pset_FanCentrifugal", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DirectionOfRotation", new [] { "CLOCKWISE", "COUNTERCLOCKWISE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The direction of the centrifugal fan wheel rotation when viewed from the drive side of the fan.CLOCKWISE: Clockwise.\nCOUNTERCLOCKWISE: Counter-clockwise.\nOTHER: Other type of fan rotation."},
			new EnumerationPropertyType("DischargePosition", new [] { "BOTTOMANGULARDOWN", "BOTTOMANGULARUP", "BOTTOMHORIZONTAL", "DOWNBLAST", "TOPANGULARDOWN", "TOPANGULARUP", "TOPHORIZONTAL", "UPBLAST", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Centrifugal fan discharge position.TOPHORIZONTAL: Top horizontal discharge.\nTOPANGULARDOWN: Top angular down discharge.\nDOWNBLAST: Downblast discharge.\nBOTTOMANGULARDOWN: Bottom angular down discharge.\nBOTTOMHORIZONTAL: Bottom horizontal discharge.\nBOTTOMANGULARUP: Bottom angular up discharge.\nUPBLAST: Upblast discharge.\nTOPANGULARUP: Top angular up discharge.\nOTHER: Other type of fan arrangement."},
			new EnumerationPropertyType("FanArrangement", new [] { "ARRANGEMENT1", "ARRANGEMENT10", "ARRANGEMENT2", "ARRANGEMENT3", "ARRANGEMENT4", "ARRANGEMENT7", "ARRANGEMENT8", "ARRANGEMENT9", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the fan and motor drive arrangement as defined by AMCA.ARRANGEMENT1: Arrangement 1.\nARRANGEMENT2: Arrangement 2.\nARRANGEMENT3: Arrangement 3.\nARRANGEMENT4: Arrangement 4.\nARRANGEMENT7: Arrangement 7.\nARRANGEMENT8: Arrangement 8.\nARRANGEMENT9: Arrangement 9.\nARRANGEMENT10: Arrangement 10.\nOTHER: Other type of fan drive arrangement."} },
				new [] { "IfcFan", "IfcFan", "IfcFan", "IfcFan", "IfcFanType", "IfcFanType", "IfcFanType", "IfcFanType" });
		yield return new PropertySetInfo("Pset_FanOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ApplicationOfFan", new [] { "COOLINGTOWER", "EXHAUSTAIR", "RETURNAIR", "SUPPLYAIR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The functional application of the fan.SupplyAir: Supply air fan.\nReturnAir: Return air fan.\nExhaustAir: Exhaust air fan.\nOther: Other type of application not defined above."},
			new EnumerationPropertyType("CoilPosition", new [] { "BLOWTHROUGH", "DRAWTHROUGH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the relationship between a fan and a coil.DrawThrough: Fan located downstream of the coil.\nBlowThrough: Fan located upstream of the coil."},
			new EnumerationPropertyType("DischargeType", new [] { "DAMPER", "DUCT", "LOUVER", "SCREEN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the type of connection at the fan discharge.Duct: Discharge into ductwork.\nScreen: Discharge into screen outlet.\nLouver: Discharge into a louver.\nDamper: Discharge into a damper."},
			new EnumerationPropertyType("FanMountingType", new [] { "CONCRETEPAD", "DUCTMOUNTED", "FIELDERECTEDCURB", "MANUFACTUREDCURB", "SUSPENDED", "WALLMOUNTED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the method of mounting the fan in the building."},
			new EnumerationPropertyType("MotorPosition", new [] { "INAIRSTREAM", "OUTOFAIRSTREAM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the location of the motor relative to the air stream.InAirStream: Fan motor is in the air stream.\nOutOfAirStream: Fan motor is out of the air stream."},
			new SingleValuePropertyType("FractionOfMotorHeatToAirStream", "IfcNormalisedRatioMeasure") { Definition = "Fraction of the motor heat released into the fluid flow."},
			new SingleValuePropertyType("ImpellerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of object - used to scale performance of geometrically similar objects."} },
				new [] { "IfcFan" });
		yield return new PropertySetInfo("Pset_FanPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DischargePressureLoss", "IfcTimeSeries") { Definition = "Fan discharge pressure loss associated with the discharge arrangement."},
			new SingleValuePropertyType("DischargeVelocity", "IfcTimeSeries") { Definition = "The speed at which air discharges from the fan through the fan housing discharge opening."},
			new SingleValuePropertyType("DrivePowerLoss", "IfcTimeSeries") { Definition = "Fan drive power losses associated with the type of connection between the motor and the fan wheel."},
			new SingleValuePropertyType("FanEfficiency", "IfcTimeSeries") { Definition = "Fan mechanical efficiency."},
			new SingleValuePropertyType("FanPowerRate", "IfcTimeSeries") { Definition = "Fan power consumption."},
			new SingleValuePropertyType("FanRotationSpeed", "IfcTimeSeries") { Definition = "Fan rotation speed."},
			new SingleValuePropertyType("OverallEfficiency", "IfcTimeSeries") { Definition = "Total efficiency of object."},
			new SingleValuePropertyType("ShaftPowerRate", "IfcTimeSeries") { Definition = "Fan shaft power."},
			new SingleValuePropertyType("WheelTipSpeed", "IfcTimeSeries") { Definition = "Fan blade tip speed, typically defined as the linear speed of the tip of the fan blade furthest from the shaft."} },
				new [] { "IfcFan" });
		yield return new PropertySetInfo("Pset_FanTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CapacityControlType", new [] { "BLADEPITCHANGLE", "DISCHARGEDAMPER", "INLETVANE", "TWOSPEED", "VARIABLESPEEDDRIVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "InletVane: Control by adjusting inlet vane.\nVariableSpeedDrive: Control by variable speed drive.\nBladePitchAngle: Control by adjusting blade pitch angle.\nTwoSpeed: Control by switch between high and low speed.\nDischargeDamper: Control by modulating discharge damper."},
			new EnumerationPropertyType("MotorDriveType", new [] { "BELTDRIVE", "COUPLING", "DIRECTDRIVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Motor drive type:\nDIRECTDRIVE: Direct drive.\nBELTDRIVE: Belt drive.\nCOUPLING: Coupling.\nOTHER: Other type of motor drive.\nUNKNOWN: Unknown motor drive type."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal air flow rate."},
			new SingleValuePropertyType("NominalPowerRate", "IfcPowerMeasure") { Definition = "Nominal fan power rate."},
			new SingleValuePropertyType("NominalRotationSpeed", "IfcRotationalFrequencyMeasure") { Definition = "Rotational speed of the object under nominal conditions.\n\nNominal fan wheel speed."},
			new SingleValuePropertyType("NominalStaticPressure", "IfcPressureMeasure") { Definition = "The static pressure within the air stream that the fan must overcome to insure designed circulation of air."},
			new SingleValuePropertyType("NominalTotalPressure", "IfcPressureMeasure") { Definition = "Nominal total pressure rise across the fan."},
			new SingleValuePropertyType("OperationalCriteria", "IfcTimeMeasure") { Definition = "Time of operation at maximum operational ambient air temperature."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new TableValuePropertyType("EfficiencyCurve", "IfcVolumetricFlowRateMeasure", "IfcNormalisedRatioMeasure") { Definition = "Fan efficiency =f (flow rate)."},
			new TableValuePropertyType("PressureCurve", "IfcVolumetricFlowRateMeasure", "IfcPressureMeasure") { Definition = "Pressure rise = f (flow rate)."} },
				new [] { "IfcFan", "IfcFanType" });
		yield return new PropertySetInfo("Pset_FastenerRailWeld", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssemblyPlace", new [] { "FACTORY", "OFFSITE", "SITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining where the assembly is intended to take place, either in a factory, other offsite location or on the building site."},
			new EnumerationPropertyType("JointRelativePosition", new [] { "LEFT", "MIDDLE", "RIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the relative position of the joint, which lies in the left or right rail or in the middle, or in combination. The left rail is to the left as facing in the direction of increasing stationing values, and the right rail is to the right."},
			new SingleValuePropertyType("IsLiftingBracket", "IfcBoolean") { Definition = "Indicates whether the connection is done between rail with different height (TRUE) or with same height (FALSE)."},
			new SingleValuePropertyType("TemperatureDuringInstallation", "IfcThermodynamicTemperatureMeasure") { Definition = "Normalised working temperature."} },
				new [] { "IfcFastener", "IfcFastenerType" });
		yield return new PropertySetInfo("Pset_FastenerWeld", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DeepPenetrationThroatThickness", "IfcPositiveLengthMeasure") { Definition = "Nominal throat thickness or effective throat thickness to which a certain amount of fusion penetration is added.REFERENCE Symbol s according to ISO 2553:2019."},
			new SingleValuePropertyType("Intermittent", "IfcBoolean") { Definition = "If fillet weld, intermittent or not"},
			new SingleValuePropertyType("NominalThroatThickness", "IfcPositiveLengthMeasure") { Definition = "Design value of the height of the largest isosceles triangle that can be inscribed in the section of a fillet weld.REFERENCE Symbol a according to ISO 2553:2019."},
			new SingleValuePropertyType("NumberOfWeldElements", "IfcCountMeasure") { Definition = "Number of weld elements.REFERENCE Symbol n according to ISO 2553:2019."},
			new SingleValuePropertyType("Process", "IfcInteger") { Definition = "Reference number of the welding process according to ISO 4063, an up to three digits long code"},
			new SingleValuePropertyType("ProcessName", "IfcLabel") { Definition = "Name of the welding process.  Alternative to the numeric Process property."},
			new SingleValuePropertyType("Staggered", "IfcBoolean") { Definition = "If intermittent weld, staggered or not"},
			new SingleValuePropertyType("Surface1", "IfcLabel") { Definition = "Aspect of weld seam surface, i.e. 'plane', 'curved' or 'hollow'.  Combined welds are given by two corresponding symbols analogous to Type1 and Type2."},
			new SingleValuePropertyType("Surface2", "IfcLabel") { Definition = "See Surface1."},
			new SingleValuePropertyType("Type1", "IfcLabel") { Definition = "Type of weld seam according to ISO 2553.  Note, combined welds are given by two corresponding symbols in the direction of the normal axis of the coordinate system.  For example, an X weld is specified by Type1 = 'V' and Type2 = 'V'."},
			new SingleValuePropertyType("Type2", "IfcLabel") { Definition = "See Type1."},
			new SingleValuePropertyType("WeldDiameter", "IfcPositiveLengthMeasure") { Definition = "Dimension of the required hole diameter at the faying surface, or required spot weld diameter at the faying surface, or required stud diameter.REFERENCE Symbol d according to ISO 2553:2019."},
			new SingleValuePropertyType("WeldElementLength", "IfcPositiveLengthMeasure") { Definition = "Length of each weld element.REFERENCE Symbol l according to ISO 2553:2019."},
			new SingleValuePropertyType("WeldElementSpacing", "IfcPositiveLengthMeasure") { Definition = "Spacing between weld elements (centre to centre)REFERENCE Symbol e according to ISO 2553:2019."},
			new SingleValuePropertyType("WeldLegLength", "IfcPositiveLengthMeasure") { Definition = "Distance from the actual or projected intersection of the fusion faces and the toe of a fillet weld, measured across the fusion face.REFERENCE Symbol z according to ISO 2553:2019."},
			new SingleValuePropertyType("WeldWidth", "IfcPositiveLengthMeasure") { Definition = "Required elongated hole width at the faying surface or seam weld width at the faying surface.REFERENCE Symbol c according to ISO 2553:2019."} },
				new [] { "IfcFastener", "IfcFastenerType" });
		yield return new PropertySetInfo("Pset_FenderCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FenderType", new [] { "ARCH", "CELL", "CONE", "CYLINDER", "PNEUMATIC" } ) { Definition = "The type of fender"},
			new SingleValuePropertyType("CoefficientOfFriction", "IfcPositiveRatioMeasure") { Definition = "Coefficient of friction value for the fender"},
			new SingleValuePropertyType("EnergyAbsorption", "IfcEnergyMeasure") { Definition = "Energy absorption capacity of the element."},
			new SingleValuePropertyType("EnergyAbsorptionTolerance", "IfcPositiveRatioMeasure") { Definition = "Manufacturing tolerance on energy absorption"},
			new SingleValuePropertyType("MaximumTemperatureFactor", "IfcPositiveRatioMeasure") { Definition = "Deviation in performance due to maximum design temperature"},
			new SingleValuePropertyType("MaxReaction", "IfcForceMeasure") { Definition = "Maximum reaction from the element"},
			new SingleValuePropertyType("MaxReactionTolerance", "IfcPositiveRatioMeasure") { Definition = "Manufacturing tolerance on maximum reaction at fender support."},
			new SingleValuePropertyType("MinimumTemperatureFactor", "IfcPositiveRatioMeasure") { Definition = "Deviation in performance due to minimum design temperature"},
			new SingleValuePropertyType("VelocityFactorEnergy", "IfcPositiveRatioMeasure") { Definition = "Deviation in energy absorption performance due to strain rate"},
			new SingleValuePropertyType("VelocityFactorReaction", "IfcPositiveRatioMeasure") { Definition = "Deviation in reaction due to strain rate"} },
				new [] { "IfcImpactProtectionDevice", "IfcImpactProtectionDeviceType" });
		yield return new PropertySetInfo("Pset_FenderDesignCriteria", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AddedMassCoefficientMethod", new [] { "PIANC", "SHIGERU_UEDA", "VASCO_COSTA" } ) { Definition = "Method used to determine the Added Mass Coefficient used for design"},
			new SingleValuePropertyType("CoefficientOfFriction", "IfcPositiveRatioMeasure") { Definition = "Coefficient of friction value for the fender"},
			new SingleValuePropertyType("EnergyAbsorption", "IfcEnergyMeasure") { Definition = "Energy absorption capacity of the element."},
			new SingleValuePropertyType("EnergyAbsorptionTolerance", "IfcPositiveRatioMeasure") { Definition = "Manufacturing tolerance on energy absorption"},
			new SingleValuePropertyType("MaximumTemperatureFactor", "IfcPositiveRatioMeasure") { Definition = "Deviation in performance due to maximum design temperature"},
			new SingleValuePropertyType("MaxReaction", "IfcForceMeasure") { Definition = "Maximum reaction from the element"},
			new SingleValuePropertyType("MaxReactionTolerance", "IfcPositiveRatioMeasure") { Definition = "Manufacturing tolerance on maximum reaction at fender support."},
			new SingleValuePropertyType("MinCompressedFenderHeight", "IfcPositiveLengthMeasure") { Definition = "Minimum height required for a compressed fender to prevent vessels striking the structure"},
			new SingleValuePropertyType("MinimumTemperatureFactor", "IfcPositiveRatioMeasure") { Definition = "Deviation in performance due to minimum design temperature"},
			new SingleValuePropertyType("VelocityFactorEnergy", "IfcPositiveRatioMeasure") { Definition = "Deviation in energy absorption performance due to strain rate"},
			new SingleValuePropertyType("VelocityFactorReaction", "IfcPositiveRatioMeasure") { Definition = "Deviation in reaction due to strain rate"} },
				new [] { "IfcSpace", "IfcSpaceType" });
		yield return new PropertySetInfo("Pset_FilterPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CountedEfficiency", "IfcTimeSeries") { Definition = "Filter efficiency based the particle counts concentration before and after filter against particles with certain size distribution."},
			new SingleValuePropertyType("ParticleMassHolding", "IfcTimeSeries") { Definition = "Mass of particle holding in the filter."},
			new SingleValuePropertyType("WeightedEfficiency", "IfcTimeSeries") { Definition = "Filter efficiency based the particle weight concentration before and after filter against particles with certain size distribution."} },
				new [] { "IfcFilter" });
		yield return new PropertySetInfo("Pset_FilterTypeAirParticleFilter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirParticleFilterType", new [] { "ADHESIVERESERVOIR", "COARSECELLFOAMS", "COARSEMETALSCREEN", "COARSESPUNGLASS", "ELECTRICALFILTER", "HEPAFILTER", "MEDIUMELECTRETFILTER", "MEDIUMNATURALFIBERFILTER", "MEMBRANEFILTERS", "RENEWABLEMOVINGCURTIANDRYMEDIAFILTER", "ROLLFORM", "ULPAFILTER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A panel dry type extended surface filter is a dry-type air filter with random fiber mats or blankets in the forms of pockets, V-shaped or radial pleats, and include the following:CoarseFilter: Filter with a efficiency lower than 30% for atmosphere dust-spot.\nCoarseMetalScreen: Filter made of metal screen.\nCoarseCellFoams: Filter made of cell foams.\nCoarseSpunGlass: Filter made of spun glass.\nMediumFilter: Filter with an efficiency between 30-98% for atmosphere dust-spot.\nMediumElectretFilter: Filter with fine electret synthetic fibers.\nMediumNaturalFiberFilter: Filter with natural fibers.\nHEPAFilter: High efficiency particulate air filter.\nULPAFilter: Ultra low penetration air filter.\nMembraneFilters: Filter made of membrane for certain pore diameters in flat sheet and pleated form.\nA renewable media with a moving curtain viscous filter are random-fiber media coated with viscous substance in roll form or curtain where fresh media is fed across the face of the filter and the dirty media is rewound onto a roll at the bottom or to into a reservoir:\nRollForm: Viscous filter used in roll form.\nAdhesiveReservoir: Viscous filter used in moving curtain form.\nA renewable moving curtain dry media filter is a random-fiber dry media of relatively high porosity used in moving-curtain(roll) filters.\nAn electrical filter uses electrostatic precipitation to remove and collect particulate contaminants."},
			new EnumerationPropertyType("SeparationType", new [] { "BAG", "PLEAT", "TREADSEPARATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Air particulate filter media separation type."},
			new SingleValuePropertyType("DustHoldingCapacity", "IfcMassMeasure") { Definition = "Maximum filter dust holding capacity."},
			new SingleValuePropertyType("FaceSurfaceArea", "IfcAreaMeasure") { Definition = "Face area of filter frame."},
			new SingleValuePropertyType("FrameMaterial", "IfcMaterialDefinition") { Definition = "Filter frame material."},
			new SingleValuePropertyType("MediaExtendedArea", "IfcAreaMeasure") { Definition = "Total extended media area."},
			new SingleValuePropertyType("NominalCountedEfficiency", "IfcReal") { Definition = "Nominal filter efficiency based the particle count concentration before and after the filter against particles with a certain size distribution."},
			new SingleValuePropertyType("NominalWeightedEfficiency", "IfcReal") { Definition = "Nominal filter efficiency based the particle weight concentration before and after the filter against particles with a certain size distribution."},
			new TableValuePropertyType("CountedEfficiencyCurve", "IfcMassMeasure", "IfcReal") { Definition = "Counted efficiency curve as a function of dust holding weight, efficiency = f (dust holding weight)."},
			new TableValuePropertyType("PressureDropCurve", "IfcVolumetricFlowRateMeasure", "IfcPressureMeasure") { Definition = "Under certain dust holding weight, DelPressure = f (fluidflowRate)"},
			new TableValuePropertyType("WeightedEfficiencyCurve", "IfcMassMeasure", "IfcReal") { Definition = "Weighted efficiency curve as a function of dust holding weight, efficiency = f (dust holding weight)."} },
				new [] { "IfcFilter", "IfcFilterType" });
		yield return new PropertySetInfo("Pset_FilterTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FinalResistance", "IfcPressureMeasure") { Definition = "Filter fluid resistance when replacement is required (i.e., Pressure drop at the maximum air flowrate across the filter when the filter needs replacement per ASHRAE Standard 52.1)."},
			new SingleValuePropertyType("FlowRateRange", "IfcVolumetricFlowRateMeasure") { Definition = "Allowable range of volume of fluid being pumped against the resistance specified."},
			new SingleValuePropertyType("InitialResistance", "IfcPressureMeasure") { Definition = "Initial new filter fluid resistance (i.e., pressure drop at the maximum air flowrate across the filter when the filter is new per ASHRAE Standard 52.1)."},
			new SingleValuePropertyType("NominalFilterFaceVelocity", "IfcLinearVelocityMeasure") { Definition = "Filter face velocity."},
			new SingleValuePropertyType("NominalFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal fluid flow rate through the filter."},
			new SingleValuePropertyType("NominalMediaSurfaceVelocity", "IfcLinearVelocityMeasure") { Definition = "Average fluid velocity at the media surface."},
			new SingleValuePropertyType("NominalParticleGeometricMeanDiameter", "IfcPositiveLengthMeasure") { Definition = "Particle geometric mean diameter associated with nominal efficiency."},
			new SingleValuePropertyType("NominalParticleGeometricStandardDeviation", "IfcReal") { Definition = "Particle geometric standard deviation associated with nominal efficiency."},
			new SingleValuePropertyType("NominalPressureDrop", "IfcPressureMeasure") { Definition = "Total pressure drop across the filter."},
			new SingleValuePropertyType("OperationTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable operation ambient air temperature range."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"} },
				new [] { "IfcFilter", "IfcFilterType" });
		yield return new PropertySetInfo("Pset_FilterTypeCompressedAirFilter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CompressedAirFilterType", new [] { "ACTIVATEDCARBON", "COALESCENSE_FILTER", "PARTICLE_FILTER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "ACTIVATEDCARBON: absorbs oil vapor and odor; PARTICLE_FILTER: used to absorb solid particles of medium size; COALESCENSE_FILTER: used to absorb fine solid, oil, and water particles, also called micro filter"},
			new SingleValuePropertyType("AutomaticCondensateDischarge", "IfcBoolean") { Definition = "Whether or not the condensing water or oil is discharged automatically from the filter."},
			new SingleValuePropertyType("CloggingIndicator", "IfcBoolean") { Definition = "Whether the filter has an indicator to display the degree of clogging of the filter."},
			new SingleValuePropertyType("OperationPressureMax", "IfcPressureMeasure") { Definition = "Maximum pressure under normal operating conditions."},
			new TableValuePropertyType("ParticleAbsorptionCurve", "IfcPositiveLengthMeasure", "IfcPositiveRatioMeasure") { Definition = "Ratio of particles that are removed by the filter.  Each entry describes the ratio of particles absorbed greater than equal to the specified size and less than the next specified size.  For example,  given for 3 significant particle sizes >= 0,1 micro m, >= 1 micro m, >= 5 micro m"} },
				new [] { "IfcFilter", "IfcFilterType" });
		yield return new PropertySetInfo("Pset_FilterTypeWaterFilter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("WaterFilterType", new [] { "FILTRATION_DIATOMACEOUSEARTH", "FILTRATION_SAND", "PURIFICATION_DEIONIZING", "PURIFICATION_REVERSEOSMOSIS", "SOFTENING_ZEOLITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Further qualifies the type of water filter.  Filtration removes undissolved matter; Purification removes dissolved matter; Softening replaces dissolved matter."} },
				new [] { "IfcFilter", "IfcFilterType" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeBreechingInlet", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BreechingInletType", new [] { "FOURWAY", "TWOWAY", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type of breeching inlet."},
			new EnumerationPropertyType("CouplingType", new [] { "INSTANTANEOUS_FEMALE", "INSTANTANEOUS_MALE", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type coupling on the inlet of the breeching inlet."},
			new SingleValuePropertyType("HasCaps", "IfcBoolean") { Definition = "Does the inlet connection have protective caps."},
			new SingleValuePropertyType("InletDiameter", "IfcPositiveLengthMeasure") { Definition = "The inlet diameter of the breeching inlet."},
			new SingleValuePropertyType("OutletDiameter", "IfcPositiveLengthMeasure") { Definition = "The outlet diameter of the breeching inlet."} },
				new [] { "IfcFireSuppressionTerminal", "IfcFireSuppressionTerminalType" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcFireSuppressionTerminal", "IfcFireSuppressionTerminalType" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeFireHydrant", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FireHydrantType", new [] { "DRYBARREL", "WETBARREL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the range of hydrant types from which the required type can be selected where.DryBarrel:   A hydrant that has isolating valves fitted below ground and that may be used where the possibility of water freezing is a consideration.\nWetBarrel:   A hydrant that has isolating valves fitted above ground and that may be used where there is no possibility of water freezing."},
			new SingleValuePropertyType("BodyColour", "IfcText") { Definition = "Colour of the body of the hydrant.Note: Consult local fire regulations for statutory colours that may be required for hydrant bodies in particular circumstances."},
			new SingleValuePropertyType("CapColour", "IfcText") { Definition = "Colour of the caps of the hydrant.Note: Consult local fire regulations for statutory colours that may be required for hydrant caps in particular circumstances."},
			new SingleValuePropertyType("DischargeFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric rate of fluid discharge."},
			new SingleValuePropertyType("FlowClass", "IfcLabel") { Definition = "Alphanumeric indication of the flow class of a hydrant (may be used in connection with or instead of the FlowRate property)."},
			new SingleValuePropertyType("HoseConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The size of connections to which a hose may be connected (other than that to be linked to a pumping unit)."},
			new SingleValuePropertyType("NumberOfHoseConnections", "IfcCountMeasure") { Definition = "The number of hose connections on the hydrant (excluding the pumper connection)."},
			new SingleValuePropertyType("PressureRating", "IfcPressureMeasure") { Definition = "Pressure rating of the object.\n\nMaximum pressure that the hydrant is manufactured to withstand."},
			new SingleValuePropertyType("PumperConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The size of a connection to which a fire hose may be connected that is then linked to a pumping unit."},
			new SingleValuePropertyType("WaterIsPotable", "IfcBoolean") { Definition = "Indication of whether the water flow from the hydrant is potable (set TRUE) or non potable (set FALSE)."} },
				new [] { "IfcFireSuppressionTerminal", "IfcFireSuppressionTerminalType" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeHoseReel", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("HoseNozzleType", new [] { "FOG", "STRAIGHTSTREAM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of nozzle (in terms of spray pattern) fitted to the end of the hose from which the type required may be set."},
			new EnumerationPropertyType("HoseReelMountingType", new [] { "CABINET_RECESSED", "CABINET_SEMIRECESSED", "SURFACE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of hose reel mounting from which the type required may be set."},
			new EnumerationPropertyType("HoseReelType", new [] { "RACK", "REEL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of hose arrangement from which the type required may be set."},
			new SingleValuePropertyType("ClassificationAuthority", "IfcLabel") { Definition = "The name of the authority that applies the classification of service to the hose reel (e.g. NFPA/FEMA)."},
			new SingleValuePropertyType("ClassOfService", "IfcLabel") { Definition = "A classification of usage of the hose reel that may be applied."},
			new SingleValuePropertyType("HoseDiameter", "IfcPositiveLengthMeasure") { Definition = "Notional diameter (bore) of the hose."},
			new SingleValuePropertyType("HoseLength", "IfcPositiveLengthMeasure") { Definition = "Notional length of the hose fitted to the hose reel when fully extended."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection.\nNote that all inlet connections are assumed to be the same size.\n\nConnection to the hose reel."} },
				new [] { "IfcFireSuppressionTerminal", "IfcFireSuppressionTerminalType" });
		yield return new PropertySetInfo("Pset_FireSuppressionTerminalTypeSprinkler", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Activation", new [] { "BULB", "FUSIBLESOLDER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined methods of sprinkler activation from which that required may be set."},
			new EnumerationPropertyType("BulbLiquidColour", new [] { "BLUE", "GREEN", "MAUVE", "ORANGE", "RED", "YELLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The colour of the liquid in the bulb for a bulb activated sprinkler. Note that the liquid colour varies according to the activation temperature requirement of the sprinkler head. Note also that this property does not need to be asserted for quick response activated sprinklers."},
			new EnumerationPropertyType("Response", new [] { "QUICK", "STANDARD", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined methods of sprinkler response from which that required may be set."},
			new EnumerationPropertyType("SprinklerType", new [] { "CEILING", "CONCEALED", "CUTOFF", "PENDANT", "RECESSEDPENDANT", "SIDEWALL", "UPRIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of sprinkler  from which the type required may be set."},
			new SingleValuePropertyType("ActivationTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature at which the object is designed to activate."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The connection size of the object.\n\nInlet connection to sprinkler."},
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The area that is covered by the object.\n\nIndicates the area that the sprinkler is designed to protect."},
			new SingleValuePropertyType("DischargeCoefficient", "IfcReal") { Definition = "The coefficient of flow at the sprinkler."},
			new SingleValuePropertyType("DischargeFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric rate of fluid discharge."},
			new SingleValuePropertyType("HasDeflector", "IfcBoolean") { Definition = "Indication of whether the sprinkler has a deflector (baffle) fitted to diffuse the discharge on activation (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("MaximumWorkingPressure", "IfcPressureMeasure") { Definition = "Maximum pressure that the object is manufactured to withstand."},
			new SingleValuePropertyType("ResidualFlowingPressure", "IfcPressureMeasure") { Definition = "The residual flowing pressure in the pipeline at which the discharge flow rate is determined."} },
				new [] { "IfcFireSuppressionTerminal", "IfcFireSuppressionTerminalType" });
		yield return new PropertySetInfo("Pset_FittingBend", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BendAngle", "IfcPositivePlaneAngleMeasure") { Definition = "The change of direction of flow."},
			new SingleValuePropertyType("BendRadius", "IfcPositiveLengthMeasure") { Definition = "The radius of bending if circular arc or zero if sharp bend."} },
				new [] { "IfcCableCarrierFitting", "IfcCableCarrierFittingType", "IfcDuctFitting", "IfcDuctFittingType", "IfcPipeFitting", "IfcPipeFittingType" });
		yield return new PropertySetInfo("Pset_FittingJunction", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("JunctionType", new [] { "CROSS", "TEE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of junction. TEE=3 ports, CROSS = 4 ports."},
			new SingleValuePropertyType("JunctionLeftAngle", "IfcPositivePlaneAngleMeasure") { Definition = "The change of direction of flow for the left junction."},
			new SingleValuePropertyType("JunctionLeftRadius", "IfcPositiveLengthMeasure") { Definition = "The radius of bending for the left junction."},
			new SingleValuePropertyType("JunctionRightAngle", "IfcPositivePlaneAngleMeasure") { Definition = "The change of direction of flow for the right junction where 0 indicates straight segment."},
			new SingleValuePropertyType("JunctionRightRadius", "IfcPositiveLengthMeasure") { Definition = "The radius of bending for the right junction where 0 indicates sharp bend."} },
				new [] { "IfcCableCarrierFitting", "IfcCableCarrierFittingType", "IfcCableFitting", "IfcCableFittingType", "IfcDuctFitting", "IfcDuctFittingType", "IfcPipeFitting", "IfcPipeFittingType" });
		yield return new PropertySetInfo("Pset_FittingTransition", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EccentricityInY", "IfcLengthMeasure") { Definition = "Distance in y direction between the two points (or vertex points) engaged in the point connection."},
			new SingleValuePropertyType("EccentricityInZ", "IfcLengthMeasure") { Definition = "Distance in z direction between the two points (or vertex points) engaged in the point connection."},
			new SingleValuePropertyType("NominalLength", "IfcPositiveLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcCableCarrierFitting", "IfcCableCarrierFittingType", "IfcCableFitting", "IfcCableFittingType", "IfcDuctFitting", "IfcDuctFittingType", "IfcPipeFitting", "IfcPipeFittingType" });
		yield return new PropertySetInfo("Pset_FlowInstrumentPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Quality", "IfcTimeSeries") { Definition = "Indicates the quality of measurement or failure condition, which may be further qualified by the Status.  True: measured values are considered reliable; False: measured values are considered not reliable (i.e. a fault has been detected); Unknown: reliability of values is uncertain."},
			new SingleValuePropertyType("Status", "IfcTimeSeries") { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure).\n\nIndicates an error code or identifier, whose meaning is specific to the particular automation system.  Example values include: 'ConfigurationError', 'NotConnected', 'DeviceFailure', 'SensorFailure', 'LastKnown, 'CommunicationsFailure', 'OutOfService'."},
			new SingleValuePropertyType("Value", "IfcTimeSeries") { Definition = "The expected range and default value.\n\nIndicates measured values over time which may be recorded continuously or only when changed beyond a particular deadband."} },
				new [] { "IfcFlowInstrument" });
		yield return new PropertySetInfo("Pset_FlowInstrumentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcFlowInstrument", "IfcFlowInstrumentType" });
		yield return new PropertySetInfo("Pset_FlowInstrumentTypePressureGauge", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PressureGaugeType", new [] { "DIAL", "DIGITAL", "MANOMETER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the means by which pressure is displayed."},
			new SingleValuePropertyType("DisplaySize", "IfcPositiveLengthMeasure") { Definition = "The physical size of the display.\n\nFor a dial pressure gauge it will be the diameter of the dial."} },
				new [] { "IfcFlowInstrument", "IfcFlowInstrumentType" });
		yield return new PropertySetInfo("Pset_FlowInstrumentTypeThermometer", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ThermometerType", new [] { "DIAL", "DIGITAL", "STEM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the means by which temperature is displayed."},
			new SingleValuePropertyType("DisplaySize", "IfcPositiveLengthMeasure") { Definition = "The physical size of the display.\n\nIn the case of a stem thermometer, this will be the length of the stem. For a dial thermometer, it will be the diameter of the dial."} },
				new [] { "IfcFlowInstrument", "IfcFlowInstrumentType" });
		yield return new PropertySetInfo("Pset_FlowMeterOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FlowMeterOurpose", new [] { "MASTER", "SUBMASTER", "SUBMETER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the purpose of the flow meter occurrence."} },
				new [] { "IfcFlowMeter" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ReadOutType", new [] { "DIAL", "DIGITAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indication of the form that readout from the meter takes. In the case of a dial read out, this may comprise multiple dials that give a cumulative reading and/or a mechanical odometer."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("RemoteReading", "IfcBoolean") { Definition = "Indicates whether the meter has a connection for remote reading through connection of a communication device (set TRUE) or not (set FALSE)."} },
				new [] { "IfcFlowMeter", "IfcFlowMeterType" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeEnergyMeter", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaximumCurrent", "IfcElectricCurrentMeasure") { Definition = "The maximum allowed current that a device is certified to handle."},
			new SingleValuePropertyType("MultipleTarriff", "IfcBoolean") { Definition = "Indicates whether meter has built-in support for multiple tarriffs (variable energy cost rates)."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured."} },
				new [] { "IfcFlowMeter", "IfcFlowMeterType" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeGasMeter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("GasType", new [] { "COMMERCIALBUTANE", "COMMERCIALPROPANE", "LIQUEFIEDPETROLEUMGAS", "NATURALGAS", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of gas that may be specified."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The connection size of the object.\n\nInlet and outlet pipe connections to the meter."},
			new SingleValuePropertyType("MaximumFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum rate of flow which the meter is expected to pass."},
			new SingleValuePropertyType("MaximumPressureLoss", "IfcPressureMeasure") { Definition = "Pressure loss expected across the meter under conditions of maximum flow."} },
				new [] { "IfcFlowMeter", "IfcFlowMeterType" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeOilMeter", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The connection size of the object.\n\nInlet and outlet pipe connections to the meter."},
			new SingleValuePropertyType("MaximumFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum rate of flow which the meter is expected to pass."} },
				new [] { "IfcFlowMeter", "IfcFlowMeterType" });
		yield return new PropertySetInfo("Pset_FlowMeterTypeWaterMeter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BackflowPreventerType", new [] { "ANTISIPHONVALVE", "ATMOSPHERICVACUUMBREAKER", "DOUBLECHECKBACKFLOWPREVENTER", "NONE", "PRESSUREVACUUMBREAKER", "REDUCEDPRESSUREBACKFLOWPREVENTER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the type of backflow preventer installed to prevent the backflow of contaminated or polluted water from an irrigation/reticulation system to a potable water supply."},
			new EnumerationPropertyType("Type", new [] { "COMPOUND", "INFERENTIAL", "PISTON", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the allowed values for selection of the flow meter operation type."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The connection size of the object.\n\nInlet and outlet pipe connections to the meter."},
			new SingleValuePropertyType("MaximumFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Maximum rate of flow which the meter is expected to pass."},
			new SingleValuePropertyType("MaximumPressureLoss", "IfcPressureMeasure") { Definition = "Pressure loss expected across the meter under conditions of maximum flow."} },
				new [] { "IfcFlowMeter", "IfcFlowMeterType" });
		yield return new PropertySetInfo("Pset_FootingCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcFooting", "IfcFootingType" });
		yield return new PropertySetInfo("Pset_FootingTypePadFooting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsReinforced", "IfcBoolean") { Definition = "Indicates whether the foundation is reinforced (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("LoadBearingCapacity", "IfcPlanarForceMeasure") { Definition = "Maximum load bearing capacity of the floor structure throughtout the storey as designed."} },
				new [] { "IfcFooting", "IfcFootingType" });
		yield return new PropertySetInfo("Pset_FurnitureTypeChair", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HighestSeatingHeight", "IfcPositiveLengthMeasure") { Definition = "The value of seating height of high level if the chair height is adjustable."},
			new SingleValuePropertyType("LowestSeatingHeight", "IfcPositiveLengthMeasure") { Definition = "The value of seating height of low level if the chair height is adjustable."},
			new SingleValuePropertyType("SeatingHeight", "IfcPositiveLengthMeasure") { Definition = "The value of seating height if the chair height is not adjustable."} },
				new [] { "IfcFurniture", "IfcFurnitureType" });
		yield return new PropertySetInfo("Pset_FurnitureTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("IsBuiltIn", "IfcBoolean") { Definition = "Indicates whether the furniture type is intended to be 'built in' i.e. physically attached to a building or facility (= TRUE) or not i.e. Loose and movable (= FALSE)."},
			new SingleValuePropertyType("MainColour", "IfcLabel") { Definition = "The main colour of the furniture of this type."},
			new SingleValuePropertyType("NominalDepth", "IfcNonNegativeLengthMeasure") { Definition = "Nominal Depth of the object"},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence.\n\nThe nominal height of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("Style", "IfcLabel") { Definition = "Description of the furniture style."} },
				new [] { "IfcFurniture", "IfcFurnitureType" });
		yield return new PropertySetInfo("Pset_FurnitureTypeDesk", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WorksurfaceArea", "IfcAreaMeasure") { Definition = "The value of the work surface area of the desk."} },
				new [] { "IfcFurniture", "IfcFurnitureType" });
		yield return new PropertySetInfo("Pset_FurnitureTypeFileCabinet", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WithLock", "IfcBoolean") { Definition = "Indicates whether the file cabinet is lockable (= TRUE) or not (= FALSE)."} },
				new [] { "IfcFurniture", "IfcFurnitureType" });
		yield return new PropertySetInfo("Pset_FurnitureTypeTable", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfChairs", "IfcCountMeasure") { Definition = "Maximum number of chairs that can fit with the table for normal use."},
			new SingleValuePropertyType("WorksurfaceArea", "IfcAreaMeasure") { Definition = "The value of the work surface area of the desk."} },
				new [] { "IfcFurniture", "IfcFurnitureType" });
		yield return new PropertySetInfo("Pset_GateHeadCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("StructuralType", "IfcLabel") { Definition = "Structural type of the object"} },
				new [] { "IfcMarinePart" });
		yield return new PropertySetInfo("Pset_GeotechnicalAssemblyCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BoreHolePurpose", new [] { "DEPOSIT", "ENVIRONMENTAL", "FEEDSTOCK", "GEOLOGICAL", "GEOTHERMAL", "HYDROCARBON", "HYDROGEOLOGICAL", "MINERAL", "PEDOLOGICAL", "SITE_INVESTIGATION", "STORAGE", "NOTKNOWN", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Purpose for which the borehole, section or volumetric model was created. (EU Inspire, boreholeML)"},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Limitations", "IfcText") { Definition = "Limitations on usage."},
			new SingleValuePropertyType("Methodology", "IfcText") { Definition = "Methodology used to prepare the contents of the geotechnical assembly."} },
				new [] { "IfcGeotechnicalAssembly" });
		yield return new PropertySetInfo("Pset_GeotechnicalStratumCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("IsTopographic", "IfcLogical") { Definition = "Is the stratum ever topmost and so a visible topographic feature"},
			new SingleValuePropertyType("PiezometricHead", "IfcPositiveLengthMeasure") { Definition = "Pressure head of water content."},
			new SingleValuePropertyType("PiezometricPressure", "IfcPressureMeasure") { Definition = "Pressure of water content."},
			new SingleValuePropertyType("StratumColour", "IfcLabel") { Definition = "Stratum colour"},
			new SingleValuePropertyType("Texture", "IfcLabel") { Definition = "Stratum texture"} },
				new [] { "IfcGeotechnicalStratum" });
		yield return new PropertySetInfo("Pset_HeatExchangerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FlowArrangement", new [] { "COUNTERFLOW", "CROSSFLOW", "MULTIPASS", "PARALLELFLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the basic flow arrangements for the heat exchanger or cooler tower:COUNTERFLOW: Air and water flow enter in different directions.\nCROSSFLOW: Air and water flow are perpendicular.\nPARALLELFLOW: Air and water flow enter in same directions.\nMULTIPASS: Multipass flow heat exchanger arrangement. \nOTHER: Other type of heat exchanger flow arrangement not defined above."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcHeatExchanger", "IfcHeatExchangerType" });
		yield return new PropertySetInfo("Pset_HeatExchangerTypePlate", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfPlates", "IfcCountMeasure") { Definition = "Number of plates used by the plate heat exchanger."} },
				new [] { "IfcHeatExchanger", "IfcHeatExchangerType" });
		yield return new PropertySetInfo("Pset_HumidifierPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AtmosphericPressure", "IfcTimeSeries") { Definition = "Ambient atmospheric pressure."},
			new SingleValuePropertyType("SaturationEfficiency", "IfcTimeSeries") { Definition = "Saturation efficiency: Ratio of leaving air absolute humidity to the maximum absolute humidity."} },
				new [] { "IfcHumidifier" });
		yield return new PropertySetInfo("Pset_HumidifierTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("HumidifierApplication", new [] { "FIXED", "PORTABLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Humidifier application.Fixed: Humidifier installed in a ducted flow distribution system.\nPortable: Humidifier is not installed in a ducted flow distribution system."},
			new EnumerationPropertyType("InternalControl", new [] { "MODULATING", "NONE", "ONOFF", "STEPPED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Internal modulation control."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("NominalAirFlowRate", "IfcVolumetricFlowRateMeasure") { Definition = "Nominal air flow rate.\n\nNominal rate of air flow into which water vapor is added."},
			new SingleValuePropertyType("NominalMoistureGain", "IfcMassFlowRateMeasure") { Definition = "Nominal rate of water vapor added into the airstream."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("WaterRequirement", "IfcVolumetricFlowRateMeasure") { Definition = "Make-up water requirement."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"},
			new TableValuePropertyType("AirPressureDropCurve", "IfcVolumetricFlowRateMeasure", "IfcPressureMeasure") { Definition = "Air pressure drop as a function of air flow rate.\n\nAir pressure drop versus air-flow rate."},
			new TableValuePropertyType("SaturationEfficiencyCurve", "IfcVolumetricFlowRateMeasure", "IfcNormalisedRatioMeasure") { Definition = "Saturation efficiency as a function of the air flow rate."} },
				new [] { "IfcHumidifier", "IfcHumidifierType" });
		yield return new PropertySetInfo("Pset_ImpactProtectionDeviceOccurrenceBumper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BumperOrientation", new [] { "OPPOSITETOSTATIONDIRECTION", "STATIONDIRECTION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Direction in which the bumper is aligned, e.g. same direction as increasing stationing values or opposite."},
			new SingleValuePropertyType("BrakingLength", "IfcPositiveLengthMeasure") { Definition = "Length of the braking distance as a design parameter of the bumper occurrence."},
			new SingleValuePropertyType("IsRemovableBumper", "IfcBoolean") { Definition = "Indicates if the bumper is removable or not."} },
				new [] { "IfcImpactProtectionDevice" });
		yield return new PropertySetInfo("Pset_ImpactProtectionDeviceTypeBumper", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EnergyAbsorption", "IfcEnergyMeasure") { Definition = "Energy absorption capacity of the element."},
			new SingleValuePropertyType("IsAbsorbingEnergy", "IfcBoolean") { Definition = "Indicates whether the bumper absorbs energy or not."},
			new SingleValuePropertyType("MaximumLoadRetention", "IfcForceMeasure") { Definition = "Maximum possible impact load retention."} },
				new [] { "IfcImpactProtectionDevice", "IfcImpactProtectionDeviceType" });
		yield return new PropertySetInfo("Pset_InstallationOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AcceptanceDate", "IfcDate") { Definition = "Date on which the element is accepted by the manager or administrator."},
			new SingleValuePropertyType("InstallationDate", "IfcDate") { Definition = "Date on which the element is installed."},
			new SingleValuePropertyType("PutIntoOperationDate", "IfcDate") { Definition = "Date on which the element is put into operation."} },
				new [] { "IfcAsset", "IfcElement", "IfcSystem" });
		yield return new PropertySetInfo("Pset_InterceptorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the object."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the object."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection.\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the y-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("VentilatingPipeSize", "IfcPositiveLengthMeasure") { Definition = "Size of the ventilating pipe(s)."} },
				new [] { "IfcInterceptor", "IfcInterceptorType" });
		yield return new PropertySetInfo("Pset_IpNetworkEquipmentPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfPackets", "IfcTimeSeries") { Definition = "Indicates the number of packets of the IP network equipment."} },
				new [] { "IfcCommunicationsAppliance" });
		yield return new PropertySetInfo("Pset_JettyCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PierSectionType", new [] { "CLOSED", "OPEN" } ) { Definition = "Whether the structure presents a solid/closed barrier to the passage of water or is open."},
			new SingleValuePropertyType("BentSpacing", "IfcLengthMeasure") { Definition = "Bent (upright) spacing"},
			new SingleValuePropertyType("Elevation", "IfcLengthMeasure") { Definition = "Elevation of the entity"},
			new SingleValuePropertyType("StructuralType", "IfcLabel") { Definition = "Structural type of the object"} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_JettyDesignCriteria", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EquipmentLoading", "IfcForceMeasure") { Definition = "Loading from equipment"},
			new SingleValuePropertyType("ExtremeHighWaterLevel", "IfcLengthMeasure") { Definition = "Extreme high water level"},
			new SingleValuePropertyType("ExtremeLowWaterLevel", "IfcLengthMeasure") { Definition = "Extreme low water level"},
			new SingleValuePropertyType("FlowLoading", "IfcForceMeasure") { Definition = "Flow loading force"},
			new SingleValuePropertyType("HighWaterLevel", "IfcLengthMeasure") { Definition = "High water level"},
			new SingleValuePropertyType("LowWaterLevel", "IfcLengthMeasure") { Definition = "Low water level"},
			new SingleValuePropertyType("ShipLoading", "IfcForceMeasure") { Definition = "Ship loading force"},
			new SingleValuePropertyType("UniformlyDistributedLoad", "IfcForceMeasure") { Definition = "Uniformly Distributed Load"},
			new SingleValuePropertyType("WaveLoading", "IfcForceMeasure") { Definition = "Wave loading force"} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_JunctionBoxTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("JunctionBoxMountingType", new [] { "CUT_IN", "FACENAIL", "SIDENAIL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Method of mounting to be adopted for the type of junction box."},
			new EnumerationPropertyType("PlacingType", new [] { "CEILING", "FLOOR", "WALL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Location at which the type of junction box can be located."},
			new EnumerationPropertyType("ShapeType", new [] { "RECTANGULAR", "ROUND", "SLOT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Shape of the junction box."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ClearDepth", "IfcPositiveLengthMeasure") { Definition = "The clear depth.\n\nIt indicates the unobstructed depth available for cable inclusion within the junction box."},
			new SingleValuePropertyType("IP_Code", "IfcLabel") { Definition = "IP Code, the International Protection Marking, IEC 60529), classifies and rates the degree of protection provided against intrusion."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("NominalHeight", "IfcNonNegativeLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NumberOfGangs", "IfcCountMeasure") { Definition = "Number of gangs in the object.\n\nNumber of slots available for switches/outlets (most commonly 1, 2, 3, or 4)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcJunctionBox", "IfcJunctionBoxType" });
		yield return new PropertySetInfo("Pset_JunctionBoxTypeData", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DataConnectionType", new [] { "COPPER", "FIBER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the data connection type of the junction box e.g. copper pair, fiber or others."} },
				new [] { "IfcJunctionBox", "IfcJunctionBoxType" });
		yield return new PropertySetInfo("Pset_KerbCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CombinedKerbGutter", "IfcBoolean") { Definition = "Indicating  the use of a combined kerb and gutter."},
			new SingleValuePropertyType("Mountable", "IfcBoolean") { Definition = "Specifies whether the kerb can be readily climbed by a vehicle or not."},
			new SingleValuePropertyType("Upstand", "IfcNonNegativeLengthMeasure") { Definition = "The height difference between the two separated surfaces."} },
				new [] { "IfcKerb", "IfcKerbType" });
		yield return new PropertySetInfo("Pset_KerbStone", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalHeight", "IfcNonNegativeLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("StoneFinishes", "IfcLabel") { Definition = "Eg. 'Polished', 'Bush Hammered', 'Split', 'Sawn', 'Flamed'"},
			new SingleValuePropertyType("TypeDesignation", "IfcLabel") { Definition = "Type designator for the element. The content depends on local standards. Eg. 'Bull nose', 'Half batter', 'Dropper', 'Chamfer' etc"} },
				new [] { "IfcKerb", "IfcKerbType" });
		yield return new PropertySetInfo("Pset_LampTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LampBallastType", new [] { "CONVENTIONAL", "ELECTRONIC", "LOWLOSS", "RESISTOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of ballast used to stabilise gas discharge by limiting the current during operation and to deliver the necessary striking voltage for starting. Ballasts are needed to operate Discharge Lamps such as Fluorescent, Compact Fluorescent, High-pressure Mercury, Metal Halide and High-pressure Sodium Lamps.\nMagnetic ballasts are chokes which limit the current passing through a lamp connected in series on the principle of self-induction. The resultant current and power are decisive for the efficient operation of the lamp. A specially designed ballast is required for every type of lamp to comply with lamp rating in terms of Luminous Flux, Color Appearance and service life. The two types of magnetic ballasts for fluorescent lamps are KVG Conventional   (EC-A series) and VVG Low-loss ballasts (EC-B series). Low-loss ballasts have a higher efficiency, which means reduced ballast losses and a lower thermal load. Electronic ballasts are used to run fluorescent lamps at high frequencies (approx. 35 - 40 kHz)."},
			new EnumerationPropertyType("LampCompensationType", new [] { "CAPACITIVE", "INDUCTIVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the form of compensation used for power factor correction and radio suppression."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ColourAppearance", "IfcLabel") { Definition = "In both the DIN and CIE standards, artificial light sources are classified in terms of their colour appearance. To the human eye they all appear to be white; the difference can only be detected by direct comparison. Visual performance is not directly affected by differences in colour appearance."},
			new SingleValuePropertyType("ColourRenderingIndex", "IfcInteger") { Definition = "The CRI indicates how well a light source renders eight standard colours compared to perfect reference lamp with the same colour temperature. The CRI scale ranges from 1 to 100, with 100 representing perfect rendering properties."},
			new SingleValuePropertyType("ColourTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The colour temperature of any source of radiation is defined as the temperature (in Kelvin) of a black-body or Planckian radiator whose radiation has the same chromaticity as the source of radiation. Often the values are only approximate colour temperatures as the black-body radiator cannot emit radiation of every chromaticity value. The colour temperatures of the commonest artificial light sources range from less than 3000K (warm white) to 4000K (intermediate) and over 5000K (daylight)."},
			new SingleValuePropertyType("ContributedLuminousFlux", "IfcLuminousFluxMeasure") { Definition = "Luminous flux is a photometric measure of radiant flux, i.e. the volume of light emitted from a light source. Luminous flux is measured either for the interior as a whole or for a part of the interior (partial luminous flux for a solid angle). All other photometric parameters are derivatives of luminous flux. Luminous flux is measured in lumens (lm). The luminous flux is given as a nominal value for each lamp."},
			new SingleValuePropertyType("LampMaintenanceFactor", "IfcReal") { Definition = "Non recoverable losses of luminous flux of a lamp due to lamp depreciation; i.e. the decreasing of light output of a luminaire due to aging and dirt."},
			new SingleValuePropertyType("LightEmitterNominalPower", "IfcPowerMeasure") { Definition = "Light emitter nominal power."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new TableValuePropertyType("Spectrum", "IfcNumericMeasure", "IfcNumericMeasure") { Definition = "The spectrum of radiation describes its composition with regard to wavelength. Light, for example, as the portion of electromagnetic radiation that is visible to the human eye, is radiation with wavelengths in the range of approx. 380 to 780 nm (1 nm = 10 m). The corresponding range of colours varies from violet to indigo, blue, green, yellow, orange, and red. These colours form a continuous spectrum, in which the various spectral sectors merge into each other."} },
				new [] { "IfcLamp", "IfcLampType" });
		yield return new PropertySetInfo("Pset_LandRegistration", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsPermanentID", "IfcBoolean") { Definition = "Indicates whether the identity assigned to the object is permanent (= TRUE) or temporary (=FALSE)."},
			new SingleValuePropertyType("LandID", "IfcIdentifier") { Definition = "Identification number assigned by the statutory registration authority to a land parcel."},
			new SingleValuePropertyType("LandTitleID", "IfcIdentifier") { Definition = "Identification number assigned by the statutory registration authority to the title to a land parcel."} },
				new [] { "IfcSite" });
		yield return new PropertySetInfo("Pset_LightFixtureTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LightFixtureMountingType", new [] { "CABLESPANNED", "FREESTANDING", "POLE_SIDE", "POLE_TOP", "RECESSED", "SURFACE", "SUSPENDED", "TRACKMOUNTED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of mounting for light fixtures from which that required may be selected."},
			new EnumerationPropertyType("LightFixturePlacingType", new [] { "CEILING", "FLOOR", "FURNITURE", "POLE", "WALL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of placing specification for light fixtures from which that required may be selected."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("MaintenanceFactor", "IfcReal") { Definition = "The arithmetical allowance made for depreciation of lamps and reflective equipment from their initial values due to dirt, fumes, or age."},
			new SingleValuePropertyType("MaximumPlenumSensibleLoad", "IfcPowerMeasure") { Definition = "Maximum or Peak sensible thermal load contributed to return air plenum by the light fixture."},
			new SingleValuePropertyType("MaximumSpaceSensibleLoad", "IfcPowerMeasure") { Definition = "Maximum or Peak sensible thermal load contributed to the conditioned space by the light fixture."},
			new SingleValuePropertyType("NumberOfSources", "IfcCountMeasure") { Definition = "Number of sources ."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SensibleLoadToRadiant", "IfcPositiveRatioMeasure") { Definition = "Percent of sensible thermal load to radiant heat."},
			new SingleValuePropertyType("TotalWattage", "IfcPowerMeasure") { Definition = "Wattage on whole lightfitting device with all sources intact."} },
				new [] { "IfcLightFixture", "IfcLightFixtureType" });
		yield return new PropertySetInfo("Pset_LightFixtureTypeSecurityLighting", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Addressablility", new [] { "IMPLEMENTED", "NOTIMPLEMENTED", "UPGRADEABLETO", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of addressability."},
			new EnumerationPropertyType("BackupSupplySystem", new [] { "CENTRALBATTERY", "LOCALBATTERY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of backup supply system."},
			new EnumerationPropertyType("PictogramEscapeDirection", new [] { "DOWNARROW", "LEFTARROW", "RIGHTARROW", "UPARROW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The direction of escape pictogram."},
			new EnumerationPropertyType("SecurityLightingType", new [] { "BLUEILLUMINATION", "EMERGENCYEXITLIGHT", "SAFETYLIGHT", "WARNINGLIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of security lighting."},
			new EnumerationPropertyType("SelfTestFunction", new [] { "CENTRAL", "LOCAL", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of self test function."},
			new SingleValuePropertyType("FixtureHeight", "IfcPositiveLengthMeasure") { Definition = "The height of the fixture, such as the text height of an exit sign."} },
				new [] { "IfcLightFixture", "IfcLightFixtureType" });
		yield return new PropertySetInfo("Pset_LinearReferencingMethod", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LRMType", new [] { "LRM_ABSOLUTE", "LRM_INTERPOLATIVE", "LRM_RELATIVE", "LRM_USERDEFINED" } ) { Definition = "Gives the type of this Linear Referencing Method.NOTE Definition according to ISO 19148:2021, LRMType.\nNOTE Since the definition in ISO 19148:2021, LRMType is stereotyped as a CodeList it is open for user defined extensions. In this Pset this is handled by adding the enumeration constant LRM_USERDEFINED and the additional property UserDefinedLRMType"},
			new SingleValuePropertyType("LRMConstraint", "IfcLabel") { Definition = "Allows for the specification of constraints imposed by this Linear Referencing Method. For example, a Reference Post Linear Referencing Method may specify that referents be of type “reference marker”.NOTE definition according to ISO 19148:2021"},
			new SingleValuePropertyType("LRMName", "IfcLabel") { Definition = "Gives the name of this Linear Referencing Method, such as “kilometre-point”.NOTE Definition according to ISO 19148:2021.\nNOTE Names of commonly used Linear Referencing Methods are included in ISO 19148, Annex C, along with recognized name aliases."},
			new SingleValuePropertyType("LRMUnit", "IfcLabel") { Definition = "Specifies the units of measure used by this Linear Referencing Method for measures along the linear element being measured.NOTE Definition according to ISO 19148:2021."},
			new SingleValuePropertyType("UserDefinedLRMType", "IfcLabel") { Definition = "Gives the user defined type of this Linear Referencing Method when property LRMType is LRM_USERDEFINED."} },
				new [] { "IfcAlignment", "IfcReferent" });
		yield return new PropertySetInfo("Pset_MaintenanceStrategy", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AccidentResponse", new [] { "EMERGENCYINSPECTION", "EMERGENCYPROCEDURE", "REACTIVE", "URGENTINSPECTION", "URGENTPROCEDURE" } ) { Definition = "Accident response chosen for the asset"},
			new EnumerationPropertyType("AssetCriticality", new [] { "HIGH", "LOW", "MODERATE", "VERYHIGH", "VERYLOW" } ) { Definition = "Rating of the asset's criticality to the operation of the facility"},
			new EnumerationPropertyType("AssetFrailty", new [] { "HIGH", "LOW", "MODERATE", "VERYHIGH", "VERYLOW" } ) { Definition = "Rating of the asset's frailty to breakage or deterioration"},
			new EnumerationPropertyType("AssetPriority", new [] { "HIGH", "LOW", "MODERATE", "VERYHIGH", "VERYLOW" } ) { Definition = "Combined criticality and frailty rating indicating the operational and maintenance priority of the asset"},
			new EnumerationPropertyType("MonitoringType", new [] { "FEEDBACK", "INSPECTION", "IOT", "PPM", "SENSORS" } ) { Definition = "Monitoring strategy chosen for the asset"} },
				new [] { "IfcAsset", "IfcElement", "IfcElementType", "IfcSystem" });
		yield return new PropertySetInfo("Pset_MaintenanceTriggerCondition", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConditionDisposalLevel", new [] { "HIGH", "LOW", "MODERATE", "VERYHIGH", "VERYLOW" } ) { Definition = "Condition that will trigger a disposal process"},
			new EnumerationPropertyType("ConditionMaintenanceLevel", new [] { "HIGH", "LOW", "MODERATE", "VERYHIGH", "VERYLOW" } ) { Definition = "Condition that will trigger maintenance"},
			new EnumerationPropertyType("ConditionReplacementLevel", new [] { "HIGH", "LOW", "MODERATE", "VERYHIGH", "VERYLOW" } ) { Definition = "Condition that will trigger a replacement process"},
			new EnumerationPropertyType("ConditionTargetPerformance", new [] { "HIGH", "LOW", "MODERATE", "VERYHIGH", "VERYLOW" } ) { Definition = "Target condition of the asset"} },
				new [] { "IfcAsset", "IfcElement", "IfcElementType", "IfcSystem" });
		yield return new PropertySetInfo("Pset_MaintenanceTriggerDuration", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DurationDisposalLevel", "IfcDuration") { Definition = "Duration interval at which disposal is performed"},
			new SingleValuePropertyType("DurationMaintenanceLevel", "IfcDuration") { Definition = "Duration interval at which maintenance is performed"},
			new SingleValuePropertyType("DurationReplacementLevel", "IfcDuration") { Definition = "Duration interval at which replacement is performed"},
			new SingleValuePropertyType("DurationTargetPerformance", "IfcDuration") { Definition = "Target time to failure of the asset"} },
				new [] { "IfcAsset", "IfcElement", "IfcElementType", "IfcSystem" });
		yield return new PropertySetInfo("Pset_MaintenanceTriggerPerformance", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DisposalLevel", "IfcReal") { Definition = "Performance level at which disposal takes place"},
			new SingleValuePropertyType("PerformanceMaintenanceLevel", "IfcReal") { Definition = "Performance level at which maintenance takes place"},
			new SingleValuePropertyType("ReplacementLevel", "IfcReal") { Definition = "Performance level at which replacement takes place"},
			new SingleValuePropertyType("TargetPerformance", "IfcReal") { Definition = "Target capacity or performance of the asset. Units of the performance value are specified through the propertyValue units attribute."} },
				new [] { "IfcAsset", "IfcElement", "IfcElementType", "IfcSystem" });
		yield return new PropertySetInfo("Pset_ManufacturerOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssemblyPlace", new [] { "FACTORY", "OFFSITE", "SITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining where the assembly is intended to take place, either in a factory, other offsite location or on the building site."},
			new SingleValuePropertyType("AcquisitionDate", "IfcDate") { Definition = "The date that the manufactured item was purchased."},
			new SingleValuePropertyType("BarCode", "IfcIdentifier") { Definition = "The identity of the bar code given to an occurrence of the product."},
			new SingleValuePropertyType("BatchReference", "IfcIdentifier") { Definition = "The identity of the batch reference from which an occurrence of a product is taken."},
			new SingleValuePropertyType("ManufacturingDate", "IfcDate") { Definition = "Date on which the element was manufactured."},
			new SingleValuePropertyType("SerialNumber", "IfcIdentifier") { Definition = "The manufacturer's serial number assigned to an occurrence of a product."} },
				new [] { "IfcElement" });
		yield return new PropertySetInfo("Pset_ManufacturerTypeInformation", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssemblyPlace", new [] { "FACTORY", "OFFSITE", "SITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining where the assembly is intended to take place, either in a factory, other offsite location or on the building site."},
			new SingleValuePropertyType("ArticleNumber", "IfcIdentifier") { Definition = "Article number or reference that is be applied to a configured product according to a standard scheme for article number definition as defined by the manufacturer. It is often used as the purchasing number."},
			new SingleValuePropertyType("GlobalTradeItemNumber", "IfcIdentifier") { Definition = "The Global Trade Item Number (GTIN) is an identifier for trade items developed by GS1 (www.gs1.org)."},
			new SingleValuePropertyType("Manufacturer", "IfcLabel") { Definition = "The organization that manufactured and/or assembled the item."},
			new SingleValuePropertyType("ModelLabel", "IfcLabel") { Definition = "The descriptive model name of the product model (or product line) as assigned by the manufacturer of the manufactured item."},
			new SingleValuePropertyType("ModelReference", "IfcLabel") { Definition = "The model number or designator of the product model (or product line) as assigned by the manufacturer of the manufactured item."},
			new SingleValuePropertyType("OperationalDocument", "IfcExternalReference") { Definition = "Manufacturer's operational document"},
			new SingleValuePropertyType("PerformanceCertificate", "IfcDocumentReference") { Definition = "Manufacturer's performance certificate"},
			new SingleValuePropertyType("ProductionYear", "IfcLabel") { Definition = "The year of production of the manufactured item."},
			new SingleValuePropertyType("SafetyDocument", "IfcDocumentReference") { Definition = "Manufacturer's safety document"} },
				new [] { "IfcElement", "IfcElementType" });
		yield return new PropertySetInfo("Pset_MarineFacilityTransportation", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BerthCargoWeight", "IfcMassMeasure") { Definition = "Total cargo weight of berths within the facility"},
			new SingleValuePropertyType("BerthGrade", "IfcLabel") { Definition = "Berth grade"},
			new SingleValuePropertyType("Berths", "IfcCountMeasure") { Definition = "Number of standard berths within the facility"} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_MarinePartChamberCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EffectiveChamberSize", "IfcVolumeMeasure") { Definition = "Volumetric measure defining the effective chamber size for operational and design activities."},
			new SingleValuePropertyType("StructuralType", "IfcLabel") { Definition = "Structural type of the object"} },
				new [] { "IfcMarinePart" });
		yield return new PropertySetInfo("Pset_MarineVehicleCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AboveDeckProjectedWindEnd", "IfcAreaMeasure") { Definition = "End on projected windage area above the main deck"},
			new SingleValuePropertyType("AboveDeckProjectedWindSide", "IfcAreaMeasure") { Definition = "Side on projected windage area above the main deck"},
			new SingleValuePropertyType("CargoDeadWeight", "IfcMassMeasure") { Definition = "Weight of (bulk) cargo carried"},
			new SingleValuePropertyType("Displacement", "IfcMassMeasure") { Definition = "Weight of water displaced by the vessel"},
			new SingleValuePropertyType("LaneMeters", "IfcLengthMeasure") { Definition = "Length of lanes accommodating vehicles on roll-on, roll-off vessels"},
			new SingleValuePropertyType("LengthBetweenPerpendiculars", "IfcPositiveLengthMeasure") { Definition = "Length of vessel from rudder shaft to crossing point of the bow and the loaded waterline."},
			new SingleValuePropertyType("VesselDepth", "IfcLengthMeasure") { Definition = "Depth of the vessel from the main deck to the keel."},
			new SingleValuePropertyType("VesselDraft", "IfcLengthMeasure") { Definition = "Depth of vessel from the waterline to the keel (LightShip, Ballasted, Maximum)"} },
				new [] { "IfcVehicle", "IfcVehicleType" });
		yield return new PropertySetInfo("Pset_MarineVehicleDesignCriteria", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AllowableHullPressure", "IfcPressureMeasure") { Definition = "Allowable contact pressure between fender and hull"},
			new SingleValuePropertyType("SoftnessCoefficient", "IfcPositiveRatioMeasure") { Definition = "Vessel flexibility factor - proportion of impact energy absorbed by the hull."} },
				new [] { "IfcVehicle", "IfcVehicleType" });
		yield return new PropertySetInfo("Pset_MarkerGeneral", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MarkerType", new [] { "APPROACHING_MARKER", "CABLE_POST_MARKER", "COMMUNICATION_MODE_CONVERSION_MARKER", "EMU_STOP_POSITION_SIGN", "FOUR_ASPECT_CAB_SIGNAL_CONNECT_SIGN", "FOUR_ASPECT_CAB_SIGNAL_DISCONNECT_SIGN", "LEVEL_CONVERSION_SIGN", "LOCOMOTIVE_STOP_POSITION_SIGN", "RELAY_STATION_SIGN", "RESTRICTION_PLACE_SIGN", "RESTRICTION_PROTECTION_AREA_TERMINAL_SIGN", "RESTRICTION_SIGN", "SECTION_SIGNAL_MARKER", "STOP_SIGN", "TRACK_CIRCUIT_TUNING_ZONE_SIGN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of marker (sign) e.g. stop signal, restriction signal, track circuit tuning zone sign or others specified in PEnum_MarkerType."},
			new SingleValuePropertyType("ApproachSpeed", "IfcLinearVelocityMeasure") { Definition = "The design speed of trains approaching the signal if different from the line speed."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence.\n\nThe nominal height of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("Symbol", "IfcExternalReference") { Definition = "Content which is shown on the sign, e.g. text, number, arrow or icon. The string can also be a pointer to a symbol catalog."} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_MarkingLinesCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DashedLine", "IfcBoolean") { Definition = "State if the line is dashed or continuous"},
			new SingleValuePropertyType("DashedLinePattern", "IfcLabel") { Definition = "Indicates the pattern for dashed line types e.g. '3+9'"},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcSurfaceFeature" });
		yield return new PropertySetInfo("Pset_MaterialCombustion", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CO2Content", "IfcPositiveRatioMeasure") { Definition = "Carbon dioxide (CO2) content of the products of combustion. This is measured in weight of CO2 per unit weight and is therefore unitless."},
			new SingleValuePropertyType("COContent", "IfcPositiveRatioMeasure") { Definition = "Carbon monoxide (CO) content of the products of combustion. This is measured in weight of CO per unit weight and is therefore unitless."},
			new SingleValuePropertyType("N20Content", "IfcPositiveRatioMeasure") { Definition = "Nitrous oxide (N2O) content of the products of combustion. This is measured in weight of N2O per unit weight and is therefore unitless."},
			new SingleValuePropertyType("SpecificHeatCapacity", "IfcSpecificHeatCapacityMeasure") { Definition = "Defines the specific heat capacity of a material.\n\nSpecific heat of the products of combustion: heat energy absorbed per temperature unit."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MassDensity", "IfcMassDensityMeasure") { Definition = "Material mass density."},
			new SingleValuePropertyType("MolecularWeight", "IfcMolecularWeightMeasure") { Definition = "Molecular weight of material (typically gas)."},
			new SingleValuePropertyType("Porosity", "IfcNormalisedRatioMeasure") { Definition = "The void fraction of the total volume occupied by material (Vbr - Vnet)/Vbr."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialConcrete", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AdmixturesDescription", "IfcText") { Definition = "Description of the admixtures added to the concrete mix."},
			new SingleValuePropertyType("CompressiveStrength", "IfcPressureMeasure") { Definition = "The compressive strength of the object or material."},
			new SingleValuePropertyType("MaxAggregateSize", "IfcPositiveLengthMeasure") { Definition = "The maximum aggregate size of the concrete."},
			new SingleValuePropertyType("ProtectivePoreRatio", "IfcNormalisedRatioMeasure") { Definition = "The protective pore ratio indicating the frost-resistance of the concrete."},
			new SingleValuePropertyType("WaterImpermeability", "IfcText") { Definition = "Description of the water impermeability denoting the water repelling properties."},
			new SingleValuePropertyType("Workability", "IfcText") { Definition = "Description of the workability of the fresh concrete defined according to local standards."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialEnergy", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GasPressure", "IfcPressureMeasure") { Definition = "Fill pressure (e.g. for between-pane gas fills): the pressure exerted by a mass of gas confined in a constant volume."},
			new SingleValuePropertyType("MoistureCapacityThermalGradient", "IfcReal") { Definition = "Thermal gradient coefficient for moisture capacity. Based on water vapor density."},
			new SingleValuePropertyType("SolarRefractionIndex", "IfcReal") { Definition = "Index of refraction (solar) defines the \"bending\" of the solar ray when it passes from one medium into another."},
			new SingleValuePropertyType("SpecificHeatTemperatureDerivative", "IfcReal") { Definition = "Specific heat temperature derivative."},
			new SingleValuePropertyType("ThermalConductivityTemperatureDerivative", "IfcReal") { Definition = "Thermal conductivity temperature derivative."},
			new SingleValuePropertyType("ViscosityTemperatureDerivative", "IfcReal") { Definition = "Viscosity temperature derivative."},
			new SingleValuePropertyType("VisibleRefractionIndex", "IfcReal") { Definition = "Index of refraction (visible) defines the \"bending\" of the sola! r ray in the visible spectrum when it passes from one medium into another."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialFuel", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CarbonContent", "IfcPositiveRatioMeasure") { Definition = "The carbon content in the fuel. This is measured in weight of carbon per unit weight of fuel and is therefore unitless."},
			new SingleValuePropertyType("CombustionTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Combustion temperature.\n\nCombustion temperature of the material when air is at 298 K and 100 kPa."},
			new SingleValuePropertyType("HigherHeatingValue", "IfcHeatingValueMeasure") { Definition = "Higher Heating Value is defined as the amount of energy released (MJ/kg) when a fuel is burned completely, and H2O is in liquid form in the combustion products."},
			new SingleValuePropertyType("LowerHeatingValue", "IfcHeatingValueMeasure") { Definition = "Lower Heating Value is defined as the amount of energy released (MJ/kg) when a fuel is burned completely, and H2O is in vapor form in the combustion products."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialHygroscopic", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsothermalMoistureCapacity", "IfcIsothermalMoistureCapacityMeasure") { Definition = "Based on water vapor density."},
			new SingleValuePropertyType("LowerVaporResistanceFactor", "IfcPositiveRatioMeasure") { Definition = "The vapor permeability relationship of air/material (typically value > 1), measured in low relative humidity (typically in 0/50 % RH)."},
			new SingleValuePropertyType("MoistureDiffusivity", "IfcMoistureDiffusivityMeasure") { Definition = "Moisture diffusivity is a transport property that is frequently used in the hygrothermal analysis of building envelope components."},
			new SingleValuePropertyType("UpperVaporResistanceFactor", "IfcPositiveRatioMeasure") { Definition = "The vapor permeability relationship of air/material (typically value > 1), measured in high relative humidity (typically in 95/50 % RH)."},
			new SingleValuePropertyType("VaporPermeability", "IfcVaporPermeabilityMeasure") { Definition = "The rate of water vapor transmission per unit area per unit of vapor pressure differential under test conditions."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialMechanical", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DynamicViscosity", "IfcDynamicViscosityMeasure") { Definition = "A measure of the viscous resistance of the material."},
			new SingleValuePropertyType("PoissonRatio", "IfcPositiveRatioMeasure") { Definition = "A measure of the lateral deformations in the elastic range."},
			new SingleValuePropertyType("ShearModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the shear modulus of elasticity of the material."},
			new SingleValuePropertyType("ThermalExpansionCoefficient", "IfcThermalExpansionCoefficientMeasure") { Definition = "Quantity characterizing the variation with thermodynamic temperature T of the distance l between two points of a body, under given conditions (IEC 113-04-27). The ratio is defined per Kelvin."},
			new SingleValuePropertyType("YoungModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the Young's modulus of elasticity of the material."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialOptical", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SolarReflectanceBack", "IfcNormalisedRatioMeasure") { Definition = "Reflectance at normal incidence (solar): back side. Defines the fraction of the solar ray that is reflected and not transmitted when the ray passes from one medium into another, at the \"back\" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics."},
			new SingleValuePropertyType("SolarReflectanceFront", "IfcNormalisedRatioMeasure") { Definition = "Reflectance at normal incidence (solar): front side. Defines the fraction of the solar ray that is reflected and not transmitted when the ray passes from one medium into another, at the \"front\" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics."},
			new SingleValuePropertyType("SolarTransmittance", "IfcNormalisedRatioMeasure") { Definition = "The ratio of incident solar radiation that directly passes through a system (also named τe). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("ThermalIrEmissivityBack", "IfcNormalisedRatioMeasure") { Definition = "Thermal IR emissivity: back side. Defines the fraction of thermal energy emitted per unit area to \"blackbody\" at the same temperature, through the \"back\" side of the material."},
			new SingleValuePropertyType("ThermalIrEmissivityFront", "IfcNormalisedRatioMeasure") { Definition = "Thermal IR emissivity: front side. Defines the fraction of thermal energy emitted per unit area to \"blackbody\" at the same temperature, through the \"front\" side of the material."},
			new SingleValuePropertyType("ThermalIrTransmittance", "IfcNormalisedRatioMeasure") { Definition = "Thermal IR transmittance at normal incidence. Defines the fraction of thermal energy that passes through per unit area, perpendicular to the surface."},
			new SingleValuePropertyType("VisibleReflectanceBack", "IfcNormalisedRatioMeasure") { Definition = "Reflectance at normal incidence (visible): back side. Defines the fraction of the solar ray in the visible spectrum that is reflected and not transmitted when the ray passes from one medium into another, at the \"back\" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics."},
			new SingleValuePropertyType("VisibleReflectanceFront", "IfcNormalisedRatioMeasure") { Definition = "Reflectance at normal incidence (visible): front side. Defines the fraction of the solar ray in the visible spectrum that is reflected and not transmitted when the ray passes from one medium into another, at the \"front\" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics."},
			new SingleValuePropertyType("VisibleTransmittance", "IfcNormalisedRatioMeasure") { Definition = "Transmittance at normal incidence (visible). Defines the fraction of the visible spectrum of solar radiation that passes through per unit area, perpendicular to the surface."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialSteel", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HardeningModule", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the hardening module of the material (slope of stress versus strain curve after yield range)."},
			new SingleValuePropertyType("PlasticStrain", "IfcPositiveRatioMeasure") { Definition = "A measure of the permanent displacement, as in slip or twinning, which remains after the stress has been removed. Currently applied to a strain of 0.2% proportional stress of the material."},
			new SingleValuePropertyType("ProportionalStress", "IfcPressureMeasure") { Definition = "A measure of the proportional stress of the material. It describes the stress before the first plastic deformation occurs and is commonly measured at a deformation of 0.01%."},
			new SingleValuePropertyType("StructuralGrade", "IfcLabel") { Definition = "Classification label to define mechanical properties according to structural grades defined in published standards; designated by numbers, letters, or a combination of both."},
			new SingleValuePropertyType("UltimateStrain", "IfcPositiveRatioMeasure") { Definition = "A measure of the (engineering) strain at the state of ultimate stress of the material."},
			new SingleValuePropertyType("UltimateStress", "IfcPressureMeasure") { Definition = "A measure of the ultimate stress of the material."},
			new SingleValuePropertyType("YieldStress", "IfcPressureMeasure") { Definition = "A measure of the yield stress (or characteristic 0.2 percent proof stress) of the material."},
			new TableValuePropertyType("Relaxations", "IfcNormalisedRatioMeasure", "IfcNormalisedRatioMeasure") { Definition = "Measures of decrease in stress over long time intervals resulting from plastic flow. Different relaxation values for different initial stress levels for a material may be given. It describes the time dependent relative relaxation value for a given initial stress level at constant strain.\nRelating values are the \"RelaxationValue\". Related values are the \"InitialStress\""} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialThermal", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BoilingPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The boiling point of the material (fluid)."},
			new SingleValuePropertyType("FreezingPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The freezing point of the material (fluid)."},
			new SingleValuePropertyType("SpecificHeatCapacity", "IfcSpecificHeatCapacityMeasure") { Definition = "Defines the specific heat capacity of a material.\n\nDefines the specific heat of the material: heat energy absorbed per temperature unit."},
			new SingleValuePropertyType("ThermalConductivity", "IfcThermalConductivityMeasure") { Definition = "The thermal conductivity of the object.\n\nThe rate at which thermal energy is transmitted through the material."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialWater", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AcidityConcentration", "IfcIonConcentrationMeasure") { Definition = "Maximum CaCO3 equivalent that would neutralize the acid."},
			new SingleValuePropertyType("AlkalinityConcentration", "IfcIonConcentrationMeasure") { Definition = "Maximum alkalinity concentration (maximum sum of concentrations of each of the negative ions substances measured as CaCO3)."},
			new SingleValuePropertyType("DissolvedSolidsContent", "IfcNormalisedRatioMeasure") { Definition = "Fraction of the dissolved solids to the total amount of water. This is measured in weight of dissolved solids per weight of water and is therefore unitless."},
			new SingleValuePropertyType("Hardness", "IfcIonConcentrationMeasure") { Definition = "Water hardness as positive, multivalent ion concentration in the water (usually concentrations of calcium and magnesium ions in terms of calcium carbonate)."},
			new SingleValuePropertyType("ImpuritiesContent", "IfcNormalisedRatioMeasure") { Definition = "Fraction of impurities such as dust to the total amount of water. This is measured in weight of impurities per weight of water and is therefore unitless."},
			new SingleValuePropertyType("IsPotable", "IfcBoolean") { Definition = "If TRUE, then the water is considered potable."},
			new SingleValuePropertyType("PHLevel", "IfcPHMeasure") { Definition = "Maximum water PH in a range from 0-14."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialWood", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AppearanceGrade", "IfcLabel") { Definition = "Grade with respect to visual quality."},
			new SingleValuePropertyType("DimensionalChangeCoefficient", "IfcPositiveRatioMeasure") { Definition = "Weighted dimensional change coefficient, relative to 1% change in moisture content."},
			new SingleValuePropertyType("Layers", "IfcInteger") { Definition = "Number of layers."},
			new SingleValuePropertyType("Layup", "IfcLabel") { Definition = "Configuration of the lamination."},
			new SingleValuePropertyType("MoistureContent", "IfcPositiveRatioMeasure") { Definition = "Total weight of moisture relative to oven-dried weight of the wood."},
			new SingleValuePropertyType("Plies", "IfcInteger") { Definition = "Number of plies."},
			new SingleValuePropertyType("Species", "IfcLabel") { Definition = "Wood species of a solid wood or laminated wood product."},
			new SingleValuePropertyType("StrengthGrade", "IfcLabel") { Definition = "Grade with respect to mechanical strength and stiffness."},
			new SingleValuePropertyType("ThicknessSwelling", "IfcPositiveRatioMeasure") { Definition = "Swelling ratio relative to board depth."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MaterialWoodBasedStructure", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ApplicableStructuralDesignMethod", "IfcLabel") { Definition = "Determines whether mechanical material properties are applicable to 'ASD' = allowable stress design (working stress design), 'LSD' = limit state design, or 'LRFD' = load and resistance factor design."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MechanicalBeamInPlane", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BendingStrength", "IfcPressureMeasure") { Definition = "Bending strength.\n\nDefining values: α; defined values: bending strength."},
			new SingleValuePropertyType("CompStrength", "IfcPressureMeasure") { Definition = "Compressive strength, α=0°."},
			new SingleValuePropertyType("CompStrengthPerp", "IfcPressureMeasure") { Definition = "Compressive strength, α=90°."},
			new SingleValuePropertyType("RaisedCompStrengthPerp", "IfcPressureMeasure") { Definition = "Alternative value for compressive strength, α=90°, which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\\IfcProperty.Description."},
			new SingleValuePropertyType("ReferenceDepth", "IfcPositiveLengthMeasure") { Definition = "Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment."},
			new SingleValuePropertyType("ShearModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the shear modulus of elasticity of the material."},
			new SingleValuePropertyType("ShearModulusMin", "IfcModulusOfElasticityMeasure") { Definition = "Shear modulus, minimal value."},
			new SingleValuePropertyType("ShearStrength", "IfcPressureMeasure") { Definition = "Defining values: α; defined values: shear strength."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("TensileStrengthPerp", "IfcPressureMeasure") { Definition = "Tensile strength, α=90°."},
			new SingleValuePropertyType("TorsionalStrength", "IfcPressureMeasure") { Definition = "Shear strength in torsion."},
			new SingleValuePropertyType("YoungModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the Young's modulus of elasticity of the material."},
			new SingleValuePropertyType("YoungModulusMin", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus, minimal value, α=0°."},
			new SingleValuePropertyType("YoungModulusPerp", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus, mean value, α=90°."},
			new SingleValuePropertyType("YoungModulusPerpMin", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus, minimal value, α=90°."},
			new TableValuePropertyType("InstabilityFactors", "IfcPositiveRatioMeasure", "IfcPositiveRatioMeasure") { Definition = "Defining values: slenderness ratios; defined values: either factors or divisors of the strength, depending on the design method (if <1: factors, if >1: divisors)."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MechanicalBeamInPlaneNegative", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BendingStrength", "IfcPressureMeasure") { Definition = "Bending strength.\n\nDefining values: α; defined values: bending strength."},
			new SingleValuePropertyType("CompStrength", "IfcPressureMeasure") { Definition = "Compressive strength, α=0°."},
			new SingleValuePropertyType("CompStrengthPerp", "IfcPressureMeasure") { Definition = "Compressive strength, α=90°."},
			new SingleValuePropertyType("RaisedCompStrengthPerp", "IfcPressureMeasure") { Definition = "Alternative value for compressive strength, α=90°, which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\\IfcProperty.Description."},
			new SingleValuePropertyType("ReferenceDepth", "IfcPositiveLengthMeasure") { Definition = "Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment."},
			new SingleValuePropertyType("ShearModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the shear modulus of elasticity of the material."},
			new SingleValuePropertyType("ShearModulusMin", "IfcModulusOfElasticityMeasure") { Definition = "Shear modulus, minimal value."},
			new SingleValuePropertyType("ShearStrength", "IfcPressureMeasure") { Definition = "Defining values: α; defined values: shear strength."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("TensileStrengthPerp", "IfcPressureMeasure") { Definition = "Tensile strength, α=90°."},
			new SingleValuePropertyType("TorsionalStrength", "IfcPressureMeasure") { Definition = "Shear strength in torsion."},
			new SingleValuePropertyType("YoungModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the Young's modulus of elasticity of the material."},
			new SingleValuePropertyType("YoungModulusMin", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus, minimal value, α=0°."},
			new SingleValuePropertyType("YoungModulusPerp", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus, mean value, α=90°."},
			new SingleValuePropertyType("YoungModulusPerpMin", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus, minimal value, α=90°."},
			new TableValuePropertyType("InstabilityFactors", "IfcPositiveRatioMeasure", "IfcPositiveRatioMeasure") { Definition = "Defining values: slenderness ratios; defined values: either factors or divisors of the strength, depending on the design method (if <1: factors, if >1: divisors)."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MechanicalBeamOutOfPlane", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BendingStrength", "IfcPressureMeasure") { Definition = "Bending strength.\n\nDefining values: α; defined values: bending strength."},
			new SingleValuePropertyType("CompStrength", "IfcPressureMeasure") { Definition = "Compressive strength, α=0°."},
			new SingleValuePropertyType("CompStrengthPerp", "IfcPressureMeasure") { Definition = "Compressive strength, α=90°."},
			new SingleValuePropertyType("RaisedCompStrengthPerp", "IfcPressureMeasure") { Definition = "Alternative value for compressive strength, α=90°, which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\\IfcProperty.Description."},
			new SingleValuePropertyType("ReferenceDepth", "IfcPositiveLengthMeasure") { Definition = "Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment."},
			new SingleValuePropertyType("ShearModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the shear modulus of elasticity of the material."},
			new SingleValuePropertyType("ShearModulusMin", "IfcModulusOfElasticityMeasure") { Definition = "Shear modulus, minimal value."},
			new SingleValuePropertyType("ShearStrength", "IfcPressureMeasure") { Definition = "Defining values: α; defined values: shear strength."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("TensileStrengthPerp", "IfcPressureMeasure") { Definition = "Tensile strength, α=90°."},
			new SingleValuePropertyType("TorsionalStrength", "IfcPressureMeasure") { Definition = "Shear strength in torsion."},
			new SingleValuePropertyType("YoungModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the Young's modulus of elasticity of the material."},
			new SingleValuePropertyType("YoungModulusMin", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus, minimal value, α=0°."},
			new SingleValuePropertyType("YoungModulusPerp", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus, mean value, α=90°."},
			new SingleValuePropertyType("YoungModulusPerpMin", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus, minimal value, α=90°."},
			new TableValuePropertyType("InstabilityFactors", "IfcPositiveRatioMeasure", "IfcPositiveRatioMeasure") { Definition = "Defining values: slenderness ratios; defined values: either factors or divisors of the strength, depending on the design method (if <1: factors, if >1: divisors)."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MechanicalFastenerAnchorBolt", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AnchorBoltDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the anchor bolt bar(s)."},
			new SingleValuePropertyType("AnchorBoltLength", "IfcPositiveLengthMeasure") { Definition = "The length of the anchor bolt."},
			new SingleValuePropertyType("AnchorBoltProtrusionLength", "IfcPositiveLengthMeasure") { Definition = "The length of the protruding part of the anchor bolt."},
			new SingleValuePropertyType("AnchorBoltThreadLength", "IfcPositiveLengthMeasure") { Definition = "The length of the threaded part of the anchor bolt."} },
				new [] { "IfcMechanicalFastener", "IfcMechanicalFastenerType" });
		yield return new PropertySetInfo("Pset_MechanicalFastenerBolt", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HeadShape", "IfcLabel") { Definition = "Shape of the bolt's head, e.g. 'Hexagon', 'Countersunk', 'Cheese'"},
			new SingleValuePropertyType("KeyShape", "IfcLabel") { Definition = "If applicable, shape of the head's slot, e.g. 'Slot', 'Allen'"},
			new SingleValuePropertyType("NutsCount", "IfcCountMeasure") { Definition = "Count of nuts to be mounted on one bolt"},
			new SingleValuePropertyType("NutShape", "IfcLabel") { Definition = "Shape of the nut, e.g. 'Hexagon', 'Cap', 'Castle', 'Wing'"},
			new SingleValuePropertyType("ThreadDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal diameter of the thread, if different from the bolt's overall nominal diameter"},
			new SingleValuePropertyType("ThreadLength", "IfcPositiveLengthMeasure") { Definition = "Nominal length of the thread"},
			new SingleValuePropertyType("WashersCount", "IfcCountMeasure") { Definition = "Count of washers to be mounted on one bolt"},
			new SingleValuePropertyType("WasherShape", "IfcLabel") { Definition = "Shape of the washers, e.g. 'Standard', 'Square'"} },
				new [] { "IfcMechanicalFastener", "IfcMechanicalFastenerType" });
		yield return new PropertySetInfo("Pset_MechanicalFastenerOCSFitting", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("OCSFasteningType", new [] { "EARTHING_FITTING", "JOINT_FITTING", "REGISTRATION_FITTING", "SUPPORT_FITTING", "SUSPENSION_FITTING", "TENSIONING_FITTING", "TERMINATION_FITTING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of the overhead contact system (OCS) mechanical fastener."},
			new SingleValuePropertyType("ManufacturingTechnology", "IfcLabel") { Definition = "The method / technology used to produce the equipment."} },
				new [] { "IfcMechanicalFastener", "IfcMechanicalFastenerType" });
		yield return new PropertySetInfo("Pset_MechanicalFastenerTypeRailFastening", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TrackFasteningElasticityType", new [] { "ELASTIC_FASTENING", "RIGID_FASTENING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Track fastening elasticity type."},
			new SingleValuePropertyType("IsReducedResistanceFastening", "IfcBoolean") { Definition = "Indicates whether the rail fastening is a reduced resistance fastening (YES) or not (NO)."},
			new SingleValuePropertyType("TechnicalStandard", "IfcExternalReference") { Definition = "The technical standard which the element should comply with."} },
				new [] { "IfcMechanicalFastener", "IfcMechanicalFastenerType" });
		yield return new PropertySetInfo("Pset_MechanicalFastenerTypeRailJoint", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AssemblyPlace", new [] { "FACTORY", "OFFSITE", "SITE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining where the assembly is intended to take place, either in a factory, other offsite location or on the building site."},
			new EnumerationPropertyType("SleeperArrangement", new [] { "BETWEENSLEEPERS", "TWINSLEEPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Define the rail joint sleeper method of assembly (\"twin sleeper\" type or \"between sleepers\" type)."},
			new SingleValuePropertyType("IsCWRJoint", "IfcBoolean") { Definition = "Indicates if the rail joint is associated to a continuous welded rail."},
			new SingleValuePropertyType("IsJointControlEquipment", "IfcBoolean") { Definition = "Indicates whether security equipment is checking the mechanical functionality of the rail joint."},
			new SingleValuePropertyType("IsJointInsulated", "IfcBoolean") { Definition = "Indicates if the rail joint is insulated."},
			new SingleValuePropertyType("IsLiftingBracketConnection", "IfcBoolean") { Definition = "Indicates if the connection is between two different heights (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("NumberOfScrews", "IfcCountMeasure") { Definition = "Number of screws/bolts/connections."},
			new SingleValuePropertyType("RailGap", "IfcPositiveLengthMeasure") { Definition = "The gap between the rail profiles."} },
				new [] { "IfcMechanicalFastener", "IfcMechanicalFastenerType" });
		yield return new PropertySetInfo("Pset_MechanicalPanelInPlane", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("RaisedCompressiveStrength", "IfcPressureMeasure") { Definition = "Alternative value for compressive strength which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\\IfcProperty.Description."},
			new SingleValuePropertyType("ReferenceDepth", "IfcPositiveLengthMeasure") { Definition = "Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment."},
			new SingleValuePropertyType("ShearModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the shear modulus of elasticity of the material."},
			new SingleValuePropertyType("YoungModulusCompression", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus in compression."},
			new TableValuePropertyType("BearingStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Defining values: α; defined values: bearing strength of bolt holes, i.e. intrados pressure."},
			new TableValuePropertyType("BendingStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Bending strength.\n\nDefining values: α; defined values: bending strength."},
			new TableValuePropertyType("CompressiveStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "The compressive strength of the object or material.\n\nDefining values: α; defined values: compressive strength."},
			new TableValuePropertyType("ShearStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Defining values: α; defined values: shear strength."},
			new TableValuePropertyType("TensileStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new TableValuePropertyType("YoungModulusBending", "IfcPositivePlaneAngleMeasure", "IfcModulusOfElasticityMeasure") { Definition = "Defining values: α; defined values: elastic modulus in bending."},
			new TableValuePropertyType("YoungModulusTension", "IfcPositivePlaneAngleMeasure", "IfcModulusOfElasticityMeasure") { Definition = "Defining values: α; defined values: elastic modulus in tension."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MechanicalPanelOutOfPlane", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("RaisedCompressiveStrength", "IfcPressureMeasure") { Definition = "Alternative value for compressive strength which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\\IfcProperty.Description."},
			new SingleValuePropertyType("ReferenceDepth", "IfcPositiveLengthMeasure") { Definition = "Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment."},
			new SingleValuePropertyType("ShearModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the shear modulus of elasticity of the material."},
			new SingleValuePropertyType("YoungModulusCompression", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus in compression."},
			new TableValuePropertyType("BearingStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Defining values: α; defined values: bearing strength of bolt holes, i.e. intrados pressure."},
			new TableValuePropertyType("BendingStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Bending strength.\n\nDefining values: α; defined values: bending strength."},
			new TableValuePropertyType("CompressiveStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "The compressive strength of the object or material.\n\nDefining values: α; defined values: compressive strength."},
			new TableValuePropertyType("ShearStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Defining values: α; defined values: shear strength."},
			new TableValuePropertyType("TensileStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new TableValuePropertyType("YoungModulusBending", "IfcPositivePlaneAngleMeasure", "IfcModulusOfElasticityMeasure") { Definition = "Defining values: α; defined values: elastic modulus in bending."},
			new TableValuePropertyType("YoungModulusTension", "IfcPositivePlaneAngleMeasure", "IfcModulusOfElasticityMeasure") { Definition = "Defining values: α; defined values: elastic modulus in tension."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MechanicalPanelOutOfPlaneNegative", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("RaisedCompressiveStrength", "IfcPressureMeasure") { Definition = "Alternative value for compressive strength which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\\IfcProperty.Description."},
			new SingleValuePropertyType("ReferenceDepth", "IfcPositiveLengthMeasure") { Definition = "Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment."},
			new SingleValuePropertyType("ShearModulus", "IfcModulusOfElasticityMeasure") { Definition = "A measure of the shear modulus of elasticity of the material."},
			new SingleValuePropertyType("YoungModulusCompression", "IfcModulusOfElasticityMeasure") { Definition = "Elastic modulus in compression."},
			new TableValuePropertyType("BearingStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Defining values: α; defined values: bearing strength of bolt holes, i.e. intrados pressure."},
			new TableValuePropertyType("BendingStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Bending strength.\n\nDefining values: α; defined values: bending strength."},
			new TableValuePropertyType("CompressiveStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "The compressive strength of the object or material.\n\nDefining values: α; defined values: compressive strength."},
			new TableValuePropertyType("ShearStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Defining values: α; defined values: shear strength."},
			new TableValuePropertyType("TensileStrength", "IfcPositivePlaneAngleMeasure", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new TableValuePropertyType("YoungModulusBending", "IfcPositivePlaneAngleMeasure", "IfcModulusOfElasticityMeasure") { Definition = "Defining values: α; defined values: elastic modulus in bending."},
			new TableValuePropertyType("YoungModulusTension", "IfcPositivePlaneAngleMeasure", "IfcModulusOfElasticityMeasure") { Definition = "Defining values: α; defined values: elastic modulus in tension."} },
				new [] { "IfcMaterial" });
		yield return new PropertySetInfo("Pset_MedicalDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcMedicalDevice", "IfcMedicalDeviceType" });
		yield return new PropertySetInfo("Pset_MemberCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("Roll", "IfcPlaneAngleMeasure") { Definition = "Rotation against the longitudinal axis.\n\nRelative to the global Z direction for all members that are non-vertical in regard to the global coordinate system (Profile direction equals global Z is Roll = 0.)\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.\nNote: new property in IFC4."},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only."},
			new SingleValuePropertyType("Span", "IfcPositiveLengthMeasure") { Definition = "Clear span for this object.The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcMember", "IfcMemberType" });
		yield return new PropertySetInfo("Pset_MemberTypeAnchoringBar", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MechanicalStressType", new [] { "MECHANICAL_COMPRESSION", "MECHANICAL_TRACTION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates which type of stress is applied to the element."},
			new SingleValuePropertyType("HasLightningRod", "IfcBoolean") { Definition = "Indicates whether the element is equipped with a lightning rod (TRUE) or not (FALSE)."} },
				new [] { "IfcMember", "IfcMemberType" });
		yield return new PropertySetInfo("Pset_MemberTypeCatenaryStay", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CatenaryStayType", new [] { "DOUBLE_STAY", "SINGLE_STAY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of catenary stay used."},
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("NominalHeight", "IfcNonNegativeLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcMember", "IfcMemberType" });
		yield return new PropertySetInfo("Pset_MemberTypeOCSRigidSupport", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."},
			new SingleValuePropertyType("ContactWireStagger", "IfcPositiveLengthMeasure") { Definition = "Lateral displacement of the contact wire to opposite sides of the track centre at successive supports."} },
				new [] { "IfcMember", "IfcMemberType" });
		yield return new PropertySetInfo("Pset_MemberTypePost", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BendingStrength", "IfcPressureMeasure") { Definition = "Bending strength."},
			new SingleValuePropertyType("ConicityRatio", "IfcRatioMeasure") { Definition = "The ratio of the diameter of the cone bottom surface to the height of the pole."},
			new SingleValuePropertyType("LoadBearingCapacity", "IfcPlanarForceMeasure") { Definition = "Maximum load bearing capacity of the floor structure throughtout the storey as designed."},
			new SingleValuePropertyType("NominalHeight", "IfcNonNegativeLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("TorsionalStrength", "IfcPressureMeasure") { Definition = "Shear strength in torsion."},
			new SingleValuePropertyType("WindLoadRating", "IfcLabel") { Definition = "Wind load resistance rating for this object.\nIt is provided according to the national building code."} },
				new [] { "IfcMember", "IfcMemberType" });
		yield return new PropertySetInfo("Pset_MemberTypeTieBar", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsTemporaryInstallation", "IfcBoolean") { Definition = "Indicates whether the installation (in the construction stage) is permanent (TRUE) or temporary (FALSE)"} },
				new [] { "IfcMember", "IfcMemberType" });
		yield return new PropertySetInfo("Pset_MobileTelecommunicationsApplianceTypeAccessPoint", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BandWidth", "IfcFrequencyMeasure") { Definition = "Indicates the bandwidth for telecommunication of the device."},
			new SingleValuePropertyType("DataEncryptionType", "IfcLabel") { Definition = "Indicates the type of security protocols that can be used in the access point to protect the wireless network."},
			new SingleValuePropertyType("DataExchangeRate", "IfcIntegerCountRateMeasure") { Definition = "Indicates the data transfer rate of the access point in bit per second (bps)."},
			new SingleValuePropertyType("NumberOfAntennas", "IfcCountMeasure") { Definition = "Indicates the number of antennas integrated in the device."},
			new SingleValuePropertyType("UserCapacity", "IfcInteger") { Definition = "Indicates the user capacity of the device, defined as the maximum number of users that can be active at the same time."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcMobileTelecommunicationsAppliance", "IfcMobileTelecommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_MobileTelecommunicationsApplianceTypeBasebandUnit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaximumNumberOfRRUs", "IfcInteger") { Definition = "Indicates the maximum number of remote radio units (RRU) which can be connected to the baseband unit."},
			new SingleValuePropertyType("NumberOfCarriers", "IfcCountMeasure") { Definition = "Indicates how many carrier frequencies can be managed by the device."},
			new SingleValuePropertyType("NumberOfEmergencyTransceivers", "IfcCountMeasure") { Definition = "Indicates the number of emergency transceivers in the base band unit."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcMobileTelecommunicationsAppliance", "IfcMobileTelecommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_MobileTelecommunicationsApplianceTypeBaseTransceiverStation", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DownlinkRadioBand", "IfcFrequencyMeasure") { Definition = "Indicates the frequency range, delimited by a lower frequency and an upper frequency, allocated for downlink transmission."},
			new SingleValuePropertyType("ExchangeCapacity", "IfcInteger") { Definition = "Indicates how many simultaneous calls the base transceiver station can handle."},
			new SingleValuePropertyType("NumberOfAntennas", "IfcCountMeasure") { Definition = "Indicates the number of antennas integrated in the device."},
			new SingleValuePropertyType("NumberOfCarriers", "IfcCountMeasure") { Definition = "Indicates how many carrier frequencies can be managed by the device."},
			new SingleValuePropertyType("NumberOfEmergencyTransceivers", "IfcCountMeasure") { Definition = "Indicates the number of emergency transceivers in the base band unit."},
			new SingleValuePropertyType("UplinkRadioBand", "IfcFrequencyMeasure") { Definition = "Indicates the frequency range, delimited by a lower frequency and an upper frequency, allocated for uplink transmission."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."},
			new TableValuePropertyType("NumberOfTransceiversPerAntenna", "IfcLabel", "IfcInteger") { Definition = "Indicates the number of transceivers per antenna."},
			new TableValuePropertyType("RadiatedOutputPowerPerAntenna", "IfcLabel", "IfcPowerMeasure") { Definition = "Indicates the power of radio waves emitted by each antenna of the base transceiver station."} },
				new [] { "IfcMobileTelecommunicationsAppliance", "IfcMobileTelecommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_MobileTelecommunicationsApplianceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcMobileTelecommunicationsAppliance", "IfcMobileTelecommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_MobileTelecommunicationsApplianceTypeEUtranNodeB", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DownlinkRadioBand", "IfcFrequencyMeasure") { Definition = "Indicates the frequency range, delimited by a lower frequency and an upper frequency, allocated for downlink transmission."},
			new SingleValuePropertyType("NumberOfAntennas", "IfcCountMeasure") { Definition = "Indicates the number of antennas integrated in the device."},
			new SingleValuePropertyType("NumberOfCarriers", "IfcCountMeasure") { Definition = "Indicates how many carrier frequencies can be managed by the device."},
			new SingleValuePropertyType("UplinkRadioBand", "IfcFrequencyMeasure") { Definition = "Indicates the frequency range, delimited by a lower frequency and an upper frequency, allocated for uplink transmission."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."},
			new TableValuePropertyType("RadiatedOutputPowerPerAntenna", "IfcLabel", "IfcPowerMeasure") { Definition = "Indicates the power of radio waves emitted by each antenna of the base transceiver station."} },
				new [] { "IfcMobileTelecommunicationsAppliance", "IfcMobileTelecommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_MobileTelecommunicationsApplianceTypeMasterUnit", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MasterUnitType", new [] { "ANALOG", "DIGITAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the master unit type."},
			new EnumerationPropertyType("TransmissionType", new [] { "FIBER", "RADIO", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the data transmission type of the master unit."},
			new EnumerationPropertyType("TransmittedSignal", new [] { "CDMA", "GSM", "LTE", "TD_SCDMA", "WCDMA", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type or standard of signal transmitted by the master unit."},
			new SingleValuePropertyType("MaximumNumberOfConnectedRUs", "IfcInteger") { Definition = "Indicates the maximum number of remote units (RUs) which can be connected to the master unit."},
			new SingleValuePropertyType("TransmittedBandwidth", "IfcFrequencyMeasure") { Definition = "Indicates the transmitted bandwidth of the master unit."},
			new SingleValuePropertyType("TransmittedFrequency", "IfcFrequencyMeasure") { Definition = "Indicates the transmitted frequency used by the master unit."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcMobileTelecommunicationsAppliance", "IfcMobileTelecommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_MobileTelecommunicationsApplianceTypeMobileSwitchingCenter", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaximumNumberOfManagedBSCs", "IfcInteger") { Definition = "Indicates the maximum number of base station controller (BSC) that can be managed simultaneously by the mobile switching center (MSC)."},
			new SingleValuePropertyType("UserCapacity", "IfcInteger") { Definition = "Indicates the user capacity of the device, defined as the maximum number of users that can be active at the same time."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcMobileTelecommunicationsAppliance", "IfcMobileTelecommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_MobileTelecommunicationsApplianceTypeMSCServer", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("UserCapacity", "IfcInteger") { Definition = "Indicates the user capacity of the device, defined as the maximum number of users that can be active at the same time."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcMobileTelecommunicationsAppliance", "IfcMobileTelecommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_MobileTeleCommunicationsApplianceTypeRemoteRadioUnit", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RRUConnectionType", new [] { "CHAIN", "MIXED", "RING", "STAR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the connection type between the remote radio unit and baseband unit."},
			new SingleValuePropertyType("AntennaType", "IfcLabel") { Definition = "Indicates the type of antenna.\n\nIndicates the type of antenna integrated in the device."},
			new SingleValuePropertyType("DownlinkRadioBand", "IfcFrequencyMeasure") { Definition = "Indicates the frequency range, delimited by a lower frequency and an upper frequency, allocated for downlink transmission."},
			new SingleValuePropertyType("NumberOfCarriers", "IfcCountMeasure") { Definition = "Indicates how many carrier frequencies can be managed by the device."},
			new SingleValuePropertyType("UplinkRadioBand", "IfcFrequencyMeasure") { Definition = "Indicates the frequency range, delimited by a lower frequency and an upper frequency, allocated for uplink transmission."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."},
			new TableValuePropertyType("NumberOfTransceiversPerAntenna", "IfcLabel", "IfcInteger") { Definition = "Indicates the number of transceivers per antenna."},
			new TableValuePropertyType("RadiatedOutputPowerPerAntenna", "IfcLabel", "IfcPowerMeasure") { Definition = "Indicates the power of radio waves emitted by each antenna of the base transceiver station."} },
				new [] { "IfcMobileTelecommunicationsAppliance", "IfcMobileTelecommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_MobileTelecommunicationsApplianceTypeRemoteUnit", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RUConnectionType", new [] { "CHAIN", "MIXED", "RING", "STAR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicate the connection type between the remote unit and the master unit."},
			new SingleValuePropertyType("NumberOfAntennas", "IfcCountMeasure") { Definition = "Indicates the number of antennas integrated in the device."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcMobileTelecommunicationsAppliance", "IfcMobileTelecommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_MooringDeviceCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AnchorageType", new [] { "CASTIN", "DRILLEDANDFIXED", "THROUGHBOLTED" } ) { Definition = "Mooring device anchorage type"},
			new EnumerationPropertyType("DeviceType", new [] { "CLEAT", "DOUBLEBUTT", "HORN", "KIDNEY", "PILLAR", "RING", "SINGLEBUTT", "THEAD" } ) { Definition = "Mooring device type"},
			new SingleValuePropertyType("DeviceCapacity", "IfcForceMeasure") { Definition = "Mooring device force capacity"},
			new SingleValuePropertyType("MaximumLineCount", "IfcCountMeasure") { Definition = "Maximum number of lines that may be secured to the mooring device."},
			new SingleValuePropertyType("MaximumLineSlope", "IfcPlaneAngleMeasure") { Definition = "Maximum allowable line angle in degrees (negative if below horizontal from quay)"},
			new SingleValuePropertyType("MinumumLineSlope", "IfcPlaneAngleMeasure") { Definition = "Minimum allowable line angle in degrees (negative if below horizontal from quay)"} },
				new [] { "IfcMooringDevice", "IfcMooringDeviceType" });
		yield return new PropertySetInfo("Pset_MotorConnectionTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcMotorConnection", "IfcMotorConnectionType" });
		yield return new PropertySetInfo("Pset_OnSiteCastKerb", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalHeight", "IfcNonNegativeLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcKerb", "IfcKerbType" });
		yield return new PropertySetInfo("Pset_OnSiteTelecomControlUnit", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ControllerInterfaceType", new [] { "EARTHQUAKERELAYINTERFACE", "FOREIGNOBJECTRELAYINTERFACE", "RS_422", "RS_485", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of serial interface used by the device."},
			new SingleValuePropertyType("HasEarthquakeAlarm", "IfcBoolean") { Definition = "Indicates whether the on-site control unit includes earthquake alarm function."},
			new SingleValuePropertyType("HasEarthquakeCollection", "IfcBoolean") { Definition = "Indicates whether the on-site control unit collects earthquake information."},
			new SingleValuePropertyType("HasForeignObjectCollection", "IfcBoolean") { Definition = "Indicates whether the on-site control unit collects foreign object information."},
			new SingleValuePropertyType("HasOutputFunction", "IfcBoolean") { Definition = "Indicates whether the on-site control unit includes an output function."},
			new SingleValuePropertyType("HasRainCollection", "IfcBoolean") { Definition = "Indicates whether the on-site control unit collects information on rain."},
			new SingleValuePropertyType("HasSnowCollection", "IfcBoolean") { Definition = "Indicates whether the on-site control unit collects information on snow depth."},
			new SingleValuePropertyType("HasWindCollection", "IfcBoolean") { Definition = "Indicates whether the on-site control unit collects information on wind."} },
				new [] { "IfcController", "IfcControllerType" });
		yield return new PropertySetInfo("Pset_OpeningElementCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorption values).\n\nRequirement for the element filling the opening."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\n\nHere whether the space (in case of e.g., a corridor) is designed to serve as an exit space, e.g., for fire escape purposes."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification.\n\nRequirement for the element filling the opening."},
			new SingleValuePropertyType("Purpose", "IfcLabel") { Definition = "Indication of the purpose of this object\n\nE.g. 'ventilation' or 'access'"},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcOpeningElement" });
		yield return new PropertySetInfo("Pset_OpticalAdapter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FiberType", new [] { "BEND_INSENSITIVEFIBER", "CUTOFFSHIFTEDFIBER", "DISPERSIONSHIFTEDFIBER", "LOWWATERPEAKFIBER", "NON_ZERODISPERSIONSHIFTEDFIBER", "OM1", "OM2", "OM3", "OM4", "OM5", "STANDARDSINGLEMODEFIBER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of the single fiber."} },
				new [] { "IfcCableFitting", "IfcCableFittingType" });
		yield return new PropertySetInfo("Pset_OpticalPigtail", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FiberType", new [] { "BEND_INSENSITIVEFIBER", "CUTOFFSHIFTEDFIBER", "DISPERSIONSHIFTEDFIBER", "LOWWATERPEAKFIBER", "NON_ZERODISPERSIONSHIFTEDFIBER", "OM1", "OM2", "OM3", "OM4", "OM5", "STANDARDSINGLEMODEFIBER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of the single fiber."},
			new SingleValuePropertyType("ConnectorType", "IfcLabel") { Definition = "Indicates the type of connector."},
			new SingleValuePropertyType("JacketColour", "IfcLabel") { Definition = "Indicates the colour of the cable or fitting jacket."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_OpticalSplitter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("OpticalSplitterType", new [] { "MULTIMODE", "SINGLEMODE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of optical splitter, single mode or multi-mode."},
			new SingleValuePropertyType("NumberOfBranches", "IfcCountMeasure") { Definition = "Indicates the number of branches that can be supported by the optical splitter."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcJunctionBox", "IfcJunctionBoxType" });
		yield return new PropertySetInfo("Pset_OutletTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("IsPluggableOutlet", "IfcLogical") { Definition = "Indication of whether the outlet accepts a loose plug connection (= TRUE) or whether it is directly connected (= FALSE) or whether the form of connection has not yet been determined (= UNKNOWN)."},
			new SingleValuePropertyType("NumberOfSockets", "IfcCountMeasure") { Definition = "The number of sockets that may be connected. In case of inconsistency, sockets defined on ports take precedence."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcOutlet", "IfcOutletType" });
		yield return new PropertySetInfo("Pset_OutsideDesignCriteria", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BuildingThermalExposure", new [] { "HEAVY", "LIGHT", "MEDIUM", "NOTKNOWN", "UNSET" } ) { Definition = "The thermal exposure expected by the building based on surrounding site conditions."},
			new SingleValuePropertyType("CoolingDesignDay", "IfcDateTime") { Definition = "The month, day  and time that has been selected for the cooling design calculations."},
			new SingleValuePropertyType("CoolingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Dry bulb temperature, usually for for cooling design.\n\nOutside dry bulb temperature"},
			new SingleValuePropertyType("CoolingWetBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Outside wet bulb temperature for cooling design."},
			new SingleValuePropertyType("HeatingDesignDay", "IfcDateTime") { Definition = "The month, day and time that has been selected for the heating design calculations."},
			new SingleValuePropertyType("HeatingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Dry bulb temperature for heating design.\n\nAt outside."},
			new SingleValuePropertyType("HeatingWetBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Outside wet bulb temperature for heating design."},
			new SingleValuePropertyType("PrevailingWindDirection", "IfcPlaneAngleMeasure") { Definition = "The prevailing wind angle direction measured from True North (0 degrees) in a clockwise direction."},
			new SingleValuePropertyType("PrevailingWindVelocity", "IfcLinearVelocityMeasure") { Definition = "The design wind velocity coming from the direction specified by the PrevailingWindDirection attribute."},
			new SingleValuePropertyType("WeatherDataDate", "IfcDateTime") { Definition = "The date for which the weather data was gathered."},
			new SingleValuePropertyType("WeatherDataStation", "IfcText") { Definition = "The site weather data station description or reference to the data source from which weather data was obtained for use in calculations."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_PackingInstructions", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PackingCareType", new [] { "FRAGILE", "HANDLEWITHCARE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of care that may be required when handling the artefact during a move where:Fragile: artefact may be broken during a move through careless handling.\nHandleWithCare: artefact may be damaged during a move through careless handling."},
			new SingleValuePropertyType("ContainerMaterial", "IfcMaterialDefinition") { Definition = "Special requirements for material used to contain an artefact."},
			new SingleValuePropertyType("SpecialInstructions", "IfcText") { Definition = "Special instructions."},
			new SingleValuePropertyType("WrappingMaterial", "IfcMaterialDefinition") { Definition = "Special requirements for material used to wrap an artefact."} },
				new [] { "IfcTask", "IfcTaskType" });
		yield return new PropertySetInfo("Pset_PatchCordCable", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("JacketColour", "IfcLabel") { Definition = "Indicates the colour of the cable or fitting jacket."} },
				new [] { "IfcCableSegment", "IfcCableSegment", "IfcCableSegmentType", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_PavementCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalThickness", "IfcNonNegativeLengthMeasure") { Definition = "The nominal thickness of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalThicknessEnd", "IfcNonNegativeLengthMeasure") { Definition = "The nominal thickness of the object after a transition from its original value. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("StructuralSlope", "IfcPositiveRatioMeasure") { Definition = "The nominal side slope (allowable steepness) of the pavement structure (not including side slope fill) as a positive ratio measure. The slope  information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters take precedence. Value is typically less than 1.0 (1:1) but may be greater than that for steeper slopes."},
			new SingleValuePropertyType("StructuralSlopeType", "IfcLabel") { Definition = "User defined description on the type of slope used for the pavement structure (not including side slope fill) . Examples are \"Even\" or \"Stepped\"."} },
				new [] { "IfcPavement", "IfcPavementType" });
		yield return new PropertySetInfo("Pset_PavementMillingCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalDepth", "IfcNonNegativeLengthMeasure") { Definition = "Nominal Depth of the object"},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcEarthworksCut" });
		yield return new PropertySetInfo("Pset_PavementSurfaceCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("PavementRoughness", "IfcNumericMeasure") { Definition = "An assessment of the functional condition of the pavement surface indicated as an index according to the International Roughness Index (IRI)."},
			new SingleValuePropertyType("PavementTexture", "IfcPositiveLengthMeasure") { Definition = "Characterization of pavement texture by mean profile depthNOTE  Definition according to ISO 13473-1:2019"} },
				new [] { "IfcPavement", "IfcPavementType" });
		yield return new PropertySetInfo("Pset_PermeableCoveringProperties", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("OperationType", new [] { "GRILL", "LOUVER", "SCREEN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of operations. Also used to assign standard symbolic presentations according to national building standards.\n\nFor a permeable covering, it is the type of permeable covering operations. Also used to assign standard symbolic presentations according to national building standards."},
			new EnumerationPropertyType("PanelPosition", new [] { "BOTTOM", "LEFT", "MIDDLE", "RIGHT", "TOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Position of the panel.\n\nFor a permeable covering, it is the position of the permeable covering panel within the overall window or door type."},
			new SingleValuePropertyType("FrameDepth", "IfcPositiveLengthMeasure") { Definition = "The length (or depth) of the frame.\n\nFor a permeable covering, it is the depth of panel frame (used to include the permeable covering), measured from front face to back face horizontally (i.e. perpendicular to the window or door elevation plane)."},
			new SingleValuePropertyType("FrameThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the frame.\n\nFor a permeable covering, it is the width of panel frame (used to include the permeable covering), measured from inside of panel (at permeable covering) to outside of panel (at lining), i.e. parallel to the window or door (elevation) plane."} },
				new [] { "IfcDoor", "IfcDoorType", "IfcMember", "IfcMemberType", "IfcWindow", "IfcWindowType" });
		yield return new PropertySetInfo("Pset_Permit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EndDate", "IfcDateTime") { Definition = "Date and time at which the permit ceases to be valid."},
			new SingleValuePropertyType("EscortRequirement", "IfcBoolean") { Definition = "Indicates whether or not an escort is required to accompany persons carrying out a work order at or to/from the place of work (= TRUE) or not (= FALSE).NOTE - There are many instances where escorting is required, particularly in a facility that has a high security rating. Escorting may require that persons are escorted to and from the place of work. Alternatively, it may involve the escort remaining at the place of work at all times."},
			new SingleValuePropertyType("SpecialRequirements", "IfcText") { Definition = "Any additional special requirements that need to be included in the permit to work.NOTE - Additional permit requirements may be imposed according to the nature of the facility at which the work is carried out. For instance, in clean areas, special clothing may be required whilst in corrective institutions, it may be necessary to check in and check out tools that will be used for work as a safety precaution."},
			new SingleValuePropertyType("StartDate", "IfcDateTime") { Definition = "Date and time from which the permit becomes valid."} },
				new [] { "IfcPermit" });
		yield return new PropertySetInfo("Pset_PileCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcPile", "IfcPileType" });
		yield return new PropertySetInfo("Pset_PipeConnectionFlanged", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BoltholePitch", "IfcPositiveLengthMeasure") { Definition = "Diameter of the circle along which the boltholes are placed."},
			new SingleValuePropertyType("BoltSize", "IfcPositiveLengthMeasure") { Definition = "Size of the bolts securing the flange."},
			new SingleValuePropertyType("BoreSize", "IfcPositiveLengthMeasure") { Definition = "The nominal bore of the pipe flange."},
			new SingleValuePropertyType("FlangeDiameter", "IfcPositiveLengthMeasure") { Definition = "Overall diameter of the flange."},
			new SingleValuePropertyType("FlangeStandard", "IfcLabel") { Definition = "Designation of the standard describing the flange table."},
			new SingleValuePropertyType("FlangeTable", "IfcLabel") { Definition = "Designation of the standard table to which the flange conforms."},
			new SingleValuePropertyType("FlangeThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material from which the pipe bend is constructed."},
			new SingleValuePropertyType("NumberOfBoltholes", "IfcCountMeasure") { Definition = "Number of boltholes in the flange."} },
				new [] { "IfcPipeSegment", "IfcPipeSegmentType" });
		yield return new PropertySetInfo("Pset_PipeFittingOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Colour", "IfcLabel") { Definition = "Colour of this object."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness of the material of the object."} },
				new [] { "IfcPipeFitting" });
		yield return new PropertySetInfo("Pset_PipeFittingPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FlowrateLeakage", "IfcTimeSeries") { Definition = "Leakage flowrate versus pressure difference."},
			new SingleValuePropertyType("LossCoefficient", "IfcTimeSeries") { Definition = "Dimensionless loss coefficient used for calculating fluid resistance representing the ratio of total pressure loss to velocity pressure at a referenced cross-section."} },
				new [] { "IfcPipeFitting" });
		yield return new PropertySetInfo("Pset_PipeFittingTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FittingLossFactor", "IfcReal") { Definition = "A factor that determines the pressure loss due to friction through the fitting."},
			new SingleValuePropertyType("PressureClass", "IfcPressureMeasure") { Definition = "Nominal pressure rating of the object.\n\nThe test or rated pressure classification of the fitting."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."} },
				new [] { "IfcPipeFitting", "IfcPipeFittingType" });
		yield return new PropertySetInfo("Pset_PipeSegmentOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Colour", "IfcLabel") { Definition = "Colour of this object."},
			new SingleValuePropertyType("Gradient", "IfcPositiveRatioMeasure") { Definition = "The gradient of the pipe segment."},
			new SingleValuePropertyType("InteriorRoughnessCoefficient", "IfcPositiveLengthMeasure") { Definition = "The interior roughness of the material of the object."},
			new SingleValuePropertyType("InvertElevation", "IfcLengthMeasure") { Definition = "The invert elevation relative to the datum established for the project."} },
				new [] { "IfcPipeSegment" });
		yield return new PropertySetInfo("Pset_PipeSegmentPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FluidFlowLeakage", "IfcTimeSeries") { Definition = "Volumetric leakage flow rate."},
			new SingleValuePropertyType("LeakageCurve", "IfcTimeSeries") { Definition = "Leakage versus pressure drop; Leakage = f (pressure)."} },
				new [] { "IfcPipeSegment" });
		yield return new PropertySetInfo("Pset_PipeSegmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("InnerDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual inner diameter of the object."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal diameter or width of the object."},
			new SingleValuePropertyType("OuterDiameter", "IfcPositiveLengthMeasure") { Definition = "The actual outer diameter of the object."},
			new SingleValuePropertyType("PressureRange", "IfcPressureMeasure") { Definition = "Allowable maximum and minimum working pressure (relative to ambient pressure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature."},
			new SingleValuePropertyType("WorkingPressure", "IfcPressureMeasure") { Definition = "Working pressure."} },
				new [] { "IfcPipeSegment", "IfcPipeSegmentType" });
		yield return new PropertySetInfo("Pset_PipeSegmentTypeCulvert", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ClearDepth", "IfcPositiveLengthMeasure") { Definition = "The clear depth."},
			new SingleValuePropertyType("InternalWidth", "IfcPositiveLengthMeasure") { Definition = "The internal width of the culvert."} },
				new [] { "IfcPipeSegment", "IfcPipeSegmentType" });
		yield return new PropertySetInfo("Pset_PipeSegmentTypeGutter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Complementaryfunction", new [] { "DISPERSING_WELLS", "LIFTING_WATER_WELLS", "TRANSVERSAL_WATER_REMOVAL", "OTHER", "NOTKNOWN", "NOTDEFINED" } ) { Definition = "Indicates the complementary function of the drain channel."},
			new SingleValuePropertyType("FlowRating", "IfcVolumetricFlowRateMeasure") { Definition = "Actual flow capacity for the gutter. Value of 0.00 means this value has not been set."},
			new SingleValuePropertyType("IsCovered", "IfcBoolean") { Definition = "This property defines if the drain channel has a cover (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsMonitored", "IfcBoolean") { Definition = "This property defines if the Drain Channel is monitored (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("OrthometricHeight", "IfcLengthMeasure") { Definition = "The orthometric height is the vertical distance H along the plumb line from a point of interest to a reference surface known as the geoid, the vertical datum that approximates mean sea level."},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only.\n\nAngle of the gutter to allow for drainage."} },
				new [] { "IfcPipeSegment", "IfcPipeSegmentType" });
		yield return new PropertySetInfo("Pset_PlateCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorption values)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcPlate", "IfcPlateType" });
		yield return new PropertySetInfo("Pset_PointMachine", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ActionBarMovementLength", "IfcPositiveLengthMeasure") { Definition = "The movement of the bar that pulls the point of a turnout."},
			new SingleValuePropertyType("ConversionTime", "IfcTimeMeasure") { Definition = "Turnout conversion completion time."},
			new SingleValuePropertyType("Current", "IfcElectricCurrentMeasure") { Definition = "The actual current and operable range."},
			new SingleValuePropertyType("HasLockInside", "IfcBoolean") { Definition = "Indicates whether the locking is inside  (TRUE) or outside (FALSE) of the point machine."},
			new SingleValuePropertyType("LockingForce", "IfcForceMeasure") { Definition = "Locking force of the point machine motor."},
			new SingleValuePropertyType("MarkingRodMovementLength", "IfcPositiveLengthMeasure") { Definition = "The length of the movement bar which indicates the turnout position."},
			new SingleValuePropertyType("MaximumOperatingTime", "IfcTimeMeasure") { Definition = "The maximum duration of the turnout movement before the interlocking turns to out of control status."},
			new SingleValuePropertyType("MinimumOperatingSpeed", "IfcAngularVelocityMeasure") { Definition = "Minimum operating speed of the point machine."},
			new SingleValuePropertyType("TractionForce", "IfcForceMeasure") { Definition = "Traction force of the point machine in turnout conversion."} },
				new [] { "IfcActuator", "IfcActuator", "IfcActuator", "IfcActuator", "IfcActuatorType", "IfcActuatorType", "IfcActuatorType", "IfcActuatorType" });
		yield return new PropertySetInfo("Pset_PowerControlSystem", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AssemblyInstruction", "IfcExternalReference") { Definition = "Instructions to describe how the system / equipment / facility is assembled."} },
				new [] { "IfcDistributionSystem" });
		yield return new PropertySetInfo("Pset_PrecastConcreteElementFabrication", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ActualErectionDate", "IfcDateTime") { Definition = "Date erected."},
			new SingleValuePropertyType("ActualProductionDate", "IfcDateTime") { Definition = "Production date (stripped from form)."},
			new SingleValuePropertyType("AsBuiltLocationNumber", "IfcLabel") { Definition = "Defines a unique location within a structure, the ‘slot’ into which the piece was installed. Where pieces share the same piece mark, they can be interchanged. The value is only known after erection."},
			new SingleValuePropertyType("PieceMark", "IfcLabel") { Definition = "Defines a unique piece for production purposes. All pieces with the same piece mark value are identical and interchangeable. The piece mark may be composed of sub-parts that have specific locally defined meaning (e.g. B-1A may denote a beam, of generic type ‘1’ and specific shape ‘A’)."},
			new SingleValuePropertyType("ProductionLotId", "IfcIdentifier") { Definition = "The manufacturer's production lot identifier."},
			new SingleValuePropertyType("SerialNumber", "IfcIdentifier") { Definition = "The manufacturer's serial number assigned to an occurrence of a product."},
			new SingleValuePropertyType("TypeDesignation", "IfcLabel") { Definition = "Type designator for the element. The content depends on local standards. Eg. 'Bull nose', 'Half batter', 'Dropper', 'Chamfer' etc"} },
				new [] { "IfcBeam", "IfcBeamType", "IfcBuildingElementProxy", "IfcBuildingElementProxyType", "IfcChimney", "IfcChimneyType", "IfcCivilElement", "IfcCivilElementType", "IfcColumn", "IfcColumnType", "IfcFooting", "IfcFootingType", "IfcMember", "IfcMemberType", "IfcPile", "IfcPileType", "IfcPlate", "IfcPlateType", "IfcRamp", "IfcRampFlight", "IfcRampFlightType", "IfcRampType", "IfcRoof", "IfcRoofType", "IfcSlab", "IfcSlabType", "IfcStair", "IfcStairFlight", "IfcStairFlightType", "IfcStairType", "IfcWall", "IfcWallType" });
		yield return new PropertySetInfo("Pset_PrecastConcreteElementGeneral", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BatterAtEnd", "IfcPlaneAngleMeasure") { Definition = "The angle, in radians, by which the formwork at the ending face of a piece is to be rotated from the vertical in order to compensate for the rotation of the face that will occur once the piece is stripped from its form, inducing camber due to eccentric prestressing."},
			new SingleValuePropertyType("BatterAtStart", "IfcPlaneAngleMeasure") { Definition = "The angle, in radians, by which the formwork at the starting face of a piece is to be rotated from the vertical in order to compensate for the rotation of the face that will occur once the piece is stripped from its form, inducing camber due to eccentric prestressing."},
			new SingleValuePropertyType("CamberAtMidspan", "IfcRatioMeasure") { Definition = "The camber deflection, measured from the midpoint of a cambered face of a piece to the midpoint of the chord joining the ends of the same face, as shown in the figure below, divided by the original (nominal) straight length of the face of the piece."},
			new SingleValuePropertyType("CornerChamfer", "IfcPositiveLengthMeasure") { Definition = "The chamfer in the corners of the precast element. The chamfer is presumed to be equal in both directions."},
			new SingleValuePropertyType("DesignLocationNumber", "IfcLabel") { Definition = "Defines a unique location within a structure, the ‘slot’ for which the piece was designed."},
			new SingleValuePropertyType("FormStrippingStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete at form stripping time."},
			new SingleValuePropertyType("HollowCorePlugging", "IfcLabel") { Definition = "A descriptive label for how the hollow core ends are treated: they may be left open, closed with a plug, or sealed with cast concrete. Values would be, for example: 'Unplugged', 'Plugged', 'SealedWithConcrete'. This property applies to  hollow core slabs only."},
			new SingleValuePropertyType("InitialTension", "IfcPressureMeasure") { Definition = "The initial stress of the tendon. This property applies to prestressed concrete elements only."},
			new SingleValuePropertyType("LiftingStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete when the concrete element is lifted."},
			new SingleValuePropertyType("ManufacturingToleranceClass", "IfcLabel") { Definition = "Classification designation of the manufacturing tolerances according to local standards."},
			new SingleValuePropertyType("MinimumAllowableSupportLength", "IfcPositiveLengthMeasure") { Definition = "The minimum allowable support length."},
			new SingleValuePropertyType("PieceMark", "IfcLabel") { Definition = "Defines a unique piece for production purposes. All pieces with the same piece mark value are identical and interchangeable. The piece mark may be composed of sub-parts that have specific locally defined meaning (e.g. B-1A may denote a beam, of generic type ‘1’ and specific shape ‘A’)."},
			new SingleValuePropertyType("ReleaseStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete when the tendon stress is released. This property applies to prestressed concrete elements only."},
			new SingleValuePropertyType("Shortening", "IfcRatioMeasure") { Definition = "The ratio of the distance by which a precast piece is shortened after release from its form (due to compression induced by prestressing) to its original (nominal) length."},
			new SingleValuePropertyType("SupportDuringTransportDescription", "IfcText") { Definition = "Textual description of how the concrete element is supported during transportation."},
			new SingleValuePropertyType("SupportDuringTransportDocReference", "IfcExternalReference") { Definition = "Reference to an external document defining how the concrete element is supported during transportation."},
			new SingleValuePropertyType("TendonRelaxation", "IfcPositiveRatioMeasure") { Definition = "The maximum allowable relaxation of the tendon (usually expressed as %/1000 h).This property applies to prestressed concrete elements only."},
			new SingleValuePropertyType("TransportationStrength", "IfcPressureMeasure") { Definition = "The minimum required compressive strength of the concrete required for transportation."},
			new SingleValuePropertyType("Twisting", "IfcPlaneAngleMeasure") { Definition = "The angle, in radians, through which the end face of a precast piece is rotated with respect to its starting face, along its longitudinal axis, as a result of non-aligned supports. This measure is also termed the ‘warping’ angle."},
			new SingleValuePropertyType("TypeDesignation", "IfcLabel") { Definition = "Type designator for the element. The content depends on local standards. Eg. 'Bull nose', 'Half batter', 'Dropper', 'Chamfer' etc"} },
				new [] { "IfcBeam", "IfcBeamType", "IfcBuildingElementProxy", "IfcBuildingElementProxyType", "IfcChimney", "IfcChimneyType", "IfcCivilElement", "IfcCivilElementType", "IfcColumn", "IfcColumnType", "IfcFooting", "IfcFootingType", "IfcMember", "IfcMemberType", "IfcPile", "IfcPileType", "IfcPlate", "IfcPlateType", "IfcRamp", "IfcRampFlight", "IfcRampFlightType", "IfcRampType", "IfcRoof", "IfcRoofType", "IfcSlab", "IfcSlabType", "IfcStair", "IfcStairFlight", "IfcStairFlightType", "IfcStairType", "IfcWall", "IfcWallType" });
		yield return new PropertySetInfo("Pset_PrecastKerbStone", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalHeight", "IfcNonNegativeLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("TypeDesignation", "IfcLabel") { Definition = "Type designator for the element. The content depends on local standards. Eg. 'Bull nose', 'Half batter', 'Dropper', 'Chamfer' etc"} },
				new [] { "IfcKerb", "IfcKerbType" });
		yield return new PropertySetInfo("Pset_PrecastSlab", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AngleBetweenComponentAxes", "IfcPlaneAngleMeasure") { Definition = "The angle between the axes of each pair of components."},
			new SingleValuePropertyType("AngleToFirstAxis", "IfcPlaneAngleMeasure") { Definition = "The angle of rotation of the axis of the first component relative to the ‘West’ edge of the slab."},
			new SingleValuePropertyType("DistanceBetweenComponentAxes", "IfcPositiveLengthMeasure") { Definition = "The distance between the axes of the components, measured along the ‘South’ edge of the slab."},
			new SingleValuePropertyType("EdgeDistanceToFirstAxis", "IfcPositiveLengthMeasure") { Definition = "The distance from the left (‘West’) edge of the slab (in the direction of span of the components) to the axis of the first component."},
			new SingleValuePropertyType("NominalThickness", "IfcNonNegativeLengthMeasure") { Definition = "The nominal thickness of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalToppingThickness", "IfcPositiveLengthMeasure") { Definition = "The nominal thickness of the topping."},
			new SingleValuePropertyType("ToppingType", "IfcLabel") { Definition = "Defines if a topping is applied and what kind. Values are “Full topping”, “Perimeter Wash”, “None”"},
			new SingleValuePropertyType("TypeDesignation", "IfcLabel") { Definition = "Type designator for the element. The content depends on local standards. Eg. 'Bull nose', 'Half batter', 'Dropper', 'Chamfer' etc"} },
				new [] { "IfcSlab", "IfcSlabType" });
		yield return new PropertySetInfo("Pset_ProcessCapacity", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ProcessItem", new [] { "BARREL", "CGT", "PASSENGER", "TEU", "TONNE", "VEHICLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of item (and its measurement method) being modelled within a process. This can be cargo, passengers or vehicles that pass through the system."},
			new SingleValuePropertyType("DownstreamConnections", "IfcLabel") { Definition = "Names of downstream connected equipment and spaces, if not otherwise represented"},
			new SingleValuePropertyType("ProcessCapacity", "IfcCountMeasure") { Definition = "The number of units that can be processed in the time defined in ProcessPerformance"},
			new SingleValuePropertyType("ProcessPerformance", "IfcDuration") { Definition = "Minimum time to accept or dispatch the entire item capacity."},
			new SingleValuePropertyType("UpstreamConnections", "IfcLabel") { Definition = "Names of upstream connected equipment and spaces, if not otherwise represented"} },
				new [] { "IfcBuiltSystem", "IfcDistributionSystem", "IfcDoor", "IfcDoorType", "IfcSpace", "IfcSpaceType", "IfcTransportationDevice", "IfcTransportationDeviceType", "IfcZone" });
		yield return new PropertySetInfo("Pset_ProfileArbitraryDoubleT", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FlangeBaseFillet", "IfcNonNegativeLengthMeasure") { Definition = "Flange base fillet of the profile."},
			new SingleValuePropertyType("FlangeChamfer", "IfcNonNegativeLengthMeasure") { Definition = "Flange chamfer of the profile."},
			new SingleValuePropertyType("FlangeDepth", "IfcPositiveLengthMeasure") { Definition = "Flange depth of the profile."},
			new SingleValuePropertyType("FlangeDraft", "IfcNonNegativeLengthMeasure") { Definition = "Flange draft of the profile."},
			new SingleValuePropertyType("FlangeTopFillet", "IfcNonNegativeLengthMeasure") { Definition = "Flange top fillet of the profile."},
			new SingleValuePropertyType("LeftFlangeWidth", "IfcPositiveLengthMeasure") { Definition = "Left flange width of the profile."},
			new SingleValuePropertyType("OverallDepth", "IfcPositiveLengthMeasure") { Definition = "Overall depth of the profile."},
			new SingleValuePropertyType("OverallWidth", "IfcPositiveLengthMeasure") { Definition = "Overall width of the profile."},
			new SingleValuePropertyType("RightFlangeWidth", "IfcPositiveLengthMeasure") { Definition = "Right flange width of the profile."},
			new SingleValuePropertyType("StemBaseChamfer", "IfcNonNegativeLengthMeasure") { Definition = "Stem base chamfer of the profile."},
			new SingleValuePropertyType("StemBaseFillet", "IfcNonNegativeLengthMeasure") { Definition = "Stem base fillet of the profile."},
			new SingleValuePropertyType("StemBaseWidth", "IfcPositiveLengthMeasure") { Definition = "Stem base width of the profile."},
			new SingleValuePropertyType("StemTopChamfer", "IfcNonNegativeLengthMeasure") { Definition = "Stem top chamfer of the profile."},
			new SingleValuePropertyType("StemTopFillet", "IfcNonNegativeLengthMeasure") { Definition = "Stem top fillet of the profile."},
			new SingleValuePropertyType("StemTopWidth", "IfcPositiveLengthMeasure") { Definition = "Stem top width of the profile."} },
				new [] { "IfcArbitraryClosedProfileDef" });
		yield return new PropertySetInfo("Pset_ProfileArbitraryHollowCore", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BaseChamfer", "IfcNonNegativeLengthMeasure") { Definition = "Base chamfer of the profile."},
			new SingleValuePropertyType("BottomCover", "IfcPositiveLengthMeasure") { Definition = "Bottom cover of the profile."},
			new SingleValuePropertyType("CenterCoreBaseHeight", "IfcPositiveLengthMeasure") { Definition = "Center core base height of the profile."},
			new SingleValuePropertyType("CenterCoreBaseWidth", "IfcPositiveLengthMeasure") { Definition = "Center core base width of the profile."},
			new SingleValuePropertyType("CenterCoreMiddleHeight", "IfcPositiveLengthMeasure") { Definition = "Center core middle height of the profile."},
			new SingleValuePropertyType("CenterCoreSpacing", "IfcPositiveLengthMeasure") { Definition = "Center core spacing of the profile."},
			new SingleValuePropertyType("CenterCoreTopHeight", "IfcPositiveLengthMeasure") { Definition = "Center core top height of the profile."},
			new SingleValuePropertyType("CenterCoreTopWidth", "IfcPositiveLengthMeasure") { Definition = "Center core top width of the profile."},
			new SingleValuePropertyType("CoreBaseHeight", "IfcPositiveLengthMeasure") { Definition = "Core base height of the profile."},
			new SingleValuePropertyType("CoreBaseWidth", "IfcPositiveLengthMeasure") { Definition = "Core base width of the profile."},
			new SingleValuePropertyType("CoreMiddleHeight", "IfcPositiveLengthMeasure") { Definition = "Core middle height of the profile."},
			new SingleValuePropertyType("CoreSpacing", "IfcPositiveLengthMeasure") { Definition = "Core spacing of the profile."},
			new SingleValuePropertyType("CoreTopHeight", "IfcPositiveLengthMeasure") { Definition = "Core top height of the profile."},
			new SingleValuePropertyType("CoreTopWidth", "IfcPositiveLengthMeasure") { Definition = "Core top width of the profile."},
			new SingleValuePropertyType("DraftBaseOffset", "IfcNonNegativeLengthMeasure") { Definition = "Draft base offset of the profile."},
			new SingleValuePropertyType("DraftSideOffset", "IfcNonNegativeLengthMeasure") { Definition = "Draft side offset of the profile."},
			new SingleValuePropertyType("EdgeDraft", "IfcNonNegativeLengthMeasure") { Definition = "Edge draft of the profile."},
			new SingleValuePropertyType("KeyDepth", "IfcNonNegativeLengthMeasure") { Definition = "Key depth of the profile."},
			new SingleValuePropertyType("KeyHeight", "IfcNonNegativeLengthMeasure") { Definition = "Key height of the profile."},
			new SingleValuePropertyType("KeyOffset", "IfcNonNegativeLengthMeasure") { Definition = "Key offset of the profile."},
			new SingleValuePropertyType("NumberOfCores", "IfcCountMeasure") { Definition = "The number of cores."},
			new SingleValuePropertyType("OverallDepth", "IfcPositiveLengthMeasure") { Definition = "Overall depth of the profile."},
			new SingleValuePropertyType("OverallWidth", "IfcPositiveLengthMeasure") { Definition = "Overall width of the profile."} },
				new [] { "IfcArbitraryProfileDefWithVoids" });
		yield return new PropertySetInfo("Pset_ProfileMechanical", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CentreOfGravityInX", "IfcLengthMeasure") { Definition = "Location of the profile's centre of gravity (geometric centroid), measured along xp."},
			new SingleValuePropertyType("CentreOfGravityInY", "IfcLengthMeasure") { Definition = "Location of the profile's centre of gravity (geometric centroid), measured along yp."},
			new SingleValuePropertyType("CrossSectionArea", "IfcAreaMeasure") { Definition = "Total area of the cross section (or profile) of the object."},
			new SingleValuePropertyType("MassPerLength", "IfcMassPerLengthMeasure") { Definition = "Mass per length, i.e. mass of a beam with a unit length of extrusion. For example measured in kg/m."},
			new SingleValuePropertyType("MaximumPlateThickness", "IfcPositiveLengthMeasure") { Definition = "This value may be needed for stress analysis and to handle buckling problems. It can also be derived from the given profile geometry or classification and therefore it is only an optional feature allowing for an explicit description. For example measured in mm."},
			new SingleValuePropertyType("MaximumSectionModulusY", "IfcSectionModulusMeasure") { Definition = "Bending resistance about the ys axis at the point with maximum zs ordinate. For example measured in mm³."},
			new SingleValuePropertyType("MaximumSectionModulusZ", "IfcSectionModulusMeasure") { Definition = "Bending resistance about the zs axis at the point with maximum ys ordinate. For example measured in mm³."},
			new SingleValuePropertyType("MinimumPlateThickness", "IfcPositiveLengthMeasure") { Definition = "This value may be needed for stress analysis and to handle buckling problems. It can also be derived from the given profile geometry or classification and therefore it is only an optional feature allowing for an explicit description. For example measured in mm."},
			new SingleValuePropertyType("MinimumSectionModulusY", "IfcSectionModulusMeasure") { Definition = "Bending resistance about the ys axis at the point with minimum zs ordinate. For example measured in mm³."},
			new SingleValuePropertyType("MinimumSectionModulusZ", "IfcSectionModulusMeasure") { Definition = "Bending resistance about the zs axis at the point with minimum ys ordinate. For example measured in mm³."},
			new SingleValuePropertyType("MomentOfInertiaY", "IfcMomentOfInertiaMeasure") { Definition = "Moment of inertia about ys (second moment of area, about ys). For example measured in mm4."},
			new SingleValuePropertyType("MomentOfInertiaYZ", "IfcMomentOfInertiaMeasure") { Definition = "Moment of inertia about ys and zs (product moment of area). For example measured in mm4."},
			new SingleValuePropertyType("MomentOfInertiaZ", "IfcMomentOfInertiaMeasure") { Definition = "Moment of inertia about zs (second moment of area, about zs). For example measured in mm4"},
			new SingleValuePropertyType("Perimeter", "IfcPositiveLengthMeasure") { Definition = "Perimeter of the object.\n\nPerimeter of the profile for calculating the surface area. For example measured in mm."},
			new SingleValuePropertyType("PlasticShapeFactorY", "IfcPositiveRatioMeasure") { Definition = "Ratio of plastic versus elastic bending moment capacity about the section analysis axis ys. A dimensionless value."},
			new SingleValuePropertyType("PlasticShapeFactorZ", "IfcPositiveRatioMeasure") { Definition = "Ratio of plastic versus elastic bending moment capacity about the section analysis axis zs. A dimensionless value."},
			new SingleValuePropertyType("ShearAreaY", "IfcAreaMeasure") { Definition = "Area of the profile for calculating the shear stress due to shear force parallel to the section analysis axis ys. For example measured in mm². If given, the shear area ys shall be non-negative."},
			new SingleValuePropertyType("ShearAreaZ", "IfcAreaMeasure") { Definition = "Area of the profile for calculating the shear stress due to shear force parallel to the section analysis axis zs. For example measured in mm². If given, the shear area zs shall be non-negative."},
			new SingleValuePropertyType("ShearCentreY", "IfcLengthMeasure") { Definition = "Location of the profile's shear centre, measured along ys."},
			new SingleValuePropertyType("ShearCentreZ", "IfcLengthMeasure") { Definition = "Location of the profile's shear centre, measured along zs."},
			new SingleValuePropertyType("ShearDeformationAreaY", "IfcAreaMeasure") { Definition = "Area of the profile for calculating the shear deformation due to a shear force parallel to ys. For example measured in mm². If given, the shear deformation area ys shall be non-negative."},
			new SingleValuePropertyType("ShearDeformationAreaZ", "IfcAreaMeasure") { Definition = "Area of the profile for calculating the shear deformation due to a shear force parallel to zs. For example measured in mm². If given, the shear deformation area zs shall be non-negative."},
			new SingleValuePropertyType("TorsionalConstantX", "IfcMomentOfInertiaMeasure") { Definition = "Torsional constant about xs. For example measured in mm4."},
			new SingleValuePropertyType("TorsionalSectionModulus", "IfcSectionModulusMeasure") { Definition = "Torsional resistance (about xs). For example measured in mm³."},
			new SingleValuePropertyType("WarpingConstant", "IfcWarpingConstantMeasure") { Definition = "Warping constant of the profile for torsional action. For example measured in mm6."} },
				new [] { "IfcProfileDef" });
		yield return new PropertySetInfo("Pset_ProjectCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ProjectType", new [] { "MODIFICATION", "NEWBUILD", "OPERATIONMAINTENANCE", "RENOVATION", "REPAIR" } ) { Definition = "Additional typing of a project"},
			new SingleValuePropertyType("FundingSource", "IfcLabel") { Definition = "Investment funding source"},
			new SingleValuePropertyType("NetEarnedValue", "IfcCostValue") { Definition = "Net earned value"},
			new SingleValuePropertyType("PaybackPeriod", "IfcDuration") { Definition = "Payback period of investment"},
			new SingleValuePropertyType("ProjectInvestmentEstimate", "IfcCostValue") { Definition = "Estimate of investment cost"},
			new SingleValuePropertyType("ROI", "IfcRatioMeasure") { Definition = "Return on Investment"} },
				new [] { "IfcProject" });
		yield return new PropertySetInfo("Pset_ProjectOrderChangeOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BudgetSource", "IfcText") { Definition = "The budget source requested."},
			new SingleValuePropertyType("ReasonForChange", "IfcText") { Definition = "A description of the problem for why a change is needed."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderMaintenanceWorkOrder", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FaultPriorityType", new [] { "HIGH", "LOW", "MEDIUM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of priority that can be assigned from which the type may be set where:High: action is required urgently.\nMedium: action can occur within a reasonable period of time.\nLow: action can occur when convenient."},
			new EnumerationPropertyType("LocationPriorityType", new [] { "HIGH", "LOW", "MEDIUM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of priority that can be assigned from which the type may be set where:High: action is required urgently.\nMedium: action can occur within a reasonable period of time.\nLow: action can occur when convenient."},
			new EnumerationPropertyType("MaintenanceType", new [] { "CONDITIONBASED", "CORRECTIVE", "PLANNEDCORRECTIVE", "SCHEDULED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of maintenance that can be done from which the type that generates the maintenance work order may be set where:ConditionBased: generated as a result of the condition of an asset or artefact being less than a determined value.\nCorrective: generated as a result of an immediate and urgent need for maintenance action.\nPlannedCorrective: generated as a result of immediate corrective action being needed but with sufficient time available for the work order to be included in maintenance planning.\nScheduled: generated as a result of a fixed, periodic maintenance requirement."},
			new SingleValuePropertyType("ContractualType", "IfcText") { Definition = "The contractual type of the work."},
			new SingleValuePropertyType("IfNotAccomplished", "IfcText") { Definition = "Comments if the job is not accomplished."},
			new SingleValuePropertyType("ProductDescription", "IfcText") { Definition = "A textual description of the products that require the work."},
			new SingleValuePropertyType("ScheduledFrequency", "IfcTimeMeasure") { Definition = "The period of time between expected instantiations of a work order that may have been predefined."},
			new SingleValuePropertyType("WorkTypeRequested", "IfcText") { Definition = "Work type requested in circumstances where there are categorizations of types of work task. It could be used to identify a remedial task, minor work task, electrical task etc."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderMoveOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SpecialInstructions", "IfcText") { Definition = "Special instructions."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderPurchaseOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsFOB", "IfcBoolean") { Definition = "Indication of whether contents of the purchase order are delivered 'Free on Board' (= True) or not (= False). FOB is a shipping term which indicates that the supplier pays the shipping costs (and usually also the insurance costs) from the point of manufacture to a specified destination, at which point the buyer takes responsibility."},
			new SingleValuePropertyType("ShipMethod", "IfcText") { Definition = "Method of shipping that will be used for goods or services."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_ProjectOrderWorkOrder", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ContractualType", "IfcText") { Definition = "The contractual type of the work."},
			new SingleValuePropertyType("IfNotAccomplished", "IfcText") { Definition = "Comments if the job is not accomplished."},
			new SingleValuePropertyType("ProductDescription", "IfcText") { Definition = "A textual description of the products that require the work."},
			new SingleValuePropertyType("WorkTypeRequested", "IfcText") { Definition = "Work type requested in circumstances where there are categorizations of types of work task. It could be used to identify a remedial task, minor work task, electrical task etc."} },
				new [] { "IfcProjectOrder" });
		yield return new PropertySetInfo("Pset_PropertyAgreement", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AgreementType", new [] { "ASSIGNMENT", "LEASE", "TENANT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of property agreement from which the type required may be set."},
			new SingleValuePropertyType("AgreementDate", "IfcDate") { Definition = "The date on which the version of the agreement became applicable."},
			new SingleValuePropertyType("AgreementVersion", "IfcLabel") { Definition = "The version number of the agreement that is identified."},
			new SingleValuePropertyType("CommencementDate", "IfcDate") { Definition = "Date on which the agreement commences."},
			new SingleValuePropertyType("ConditionCommencement", "IfcText") { Definition = "Condition of property provided on commencement of the agreement e.g. cold shell, warm lit shell, broom clean, turn-key."},
			new SingleValuePropertyType("ConditionTermination", "IfcText") { Definition = "Condition of property required on termination of the agreement e.g. cold shell, warm lit shell, broom clean, turn-key."},
			new SingleValuePropertyType("Duration", "IfcDuration") { Definition = "Duration.\n\nThe period of time for the lease."},
			new SingleValuePropertyType("Options", "IfcText") { Definition = "A statement of the options available in the agreement."},
			new SingleValuePropertyType("PropertyName", "IfcLabel") { Definition = "Addressing details of the property as stated within the agreement."},
			new SingleValuePropertyType("Restrictions", "IfcText") { Definition = "Restrictions that may be placed by a  competent authority."},
			new SingleValuePropertyType("TerminationDate", "IfcDate") { Definition = "Date on which the agreement terminates."},
			new SingleValuePropertyType("TrackingIdentifier", "IfcIdentifier") { Definition = "The identifier assigned to the agreement for the purposes of tracking."} },
				new [] { "IfcSpatialStructureElement", "IfcSpatialStructureElementType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceBreakerUnitI2TCurve", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U1000", "U230", "U400", "U440", "U525", "U690", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured.\n\nA set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the\nUltimateRatedCurrent associated with the same breaker unit."},
			new TableValuePropertyType("BreakerUnitCurve", "IfcElectricCurrentMeasure", "IfcReal") { Definition = "A curve that establishes the let through energy of a breaker unit when a particular prospective current is applied.  Note that the breaker unit curve is defined within a Cartesian coordinate system and this fact must be asserted within the property set:(1) Defining value: ProspectiveCurrent: A list of minimum 2 and maximum 16 numbers providing the currents in [A] for points in the current/I2t log/log coordinate space. The curve is drawn as a straight line between two consecutive points.\n(2) Defined value: LetThroughEnergy: A list of minimum 2 and maximum 16 numbers providing the let-through energy, I2t, in [A2s] for points in the current/I2t log/log coordinate space. The curve is drawn as a straight line between two consecutive points."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceBreakerUnitI2TFuseCurve", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U1000", "U230", "U400", "U440", "U525", "U690", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new TableValuePropertyType("BreakerUnitFuseBreakingingCurve", "IfcElectricCurrentMeasure", "IfcReal") { Definition = "A curve that establishes the let through breaking energy of a breaker unit when a particular prospective breaking current is applied.  Note that the breaker unit fuse breaking curve is defined within a Cartesian coordinate system and this fact must be:(1) Defining value: ProspectiveCurrentBreaking: A list of minimum 2 and maximum 8 numbers providing the currents in [A] for points in the\ncurrent/breaking energy log/log coordinate space. The curve is drawn as a straight line between two consecutive points.\n(2) Defined value: LetThroughBreakingEnergy: A list of minimum 2 and maximum 8 numbers providing the breaking energy whereby the fuse has provided a break, I2t, in [A2s] for points in the current/breakting_energy log/log coordinate space. The curve is drawn as a straight line between two consecutive."},
			new TableValuePropertyType("BreakerUnitFuseMeltingCurve", "IfcElectricCurrentMeasure", "IfcReal") { Definition = "A curve that establishes the energy required to melt the fuse of a breaker unit when a particular prospective melting current is applied.  Note that the breaker unit fuse melting curve is defined within a Cartesian coordinate system and this fact must be:(1) Defining value: ProspectiveCurrentMelting :A list of minimum 2 and maximum 8 numbers providing the currents in [A] for points in the\ncurrent/melting_energy log/log coordinate space. The curve is drawn as a straight line between two consecutive points.\n(2) Defined value: MeltingEnergy: A list of minimum 2 and maximum 8 numbers providing the energy whereby the fuse is starting to melt, I2t, in [A2s] for points in the current/melting_energy log/log coordinate space. The curve is drawn as a straight line between two consecutive points."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceBreakerUnitIPICurve", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U1000", "U230", "U400", "U440", "U525", "U690", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured.\n\nA set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the\nUltimateRatedCurrent associated with the same breaker unit."},
			new TableValuePropertyType("BreakerUnitIPICurve", "IfcElectricCurrentMeasure", "IfcElectricCurrentMeasure") { Definition = "A curve that establishes the let through peak current of a breaker unit when a particular prospective current is applied.  Note that the breaker unit IPI curve is defined within a Cartesian coordinate system and this fact must be asserted within the property set:(1) Defining value: A list of minimum 2 and maximum 16 numbers providing the currents in [A] for points in the I/Î log/log coordinate space. The curve is drawn as a straight line between two consecutive points.\n(2) Defined value: A list of minimum 2 and maximum 16 numbers providing the let-through peak currents, Î, in [A] for points in the I/Î log/log coordinate space. The curve is drawn as a straight line between two consecutive points."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceBreakerUnitTypeMCB", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U1000", "U230", "U400", "U440", "U525", "U690", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("ICN60898", "IfcElectricCurrentMeasure") { Definition = "The nominal breaking capacity in [A] for an MCB tested in accordance with the IEC 60898 series."},
			new SingleValuePropertyType("ICS60898", "IfcElectricCurrentMeasure") { Definition = "The service breaking capacity in [A] for an MCB tested in accordance with the IEC 60898 series."},
			new SingleValuePropertyType("ICS60947", "IfcElectricCurrentMeasure") { Definition = "The service breaking capacity in [A] for an object tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICU60947", "IfcElectricCurrentMeasure") { Definition = "The ultimate breaking capacity in [A] for an object tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("NominalCurrents", "IfcElectricCurrentMeasure") { Definition = "A set of values providing information on available modules (chips) for setting the nominal current of the protective device.\n\nA set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the\nUltimateRatedCurrent associated with the same breaker unit."},
			new SingleValuePropertyType("PowerLoss", "IfcPowerMeasure") { Definition = "The power loss in [W].\n\nThe power loss in [W] per pole of the MCB  when the nominal current is flowing through the MCB."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceBreakerUnitTypeMotorProtection", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U1000", "U230", "U400", "U440", "U525", "U690", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("ICM60947", "IfcElectricCurrentMeasure") { Definition = "The making capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICS60947", "IfcElectricCurrentMeasure") { Definition = "The service breaking capacity in [A] for an object tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICU60947", "IfcElectricCurrentMeasure") { Definition = "The ultimate breaking capacity in [A] for an object tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICW60947", "IfcElectricCurrentMeasure") { Definition = "The thermal withstand current in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. The value shall be related to 1 s."},
			new SingleValuePropertyType("PerformanceClasses", "IfcLabel") { Definition = "A set of designations of performance classes for the breaker unit for which the data of this instance is valid.\n\nA set of designations of performance classes for the breaker unit for which the data of this instance is valid. A breaker unit being a motor protection device may be\nconstructed for different levels of breaking capacities. A maximum of 7 different\nperformance classes may be provided. Examples of performance classes that may be specified include B, C, N, S, H, L, V."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PoleUsage", new [] { "1P", "1PN", "2P", "3P", "3PN", "4P", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Pole usage."},
			new SingleValuePropertyType("GroundFaultCurrentSetValue", "IfcElectricCurrentMeasure") { Definition = "Ground fault current set value. The set value of the ground tripping current if adjustable."},
			new SingleValuePropertyType("GroundFaultFunction", "IfcBoolean") { Definition = "Applying ground fault function. A flag indicating that the ground fault function of the device is used. The value should be set to FALSE for devices not having a ground fault function, or if the ground fault function is not selected to be used."},
			new SingleValuePropertyType("GroundFaulti2tFunction", "IfcBoolean") { Definition = "Applying ground fault i2t function. A flag indicating that the I2t ground fault function of the device is used. The value should be set to TRUE only if the I2t function is explicitly selected for the device."},
			new SingleValuePropertyType("GroundFaultTrippingTime", "IfcTimeMeasure") { Definition = "Ground fault tripping time. The set value of the ground fault tripping current if adjustable."},
			new SingleValuePropertyType("InstantaneousCurrentSetValue", "IfcElectricCurrentMeasure") { Definition = "Instantaneous current set value. The set value of the instantaneous tripping current if adjustable."},
			new SingleValuePropertyType("InstantaneousTrippingTime", "IfcTimeMeasure") { Definition = "Instantaneous tripping time. The set value of the instantaneous tripping time if adjustable."},
			new SingleValuePropertyType("LongTimeCurrentSetValue", "IfcElectricCurrentMeasure") { Definition = "Long time current set value. The set value of the long time tripping current if adjustable."},
			new SingleValuePropertyType("LongTimeDelay", "IfcTimeMeasure") { Definition = "Long time delay. The set value of the long time time-delay if adjustable."},
			new SingleValuePropertyType("LongTimeFunction", "IfcBoolean") { Definition = "Applying long time function\nA flag indicating that the long time function (i.e. the thermal tripping) of the device is used. The value should be set to TRUE for all devices except those that allows the Long time function of the device not to be used."},
			new SingleValuePropertyType("ShortTimeCurrentSetValue", "IfcElectricCurrentMeasure") { Definition = "Short time current set value. The set value of the long time tripping current if adjustable."},
			new SingleValuePropertyType("ShortTimeFunction", "IfcBoolean") { Definition = "Applying short time function A flag indicating that the short time function of the device is used. The value should be set to FALSE for devices not having a short time function, or if the short time function is not selected to be used."},
			new SingleValuePropertyType("ShortTimei2tFunction", "IfcBoolean") { Definition = "Applying short time i2t function. A flag indicating that the I2t short time function of the device is used. The value should be set to TRUE only if the I2t function  is explicitly selected for the device."},
			new SingleValuePropertyType("ShortTimeTrippingTime", "IfcTimeMeasure") { Definition = "Short time tripping time. The set value of the short time tripping time if adjustable."} },
				new [] { "IfcProtectiveDevice" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingCurve", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TrippingCurveType", new [] { "LOWER", "UPPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of tripping curve that is represented by the property set."},
			new TableValuePropertyType("TrippingCurve", "IfcElectricCurrentMeasure", "IfcTimeMeasure") { Definition = "A curve that establishes the release time of a tripping unit when a particular prospective current is applied.  Note that the tripping curve is defined within a Cartesian coordinate system and this fact must be asserted within the property set:(1) Defining value is the Prospective Current which is a list of minimum 2 and maximum 16 numbers providing the currents in [x In] for points in the current/time log/log coordinate space. The curve is drawn as a straight line between two consecutive points.\n(2) Defined value is a list of minimum 2 and maximum 16 numbers providing the release_time in [s] for points in the current/time log/log coordinate space. The curve is drawn as a straight line between two consecutive points. Note that a defined interpolation."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingFunctionGCurve", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CurrentTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%]."},
			new SingleValuePropertyType("CurrentTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%] valid for times above CurrentTolereanceLimit1."},
			new SingleValuePropertyType("CurrentToleranceLimit1", "IfcTimeMeasure") { Definition = "The time limit in [s] limiting the application of CurrentTolerance1, if any. If the value is set to 0, the value of the CurrentTolerance1 is valid for the whole time/current-curve."},
			new SingleValuePropertyType("ExternalAdjusted", "IfcBoolean") { Definition = "An indication if the ground fault protection may be adjusted according to an external current coil or not."},
			new SingleValuePropertyType("IsCurrentTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  CurrentTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("IsSelectable", "IfcBoolean") { Definition = "Indication whether something can be switched off or not."},
			new SingleValuePropertyType("IsTimeTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  TimeTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("NominalCurrentAdjusted", "IfcBoolean") { Definition = "An indication if the tripping currents of the short time protection is related to the nominal current multiplied with the actual setting of the current adjustment, if any, of the long time protection part of the protective device, or not."},
			new SingleValuePropertyType("ReleaseCurrent", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In] for the initial tripping of the S-function."},
			new SingleValuePropertyType("ReleaseCurrentI2tEnd", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In].\n\nFor the end point of the I2t tripping curve of the G-function, if any. The value of ReleaseCurrentI2tEnd shall be larger than ReleaseCurrentI2tStart."},
			new SingleValuePropertyType("ReleaseCurrentI2tStart", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In].\n\nFor the start point of the I2t tripping curve of the G-function, if any."},
			new SingleValuePropertyType("ReleaseTime", "IfcTimeMeasure") { Definition = "The release time in [s] for the initial tripping of the relevant part. This time indicates that for current lower than the indicated release current, the tripping time will be longer than the indicated release time. The value is given as a mean value."},
			new SingleValuePropertyType("ReleaseTimeI2tEnd", "IfcTimeMeasure") { Definition = "The release time in [s].\n\nFor the end point of the I2 tripping curve of the G-function, if any. The value of ReleaseTimeI2tEnd shall be lower than ReleaseTimeI2tStart."},
			new SingleValuePropertyType("ReleaseTimeI2tStart", "IfcTimeMeasure") { Definition = "The release time in [s].\n\nFor the start point of the I2t tripping curve of the G-function, if any."},
			new SingleValuePropertyType("TimeTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of time/current-curve in [%]."},
			new SingleValuePropertyType("TimeTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of the time/current-curve in [%] valid for currents above TimeToleranceLimit1."},
			new SingleValuePropertyType("TimeToleranceLimit1", "IfcElectricCurrentMeasure") { Definition = "The current limit in [x In] limiting the application of TimeTolerance1, if any. If the value is set to 0, the value of the TimeTolerance1 is valid for the whole time/current-curve."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingFunctionICurve", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CurrentTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%]."},
			new SingleValuePropertyType("CurrentTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%] valid for times above CurrentTolereanceLimit1."},
			new SingleValuePropertyType("CurrentToleranceLimit1", "IfcTimeMeasure") { Definition = "The time limit in [s] limiting the application of CurrentTolerance1, if any. If the value is set to 0, the value of the CurrentTolerance1 is valid for the whole time/current-curve."},
			new SingleValuePropertyType("IsCurrentTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  CurrentTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("IsOffWhenSFunctionOn", "IfcBoolean") { Definition = "Indication whether the I-function is automatically switched off when the S-function is switched on."},
			new SingleValuePropertyType("IsSelectable", "IfcBoolean") { Definition = "Indication whether something can be switched off or not."},
			new SingleValuePropertyType("IsTimeTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  TimeTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("MaxAdjustmentX_ICS", "IfcElectricCurrentMeasure") { Definition = "Provides the maximum setting value for the available current adjustment in relation to the Ics breaking capacity of the protection device of which the actual tripping unit is a part of. The value is not asserted unless the instantaneous time protection is."},
			new SingleValuePropertyType("NominalCurrentAdjusted", "IfcBoolean") { Definition = "An indication if the tripping currents of the short time protection is related to the nominal current multiplied with the actual setting of the current adjustment, if any, of the long time protection part of the protective device, or not."},
			new SingleValuePropertyType("ReleaseCurrent", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In] for the initial tripping of the S-function."},
			new SingleValuePropertyType("ReleaseTime", "IfcTimeMeasure") { Definition = "The release time in [s] for the initial tripping of the relevant part. This time indicates that for current lower than the indicated release current, the tripping time will be longer than the indicated release time. The value is given as a mean value."},
			new SingleValuePropertyType("TimeTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of time/current-curve in [%]."},
			new SingleValuePropertyType("TimeTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of the time/current-curve in [%] valid for currents above TimeToleranceLimit1."},
			new SingleValuePropertyType("TimeToleranceLimit1", "IfcElectricCurrentMeasure") { Definition = "The current limit in [x In] limiting the application of TimeTolerance1, if any. If the value is set to 0, the value of the TimeTolerance1 is valid for the whole time/current-curve."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingFunctionLCurve", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsSelectable", "IfcBoolean") { Definition = "Indication whether something can be switched off or not."},
			new SingleValuePropertyType("LowerCurrent1", "IfcElectricCurrentMeasure") { Definition = "The current in [x In], indicating that for currents smaller than LowerCurrent1 the I2t part of the L-function will not trip the current,"},
			new SingleValuePropertyType("LowerCurrent2", "IfcElectricCurrentMeasure") { Definition = "The current in [x In], indicating the upper current limit of the lower time/current curve of the I2t part of the L-function."},
			new SingleValuePropertyType("LowerTime1", "IfcTimeMeasure") { Definition = "The time in [s], indicating that tripping times of the lower time/current curve lower than LowerTime1 is determined by the I2t part of the L-function."},
			new SingleValuePropertyType("LowerTime2", "IfcTimeMeasure") { Definition = "The time in [s], indicating the tripping times of the upper time/current curve at the LowerCurrent2."},
			new SingleValuePropertyType("UpperCurrent1", "IfcElectricCurrentMeasure") { Definition = "The current in [x In], indicating that for currents larger than UpperCurrent1 the I2t part of the L-function will trip the current."},
			new SingleValuePropertyType("UpperCurrent2", "IfcElectricCurrentMeasure") { Definition = "The current in [x In], indicating the upper current limit of the upper time/current curve of the I2t part of the L-function."},
			new SingleValuePropertyType("UpperTime1", "IfcTimeMeasure") { Definition = "The time in [s], indicating that tripping times of the upper time/current curve lower than UpperTime1 is determined by the I2t part of the L-function."},
			new SingleValuePropertyType("UpperTime2", "IfcTimeMeasure") { Definition = "The time in [s], indicating the tripping times of the upper time/current curve at the UpperCurrent2."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingFunctionSCurve", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CurrentTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%]."},
			new SingleValuePropertyType("CurrentTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the current of time/current-curve in [%] valid for times above CurrentTolereanceLimit1."},
			new SingleValuePropertyType("CurrentToleranceLimit1", "IfcTimeMeasure") { Definition = "The time limit in [s] limiting the application of CurrentTolerance1, if any. If the value is set to 0, the value of the CurrentTolerance1 is valid for the whole time/current-curve."},
			new SingleValuePropertyType("IsCurrentTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  CurrentTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("IsOffWhenLfunctionOn", "IfcBoolean") { Definition = "Indication whether the S-function is automatically switched off when the I-function is switched on."},
			new SingleValuePropertyType("IsSelectable", "IfcBoolean") { Definition = "Indication whether something can be switched off or not."},
			new SingleValuePropertyType("IsTimeTolerancePositiveOnly", "IfcBoolean") { Definition = "Indication whether the value of  TimeTolerance1 is provided as a positive tolereance only  or not. If not, the value is proved as a pluss/minus tolerance."},
			new SingleValuePropertyType("NominalCurrentAdjusted", "IfcBoolean") { Definition = "An indication if the tripping currents of the short time protection is related to the nominal current multiplied with the actual setting of the current adjustment, if any, of the long time protection part of the protective device, or not."},
			new SingleValuePropertyType("ReleaseCurrent", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In] for the initial tripping of the S-function."},
			new SingleValuePropertyType("ReleaseCurrentI2tEnd", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In].\n\nFor the end point of the I2t tripping curve of the S-function, if any. The value of ReleaseCurrentI2tEnd shall be larger than ReleaseCurrentI2tStart."},
			new SingleValuePropertyType("ReleaseCurrentI2tStart", "IfcElectricCurrentMeasure") { Definition = "The release current in [x In].\n\nFor the start point of the I2t tripping curve of the S-function, if any."},
			new SingleValuePropertyType("ReleaseTime", "IfcTimeMeasure") { Definition = "The release time in [s] for the initial tripping of the relevant part. This time indicates that for current lower than the indicated release current, the tripping time will be longer than the indicated release time. The value is given as a mean value."},
			new SingleValuePropertyType("ReleaseTimeI2tEnd", "IfcTimeMeasure") { Definition = "The release time in [s].\n\nFor the end point of the I2 tripping curve of the S-function, if any. The value of ReleaseTimeI2tEnd shall be lower than ReleaseTimeI2tStart."},
			new SingleValuePropertyType("ReleaseTimeI2tStart", "IfcTimeMeasure") { Definition = "The release time in [s].\n\nFor the start point of the I2t tripping curve of the S-function, if any"},
			new SingleValuePropertyType("TimeTolerance1", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of time/current-curve in [%]."},
			new SingleValuePropertyType("TimeTolerance2", "IfcPositiveRatioMeasure") { Definition = "The tolerance for the time of the time/current-curve in [%] valid for currents above TimeToleranceLimit1."},
			new SingleValuePropertyType("TimeToleranceLimit1", "IfcElectricCurrentMeasure") { Definition = "The current limit in [x In] limiting the application of TimeTolerance1, if any. If the value is set to 0, the value of the TimeTolerance1 is valid for the whole time/current-curve."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitCurrentAdjustment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AdjustmentValueType", new [] { "LIST", "RANGE" } ) { Definition = "The type of adjustment value that is applied through the property set. This determines the properties that should be asserted (see below)."},
			new SingleValuePropertyType("AdjustmentDesignation", "IfcLabel") { Definition = "The desgnation on the device for the adjustment."},
			new SingleValuePropertyType("CurrentAdjustmentRange", "IfcElectricCurrentMeasure") { Definition = "Upper and lower current adjustment limits for an AdjustmentValueType = RANGE. Note that this property should not have a value for an  AdjustmentValueType = LIST."},
			new SingleValuePropertyType("CurrentAdjustmentRangeStepValue", "IfcElectricCurrentMeasure") { Definition = "Step value of current adjustment for an AdjustmentValueType = RANGE. Note that this property should not have a value for an  AdjustmentValueType = LIST."},
			new SingleValuePropertyType("CurrentAdjustmentValues", "IfcElectricCurrentMeasure") { Definition = "A list of current adjustment values that may be applied to a tripping unit for an AdjustmentValueType = LIST. A minimum of 1 and a maximum of 16 adjustment values may be specified. Note that this property should not have a value for an  AdjustmentValueType = RANGE."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTimeAdjustment", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AdjustmentValueType", new [] { "LIST", "RANGE" } ) { Definition = "The type of adjustment value that is applied through the property set. This determines the properties that should be asserted (see below)."},
			new EnumerationPropertyType("I2TApplicability", new [] { "LIST", "RANGE" } ) { Definition = "The applicability of the time adjustment related to the tripping function."},
			new SingleValuePropertyType("AdjustmentDesignation", "IfcLabel") { Definition = "The desgnation on the device for the adjustment."},
			new SingleValuePropertyType("CurrentForTimeDelay", "IfcTimeMeasure") { Definition = "The tripping current in [x In] at which the time delay is specified. A value for this property should only be asserted for time delay of L-function, and for I2t of the S and G function."},
			new SingleValuePropertyType("TimeAdjustmentRange", "IfcTimeMeasure") { Definition = "Upper and lower time adjustment limits for an AdjustmentValueType = RANGE. Note that this property should not have a value for an  AdjustmentValueType = LIST."},
			new SingleValuePropertyType("TimeAdjustmentRangeStepValue", "IfcTimeMeasure") { Definition = "Step value of time adjustment for an AdjustmentValueType = RANGE. Note that this property should not have a value for an  AdjustmentValueType = LIST."},
			new SingleValuePropertyType("TimeAdjustmentValues", "IfcTimeMeasure") { Definition = "A list of time adjustment values that may be applied to a tripping unit for an AdjustmentValueType = LIST. A minimum of 1 and a maximum of 16 adjustment values may be specified. Note that this property should not have a value for an  AdjustmentValueType = RANGE."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AtexVerified", "IfcBoolean") { Definition = "An indication whether the tripping_unit is verified to be applied in EX-environment or not."},
			new SingleValuePropertyType("LimitingTerminalSize", "IfcAreaMeasure") { Definition = "The maximum terminal size capacity of the device."},
			new SingleValuePropertyType("OldDevice", "IfcBoolean") { Definition = "Indication whether the protection_ unit is out-dated or not. If not out-dated, the device is still for sale."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("Standard", "IfcLabel") { Definition = "The designation of the standard applicable for the definition of the object used.\n\nThe designation of the standard applicable for the definition of the characteristics of the\ntripping_unit."},
			new SingleValuePropertyType("UseInDiscrimination", "IfcBoolean") { Definition = "An indication whether the time/current tripping information can be applied in a discrimination\nanalysis or not."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTypeElectroMagnetic", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectroMagneticTrippingUnitType", new [] { "OL", "TMP_BM", "TMP_MP", "TMP_SC", "TMP_STD", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of electric magnetic tripping unit  from which that required may be selected. These cover overload, none special, short circuit, motor protection and bi-metal tripping."},
			new SingleValuePropertyType("CurveDesignation", "IfcLabel") { Definition = "The designation of the trippingcurve given by the manufacturer. For a MCB the designation should be in accordance with the designations given in IEC 60898."},
			new SingleValuePropertyType("DefinedTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The ambient temperature at which the thermal current/time-curve associated with this protection device is defined."},
			new SingleValuePropertyType("I1", "IfcReal") { Definition = "The (thermal) lower testing current limit in [x In], indicating that for currents lower than I1, the tripping time shall be longer than the associated tripping time, T2."},
			new SingleValuePropertyType("I2", "IfcReal") { Definition = "The (thermal) upper testing current limit in [x In], indicating that for currents larger than I2, the tripping time shall be shorter than the associated tripping time, T2."},
			new SingleValuePropertyType("I4", "IfcReal") { Definition = "The lower electromagnetic testing current limit in [x In], indicating that for currents lower than I4, the tripping time shall be longer than the associated tripping time, T5, i.e. the device shall not trip instantaneous."},
			new SingleValuePropertyType("I5", "IfcReal") { Definition = "The upper electromagnetic testing current limit in [x In], indicating that for currents larger than I5, the tripping time shall be shorter than or equal to the associated tripping time, T5, i.e. the device shall trip instantaneous."},
			new SingleValuePropertyType("T2", "IfcTimeMeasure") { Definition = "The (thermal) testing time in [s] associated with the testing currents I1 and I2."},
			new SingleValuePropertyType("T5", "IfcTimeMeasure") { Definition = "The electromagnetic testing time in [s] associated with the testing currents I4 and I5, i.e. electromagnetic tripping time"},
			new SingleValuePropertyType("TemperatureFactor", "IfcRatioMeasure") { Definition = "The correction factor (typically measured as %/deg K) for adjusting the thermal current/time to an ambient temperature different from the value given by the defined temperature."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTypeElectronic", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectronicTrippingUnitType", new [] { "EP_BM", "EP_MP", "EP_SC", "EP_STD", "EP_TIMEDELAYED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of electronic tripping unit  from which that required may be selected."},
			new SingleValuePropertyType("N_Protection_100", "IfcBoolean") { Definition = "An indication whether the electronic tripping unit is tripping if the current in the N conductor is more than 100% of that of the phase conductors. The property is only asserted if the property N_Protection is asserted."},
			new SingleValuePropertyType("N_Protection_50", "IfcBoolean") { Definition = "An indication whether the electronic tripping unit is tripping if the current in the N conductor is more than 50% of that of the phase conductors. The property is only asserted if the property N_Protection is asserted."},
			new SingleValuePropertyType("N_Protection_Select", "IfcBoolean") { Definition = "An indication whether the use of the N_Protection can be selected by the user or not. If both the properties N_Protection_50 and N_Protection_100 are asserted, the value of N_Protection_Select property is set to TRUE. The property is only asserted if the property N_Protection is asserted."},
			new SingleValuePropertyType("N_Protection", "IfcBoolean") { Definition = "An indication whether the electronic tripping unit has separate protection for the N conductor, or not."},
			new SingleValuePropertyType("NominalCurrents", "IfcElectricCurrentMeasure") { Definition = "A set of values providing information on available modules (chips) for setting the nominal current of the protective device.\n\nA set of values providing information on available modules (chips) for setting the nominal current of the protective device. If\nthe set is empty, no nominal current modules are available for the tripping unit."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTypeResidualCurrent", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TrippingUnitReleaseCurrent", new [] { "10", "100", "1000", "30", "300", "500", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The value of tripping or residual current for which the device has the possibility to be equipped. The values are given in mA."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTrippingUnitTypeThermal", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ThermalTrippingUnitType", new [] { "DIAZED", "MINIZED", "NEOZED", "NH_FUSE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of thermal tripping unit  from which that required may be selected."},
			new SingleValuePropertyType("CurveDesignation", "IfcLabel") { Definition = "The designation of the trippingcurve given by the manufacturer. For a MCB the designation should be in accordance with the designations given in IEC 60898."},
			new SingleValuePropertyType("DefinedTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The ambient temperature at which the thermal current/time-curve associated with this protection device is defined."},
			new SingleValuePropertyType("I1", "IfcReal") { Definition = "The (thermal) lower testing current limit in [x In], indicating that for currents lower than I1, the tripping time shall be longer than the associated tripping time, T2."},
			new SingleValuePropertyType("I2", "IfcReal") { Definition = "The (thermal) upper testing current limit in [x In], indicating that for currents larger than I2, the tripping time shall be shorter than the associated tripping time, T2."},
			new SingleValuePropertyType("T2", "IfcTimeMeasure") { Definition = "The (thermal) testing time in [s] associated with the testing currents I1 and I2."},
			new SingleValuePropertyType("TemperatureFactor", "IfcRatioMeasure") { Definition = "The correction factor (typically measured as %/deg K) for adjusting the thermal current/time to an ambient temperature different from the value given by the defined temperature."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeAntiArcingDevice", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GroundingType", "IfcLabel") { Definition = "The type of grounding connection."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeCircuitBreaker", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VoltageLevel", new [] { "U1000", "U230", "U400", "U440", "U525", "U690", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("ICM60947", "IfcElectricCurrentMeasure") { Definition = "The making capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICS60947", "IfcElectricCurrentMeasure") { Definition = "The service breaking capacity in [A] for an object tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICU60947", "IfcElectricCurrentMeasure") { Definition = "The ultimate breaking capacity in [A] for an object tested in accordance with the IEC 60947 series."},
			new SingleValuePropertyType("ICW60947", "IfcElectricCurrentMeasure") { Definition = "The thermal withstand current in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. The value shall be related to 1 s."},
			new SingleValuePropertyType("PerformanceClasses", "IfcLabel") { Definition = "A set of designations of performance classes for the breaker unit for which the data of this instance is valid.\n\nA set of designations of performance classes for the breaker unit for which the data of this instance is valid. A breaker unit being a circuit breaker may be\nconstructed for different levels of breaking capacities. A maximum of 7 different\nperformance classes may be provided. Examples of performance classes that may be specified include B, C, N, S, H, L, V."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeEarthLeakageCircuitBreaker", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EarthFailureDeviceType", new [] { "STANDARD", "TIMEDELAYED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of circuit breaker from which that required may be selected where:Standard: Device that operates without a time delay.\nTimeDelayed: Device that operates after a time delay."},
			new SingleValuePropertyType("Sensitivity", "IfcElectricCurrentMeasure") { Definition = "Sensitivity.\n\nThe rated rms value of the vector sum of the instantaneous currents flowing in the main circuits of the device which causes the device to operate under specified conditions. (IEC 61008-1)."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeFuseDisconnector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FuseDisconnectorType", new [] { "ENGINEPROTECTIONDEVICE", "FUSEDSWITCH", "HRC", "OVERLOADPROTECTIONDEVICE", "SWITCHDISCONNECTORFUSE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of fuse disconnector from which that required may be selected where:EngineProtectionDevice: A fuse whose characteristic is specifically designed for the protection of a motor or generator.\nFuseSwitchDisconnector: A switch disconnector in which a fuse link or a fuse carrier with fuse link forms the moving contact,\nHRC: A standard fuse (High Rupturing Capacity)\nOverloadProtectionDevice: A device that disconnects the supply when the operating conditions in an electrically undamaged circuit causes an overcurrent,\nSemiconductorFuse: A fuse whose characteristic is specifically designed for the protection of sem-conductor devices.\nSwitchDisconnectorFuse: A switch disconnector in which one or more poles have a fuse in series in a composite unit."},
			new EnumerationPropertyType("VoltageLevel", new [] { "U1000", "U230", "U400", "U440", "U525", "U690", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration."},
			new SingleValuePropertyType("ArcExtinctionType", "IfcLabel") { Definition = "Type of arc extinction used."},
			new SingleValuePropertyType("BreakingCapacity", "IfcElectricCurrentMeasure") { Definition = "The current that a fuse, circuit breaker, or other electrical apparatus is able to interrupt without being destroyed or causing an electric arc with unacceptable duration."},
			new SingleValuePropertyType("IC60269", "IfcElectricCurrentMeasure") { Definition = "The breaking capacity in [A] for fuses in accordance with the IEC 60269 series."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured."},
			new SingleValuePropertyType("NominalFrequency", "IfcFrequencyMeasure") { Definition = "The nominal frequency of the supply."},
			new SingleValuePropertyType("NumberOfPhases", "IfcCountMeasure") { Definition = "Number of phases that the equipment operates on."},
			new SingleValuePropertyType("NumberOfPoles", "IfcCountMeasure") { Definition = "Number of poles that the object would affect.\n\nNumber of poles that the equipment would affect."},
			new SingleValuePropertyType("PowerLoss", "IfcPowerMeasure") { Definition = "The power loss in [W].\n\nThe power loss in [W] of the fuse when the nominal current is flowing through the fuse."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("ReferenceEnvironmentTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ideal temperature range."},
			new SingleValuePropertyType("TransformationRatio", "IfcRatioMeasure") { Definition = "The ratio of the actual primary current or voltage to the actual secondary current or voltage."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeResidualCurrentCircuitBreaker", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Sensitivity", "IfcElectricCurrentMeasure") { Definition = "Sensitivity.\n\nCurrent leakage to an unwanted leading path during normal operation (IEC 151-14-49)."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeResidualCurrentSwitch", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Sensitivity", "IfcElectricCurrentMeasure") { Definition = "Sensitivity.\n\nCurrent leakage to an unwanted leading path during normal operation (IEC 151-14-49)."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeSparkGap", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SparkGapType", new [] { "AIRSPARKGAP", "GASFILLEDSPARKGAP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of Spark gap."},
			new SingleValuePropertyType("BreakdownVoltageTolerance", "IfcElectricVoltageMeasure") { Definition = "Nominal value of the spark gap breakdown voltage tolerance."},
			new SingleValuePropertyType("Capacitance", "IfcElectricCapacitanceMeasure") { Definition = "Maximum value of the capacitance between the electrodes at specified frequency and temperature."},
			new SingleValuePropertyType("CurrentRMS", "IfcElectricCurrentMeasure") { Definition = "Maximum rms (root mean square) current of an electric-electronic or electromechanical component at specified ambient temperature."},
			new SingleValuePropertyType("PowerDissipation", "IfcPowerMeasure") { Definition = "Permissible power which may be dissipated continuously, at specified conditions."},
			new SingleValuePropertyType("Resistivity", "IfcElectricResistanceMeasure") { Definition = "Electrical resistivity of a rock or soil (Ohm-m)."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDevice", "IfcProtectiveDeviceType", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProtectiveDeviceTypeVaristor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("VaristorType", new [] { "METALOXIDE", "ZINCOXIDE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of varistor  from which that required may be selected."},
			new SingleValuePropertyType("CharacteristicFunction", "IfcText") { Definition = "The characteristic function to show the relationship between varistor current and voltage."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Pset_ProvisionForVoid", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcPositiveLengthMeasure") { Definition = "The depth of the object."},
			new SingleValuePropertyType("Diameter", "IfcPositiveLengthMeasure") { Definition = "The Diameter of the object."},
			new SingleValuePropertyType("Height", "IfcPositiveLengthMeasure") { Definition = "Characteristic height\n\nVertical extension in elevation. Only provided if the Shape property is set to \"rectangle\"."},
			new SingleValuePropertyType("System", "IfcLabel") { Definition = "The building service system that requires the provision for voids, e.g. 'Air Conditioning', 'Plumbing', 'Electro', etc.\n\nReference to the building service is done using the Name attribute."},
			new SingleValuePropertyType("VoidShape", "IfcLabel") { Definition = "The shape form of the provision for void, the minimum set of agreed values includes 'Rectangle', 'Round', and 'Undefined'."},
			new SingleValuePropertyType("Width", "IfcPositiveLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcBuildingElementProxy", "IfcVirtualElement" });
		yield return new PropertySetInfo("Pset_PumpOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BaseType", new [] { "BASE", "FRAME", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines general types of pump bases.FRAME: Frame.\nBASE: Base.\nNONE: There is no pump base, such as an inline pump.\nOTHER: Other type of pump base."},
			new EnumerationPropertyType("DriveConnectionType", new [] { "BELTDRIVE", "COUPLING", "DIRECTDRIVE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The way the pump drive mechanism is connected to the pump.DIRECTDRIVE: Direct drive.\nBELTDRIVE: Belt drive.\nCOUPLING: Coupling.\nOTHER: Other type of drive connection."},
			new SingleValuePropertyType("ImpellerDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of object - used to scale performance of geometrically similar objects."} },
				new [] { "IfcPump" });
		yield return new PropertySetInfo("Pset_PumpPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Flowrate", "IfcTimeSeries") { Definition = "The flowrate of the fluid."},
			new SingleValuePropertyType("MechanicalEfficiency", "IfcTimeSeries") { Definition = "The objects operational mechanical efficiency."},
			new SingleValuePropertyType("OverallEfficiency", "IfcTimeSeries") { Definition = "Total efficiency of object.\n\nThe pump and motor overall operational efficiency."},
			new SingleValuePropertyType("PowerHistory", "IfcTimeSeries") { Definition = "The actual power consumption of the pump."},
			new SingleValuePropertyType("PressureRise", "IfcTimeSeries") { Definition = "The developed pressure."},
			new SingleValuePropertyType("RotationSpeed", "IfcTimeSeries") { Definition = "Pump rotational speed."} },
				new [] { "IfcPump" });
		yield return new PropertySetInfo("Pset_PumpTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ConnectionSize", "IfcPositiveLengthMeasure") { Definition = "The connection size of the object.\n\nThe connection to and from the pump."},
			new SingleValuePropertyType("FlowRateRange", "IfcMassFlowRateMeasure") { Definition = "Allowable range of volume of fluid being pumped against the resistance specified."},
			new SingleValuePropertyType("FlowResistanceRange", "IfcPressureMeasure") { Definition = "Allowable range of frictional resistance against which the fluid is being pumped."},
			new SingleValuePropertyType("NetPositiveSuctionHead", "IfcPressureMeasure") { Definition = "Minimum liquid pressure at the pump inlet to prevent cavitation."},
			new SingleValuePropertyType("NominalRotationSpeed", "IfcRotationalFrequencyMeasure") { Definition = "Rotational speed of the object under nominal conditions.\n\nPump rotational speed under nominal conditions."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("TemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "Allowable maximum and minimum temperature.\n\nAllowable operational range of the fluid temperature."} },
				new [] { "IfcPump", "IfcPumpType" });
		yield return new PropertySetInfo("Pset_QuayCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("QuaySectionType", new [] { "CLOSED", "OPEN" } ) { Definition = "Whether the structure presents a solid/closed barrier to the passage of water or is open."},
			new SingleValuePropertyType("BentSpacing", "IfcLengthMeasure") { Definition = "Bent (upright) spacing"},
			new SingleValuePropertyType("Elevation", "IfcLengthMeasure") { Definition = "Elevation of the entity"},
			new SingleValuePropertyType("StructuralType", "IfcLabel") { Definition = "Structural type of the object"} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_QuayDesignCriteria", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EquipmentLoading", "IfcForceMeasure") { Definition = "Loading from equipment"},
			new SingleValuePropertyType("ExtremeHighWaterLevel", "IfcLengthMeasure") { Definition = "Extreme high water level"},
			new SingleValuePropertyType("ExtremeLowWaterLevel", "IfcLengthMeasure") { Definition = "Extreme low water level"},
			new SingleValuePropertyType("FlowLoading", "IfcForceMeasure") { Definition = "Flow loading force"},
			new SingleValuePropertyType("HighWaterLevel", "IfcLengthMeasure") { Definition = "High water level"},
			new SingleValuePropertyType("LowWaterLevel", "IfcLengthMeasure") { Definition = "Low water level"},
			new SingleValuePropertyType("ShipLoading", "IfcForceMeasure") { Definition = "Ship loading force"},
			new SingleValuePropertyType("UniformlyDistributedLoad", "IfcForceMeasure") { Definition = "Uniformly Distributed Load"},
			new SingleValuePropertyType("WaveLoading", "IfcForceMeasure") { Definition = "Wave loading force"} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_RadiiKerbStone", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CurveShape", new [] { "EXTERNAL", "INTERNAL" } ) { Definition = "Shape according to CurveShapeEnum"},
			new SingleValuePropertyType("Radius", "IfcPositiveLengthMeasure") { Definition = "The radius of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcKerb", "IfcKerbType" });
		yield return new PropertySetInfo("Pset_RailingCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Diameter", "IfcPositiveLengthMeasure") { Definition = "The Diameter of the object.\n\nSpecifically handrail of the railing."},
			new SingleValuePropertyType("Height", "IfcPositiveLengthMeasure") { Definition = "Characteristic height\n\nIt is the upper height of the railing above the floor or stair.\nThe size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcRailing", "IfcRailingType" });
		yield return new PropertySetInfo("Pset_RailTypeBlade", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BladeRadius", "IfcPositiveLengthMeasure") { Definition = "The radius of the blade bend defined as design parameter."},
			new SingleValuePropertyType("IsArticulatedBlade", "IfcBoolean") { Definition = "Indicates whether the blade is articulated or not."},
			new SingleValuePropertyType("IsFallbackBlade", "IfcBoolean") { Definition = "Indicates whether the blade always returns to the same position as a trailable turnout or not."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcRail", "IfcRailType" });
		yield return new PropertySetInfo("Pset_RailTypeCheckRail", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CheckRailType", new [] { "TYPE_33C1", "TYPE_40C1", "TYPE_47C1", "TYPE_CR3_60U", "TYPE_R260", "TYPE_R320CR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of the check rail. Check rail types enumerated in this property are defined based on EN 13674."},
			new SingleValuePropertyType("InstallationPlan", "IfcExternalReference") { Definition = "Reference to external information source about installation or construction plan of the element."} },
				new [] { "IfcRail", "IfcRailType" });
		yield return new PropertySetInfo("Pset_RailTypeGuardRail", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("GuardRailConnection", new [] { "FISHPLATE", "NONE", "WELD", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates how the guard rail is connected along its length, when the fasteners are not explicitly modelled."},
			new EnumerationPropertyType("GuardRailType", new [] { "GUARDRAILANDSPOTSLEEPERS", "GUARDRAILSONLY", "SPOTSLEEPERSONLY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of the guard rail."},
			new EnumerationPropertyType("PositionInTrack", new [] { "LEFT", "MIDDLE", "RIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the relative position of the element in track, which lies to the left or right as facing in the direction of increasing stationing values."} },
				new [] { "IfcRail", "IfcRailType" });
		yield return new PropertySetInfo("Pset_RailTypeRail", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DrillOnRail", new [] { "BOTHENDS", "NONE", "ONEEND", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates if the manufactured rail is drilled at its extremities or not. It can have holes on one, both or none of its extremities."},
			new EnumerationPropertyType("PositionInTrack", new [] { "LEFT", "MIDDLE", "RIGHT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the relative position of the element in track, which lies to the left or right as facing in the direction of increasing stationing values."},
			new EnumerationPropertyType("RailCondition", new [] { "NEWRAIL", "REGENERATEDRAIL", "REUSEDRAIL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Assessment of the condition of the rail at point of installation."},
			new EnumerationPropertyType("RailDeliveryState", new [] { "HEATTREATMENT", "HOTROLLING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The delivery state of rail, which indicates the final treatment at the end in manufacturing."},
			new EnumerationPropertyType("RailElementaryLength", new [] { "100M", "108M", "120M", "12M", "144M", "18M", "24M", "25M", "27M", "30M", "36M", "400M", "48M", "54M", "60M", "6M", "72M", "75M", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The standardised length of rail supplied from the manufacturer."},
			new SingleValuePropertyType("InstallationPlan", "IfcExternalReference") { Definition = "Reference to external information source about installation or construction plan of the element."},
			new SingleValuePropertyType("IsStainless", "IfcBoolean") { Definition = "Indicates whether the rail is stainless or not."},
			new SingleValuePropertyType("MinimumTensileStrength", "IfcForceMeasure") { Definition = "Indicates the minimum tensile strength."},
			new SingleValuePropertyType("TechnicalStandard", "IfcExternalReference") { Definition = "The technical standard which the element should comply with."} },
				new [] { "IfcRail", "IfcRailType" });
		yield return new PropertySetInfo("Pset_RailTypeStockRail", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InstallationPlan", "IfcExternalReference") { Definition = "Reference to external information source about installation or construction plan of the element."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("StockRailRadius", "IfcPositiveLengthMeasure") { Definition = "The radius of the stock rail bend defined as design parameter."} },
				new [] { "IfcRail", "IfcRailType" });
		yield return new PropertySetInfo("Pset_RailwayBalise", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RailwayBaliseType", new [] { "ACTIVEBALISE", "PASSIVEBALISE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of the railway balise."},
			new SingleValuePropertyType("DetectionRange", "IfcPositiveLengthMeasure") { Definition = "The detection range of the equipment."},
			new SingleValuePropertyType("FailureInformation", "IfcText") { Definition = "The information for failure description."},
			new SingleValuePropertyType("InformationLength", "IfcInteger") { Definition = "Indicates supported bytes of the data Information, e.g.127 bytes."},
			new SingleValuePropertyType("IP_Code", "IfcLabel") { Definition = "IP Code, the International Protection Marking, IEC 60529), classifies and rates the degree of protection provided against intrusion."},
			new SingleValuePropertyType("NominalHeight", "IfcNonNegativeLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWeight", "IfcMassMeasure") { Definition = "Nominal weight of the object."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("OperationalTemperatureRange", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature range in which the device operates normally.\n\nAllowable operation ambient air temperature range."},
			new SingleValuePropertyType("TransmissionRate", "IfcIntegerCountRateMeasure") { Definition = "Data transmission rate between the device and the receiving module in bits per second."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_RailwayCableCarrier", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfCrossedTracks", "IfcCountMeasure") { Definition = "Number of tracks crossed in cable route."} },
				new [] { "IfcCableCarrierSegment" });
		yield return new PropertySetInfo("Pset_RailwayLevelCrossing", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasRailDrainage", "IfcBoolean") { Definition = "Indicates whether there is rail drainage or not."},
			new SingleValuePropertyType("IsAccessibleByVehicle", "IfcBoolean") { Definition = "Indicates whether the element is accessible by a vehicle or not."},
			new SingleValuePropertyType("IsExceptionalTransportRoute", "IfcBoolean") { Definition = "Indicates whether the route is suitable for exceptional transport (load, structure gauge, road),"},
			new SingleValuePropertyType("IsPrivateOwner", "IfcBoolean") { Definition = "Indicates if the owner of the crossed road is private or not."},
			new SingleValuePropertyType("IsSecuredBySignalingSystem", "IfcBoolean") { Definition = "Indicates whether the level crossing is secured by a signalling system or not."},
			new SingleValuePropertyType("PermissiblePavementLoad", "IfcMassMeasure") { Definition = "Permissible traffic load on the pavement."} },
				new [] { "IfcFacilityPartCommon" });
		yield return new PropertySetInfo("Pset_RailwaySignalAspect", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AppliesToTrainCategory", new [] { "FREIGHT", "PASSENGER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Sign information relative to train category, e.g. freight, passenger."},
			new SingleValuePropertyType("SignalAspectSymbol", "IfcExternalReference") { Definition = "Content which is shown on the signal or sign, e.g. text, number, arrow or icon."},
			new SingleValuePropertyType("SignalAspectType", "IfcLabel") { Definition = "The type of aspect, e.g. 2-display aspect for distant signal, 3-display aspect for block signal."},
			new SingleValuePropertyType("SignLegend", "IfcText") { Definition = "Text information written on the signal or sign."} },
				new [] { "IfcSign", "IfcSignal", "IfcSignalType", "IfcSignType" });
		yield return new PropertySetInfo("Pset_RailwaySignalOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ApproachSpeed", "IfcLinearVelocityMeasure") { Definition = "The design speed of trains approaching the signal if different from the line speed."},
			new SingleValuePropertyType("DistanceToStopMark", "IfcPositiveLengthMeasure") { Definition = "Distance from the signal to the nearest stop mark at a platform."},
			new SingleValuePropertyType("HandSignallingProhibited", "IfcBoolean") { Definition = "Indicates if hand signalling is prohibited in case of any failure."},
			new SingleValuePropertyType("HinderingObstaclesDescription", "IfcText") { Definition = "Description of obstacles that hinder the visibility for the staff in the station."},
			new SingleValuePropertyType("LimitedClearances", "IfcText") { Definition = "Special conditions for placing the signal post telephone: tunnels, bridges, viaducts."},
			new SingleValuePropertyType("NumberOfLampsNotUsed", "IfcCountMeasure") { Definition = "Number of lamps which are not needed and blanked out (sealed)."},
			new SingleValuePropertyType("RequiresBannerSignal", "IfcBoolean") { Definition = "Indicates whether a banner repeater signal is required."},
			new SingleValuePropertyType("RequiresOLEMesh", "IfcBoolean") { Definition = "Indicates whether an OLE mesh is required to protect the signal or maintainer."},
			new SingleValuePropertyType("RequiresSafetyHandrail", "IfcBoolean") { Definition = "Indicates whether a safety handrail is required."},
			new SingleValuePropertyType("SignalPostTelephoneID", "IfcIdentifier") { Definition = "The identifier of the signal post telephone attached to the signal."},
			new SingleValuePropertyType("SignalPostTelephoneType", "IfcLabel") { Definition = "Indicates the type of the signal post telephone, e.g. locked, direct line, dial phone."},
			new SingleValuePropertyType("SignalWalkwayLength", "IfcPositiveLengthMeasure") { Definition = "Indicates the length of the walkway from signal to signal post telephone."},
			new SingleValuePropertyType("SpecialPositionArrangement", "IfcLabel") { Definition = "Type of special position at which the signal is placed."} },
				new [] { "IfcSignal" });
		yield return new PropertySetInfo("Pset_RailwaySignalSighting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SignalSightingAchievableDistance", "IfcPositiveLengthMeasure") { Definition = "Reading distance of the signal, which is achievable with the help of mitigation works."},
			new SingleValuePropertyType("SignalSightingAvailableDistance", "IfcPositiveLengthMeasure") { Definition = "Reading distance of the signal without having any mitigation works."},
			new SingleValuePropertyType("SignalSightingCombinedWithRepeater", "IfcPositiveLengthMeasure") { Definition = "Combined reading distance for the signal and any associated repeaters."},
			new SingleValuePropertyType("SignalSightingMinimum", "IfcPositiveLengthMeasure") { Definition = "Minimal distance in which the signal has to be readable."},
			new SingleValuePropertyType("SignalSightingPreferred", "IfcPositiveLengthMeasure") { Definition = "Preferred distance in which the signal shall be readable."},
			new SingleValuePropertyType("SignalSightingRouteIndicator", "IfcPositiveLengthMeasure") { Definition = "Required reading distance for the route indicator."},
			new SingleValuePropertyType("SignalViewingMinimumInFront", "IfcPositiveLengthMeasure") { Definition = "Smallest distance where the signal has to be readable (for train very close to the signal)."} },
				new [] { "IfcSign", "IfcSignal" });
		yield return new PropertySetInfo("Pset_RailwaySignalType", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RailwaySignalType", new [] { "APPROACHSIGNAL", "BLOCKSIGNAL", "DISTANTSIGNAL", "HOMESIGNAL", "HUMPAUXILIARYSIGANL", "HUMPSIGNAL", "LEVELCROSSINGSIGNAL", "OBSTRUCTIONSIGNAL", "REPEATINGSIGNAL", "SHUNTINGSIGNAL", "STARTINGSIGNAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The type of railway signal, e.g. home signal, starting signal, shunting signal, level crossing signal."},
			new EnumerationPropertyType("SignalIndicatorType", new [] { "DEPARTUREINDICATOR", "DEPARTUREROUTEINDICATOR", "DERAILINDICATOR", "ROLLINGSTOCKSTOPINDICATOR", "ROUTEINDICATOR", "SHUNTINGINDICATOR", "SWITCHINDICATOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of the indicators on a signal, e.g. route indicator, speed restriction indicator etc."},
			new SingleValuePropertyType("HasConductorRailGuardBoard", "IfcBoolean") { Definition = "Indicates if a guard board is provided."},
			new SingleValuePropertyType("HotStripOrientation", "IfcLabel") { Definition = "Position of the hot strip, which indicates the direction of the focus of the light beam and is given in terms like \"left upper quadrant (LUQ)\" or \"5 o'clock\"."},
			new SingleValuePropertyType("IsHighType", "IfcBoolean") { Definition = "Indicates if the signal is high (TRUE) or dwarf (ground mounted) (FALSE)."},
			new SingleValuePropertyType("LensDiffuserOrientation", "IfcLabel") { Definition = "Orientation the lens diffuser has to have, which indicates the direction of the lens diffuser and is given in terms like \"left upper quadrant (LUQ)\" or \"5 o'clock\"."},
			new SingleValuePropertyType("LensDiffuserType", "IfcLabel") { Definition = "Type of the lens diffuser the signal is equipped with."},
			new SingleValuePropertyType("MaximumDisplayDistance", "IfcPositiveLengthMeasure") { Definition = "The maximum distance that can be displayed. The value relates only to the signal type, not to the circumstances at a special position."},
			new SingleValuePropertyType("NumberOfLamps", "IfcCountMeasure") { Definition = "Number of lamps the signal is composed of."},
			new SingleValuePropertyType("RequiredDisplayDistance", "IfcPositiveLengthMeasure") { Definition = "The required distance that has to be displayed. The value relates only to the signal type, not to the circumstances at a special position."},
			new SingleValuePropertyType("SignalHoodLength", "IfcPositiveLengthMeasure") { Definition = "Nominal length of the signal hood, which is the signal lamp cover against glaring sun."},
			new SingleValuePropertyType("SignalMessage", "IfcText") { Definition = "All possible message available at this signal, e.g. \"3/4- display automatic blocking\"."} },
				new [] { "IfcSignal", "IfcSignalType" });
		yield return new PropertySetInfo("Pset_RailwayTrackStructurePart", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TrackSupportingStructure", new [] { "BRIDGE", "CONCRETE", "ONSPECIALFOUNDATION", "PAVEMENT", "SUBGRADELAYER", "TRANSITIONSECTION", "TUNNEL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the supporting structure for track part."},
			new SingleValuePropertyType("HasBallastTrack", "IfcBoolean") { Definition = "Indicates whether the track has ballast or not."},
			new SingleValuePropertyType("HasCWR", "IfcBoolean") { Definition = "Indicates if the track has continuous welded rails."},
			new SingleValuePropertyType("IsSunExposed", "IfcBoolean") { Definition = "Indicates if the object is in exposed position to sunshine."} },
				new [] { "IfcRailwayPart", "IfcRailwayPart", "IfcRailwayPart", "IfcRailwayPart", "IfcRailwayPart" });
		yield return new PropertySetInfo("Pset_RampCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\n\nHere it defines an exit ramp in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. Set to (TRUE) if this object is rated as handicap accessible according to the local building codes, otherwise (FALSE). It is giving according to the requirements of the national building code."},
			new SingleValuePropertyType("HasNonSkidSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("RequiredHeadroom", "IfcPositiveLengthMeasure") { Definition = "Required headroom clearance for the passageway according to the applicable building code or additional requirements."},
			new SingleValuePropertyType("RequiredSlope", "IfcPlaneAngleMeasure") { Definition = "Required sloping angle of the object  - relative to horizontal (0.0 degrees).\nRequired maximum slope for the passageway according to the applicable building code or additional requirements."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcRamp", "IfcRampType" });
		yield return new PropertySetInfo("Pset_RampFlightCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("ClearWidth", "IfcPositiveLengthMeasure") { Definition = "The clear width.\n\nMeasured as the clear space for accessibility and egress; it is a measured distance between the two handrails or the wall and a handrail on a ramp."},
			new SingleValuePropertyType("CounterSlope", "IfcPlaneAngleMeasure") { Definition = "Sloping angle of the object, measured perpendicular to the slope  - relative to horizontal (0.0 degrees).\nActual maximum slope for the passageway measured perpendicular to the direction of travel according to the current design. The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.\nNote: new property in IFC4."},
			new SingleValuePropertyType("Headroom", "IfcPositiveLengthMeasure") { Definition = "Actual headroom clearance for the passageway according to the current design.\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("Slope", "IfcPlaneAngleMeasure") { Definition = "Slope angle - relative to horizontal (0.0 degrees).The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only."} },
				new [] { "IfcRampFlight", "IfcRampFlightType" });
		yield return new PropertySetInfo("Pset_ReferentCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NameFormat", "IfcLabel") { Definition = "Specifies a reference to or description of the formatting or encoding of the Name attribute of the IfcReferent occurrence."} },
				new [] { "IfcReferent" });
		yield return new PropertySetInfo("Pset_ReinforcementBarCountOfIndependentFooting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "The Description of the object."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead.\n\nA descriptive label for the general reinforcement type."},
			new SingleValuePropertyType("XDirectionLowerBarCount", "IfcCountMeasure") { Definition = "The number of bars with X direction lower bar."},
			new SingleValuePropertyType("XDirectionUpperBarCount", "IfcCountMeasure") { Definition = "The number of bars with X direction upper bar."},
			new SingleValuePropertyType("YDirectionLowerBarCount", "IfcCountMeasure") { Definition = "The number of bars with Y direction lower bar."},
			new SingleValuePropertyType("YDirectionUpperBarCount", "IfcCountMeasure") { Definition = "The number of bars with Y direction upper bar."} },
				new [] { "IfcFooting", "IfcFootingType" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfBeam", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "The Description of the object."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SpacingBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the spacing bar."},
			new SingleValuePropertyType("StirrupBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the stirrup bar."} },
				new [] { "IfcBeam", "IfcBeamType" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfColumn", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ReinforcementBarType", new [] { "RING", "SPIRAL", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type of the reinforcement bar."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "The Description of the object."},
			new SingleValuePropertyType("HoopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the hoop bar."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("XDirectionTieHoopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The X direction pitch length of the tie hoop."},
			new SingleValuePropertyType("XDirectionTieHoopCount", "IfcCountMeasure") { Definition = "The number of bars with X direction tie hoop bars."},
			new SingleValuePropertyType("YDirectionTieHoopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The Y direction pitch length of the tie hoop."},
			new SingleValuePropertyType("YDirectionTieHoopCount", "IfcCountMeasure") { Definition = "The number of bars with Y direction tie hoop bars."} },
				new [] { "IfcColumn", "IfcColumnType" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfContinuousFooting", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossingLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the crossing lower bar."},
			new SingleValuePropertyType("CrossingUpperBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the crossing upper bar."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "The Description of the object."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcFooting", "IfcFootingType" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfSlab", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Description", "IfcText") { Definition = "The Description of the object."},
			new SingleValuePropertyType("LongInsideCenterLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside center lower bar."},
			new SingleValuePropertyType("LongInsideCenterTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside center top bar."},
			new SingleValuePropertyType("LongInsideEndLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside end lower bar."},
			new SingleValuePropertyType("LongInsideEndTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long inside end top bar."},
			new SingleValuePropertyType("LongOutsideLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long outside lower bar."},
			new SingleValuePropertyType("LongOutsideTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the long outside top bar."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("ShortInsideCenterLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside center lower bar."},
			new SingleValuePropertyType("ShortInsideCenterTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside center top bar."},
			new SingleValuePropertyType("ShortInsideEndLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside end lower bar."},
			new SingleValuePropertyType("ShortInsideEndTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short inside end top bar."},
			new SingleValuePropertyType("ShortOutsideLowerBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short outside lower bar."},
			new SingleValuePropertyType("ShortOutsideTopBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the short outside top bar."} },
				new [] { "IfcSlab", "IfcSlabType" });
		yield return new PropertySetInfo("Pset_ReinforcementBarPitchOfWall", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BarAllocationType", new [] { "ALTERNATE", "DOUBLE", "SINGLE", "OTHER", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Defines the type of the reinforcement bar allocation."},
			new SingleValuePropertyType("Description", "IfcText") { Definition = "The Description of the object."},
			new SingleValuePropertyType("HorizontalBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the horizontal bar."},
			new SingleValuePropertyType("Reference", "IfcLabel") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SpacingBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the spacing bar."},
			new SingleValuePropertyType("VerticalBarPitch", "IfcPositiveLengthMeasure") { Definition = "The pitch length of the vertical bar."} },
				new [] { "IfcWall", "IfcWallType" });
		yield return new PropertySetInfo("Pset_RepairOccurrence", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MeanTimeToRepair", "IfcTimeMeasure") { Definition = "Mean time to repair."},
			new SingleValuePropertyType("RepairContent", "IfcText") { Definition = "Content of repair, reason and nature can be given, e.g. display faults, communication failure, display exchange."},
			new SingleValuePropertyType("RepairDate", "IfcDate") { Definition = "Date on which the last repair is done on the asset."} },
				new [] { "IfcAsset", "IfcElement", "IfcSystem" });
		yield return new PropertySetInfo("Pset_RevetmentCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Elevation", "IfcLengthMeasure") { Definition = "Elevation of the entity"},
			new SingleValuePropertyType("StructuralType", "IfcLabel") { Definition = "Structural type of the object"} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_Risk", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MitigatedRiskConsequence", new [] { "CONSIDERABLE", "CRITICAL", "HIGH", "INSIGNIFICANT", "LOW", "MODERATE", "SOME", "VERYHIGH", "VERYLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the consequence of the hazard given the planned mitigation."},
			new EnumerationPropertyType("MitigatedRiskLikelihood", new [] { "CONSIDERABLE", "CRITICAL", "HIGH", "INSIGNIFICANT", "LOW", "MODERATE", "SOME", "VERYHIGH", "VERYLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the likelihood of the hazard given the planned mitigation."},
			new EnumerationPropertyType("MitigatedRiskSignificance", new [] { "CONSIDERABLE", "CRITICAL", "HIGH", "INSIGNIFICANT", "LOW", "MODERATE", "SOME", "VERYHIGH", "VERYLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the significance of the risk given the mitigation of likelihood and consequence."},
			new EnumerationPropertyType("RiskType", new [] { "ASBESTOSEFFECTS", "ASPHIXIATION", "BUSINESS", "BUSINESSISSUES", "CHEMICALEFFECTS", "COMMERICALISSUES", "CONFINEMENT", "CRUSHING", "DROWNINGANDFLOODING", "ELECTRICSHOCK", "ENVIRONMENTALISSUES", "EVENT", "FALL", "FALLEDGE", "FALLFRAGILEMATERIAL", "FALLSCAFFOLD", "FALL_LADDER", "FIRE_EXPLOSION", "HANDLING", "HAZARD", "HAZARDOUSDUST", "HEALTHANDSAFETY", "HEALTHISSUE", "INSURANCE", "INSURANCE_ISSUES", "LEADEFFECTS", "MACHINERYGUARDING", "MATERIALEFFECTS", "MATERIALSHANDLING", "MECHANICALEFFECTS", "MECHANICAL_LIFTING", "MOBILE_ELEVATEDWORKPLATFORM", "NOISE_EFFECTS", "OPERATIONALISSUES", "OTHERISSUES", "OVERTURINGPLANT", "PUBLICPROTECTIONISSUES", "SAFETYISSUE", "SILICADUST", "SLIPTRIP", "SOCIALISSUES", "STRUCK", "STRUCKFALLINFOBJECT", "STRUCKVEHICLE", "TOOLUSAGE", "TRAPPED", "UNINTENDEDCOLLAPSE", "VIBRATION", "WELFAREISSUE", "WOODDUST", "WORKINGOVERHEAD", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of risk from which the type required may be set."},
			new EnumerationPropertyType("UnmitigatedRiskConsequence", new [] { "CONSIDERABLE", "CRITICAL", "HIGH", "INSIGNIFICANT", "LOW", "MODERATE", "SOME", "VERYHIGH", "VERYLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the consequence of the hazard prior to any specific mitigation."},
			new EnumerationPropertyType("UnmitigatedRiskLikelihood", new [] { "CONSIDERABLE", "CRITICAL", "HIGH", "INSIGNIFICANT", "LOW", "MODERATE", "SOME", "VERYHIGH", "VERYLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the likelihood of the hazard prior to any specific mitigation."},
			new EnumerationPropertyType("UnmitigatedRiskSignificance", new [] { "CONSIDERABLE", "CRITICAL", "HIGH", "INSIGNIFICANT", "LOW", "MODERATE", "SOME", "VERYHIGH", "VERYLOW", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the significance of the risk given the likelihood and consequence prior to any specific mitigation."},
			new SingleValuePropertyType("AssociatedActivity", "IfcLabel") { Definition = "An indication or link to any associated activity or process that may trigger the hazard. If used directly on an annotation or semantic object. for an alternative see group use encoding template"},
			new SingleValuePropertyType("AssociatedLocation", "IfcLabel") { Definition = "An indication or link to any associated location or space that may trigger the hazard. If used directly on an annotation or semantic object. for an alternative see group use encoding template"},
			new SingleValuePropertyType("AssociatedProduct", "IfcLabel") { Definition = "An indication or link to any associated product or material that may trigger the hazard. If used directly on an annotation or semantic object. for an alternative see group use encoding template"},
			new SingleValuePropertyType("MitigationPlanned", "IfcLabel") { Definition = "The planned (agreed and irrevocable) mitigation of the likelhood and consequences of the hazard."},
			new SingleValuePropertyType("MitigationProposed", "IfcLabel") { Definition = "Any proposed, but not yet agreed and irrevocable, mitigation of the likelhood and consequences of the hazard."},
			new SingleValuePropertyType("NatureOfRisk", "IfcLabel") { Definition = "A description of the generic nature of the context or hazard that might be encountered."},
			new SingleValuePropertyType("RiskAssessmentMethodology", "IfcLabel") { Definition = "An indication or link to the chosen risk assessment methodology, for example PAS1192-6 or a chosen ISO13100 annex."},
			new SingleValuePropertyType("RiskName", "IfcLabel") { Definition = "A locally unique identifier for the risk entry that can be used to track the development and mitigation of the risk throughout the project life cycle"} },
				new [] { "IfcGroup", "IfcProcess", "IfcProduct", "IfcTypeProcess", "IfcTypeProduct" });
		yield return new PropertySetInfo("Pset_RoadDesignCriteriaCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Crossfall", "IfcRatioMeasure") { Definition = "Specifies the nominal crossfall as a ratio measure (slope) at the location of the event."},
			new SingleValuePropertyType("DesignSpeed", "IfcLinearVelocityMeasure") { Definition = "Speed selected in designing a new road or in modernizing, strengthening or rehabilitating an existing road section, to determine the various geometric design features of the carriageway that allow a car to travel safely at that speed, under normal road surface and weather conditions.NOTE  Definition according to PIARC.\nNOTE  The design speed is not constant, but may vary depending on the conditions of relief (plain, hill, mountain)."},
			new SingleValuePropertyType("DesignTrafficVolume", "IfcCountMeasure") { Definition = "The traffic volume used for planning and design purposes specified as the number of vehicles per day . Typically given as AADT - Average Annual Daily Traffic"},
			new SingleValuePropertyType("DesignVehicleClass", "IfcLabel") { Definition = "A vehicle designator with content according to local standards."},
			new SingleValuePropertyType("LaneWidth", "IfcPositiveLengthMeasure") { Definition = "Standard nominal width of one trough lane."},
			new SingleValuePropertyType("NumberOfThroughLanes", "IfcCountMeasure") { Definition = "The total number of through lanes on the segment. This excludes auxiliary lanes, parking and turning lanes, acceleration/deceleration lanes, toll collection lanes, shoulders etc."},
			new SingleValuePropertyType("RoadDesignClass", "IfcLabel") { Definition = "A road design class designator with content according to local standards."} },
				new [] { "IfcFacilityPartCommon", "IfcFacilityPartCommon", "IfcFacilityPartCommon", "IfcRoad", "IfcRoadPart", "IfcRoadPart", "IfcRoadPart", "IfcRoadPart", "IfcRoadPart", "IfcRoadPart", "IfcRoadPart" });
		yield return new PropertySetInfo("Pset_RoadGuardElement", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsMoveable", "IfcBoolean") { Definition = "True if element is moveable."},
			new SingleValuePropertyType("IsTerminal", "IfcBoolean") { Definition = "True if element is a terminal. See class Terminal."},
			new SingleValuePropertyType("IsTransition", "IfcBoolean") { Definition = "True if element is a transition. See class Transition."},
			new SingleValuePropertyType("TerminalType", "IfcLabel") { Definition = "Specifies the kind of terminal if IsTerminal is true."} },
				new [] { "IfcRailing", "IfcRailingType", "IfcWall", "IfcWallType" });
		yield return new PropertySetInfo("Pset_RoadMarkingCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ApplicationMethod", "IfcText") { Definition = "State the application method used... e.g. spray, extruded"},
			new SingleValuePropertyType("DiagramNumber", "IfcLabel") { Definition = "A designator with content according to local standards, e.g. M25."},
			new SingleValuePropertyType("MaterialColour", "IfcLabel") { Definition = "Actual colour on the road marking material"},
			new SingleValuePropertyType("MaterialThickness", "IfcPositiveLengthMeasure") { Definition = "Nominal thickness of the applied material"},
			new SingleValuePropertyType("MaterialType", "IfcLabel") { Definition = "Material type used... e.g. paint, tape, thermoplastic, stone"},
			new SingleValuePropertyType("Structure", "IfcLabel") { Definition = "State if marking is Structured or not, and what type... e.g. Kamflex, Longflex, Dropflex"} },
				new [] { "IfcSurfaceFeature", "IfcSurfaceFeature", "IfcSurfaceFeature", "IfcSurfaceFeature" });
		yield return new PropertySetInfo("Pset_RoadSymbolsCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Text", "IfcText") { Definition = "Text content"},
			new SingleValuePropertyType("TypeDesignation", "IfcLabel") { Definition = "Type designator for the element. The content depends on local standards. Eg. 'Bull nose', 'Half batter', 'Dropper', 'Chamfer' etc"} },
				new [] { "IfcSurfaceFeature" });
		yield return new PropertySetInfo("Pset_RoofCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorption values)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcRoof", "IfcRoofType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeBath", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BathType", new [] { "DOMESTIC", "FOOT", "PLUNGE", "POOL", "SITZ", "SPA", "TREATMENT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration defines the types of bath that may be specified within the property set."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("HasGrabHandles", "IfcBoolean") { Definition = "Indicates whether the bath is fitted with handles that provide assistance to a bather in entering or leaving the bath."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeBidet", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Mounting", new [] { "BACKTOWALL", "COUNTERTOP", "PEDESTAL", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:-BackToWall:     A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal:   A floor mounted sanitary terminal that has an integral base\nCounterTop:     A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung:   A sanitary terminal cantilevered clear of the floor.Note that BackToWall, Pedestal and WallHung are allowable values for a bidet."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the object."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeCistern", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CisternHeight", new [] { "HIGHLEVEL", "LOWLEVEL", "NONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the height of the cistern or, if set to 'None' if the urinal has no cistern and is flushed using mains or high pressure water through a flushing valve."},
			new EnumerationPropertyType("FlushType", new [] { "LEVER", "PULL", "PUSH", "SENSOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_FlushTypeEnum defines the types of flushing mechanism that may be specified for cisterns and sanitary terminals where:-Lever:  Flushing is achieved by twisting a lever that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal.\nPull:   Flushing is achieved by pulling a handle or knob vertically upwards that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal.\nPush:   Flushing is achieved by pushing a button or plate that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal.\nSensor: Flush is activated through an automatic sensing mechanism."},
			new SingleValuePropertyType("CisternCapacity", "IfcVolumeMeasure") { Definition = "Volumetric capacity of the cistern"},
			new SingleValuePropertyType("FlushRate", "IfcVolumeMeasure") { Definition = "The minimum and maximum volume of water used at each flush. Where a single flush is used, the value of upper bound and lower bound should be equal. For a dual flush toilet, the lower bound should be used for the lesser flush rate and the upper bound for the greater flush rate. Where flush is achieved using mains pressure water through a flush valve, the value of upper and lower bound should be equal and should be the same as the flush rate property of the flush valve (see relevant valve property set). Alternatively, in this case, do not assert the flush rate property; refer to the flush rate of the flush valve."},
			new SingleValuePropertyType("IsAutomaticFlush", "IfcBoolean") { Definition = "Boolean value that determines if the cistern is flushed automatically either after each use or periodically (TRUE) or whether manual flushing is required (FALSE)."},
			new SingleValuePropertyType("IsSingleFlush", "IfcBoolean") { Definition = "Indicates whether the cistern is single flush = TRUE (i.e. the same amount of water is used for each and every flush) or dual flush = FALSE (i.e. the amount of water used for a flush may be selected by the user to be high or low depending on the waste material to be removed)."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Colour", "IfcLabel") { Definition = "Colour of this object."},
			new SingleValuePropertyType("NominalDepth", "IfcNonNegativeLengthMeasure") { Definition = "Nominal Depth of the object"},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeSanitaryFountain", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FountainType", new [] { "DRINKINGWATER", "EYEWASH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the type of fountain from the enumerated list of types where:-DrinkingWater:  Sanitary appliance that provides a low pressure jet of drinking water.\nEyewash:    Waste water appliance, usually installed in work places where there is a risk of injury to eyes by solid particles or dangerous liquids, with which the user can wash the eyes without touching them."},
			new EnumerationPropertyType("Mounting", new [] { "BACKTOWALL", "COUNTERTOP", "PEDESTAL", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:-BackToWall:     A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal:   A floor mounted sanitary terminal that has an integral base\nCounterTop:     A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung:   A sanitary terminal cantilevered clear of the floor.Note that BackToWall, Pedestal and WallHung are allowable values for a bidet."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeShower", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ShowerType", new [] { "DRENCH", "INDIVIDUAL", "TUNNEL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the type of shower from the enumerated list of types where:-Drench:     Shower that rapidly gives a thorough soaking in an emergency.\nIndividual:     Shower unit that is typically enclosed and is for the use of one person at a time.\nTunnel:     Shower that has a succession of shower heads or spreaders that operate simultaneously along its length."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("HasTray", "IfcBoolean") { Definition = "Indicates whether the shower has a separate receptacle that catches the water in a shower and directs it to a waste outlet."},
			new SingleValuePropertyType("ShowerHeadDescription", "IfcText") { Definition = "A description of the shower head(s) that emit the spray of water."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeSink", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Mounting", new [] { "BACKTOWALL", "COUNTERTOP", "PEDESTAL", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:-BackToWall:     A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal:   A floor mounted sanitary terminal that has an integral base\nCounterTop:     A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung:   A sanitary terminal cantilevered clear of the floor.Note that BackToWall, Pedestal and WallHung are allowable values for a bidet."},
			new EnumerationPropertyType("SinkType", new [] { "BELFAST", "BUCKET", "CLEANERS", "COMBINATION_DOUBLE", "COMBINATION_LEFT", "COMBINATION_RIGHT", "DRIP", "LABORATORY", "LONDON", "PLASTER", "POT", "RINSING", "SHELF", "VEGETABLEPREPARATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the type of sink from the enumerated list of types where:-Belfast:    Deep sink that has a plain edge and a weir overflow\n.\nBucket:     Sink at low level, with protected front edge, that facilitates filling and emptying buckets, usually with a hinged grid on which to stand them.\nCleaners:    Sink, usually fixed at normal height (900mm), with protected front edge.\nCombination_Left:    Sink with integral drainer on left hand side\n.\nCombination_Right: Sink with integral drainer on right hand side\n.\nCombination_Double:     Sink with integral drainer on both sides\n.\nDrip: Small sink that catches drips or flow from a faucet\n.\nLaboratory: Sink, of acid resisting material, with a top edge shaped to facilitate fixing to the underside of a desktop\n.\nLondon: Deep sink that has a plain edge and no overflow\n.\nPlaster: Sink with sediment receiver to prevent waste plaster passing into drains\n.\nPot: Large metal sink, with a standing waste, for washing cooking utensils\n.\nRinsing: Metal sink in which water can be heated and culinary utensils and tableware immersed at high temperature that destroys most harmful bacteria and allows subsequent self drying.\n.\nShelf: Ceramic sink with an integral back shelf through which water fittings are mounted\n.\nVegetablePreparation:   Large metal sink, with a standing waste, for washing and preparing vegetables\n."},
			new SingleValuePropertyType("Colour", "IfcLabel") { Definition = "Colour of this object."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("MountingOffset", "IfcLengthMeasure") { Definition = "For counter top mounted basins the vertical offset between the top of the sink and the counter top."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeToiletPan", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PanMounting", new [] { "BACKTOWALL", "COUNTERTOP", "PEDESTAL", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:-BackToWall:     A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections.\nPedestal:   A floor mounted sanitary terminal that has an integral base.\nCounterTop:     A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung:   A sanitary terminal cantilevered clear of the floor."},
			new EnumerationPropertyType("ToiletPanType", new [] { "SIPHONIC", "SQUAT", "WASHDOWN", "WASHOUT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_ToiletPanTypeEnum defines the types of toilet pan that may be specified within the property set Pset_Toilet:-Siphonic:   Toilet pan in which excrement is removed by siphonage induced by the flushing water.\nSquat:  Toilet pan with an elongated bowl installed with its top edge at or near floor level, so that the user has to squat.\nWashDown:   Toilet pan in which excrement is removed by the momentum of the flushing water.\nWashOut:    A washdown toilet pan in which excrement falls first into a shallow water filled bowl."},
			new EnumerationPropertyType("ToiletType", new [] { "BEDPANWASHER", "CHEMICAL", "CLOSECOUPLED", "LOOSECOUPLED", "SLOPHOPPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that defines the types of toilet (water closet) arrangements that may be specified where:-BedPanWasher: Enclosed soil appliance in which bedpans and urinal bottles are emptied and cleansed.\nChemical: Portable receptacle or soil appliance that receives and retains excrement in either an integral or a separate container, in which it is chemically treated and from which it has to be emptied periodically.\nCloseCoupled:   Toilet suite in which a flushing cistern is connected directly to the water closet pan.\nLooseCoupled:   Toilet arrangement in which a flushing cistern is connected to the water closet pan through a flushing pipe.\nSlopHopper:     Hopper shaped soil appliance with a flushing rim and outlet similar to those of a toilet pan, into which human excrement is emptied for disposal."},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the object."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeUrinal", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Mounting", new [] { "BACKTOWALL", "COUNTERTOP", "PEDESTAL", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:-BackToWall:     A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal:   A floor mounted sanitary terminal that has an integral base\nCounterTop:     A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung:   A sanitary terminal cantilevered clear of the floor.Note that BackToWall, Pedestal and WallHung are allowable values for a bidet."},
			new EnumerationPropertyType("UrinalType", new [] { "BOWL", "SLAB", "STALL", "TROUGH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Selection of the type of urinal from the enumerated list of types where:-Bowl: Individual wall mounted urinal.\nSlab: Urinal that consists of a slab or sheet fixed to a wall and down which urinal flows into a floor channel.\nStall: Floor mounted urinal that consists of an elliptically shaped sanitary stall fixed to a wall and down which urine flows into a floor channel.\nTrough: Wall mounted urinal of elongated rectangular shape on plan, that can be used by more than one person at a time."},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the object."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SanitaryTerminalTypeWashHandBasin", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Mounting", new [] { "BACKTOWALL", "COUNTERTOP", "PEDESTAL", "WALLHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:-BackToWall:     A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections\nPedestal:   A floor mounted sanitary terminal that has an integral base\nCounterTop:     A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification.\nWallHung:   A sanitary terminal cantilevered clear of the floor.Note that BackToWall, Pedestal and WallHung are allowable values for a bidet."},
			new EnumerationPropertyType("WashHandBasinType", new [] { "DENTALCUSPIDOR", "HANDRINSE", "HOSPITAL", "TIPUP", "WASHFOUNTAIN", "WASHINGTROUGH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of wash hand basin that may be specified where:DentalCuspidor: Waste water appliance that receives and flushes away mouth washings\n.\nHandRinse: Wall mounted wash hand basin that has an overall width of 500mm or less\n.\nHospital: Wash hand basin that has a smooth easy clean surface without tapholes or overflow slot for use where hygiene is of prime importance.Tipup: Wash hand basin mounted on pivots so that it can be emptied by tilting.Vanity: Wash hand basin for installation into a horizontal surface.Washfountain: Wash hand basin that is circular, semi-circular or polygonal on plan, at which more than one person can wash at the same time.\nWashingTrough: Wash hand basin of elongated rectangular shape in plan, at which more than one person can wash at the same time."},
			new SingleValuePropertyType("DrainSize", "IfcPositiveLengthMeasure") { Definition = "The size of the drain outlet connection from the object."},
			new SingleValuePropertyType("MountingOffset", "IfcLengthMeasure") { Definition = "For counter top mounted basins the vertical offset between the top of the sink and the counter top."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Pset_SectioningDevice", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SectioningDeviceType", new [] { "DIFFERENT_POWER_SUPPLY_SEPARATION", "PHASE_SEPARATION", "SAME_FEEDING_SECTION_SEPARATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the sectioning device type."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_SectionInsulator", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ACResistance", "IfcElectricResistanceMeasure") { Definition = "The resistance under AC."},
			new SingleValuePropertyType("IsArcSuppressing", "IfcBoolean") { Definition = "Indicates whether the element has the ability to suppress an arc."},
			new SingleValuePropertyType("NumberOfWires", "IfcCountMeasure") { Definition = "The number of wires used in the element."},
			new SingleValuePropertyType("TensileStrength", "IfcForceMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_SensorPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Direction", "IfcTimeSeries") { Definition = "Indicates sensed direction for sensors capturing magnitude and direction measured from True North (0 degrees) in a clockwise direction."},
			new SingleValuePropertyType("Quality", "IfcTimeSeries") { Definition = "Indicates the quality of measurement or failure condition, which may be further qualified by the Status.  True: measured values are considered reliable; False: measured values are considered not reliable (i.e. a fault has been detected); Unknown: reliability of values is uncertain."},
			new SingleValuePropertyType("Status", "IfcTimeSeries") { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Value", "IfcTimeSeries") { Definition = "The expected range and default value.\n\nIndicates sensed values over time which may be recorded continuously or only when changed beyond a particular deadband.  The range of possible values is defined by the SetPoint property of the corresponding sensor type property set."} },
				new [] { "IfcSensor" });
		yield return new PropertySetInfo("Pset_SensorTypeCO2Sensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointCO2Concentration", "IfcPositiveRatioMeasure") { Definition = "The carbon dioxide concentration to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeConductanceSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointConductance", "IfcElectricConductanceMeasure") { Definition = "The fill level value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeContactSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointContact", "IfcInteger") { Definition = "The contact value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeEarthquakeSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DataCollectionType", new [] { "AUTOMATICANDCONTINUOUS", "MANUALANDSINGLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type or manner of data collection."},
			new EnumerationPropertyType("EarthquakeSensorType", new [] { "2DIRECTION", "3DIRECTION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of earthquake sensor or accelerometer."},
			new EnumerationPropertyType("SerialInterfaceType", new [] { "RS_232", "RS_422", "RS_485", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of serial interface used by the device."},
			new SingleValuePropertyType("DegreeOfLinearity", "IfcRatioMeasure") { Definition = "Indicates the degree of linearity of the earthquake sensor or accelerometer."},
			new SingleValuePropertyType("DynamicRange", "IfcLinearVelocityMeasure") { Definition = "Indicates the dynamic range of the sensor."},
			new SingleValuePropertyType("EarthquakeSensorRange", "IfcLinearVelocityMeasure") { Definition = "Indicates the measuring range of the earthquake sensor or accelerometer."},
			new SingleValuePropertyType("FullScaleOutput", "IfcLinearVelocityMeasure") { Definition = "Indicates the full scale output of the earthquake sensor or accelerometer."},
			new SingleValuePropertyType("LinearVelocityResolution", "IfcLinearVelocityMeasure") { Definition = "Indicates the resolution of the detected linear velocity."},
			new SingleValuePropertyType("MarginOfError", "IfcRatioMeasure") { Definition = "Indicates the margin of error of the measurement."},
			new SingleValuePropertyType("SamplingFrequency", "IfcFrequencyMeasure") { Definition = "Indicates the sampling frequency of the device."},
			new SingleValuePropertyType("TransverseSensitivityRatio", "IfcRatioMeasure") { Definition = "Indicates the transverse sensitivity ratio of the sensor."},
			new SingleValuePropertyType("WorkingState", "IfcLabel") { Definition = "Indicates the working state of device or system."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeFireSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccuracyOfFireSensor", "IfcThermodynamicTemperatureMeasure") { Definition = "The accuracy of the sensor."},
			new SingleValuePropertyType("FireSensorSetPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature value to be sensed to indicate the presence of fire."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeFlowSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointFlow", "IfcVolumetricFlowRateMeasure") { Definition = "The volumetric flow value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeForeignObjectDetectionSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ForeignObjectDetectionSensorType", new [] { "DUALPOWERNETWORK", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of foreign object detection sensor."},
			new EnumerationPropertyType("SerialInterfaceType", new [] { "RS_232", "RS_422", "RS_485", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of serial interface used by the device."},
			new SingleValuePropertyType("WorkingState", "IfcLabel") { Definition = "Indicates the working state of device or system."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeFrostSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointFrost", "IfcPositiveRatioMeasure") { Definition = "The detection of frost."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeGasSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The area that is covered by the object.\n\nFloor area (typically measured as a circle whose center is at the location of the sensor)."},
			new SingleValuePropertyType("GasDetected", "IfcLabel") { Definition = "Identification of the gas that is being detected, according to chemical formula.  For example, carbon monoxide is 'CO', carbon dioxide is 'CO2', oxygen is 'O2'."},
			new SingleValuePropertyType("SetPointConcentration", "IfcPositiveRatioMeasure") { Definition = "The concentration to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeHeatSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The area that is covered by the object.\n\nFloor area (typically measured as a circle whose center is at the location of the sensor)."},
			new SingleValuePropertyType("RateOfTemperatureRise", "IfcTemperatureRateOfChangeMeasure") { Definition = "The rate of temperature rise that is to be sensed as being hazardous."},
			new SingleValuePropertyType("SetPointTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeHumiditySensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointHumidity", "IfcPositiveRatioMeasure") { Definition = "The humidity value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeIdentifierSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointIdentifier", "IfcIdentifier") { Definition = "The detected tag value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeIonConcentrationSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointIonConcentration", "IfcIonConcentrationMeasure") { Definition = "The ion concentration value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."},
			new SingleValuePropertyType("SubstanceDetected", "IfcLabel") { Definition = "Identification of the substance that is being detected according to chemical formula.  For example, calcium carbonate is 'CaCO3'"} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeLevelSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointLevel", "IfcPositiveLengthMeasure") { Definition = "The fill level value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeLightSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointIlluminance", "IfcIlluminanceMeasure") { Definition = "The illuminance value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeMoistureSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointMoisture", "IfcPositiveRatioMeasure") { Definition = "The moisture value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeMovementSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MovementSensingType", new [] { "PHOTOELECTRICCELL", "PRESSUREPAD", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that identifies the type of movement sensing mechanism."},
			new SingleValuePropertyType("SetPointMovement", "IfcPositiveRatioMeasure") { Definition = "The movement to be sensed."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypePHSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointPH", "IfcPHMeasure") { Definition = "The fill level value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypePressureSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsSwitch", "IfcBoolean") { Definition = "Identifies if the sensor also functions as a switch at the set point (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("SetPointPressure", "IfcPressureMeasure") { Definition = "The pressure value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeRadiationSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointRadiation", "IfcPowerMeasure") { Definition = "The radiation power value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeRadioactivitySensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointRadioactivity", "IfcRadioActivityMeasure") { Definition = "The radioactivity value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeRainSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DataCollectionType", new [] { "AUTOMATICANDCONTINUOUS", "MANUALANDSINGLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type or manner of data collection."},
			new EnumerationPropertyType("RainSensorType", new [] { "MICROWAVE", "PIEZOELECTRIC", "TIPPINGBUCKET", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of rain sensor or gauge."},
			new EnumerationPropertyType("SerialInterfaceType", new [] { "RS_232", "RS_422", "RS_485", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of serial interface used by the device."},
			new SingleValuePropertyType("LengthMeasureResolution", "IfcLengthMeasure") { Definition = "Indicates the resolution for length measure of the device."},
			new SingleValuePropertyType("MarginOfError", "IfcRatioMeasure") { Definition = "Indicates the margin of error of the measurement."},
			new SingleValuePropertyType("RainMeasureRange", "IfcLengthMeasure") { Definition = "Indicates the measuring range of rain gauge."},
			new SingleValuePropertyType("SamplingFrequency", "IfcFrequencyMeasure") { Definition = "Indicates the sampling frequency of the device."},
			new SingleValuePropertyType("WorkingState", "IfcLabel") { Definition = "Indicates the working state of device or system."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeSmokeSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverageArea", "IfcAreaMeasure") { Definition = "The area that is covered by the object.\n\nFloor area (typically measured as a circle whose center is at the location of the sensor)."},
			new SingleValuePropertyType("HasBuiltInAlarm", "IfcBoolean") { Definition = "Indicates whether the smoke sensor is included as an element within a smoke alarm/sensor unit (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SetPointConcentration", "IfcPositiveRatioMeasure") { Definition = "The concentration to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeSnowSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DataCollectionType", new [] { "AUTOMATICANDCONTINUOUS", "MANUALANDSINGLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type or manner of data collection."},
			new EnumerationPropertyType("ImageShootingMode", new [] { "AUTOMATIC", "MANUAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type or manner of snow depth meter image shooting."},
			new EnumerationPropertyType("SerialInterfaceType", new [] { "RS_232", "RS_422", "RS_485", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of serial interface used by the device."},
			new EnumerationPropertyType("SnowSensorType", new [] { "LASERIRRADIATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of snow depth meter."},
			new SingleValuePropertyType("ImageResolution", "IfcLabel") { Definition = "Indicates the image resolution of snow depth meter."},
			new SingleValuePropertyType("LengthMeasureResolution", "IfcLengthMeasure") { Definition = "Indicates the resolution for length measure of the device."},
			new SingleValuePropertyType("MarginOfError", "IfcRatioMeasure") { Definition = "Indicates the margin of error of the measurement."},
			new SingleValuePropertyType("SamplingFrequency", "IfcFrequencyMeasure") { Definition = "Indicates the sampling frequency of the device."},
			new SingleValuePropertyType("SnowSensorMeasureRange", "IfcLengthMeasure") { Definition = "Indicates the measuring range of snow depth meter."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeSoundSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointSound", "IfcSoundPressureMeasure") { Definition = "The sound pressure value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeTemperatureSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TemperatureSensorType", new [] { "HIGHLIMIT", "LOWLIMIT", "OPERATINGTEMPERATURE", "OUTSIDETEMPERATURE", "ROOMTEMPERATURE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that Identifies the types of temperature sensor that can be specified."},
			new SingleValuePropertyType("SetPointTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeTurnoutClosureSensor", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DetectionRange", "IfcPositiveLengthMeasure") { Definition = "The detection range of the equipment."},
			new SingleValuePropertyType("IndicationRodMovementRange", "IfcPositiveLengthMeasure") { Definition = "Indicates the range of indication rod movement."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_SensorTypeWindSensor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DataCollectionType", new [] { "AUTOMATICANDCONTINUOUS", "MANUALANDSINGLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type or manner of data collection."},
			new EnumerationPropertyType("SerialInterfaceType", new [] { "RS_232", "RS_422", "RS_485", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of serial interface used by the device."},
			new EnumerationPropertyType("WindSensorType", new [] { "CUP", "HOTWIRE", "LASERDOPPLER", "PLATE", "SONIC", "TUBE", "WINDMILL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration that Identifies the types of wind sensors that can be specified."},
			new SingleValuePropertyType("DampingRatio", "IfcRatioMeasure") { Definition = "Indicates the damping ratio of the device."},
			new SingleValuePropertyType("LinearVelocityResolution", "IfcLinearVelocityMeasure") { Definition = "Indicates the resolution of the detected linear velocity."},
			new SingleValuePropertyType("MarginOfError", "IfcRatioMeasure") { Definition = "Indicates the margin of error of the measurement."},
			new SingleValuePropertyType("SamplingFrequency", "IfcFrequencyMeasure") { Definition = "Indicates the sampling frequency of the device."},
			new SingleValuePropertyType("SetPointSpeed", "IfcLinearVelocityMeasure") { Definition = "The wind speed value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value."},
			new SingleValuePropertyType("StartingWindSpeed", "IfcLinearVelocityMeasure") { Definition = "Indicates the starting wind speed of the wind sensor."},
			new SingleValuePropertyType("TimeConstant", "IfcTimeMeasure") { Definition = "The time constant of the sensor."},
			new SingleValuePropertyType("WindAngleRange", "IfcPlaneAngleMeasure") { Definition = "Indicates the wind angle range the sensor can monitor."},
			new SingleValuePropertyType("WindSpeedRange", "IfcLinearVelocityMeasure") { Definition = "Indicates the range of wind speed the sensor can monitor."},
			new SingleValuePropertyType("WorkingState", "IfcLabel") { Definition = "Indicates the working state of device or system."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Pset_ServiceLife", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MeanTimeBetweenFailure", "IfcDuration") { Definition = "The average time duration between instances of failure of a product."},
			new SingleValuePropertyType("ServiceLifeDuration", "IfcDuration") { Definition = "The length or duration of a service life.The lower bound indicates pessimistic service life, the upper bound indicates optimistic service life, and the setpoint indicates the typical service life."} },
				new [] { "IfcElement", "IfcElementType" });
		yield return new PropertySetInfo("Pset_ServiceLifeFactors", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DesignLevel", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of design level employed."},
			new SingleValuePropertyType("IndoorEnvironment", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the indoor environment (where appropriate)."},
			new SingleValuePropertyType("InUseConditions", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the conditions in which components are operating."},
			new SingleValuePropertyType("MaintenanceLevel", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the level or degree of maintenance applied to dcomponents."},
			new SingleValuePropertyType("OutdoorEnvironment", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the outdoor environment (where appropriate)"},
			new SingleValuePropertyType("QualityOfComponents", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the quality of components used."},
			new SingleValuePropertyType("WorkExecutionLevel", "IfcPositiveRatioMeasure") { Definition = "Adjustment of the service life resulting from the effect of the quality of work executed."} },
				new [] { "IfcSystem" });
		yield return new PropertySetInfo("Pset_ShadingDeviceCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ShadingDeviceType", new [] { "FIXED", "MOVABLE", "OVERHANG", "SIDEFIN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Specifies the type of shading device."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("MechanicalOperated", "IfcBoolean") { Definition = "Indication whether the element is operated machanically (TRUE) or not, i.e. manually  (FALSE).\n\nIndication whether the element is operated mechanically (TRUE) or not, i.e. manually (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("Roughness", "IfcLabel") { Definition = "A measure of the vertical deviations of the surface."},
			new SingleValuePropertyType("SolarReflectance", "IfcNormalisedRatioMeasure") { Definition = "(Rsol): The ratio of incident solar radiation that is reflected by a glazing system (also named ρe). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("SolarTransmittance", "IfcNormalisedRatioMeasure") { Definition = "The ratio of incident solar radiation that directly passes through a system (also named τe). Note the following equation Asol + Rsol + Tsol = 1"},
			new SingleValuePropertyType("SurfaceColour", "IfcLabel") { Definition = "The colour of the surface."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials).\n\nThermal transmittance coefficient (U-Value) of a material of a certain thickness for this element."},
			new SingleValuePropertyType("VisibleLightReflectance", "IfcNormalisedRatioMeasure") { Definition = "Fraction of the visible light that is reflected by the glazing at normal incidence. It is a value without unit."},
			new SingleValuePropertyType("VisibleLightTransmittance", "IfcNormalisedRatioMeasure") { Definition = "Fraction of the visible light that passes the object at normal incidence. It is a value without unit."} },
				new [] { "IfcShadingDevice", "IfcShadingDeviceType" });
		yield return new PropertySetInfo("Pset_ShadingDevicePHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Azimuth", "IfcTimeSeries") { Definition = "The azimuth of the outward normal for the outward or upward facing surface."},
			new SingleValuePropertyType("TiltAngle", "IfcTimeSeries") { Definition = "The angle of tilt defined in the plane perpendicular to the extrusion axis (X-Axis of the local placement). The angle shall be measured from the orientation of the Z-Axis in the local placement."} },
				new [] { "IfcShadingDevice" });
		yield return new PropertySetInfo("Pset_ShipLockCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CillLevelLowerHead", "IfcLengthMeasure") { Definition = "Height of the lower head cill level"},
			new SingleValuePropertyType("CillLevelUpperHead", "IfcLengthMeasure") { Definition = "Height of the upper head cill level"},
			new SingleValuePropertyType("WaterDeliverySystemType", "IfcLabel") { Definition = "Type of water delivery system"},
			new SingleValuePropertyType("WaterDeliveryValveType", "IfcLabel") { Definition = "Type of water delivery valve"} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_ShiplockComplex", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("LockChamberLevels", "IfcCountMeasure") { Definition = "Number of steps (chambers) in a lock line"},
			new SingleValuePropertyType("LockGrade", "IfcLabel") { Definition = "Operational grading of the ship lock complex"},
			new SingleValuePropertyType("LockLines", "IfcCountMeasure") { Definition = "Number of Parallel lock series"},
			new SingleValuePropertyType("LockMode", "IfcLabel") { Definition = "Type of lock system used."} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_ShiplockDesignCriteria", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DownstreamFloodWaterLevel", "IfcLengthMeasure") { Definition = "the design minimum upstream water level for the lock complex"},
			new SingleValuePropertyType("DownstreamMaintenanceWaterLevel", "IfcLengthMeasure") { Definition = "Design minimum upstream water level for the lock complex"},
			new SingleValuePropertyType("MaximumDownstreamNavigableWaterLevel", "IfcLengthMeasure") { Definition = "Design maximum downstream water level for the lock complex"},
			new SingleValuePropertyType("MaximumUpstreamNavigableWaterLevel", "IfcLengthMeasure") { Definition = "Design maximum upstream water level for the lock complex"},
			new SingleValuePropertyType("MinimumDownstreamNavigableWaterLevel", "IfcLengthMeasure") { Definition = "Design minimum downstream water level for the lock complex"},
			new SingleValuePropertyType("MinimumUpstreamNavigableWaterLevel", "IfcLengthMeasure") { Definition = "Design minimum upstream water level for the lock complex"},
			new SingleValuePropertyType("UpstreamFloodWaterLevel", "IfcLengthMeasure") { Definition = "Design maximum upstream water level for the lock complex"},
			new SingleValuePropertyType("UpstreamMaintenanceWaterLevel", "IfcLengthMeasure") { Definition = "Design maximum upstream water level for the lock complex"} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_ShipyardCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("PrimaryProductionType", "IfcLabel") { Definition = "Primary type of ship production of the facility"} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Pset_SignalFrame", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SignalIndicatorType", new [] { "DEPARTUREINDICATOR", "DEPARTUREROUTEINDICATOR", "DERAILINDICATOR", "ROLLINGSTOCKSTOPINDICATOR", "ROUTEINDICATOR", "SHUNTINGINDICATOR", "SWITCHINDICATOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of the indicators on a signal, e.g. route indicator, speed restriction indicator etc."},
			new SingleValuePropertyType("BackboardType", "IfcLabel") { Definition = "The type of the backboard of the signal frame."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("SignalFrameBackboardDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal diameter of the signal frame backboard."},
			new SingleValuePropertyType("SignalFrameBackboardHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the signal frame backboard."},
			new SingleValuePropertyType("SignalFrameType", "IfcLabel") { Definition = "Type of frame, e.g. main frame, route indicator, speed indicator, direction indicator, etc."} },
				new [] { "IfcSignal", "IfcSignalType" });
		yield return new PropertySetInfo("Pset_SignCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Category", "IfcLabel") { Definition = "Designation of the category into which the actors in the population belong."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("TactileMarking", "IfcBoolean") { Definition = "The kind of Tactile Marking of the element."} },
				new [] { "IfcSign", "IfcSignType" });
		yield return new PropertySetInfo("Pset_SiteCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BuildableArea", "IfcAreaMeasure") { Definition = "The area of site utilization expressed as a maximum value according to local building codes."},
			new SingleValuePropertyType("BuildingHeightLimit", "IfcPositiveLengthMeasure") { Definition = "Allowed maximum height of buildings on this site - according to local building codes."},
			new SingleValuePropertyType("FloorAreaRatio", "IfcPositiveRatioMeasure") { Definition = "The ratio of all floor areas to the buildable area as the maximum floor area utilization of the site as a maximum value according to local building codes."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SiteCoverageRatio", "IfcPositiveRatioMeasure") { Definition = "The ratio of the utilization,  TotalArea / BuildableArea, expressed as a maximum value. The ratio value may be used to derive BuildableArea."},
			new SingleValuePropertyType("TotalArea", "IfcAreaMeasure") { Definition = "Total planned area for the site. Used for programming the site space."} },
				new [] { "IfcSite" });
		yield return new PropertySetInfo("Pset_SiteWeather", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaxAmbientTemp", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximum ambient temperature of the site used as a basis of design"},
			new SingleValuePropertyType("MinAmbientTemp", "IfcThermodynamicTemperatureMeasure") { Definition = "Minimum ambient temperature of the site used as a basis of design"} },
				new [] { "IfcSite" });
		yield return new PropertySetInfo("Pset_SlabCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorption values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Compartmentation", "IfcBoolean") { Definition = "Indication whether the object is designed to serve as a fire compartmentation (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("PitchAngle", "IfcPlaneAngleMeasure") { Definition = "Angle of the slab to the horizontal when used as a component for the roof (specified as 0 degrees or not asserted for cases where the slab is not used as a roof component).The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence.  For geometry editing applications, like CAD: this value should be write-only."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface,\nIt is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcSlab", "IfcSlabType" });
		yield return new PropertySetInfo("Pset_SlabTypeTrackSlab", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("TechnicalStandard", "IfcExternalReference") { Definition = "The technical standard which the element should comply with."} },
				new [] { "IfcSlab", "IfcSlabType" });
		yield return new PropertySetInfo("Pset_SolarDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcSolarDevice", "IfcSolarDeviceType" });
		yield return new PropertySetInfo("Pset_SolidStratumCapacity", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CohesionBehaviour", "IfcPressureMeasure") { Definition = "Cohesive shear strength of a rock or soil that is independent of interparticle friction."},
			new SingleValuePropertyType("FrictionAngle", "IfcPlaneAngleMeasure") { Definition = "Friction angle is the tested inclination angle from horizontal."},
			new SingleValuePropertyType("FrictionBehaviour", "IfcPressureMeasure") { Definition = "Friction shear strength of a rock or soil that is dependent on interparticle friction."},
			new SingleValuePropertyType("GrainSize", "IfcPositiveLengthMeasure") { Definition = "Grain size diameter."},
			new SingleValuePropertyType("HydraulicConductivity", "IfcLinearVelocityMeasure") { Definition = "Hydraulic Conductivity (permeability) of soil for water, given with the K or Kf value in m/s"},
			new SingleValuePropertyType("LoadBearingCapacity", "IfcPlanarForceMeasure") { Definition = "Maximum load bearing capacity of the floor structure throughtout the storey as designed."},
			new SingleValuePropertyType("NValue", "IfcCountMeasure") { Definition = "Blow count from standard penetration testing, to ISO 22476-3, ASTM D1586[1] and Australian Standards AS 1289.6.3.1, which correlates to other engineering properties of soils."},
			new SingleValuePropertyType("PermeabilityBehaviour", "IfcRatioMeasure") { Definition = "Proportionality constant in Darcy's law which relates flow rate and viscosity to a pressure gradient applied to the porous media."},
			new SingleValuePropertyType("PoisonsRatio", "IfcRatioMeasure") { Definition = "Ratio of transverse contraction strain to longitudinal extension strain in the direction of stretching force."},
			new SingleValuePropertyType("PwaveVelocity", "IfcLinearVelocityMeasure") { Definition = "P-wave velocity of a rock or soil."},
			new SingleValuePropertyType("Resistivity", "IfcElectricResistanceMeasure") { Definition = "Electrical resistivity of a rock or soil (Ohm-m)."},
			new SingleValuePropertyType("SettlementBehaviour", "IfcPressureMeasure") { Definition = "Estimate of the settlement/compaction behaviour of the stratum."},
			new SingleValuePropertyType("SwaveVelocity", "IfcLinearVelocityMeasure") { Definition = "S-wave velocity of a rock or soil."} },
				new [] { "IfcGeotechnicalStratum" });
		yield return new PropertySetInfo("Pset_SolidStratumComposition", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CompositeFractions", new [] { "BOULDERS", "BOULDERS_WITH_COBBLES", "BOULDERS_WITH_FINER_SOILS", "CLAY", "CLAYEY_SILT", "COBBLES", "COBBLES_WITH_BOULDERS", "COBBLES_WITH_FINER_SOILS", "FILL", "GRAVEL", "GRAVELLY_SAND", "GRAVEL_WITH_CLAY_OR_SILT", "GRAVEL_WITH_COBBLES", "ORGANIC_CLAY", "ORGANIC_SILT", "SAND", "SANDY_CLAYEY_SILT", "SANDY_GRAVEL", "SANDY_GRAVELLY_CLAY", "SANDY_GRAVELLY_SILT", "SANDY_GRAVEL_WITH_COBBLES", "SANDY_PEAT", "SANDY_SILT", "SAND_WITH_CLAY_AND_SILT", "SILT", "SILTY_CLAY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Denomination into soil groups by composite fractions"},
			new SingleValuePropertyType("AirVolume", "IfcVolumeMeasure") { Definition = "Relative volume of air stratum constituents."},
			new SingleValuePropertyType("BouldersVolume", "IfcVolumeMeasure") { Definition = "Relative volume of boulders (typically larger than 200mm) stratum constituents."},
			new SingleValuePropertyType("ClayVolume", "IfcVolumeMeasure") { Definition = "Relative volume of clay (typically smaller than 0.002mm) stratum constituents."},
			new SingleValuePropertyType("CobblesVolume", "IfcVolumeMeasure") { Definition = "Relative volume of cobbles (typically larger than 63mm) stratum constituents."},
			new SingleValuePropertyType("ContaminantVolume", "IfcVolumeMeasure") { Definition = "Relative volume of contaminant stratum constituents."},
			new SingleValuePropertyType("FillVolume", "IfcVolumeMeasure") { Definition = "Relative volume of fill (controlled placement of anthropogenic soil) stratum constituents."},
			new SingleValuePropertyType("GravelVolume", "IfcVolumeMeasure") { Definition = "Relative volume of gravel (typically larger than 2mm) stratum constituents."},
			new SingleValuePropertyType("OrganicVolume", "IfcVolumeMeasure") { Definition = "Relative volume of organic (peat/humus) stratum constituents especially soil."},
			new SingleValuePropertyType("RockVolume", "IfcVolumeMeasure") { Definition = "Relative volume of rock stratum constituents."},
			new SingleValuePropertyType("SandVolume", "IfcVolumeMeasure") { Definition = "Relative volume of sand (typically smaller than 2mm) stratum constituents."},
			new SingleValuePropertyType("SiltVolume", "IfcVolumeMeasure") { Definition = "Relative volume of silt (typically smaller than 0.063mm) stratum constituents."},
			new SingleValuePropertyType("WaterVolume", "IfcVolumeMeasure") { Definition = "Relative volume of water stratum constituents."} },
				new [] { "IfcGeotechnicalStratum" });
		yield return new PropertySetInfo("Pset_SoundAttenuation", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SoundScale", new [] { "DBA", "DBB", "DBC", "NC", "NR" } ) { Definition = "The reference sound scale.DBA: Decibels in an A-weighted scale\nDBB: Decibels in an B-weighted scale\nDBC: Decibels in an C-weighted scale\nNC: Noise criteria\nNR: Noise rating"},
			new SingleValuePropertyType("SoundFrequency", "IfcFrequencyMeasure") { Definition = "List of nominal sound frequencies, correlated to the SoundPressure time series values (IfcTimeSeries.ListValues)"},
			new SingleValuePropertyType("SoundPressure", "IfcTimeSeries") { Definition = "A time series of sound pressure values measured in decibels at a reference pressure of 20 microPascals for the referenced octave band frequency.  Each value in IfcTimeSeries.ListValues is correlated to the sound frequency at the same position within SoundFrequencies."} },
				new [] { "IfcAnnotation" });
		yield return new PropertySetInfo("Pset_SoundGeneration", new IPropertyTypeInfo[] {
			new TableValuePropertyType("SoundCurve", "IfcFrequencyMeasure", "IfcSoundPowerMeasure") { Definition = "Sound curve.\n\nTable of sound frequencies and sound power measured in decibels at a reference power of 1 picowatt(10\\^(-12) watt) for the referenced octave band frequency."} },
				new [] { "IfcDistributionFlowElement", "IfcDistributionFlowElementType" });
		yield return new PropertySetInfo("Pset_SpaceAirHandlingDimensioning", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BoundaryAreaHeatLoss", "IfcHeatFluxDensityMeasure") { Definition = "Heat loss per unit area for the boundary object. This is a design input value for use in the absence of calculated load data."},
			new SingleValuePropertyType("CeilingRAPlenum", "IfcBoolean") { Definition = "Ceiling plenum used for return air or not. TRUE = Yes, FALSE = No."},
			new SingleValuePropertyType("CoolingDesignAirFlow", "IfcVolumetricFlowRateMeasure") { Definition = "The air flowrate required during the peak cooling conditions."},
			new SingleValuePropertyType("CoolingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Dry bulb temperature, usually for for cooling design."},
			new SingleValuePropertyType("CoolingRelativeHumidity", "IfcPositiveRatioMeasure") { Definition = "Inside relative humidity for cooling design."},
			new SingleValuePropertyType("DesignAirFlow", "IfcVolumetricFlowRateMeasure") { Definition = "Design air flow rate for the space."},
			new SingleValuePropertyType("HeatingDesignAirFlow", "IfcVolumetricFlowRateMeasure") { Definition = "The air flowrate required during the peak heating conditions, but could also be determined by minimum ventilation requirement or minimum air change requirements."},
			new SingleValuePropertyType("HeatingDryBulb", "IfcThermodynamicTemperatureMeasure") { Definition = "Dry bulb temperature for heating design."},
			new SingleValuePropertyType("HeatingRelativeHumidity", "IfcPositiveRatioMeasure") { Definition = "Inside relative humidity for heating design."},
			new SingleValuePropertyType("SensibleHeatGain", "IfcPowerMeasure") { Definition = "The  sensible heat or energy gained by the space during the peak conditions."},
			new SingleValuePropertyType("TotalHeatGain", "IfcPowerMeasure") { Definition = "The total (sensible+latent) amount of heat or energy gained by the space at the time of the space's peak cooling conditions."},
			new SingleValuePropertyType("TotalHeatLoss", "IfcPowerMeasure") { Definition = "The total amount of heat or energy lost by the space at the time of the space's peak heating conditions."},
			new SingleValuePropertyType("VentilationDesignAirFlow", "IfcVolumetricFlowRateMeasure") { Definition = "Ventilation outside air requirement for the space."} },
				new [] { "IfcSpatialElement", "IfcSpatialElementType" });
		yield return new PropertySetInfo("Pset_SpaceCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossPlannedArea", "IfcAreaMeasure") { Definition = "Total planned gross area of the spatial structure element. Used for programming the spatial structure element."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. Set to (TRUE) if this object is rated as handicap accessible according to the local building codes, otherwise (FALSE). It is giving according to the requirements of the national building code."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("NetPlannedArea", "IfcAreaMeasure") { Definition = "Total planned net area of the object. Used for programming the object."},
			new SingleValuePropertyType("PubliclyAccessible", "IfcBoolean") { Definition = "Indication whether this space (in case of e.g., a toilet) is designed to serve as a publicly accessible space, e.g., for a public toilet (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcSpatialElement", "IfcSpatialElementType" });
		yield return new PropertySetInfo("Pset_SpaceCoveringRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CeilingCovering", "IfcLabel") { Definition = "Label to indicate the material or finish of the space ceiling. The label is used for room book information and often displayed in room stamp.The material information is provided in absence of an IfcCovering (type=CEILING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("CeilingCoveringThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material layer(s) for the space ceiling.The thickness information is provided in absence of an IfcCovering (type=CEILING) object with own shape representation. In cases of inconsistency between the geometric parameters of an assigned IfcCovering and this attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("ConcealedCeiling", "IfcBoolean") { Definition = "Indication whether this space is designed to have a concealed flooring space (TRUE) or not (FALSE). A concealed ceiling space is normally meant to be the space between a slab and a ceiling."},
			new SingleValuePropertyType("ConcealedCeilingOffset", "IfcNonNegativeLengthMeasure") { Definition = "Distance between the upper floor slab and the suspended ceiling, often used for distribution systems. Often referred to as plenum."},
			new SingleValuePropertyType("ConcealedFlooring", "IfcBoolean") { Definition = "Indication whether this space is designed to have a concealed flooring space (TRUE) or not (FALSE). A concealed flooring space is normally meant to be the space beneath a raised floor."},
			new SingleValuePropertyType("ConcealedFlooringOffset", "IfcNonNegativeLengthMeasure") { Definition = "Distance between the floor slab and the floor covering, often used for cables and other installations. Often referred to as raised flooring."},
			new SingleValuePropertyType("FloorCovering", "IfcLabel") { Definition = "Label to indicate the material or finish of the space flooring. The label is used for room book information and often displayed in room stamp.The material information is provided in absence of an IfcCovering (type=FLOORING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("FloorCoveringThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material layer(s) for the space flooring.The thickness information is provided in absence of an IfcCovering (type=FLOORING) object with own shape representation. In cases of inconsistency between the geometric parameters of an assigned IfcCovering and this attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("Molding", "IfcLabel") { Definition = "Label to indicate the material or construction of the molding around the space ceiling. The label is used for room book information.The material information is provided in absence of an IfcCovering (type=MOLDING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("MoldingHeight", "IfcPositiveLengthMeasure") { Definition = "Height of the molding.The height information is provided in absence of an IfcCovering (type=MOLDING) object with own shape representation and material assignment. In case of inconsistency the height assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("SkirtingBoard", "IfcLabel") { Definition = "Label to indicate the material or construction of the skirting board around the space flooring. The label is used for room book information.The material information is provided in absence of an IfcCovering (type=SKIRTINGBOARD) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("SkirtingBoardHeight", "IfcPositiveLengthMeasure") { Definition = "Height of the skirting board.The height information is provided in absence of an IfcCovering (type=SKIRTINGBOARD) object with own shape representation and material assignment. In case of inconsistency the height assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("WallCovering", "IfcLabel") { Definition = "Label to indicate the material or finish of the space cladding. The label is used for room book information and often displayed in room stamp.The material information is provided in absence of an IfcCovering (type=CLADDING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence."},
			new SingleValuePropertyType("WallCoveringThickness", "IfcPositiveLengthMeasure") { Definition = "Thickness of the material layer(s) for the space cladding.The thickness information is provided in absence of an IfcCovering (type=CLADDING) object with own shape representation. In cases of inconsistency between the geometric parameters of an assigned IfcCovering and this attached property, the geometric parameters take precedence."} },
				new [] { "IfcSpatialElement", "IfcSpatialElementType" });
		yield return new PropertySetInfo("Pset_SpaceFireSafetyRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirPressurization", "IfcBoolean") { Definition = "Indication whether the space is required to have pressurized air (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\n\nHere whether the space (in case of e.g., a corridor) is designed to serve as an exit space, e.g., for fire escape purposes."},
			new SingleValuePropertyType("FireRiskFactor", "IfcLabel") { Definition = "Fire Risk factor assigned to the space according to local building regulations. It defines the fire risk of the space at several levels of fire hazard."},
			new SingleValuePropertyType("FlammableStorage", "IfcBoolean") { Definition = "Indication whether the space is intended to serve as a storage of flammable material (which is regarded as such by the presiding building code. (TRUE) indicates yes, (FALSE) otherwise."},
			new SingleValuePropertyType("SprinklerProtection", "IfcBoolean") { Definition = "Indication whether this object is sprinkler protected (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("SprinklerProtectionAutomatic", "IfcBoolean") { Definition = "Indication whether this object has an automatic sprinkler protection (TRUE) or not (FALSE).\nIt should only be given, if the property \"SprinklerProtection\" is set to TRUE."} },
				new [] { "IfcSpatialElement", "IfcSpatialElementType", "IfcSpatialZone", "IfcSpatialZoneType", "IfcZone" });
		yield return new PropertySetInfo("Pset_SpaceHeaterPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirResistanceCurve", "IfcTimeSeries") { Definition = "Air resistance curve (w/ fan only); Pressure = f ( flow rate)."},
			new SingleValuePropertyType("AuxiliaryEnergySourceConsumption", "IfcTimeSeries") { Definition = "Auxiliary energy source consumption."},
			new SingleValuePropertyType("CharacteristicExponent", "IfcTimeSeries") { Definition = "Characteristic exponent, slope of log(heat output) vs log (surface temperature minus environmental temperature)."},
			new SingleValuePropertyType("Effectiveness", "IfcTimeSeries") { Definition = "Effectiveness, represented as ratio.\n\nRatio of the real heat transfer rate to the maximum possible heat transfer rate."},
			new SingleValuePropertyType("FractionConvectiveHeatTransfer", "IfcTimeSeries") { Definition = "Fraction of the total heat transfer rate as the convective heat transfer."},
			new SingleValuePropertyType("FractionRadiantHeatTransfer", "IfcTimeSeries") { Definition = "Fraction of the total heat transfer rate as the radiant heat transfer."},
			new SingleValuePropertyType("HeatOutputRate", "IfcTimeSeries") { Definition = "Overall heat transfer rate."},
			new SingleValuePropertyType("OutputCapacityCurve", "IfcTimeSeries") { Definition = "Partial output capacity curve (as a function of water temperature); Q = f (Twater)."},
			new SingleValuePropertyType("SpaceAirTemperature", "IfcTimeSeries") { Definition = "Dry bulb temperature in the space."},
			new SingleValuePropertyType("SpaceMeanRadiantTemperature", "IfcTimeSeries") { Definition = "Mean radiant temperature in the space."},
			new SingleValuePropertyType("SurfaceTemperature", "IfcTimeSeries") { Definition = "Average surface temperature of the component."},
			new SingleValuePropertyType("UACurve", "IfcTimeSeries") { Definition = "UA value.\n\nAs a function of ambient temperature and surface temperature; UA = f (Tambient, Tsurface)"} },
				new [] { "IfcSpaceHeater" });
		yield return new PropertySetInfo("Pset_SpaceHeaterTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EnergySource", new [] { "COAL", "COAL_PULVERIZED", "ELECTRICITY", "GAS", "OIL", "PROPANE", "WOOD", "WOOD_CHIP", "WOOD_PELLET", "WOOD_PULVERIZED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the energy source or fuel cumbusted.\n\nNote: hydronic heaters shall use UNSET; dual-use hydronic/electric heaters shall use ELECTRICITY."},
			new EnumerationPropertyType("HeatTransferDimension", new [] { "PATH", "POINT", "SURFACE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates how heat is transmitted according to the shape of the space heater."},
			new EnumerationPropertyType("HeatTransferMedium", new [] { "STEAM", "WATER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the heat transfer medium if applicable."},
			new EnumerationPropertyType("SpaceHeaterPlacement", new [] { "BASEBOARD", "SUSPENDED", "TOWELWARMER", "WALL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates how the space heater is designed to be placed."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("TemperatureClassification", new [] { "HIGHTEMPERATURE", "LOWTEMPERATURE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the temperature classification of the space heater surface temperature.\nlow temperature - surface temperature is relatively low, usually heated by hot water or electricity.\nhigh temperature - surface temperature is relatively high, usually heated by gas or steam."},
			new SingleValuePropertyType("BodyMass", "IfcMassMeasure") { Definition = "Overall body mass of the heater."},
			new SingleValuePropertyType("NumberOfPanels", "IfcCountMeasure") { Definition = "Number of panels."},
			new SingleValuePropertyType("NumberOfSections", "IfcCountMeasure") { Definition = "Number of sections.\n\nNumber of vertical sections, measured in the direction of flow."},
			new SingleValuePropertyType("OutputCapacity", "IfcPowerMeasure") { Definition = "Total nominal heat output as listed by the manufacturer."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("ThermalEfficiency", "IfcNormalisedRatioMeasure") { Definition = "Overall Thermal Efficiency is defined as gross energy output of the heat transfer device divided by the energy input."},
			new SingleValuePropertyType("ThermalMassHeatCapacity", "IfcReal") { Definition = "Product of component mass and specific heat."} },
				new [] { "IfcSpaceHeater", "IfcSpaceHeaterType" });
		yield return new PropertySetInfo("Pset_SpaceHeaterTypeConvector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ConvectorType", new [] { "FORCED", "NATURAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of convector, whether forced air (mechanically driven) or natural (gravity)."} },
				new [] { "IfcSpaceHeater", "IfcSpaceHeaterType" });
		yield return new PropertySetInfo("Pset_SpaceHeaterTypeRadiator", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("RadiatorType", new [] { "FINNEDTUBE", "PANEL", "SECTIONAL", "TUBULAR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of radiator."},
			new SingleValuePropertyType("TubingLength", "IfcPositiveLengthMeasure") { Definition = "Water tube length inside the component."},
			new SingleValuePropertyType("WaterContent", "IfcMassMeasure") { Definition = "Weight of water content within the heater."} },
				new [] { "IfcSpaceHeater", "IfcSpaceHeaterType" });
		yield return new PropertySetInfo("Pset_SpaceHVACDesign", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirConditioning", "IfcBoolean") { Definition = "Indication whether this space requires air conditioning provided (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("AirConditioningCentral", "IfcBoolean") { Definition = "Indication whether the space  requires a central air conditioning provided (TRUE) or not (FALSE).\nIt should only be given, if the property \"AirConditioning\" is set to TRUE."},
			new SingleValuePropertyType("AirHandlingName", "IfcLabel") { Definition = "The name of the air side system.IfcRelServicesBuildings should be used to reference the correct AirHandlingSystem (IfcSystem)"},
			new SingleValuePropertyType("DiscontinuedHeating", "IfcBoolean") { Definition = "Indication whether discontinued heating is required/desirable from user/designer view point. (TRUE) if yes, (FALSE) otherwise."},
			new SingleValuePropertyType("HumidityMax", "IfcPositiveRatioMeasure") { Definition = "Maximal permitted humidity of the space or zone that is required from user/designer view point.  If no summer or winter space humidity requirements are given, it applies all year, otherwise for the intermediate period."},
			new SingleValuePropertyType("HumidityMin", "IfcPositiveRatioMeasure") { Definition = "Minimal permitted humidity of the space or zone that is required from user/designer view point.  If no summer or winter space humidity requirements are given, it applies all year, otherwise for the intermediate period."},
			new SingleValuePropertyType("HumiditySetPoint", "IfcPositiveRatioMeasure") { Definition = "Humidity of the space or zone that is required from user/designer view point.  If no summer or winter space humidity requirements are given, it applies all year, otherwise for the intermediate period. Provide this property, if no humidity range (Min-Max) is available."},
			new SingleValuePropertyType("HumiditySummer", "IfcPositiveRatioMeasure") { Definition = "Humidity of the space or zone for the hot (summer) period, that is required from user/designer view point and provided as requirement for cooling."},
			new SingleValuePropertyType("HumidityWinter", "IfcPositiveRatioMeasure") { Definition = "Humidity of the space or zone for the cold (winter) period that is required from user/designer view point and provided as requirement for heating."},
			new SingleValuePropertyType("MechanicalVentilation", "IfcBoolean") { Definition = "Indication whether the space is required to have mechanical ventilation (TRUE), or not (FALSE)."},
			new SingleValuePropertyType("MechanicalVentilationRate", "IfcNumericMeasure") { Definition = "Indication of the requirement of a particular mechanical air ventilation rate, given in air changes per hour."},
			new SingleValuePropertyType("NaturalVentilation", "IfcBoolean") { Definition = "Indication whether the space is required to have natural ventilation (TRUE), or not (FALSE)."},
			new SingleValuePropertyType("NaturalVentilationRate", "IfcNumericMeasure") { Definition = "Indication of the requirement of a particular natural air ventilation rate, given in air changes per hour."},
			new SingleValuePropertyType("TemperatureMax", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximal temperature of the space or zone, that is required from user/designer view point.  If no summer or winter space temperature requirements are given, it applies all year, otherwise for the intermediate period."},
			new SingleValuePropertyType("TemperatureMin", "IfcThermodynamicTemperatureMeasure") { Definition = "Minimal temperature of the space or zone, that is required from user/designer view point. If no summer or winter space temperature requirements are given, it applies all year, otherwise for the intermediate period."},
			new SingleValuePropertyType("TemperatureSetPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature setpoint range and default setpoint."},
			new SingleValuePropertyType("TemperatureSummerMax", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximal temperature of the space or zone for the hot (summer) period, that is required from user/designer view point and provided as requirement for cooling."},
			new SingleValuePropertyType("TemperatureSummerMin", "IfcThermodynamicTemperatureMeasure") { Definition = "Minimal temperature of the space or zone for the hot (summer) period, that is required from user/designer view point and provided as requirement for cooling."},
			new SingleValuePropertyType("TemperatureWinterMax", "IfcThermodynamicTemperatureMeasure") { Definition = "Maximal temperature of the space or zone for the cold (winter) period, that is required from user/designer view point and provided as requirement for heating."},
			new SingleValuePropertyType("TemperatureWinterMin", "IfcThermodynamicTemperatureMeasure") { Definition = "Minimal temperature of the space or zone for the cold (winter) period, that is required from user/designer view point and provided as requirement for heating."} },
				new [] { "IfcSpatialElement", "IfcSpatialElementType", "IfcSpatialZone", "IfcSpatialZoneType", "IfcZone" });
		yield return new PropertySetInfo("Pset_SpaceLightingDesign", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ArtificialLighting", "IfcBoolean") { Definition = "Indication whether this space  requires artificial lighting (as natural lighting would be not sufficient). (TRUE) indicates yes (FALSE) otherwise."},
			new SingleValuePropertyType("Illuminance", "IfcIlluminanceMeasure") { Definition = "Required average illuminance value for this space."} },
				new [] { "IfcSpatialElement", "IfcSpatialElementType", "IfcSpatialZone", "IfcSpatialZoneType", "IfcZone" });
		yield return new PropertySetInfo("Pset_SpaceOccupancyRequirements", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AreaPerOccupant", "IfcAreaMeasure") { Definition = "Design occupancy loading for this type of usage assigned to this space."},
			new SingleValuePropertyType("IsOutlookDesirable", "IfcBoolean") { Definition = "An indication of whether the outlook is desirable (set TRUE) or not (set FALSE)"},
			new SingleValuePropertyType("MinimumHeadroom", "IfcLengthMeasure") { Definition = "Headroom required for the activity assigned to this space."},
			new SingleValuePropertyType("OccupancyNumber", "IfcCountMeasure") { Definition = "Number of people required for the activity assigned to this space."},
			new SingleValuePropertyType("OccupancyNumberPeak", "IfcCountMeasure") { Definition = "Maximal number of people required for the activity assigned to this space in peak time."},
			new SingleValuePropertyType("OccupancyTimePerDay", "IfcTimeMeasure") { Definition = "The amount of time during the day that the activity is required within this space."},
			new SingleValuePropertyType("OccupancyType", "IfcLabel") { Definition = "Occupancy type for this object.\nIt is defined according to the presiding national building code."} },
				new [] { "IfcSpatialElement", "IfcSpatialElementType", "IfcSpatialZone", "IfcSpatialZoneType", "IfcZone" });
		yield return new PropertySetInfo("Pset_SpaceParking", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsAisle", "IfcBoolean") { Definition = "Indicates that this parking zone is for accessing the parking units, i.e. an aisle (TRUE) and not a parking unit itself (FALSE)"},
			new SingleValuePropertyType("IsOneWay", "IfcBoolean") { Definition = "Indicates whether the parking aisle is designed for oneway traffic (TRUE) or twoway traffic (FALSE). Should only be provided if the property IsAisle is set to TRUE."},
			new SingleValuePropertyType("ParkingUnits", "IfcCountMeasure") { Definition = "Indicates the number of transportation units of the type specified by the property ParkingUse that may be accommodated within the space. Generally, this value should default to 1 unit. However, where the parking space is for motorcycles or bicycles, provision may be made for more than one unit in the space."},
			new SingleValuePropertyType("ParkingUse", "IfcLabel") { Definition = "Identifies the type of transportation for which the parking space is designed. Values are not predefined but might include car, compact car, motorcycle, bicycle, truck, bus etc."} },
				new [] { "IfcSpace", "IfcSpaceType" });
		yield return new PropertySetInfo("Pset_SpaceThermalLoad", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirExchangeRate", "IfcPowerMeasure") { Definition = "Loads from the air exchange rate."},
			new SingleValuePropertyType("DryBulbTemperature", "IfcPowerMeasure") { Definition = "Dry bulb temperature of the object.\n\nLoads from the dry bulb temperature."},
			new SingleValuePropertyType("EquipmentSensible", "IfcPowerMeasure") { Definition = "Heat gains and losses from equipment."},
			new SingleValuePropertyType("ExhaustAir", "IfcPowerMeasure") { Definition = "Loads from exhaust air."},
			new SingleValuePropertyType("InfiltrationSensible", "IfcPowerMeasure") { Definition = "Heat gains and losses from infiltration."},
			new SingleValuePropertyType("Lighting", "IfcPowerMeasure") { Definition = "Lighting loads."},
			new SingleValuePropertyType("People", "IfcPowerMeasure") { Definition = "Heat gains and losses from people."},
			new SingleValuePropertyType("RecirculatedAir", "IfcPowerMeasure") { Definition = "Loads from recirculated air."},
			new SingleValuePropertyType("RelativeHumidity", "IfcPowerMeasure") { Definition = "Loads from the relative humidity."},
			new SingleValuePropertyType("TotalLatentLoad", "IfcPowerMeasure") { Definition = "Total energy added or removed from air that affects its humidity or concentration of water vapor.  If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space."},
			new SingleValuePropertyType("TotalRadiantLoad", "IfcPowerMeasure") { Definition = "Total electromagnetic energy added or removed by emission or absorption.  If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space."},
			new SingleValuePropertyType("TotalSensibleLoad", "IfcPowerMeasure") { Definition = "Total energy added or removed from air that affects its temperature.  If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space."},
			new SingleValuePropertyType("VentilationIndoorAir", "IfcPowerMeasure") { Definition = "Ventilation loads from indoor air."},
			new SingleValuePropertyType("VentilationOutdoorAir", "IfcPowerMeasure") { Definition = "Ventilation loads from outdoor air."} },
				new [] { "IfcSpatialElement", "IfcSpatialElementType" });
		yield return new PropertySetInfo("Pset_SpaceThermalLoadPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AirExchangeRateTimeHistory", "IfcTimeSeries") { Definition = "Loads from the air exchange rate."},
			new SingleValuePropertyType("DryBulbTemperatureHistory", "IfcTimeSeries") { Definition = "Loads from the dry bulb temperature."},
			new SingleValuePropertyType("EquipmentSensibleHistory", "IfcTimeSeries") { Definition = "Heat gains and losses from equipment."},
			new SingleValuePropertyType("ExhaustAirHistory", "IfcTimeSeries") { Definition = "Loads from exhaust air."},
			new SingleValuePropertyType("InfiltrationSensibleHistory", "IfcTimeSeries") { Definition = "Heat gains and losses from infiltration."},
			new SingleValuePropertyType("LightingHistory", "IfcTimeSeries") { Definition = "Lighting loads."},
			new SingleValuePropertyType("PeopleHistory", "IfcTimeSeries") { Definition = "Heat gains and losses from people."},
			new SingleValuePropertyType("RecirculatedAirHistory", "IfcTimeSeries") { Definition = "Loads from recirculated air."},
			new SingleValuePropertyType("RelativeHumidityHistory", "IfcTimeSeries") { Definition = "Loads from the relative humidity."},
			new SingleValuePropertyType("TotalLatentLoadHistory", "IfcTimeSeries") { Definition = "Total energy added or removed from air that affects its humidity or concentration of water vapor.  If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space."},
			new SingleValuePropertyType("TotalRadiantLoadHistory", "IfcTimeSeries") { Definition = "Total electromagnetic energy added or removed by emission or absorption.  If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space."},
			new SingleValuePropertyType("TotalSensibleLoadHistory", "IfcTimeSeries") { Definition = "Total energy added or removed from air that affects its temperature.  If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space."},
			new SingleValuePropertyType("VentilationIndoorAirHistory", "IfcTimeSeries") { Definition = "Ventilation loads from indoor air."},
			new SingleValuePropertyType("VentilationOutdoorAirHistory", "IfcTimeSeries") { Definition = "Ventilation loads from outdoor air."} },
				new [] { "IfcSpatialElement" });
		yield return new PropertySetInfo("Pset_SpaceThermalPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoolingAirFlowRate", "IfcTimeSeries") { Definition = "Cooling air flow rate in the space."},
			new SingleValuePropertyType("ExhaustAirFlowRate", "IfcTimeSeries") { Definition = "Design exhaust air flow rate for the space."},
			new SingleValuePropertyType("HeatingAirFlowRate", "IfcTimeSeries") { Definition = "Heating air flow rate in the space."},
			new SingleValuePropertyType("SpaceRelativeHumidity", "IfcTimeSeries") { Definition = "The relative humidity of the space."},
			new SingleValuePropertyType("SpaceTemperatureHistory", "IfcTimeSeries") { Definition = "Temperature of the space."},
			new SingleValuePropertyType("VentilationAirFlowRateHistory", "IfcTimeSeries") { Definition = "Ventilation air flow rate in the space."} },
				new [] { "IfcSpatialElement" });
		yield return new PropertySetInfo("Pset_SpatialZoneCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcSpatialZone", "IfcSpatialZoneType" });
		yield return new PropertySetInfo("Pset_SpringTensioner", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalWeight", "IfcMassMeasure") { Definition = "Nominal weight of the object."},
			new SingleValuePropertyType("TensileStrength", "IfcPressureMeasure") { Definition = "Indicates the ability to withstand breakage apart under applied force."},
			new SingleValuePropertyType("TensioningWorkingRange", "IfcForceMeasure") { Definition = "The working range of the tensioning equipment under normal operation."} },
				new [] { "IfcDiscreteAccessory", "IfcDiscreteAccessoryType" });
		yield return new PropertySetInfo("Pset_StackTerminalTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcStackTerminal", "IfcStackTerminalType" });
		yield return new PropertySetInfo("Pset_StairCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\n\nHere it defines an exit stair in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. Set to (TRUE) if this object is rated as handicap accessible according to the local building codes, otherwise (FALSE). It is giving according to the requirements of the national building code."},
			new SingleValuePropertyType("HasNonSkidSurface", "IfcBoolean") { Definition = "Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("NosingLength", "IfcLengthMeasure") { Definition = "Horizontal distance from the front of the tread to the riser underneath. It is the overhang of the tread."},
			new SingleValuePropertyType("NumberOfRiser", "IfcCountMeasure") { Definition = "Total number of the risers included in the stair or stair flight."},
			new SingleValuePropertyType("NumberOfTreads", "IfcCountMeasure") { Definition = "Total number of treads included in the stair or stairflight."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("RequiredHeadroom", "IfcPositiveLengthMeasure") { Definition = "Required headroom clearance for the passageway according to the applicable building code or additional requirements."},
			new SingleValuePropertyType("RiserHeight", "IfcPositiveLengthMeasure") { Definition = "Vertical distance from tread to tread.\nThe riser height is supposed to be equal for all steps of a stair or stair flight."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."},
			new SingleValuePropertyType("TreadLength", "IfcPositiveLengthMeasure") { Definition = "Horizontal distance from the front of the thread to the front of the next tread.\nThe tread length is supposed to be equal for all steps of the stair or stair flight at the walking line."},
			new SingleValuePropertyType("TreadLengthAtInnerSide", "IfcPositiveLengthMeasure") { Definition = "Minimum length of treads at the inner side of the winder.\nOnly relevant in case of winding flights, for straight flights it is identical with IfcStairFlight.TreadLength. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence."},
			new SingleValuePropertyType("TreadLengthAtOffset", "IfcPositiveLengthMeasure") { Definition = "Length of treads at a given offset.\nWalking line position is given by the 'WalkingLineOffset'. The resulting value should normally be identical with TreadLength, it may be given in addition, if the walking line offset for building code calculations is different from that used in design."},
			new SingleValuePropertyType("WaistThickness", "IfcPositiveLengthMeasure") { Definition = "Minimum thickness of the stair flight, measured perpendicular to the slope of the flight to the inner corner of riser and tread. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence."},
			new SingleValuePropertyType("WalkingLineOffset", "IfcPositiveLengthMeasure") { Definition = "Offset of the walking line from the inner side of the flight.\nNote: the walking line may have a own shape representation (in case of inconsistencies, the value derived from the shape representation shall take precedence)."} },
				new [] { "IfcStair", "IfcStairType" });
		yield return new PropertySetInfo("Pset_StairFlightCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Headroom", "IfcPositiveLengthMeasure") { Definition = "Actual headroom clearance for the passageway according to the current design.\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("NosingLength", "IfcLengthMeasure") { Definition = "Horizontal distance from the front of the tread to the riser underneath. It is the overhang of the tread."},
			new SingleValuePropertyType("NumberOfRiser", "IfcCountMeasure") { Definition = "Total number of the risers included in the stair or stair flight."},
			new SingleValuePropertyType("NumberOfTreads", "IfcCountMeasure") { Definition = "Total number of treads included in the stair or stairflight."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("RiserHeight", "IfcPositiveLengthMeasure") { Definition = "Vertical distance from tread to tread.\nThe riser height is supposed to be equal for all steps of a stair or stair flight."},
			new SingleValuePropertyType("TreadLength", "IfcPositiveLengthMeasure") { Definition = "Horizontal distance from the front of the thread to the front of the next tread.\nThe tread length is supposed to be equal for all steps of the stair or stair flight at the walking line."},
			new SingleValuePropertyType("TreadLengthAtInnerSide", "IfcPositiveLengthMeasure") { Definition = "Minimum length of treads at the inner side of the winder.\nOnly relevant in case of winding flights, for straight flights it is identical with IfcStairFlight.TreadLength. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence."},
			new SingleValuePropertyType("TreadLengthAtOffset", "IfcPositiveLengthMeasure") { Definition = "Length of treads at a given offset.\nWalking line position is given by the 'WalkingLineOffset'. The resulting value should normally be identical with TreadLength, it may be given in addition, if the walking line offset for building code calculations is different from that used in design."},
			new SingleValuePropertyType("WaistThickness", "IfcPositiveLengthMeasure") { Definition = "Minimum thickness of the stair flight, measured perpendicular to the slope of the flight to the inner corner of riser and tread. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence."},
			new SingleValuePropertyType("WalkingLineOffset", "IfcPositiveLengthMeasure") { Definition = "Offset of the walking line from the inner side of the flight.\nNote: the walking line may have a own shape representation (in case of inconsistencies, the value derived from the shape representation shall take precedence)."} },
				new [] { "IfcStairFlight", "IfcStairFlightType" });
		yield return new PropertySetInfo("Pset_Stationing", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasIncreasingStation", "IfcBoolean") { Definition = "Inform on the increasing or decreasing progress of stationing values, for referents nested in a given alignment.If present and true, or if not present, then the relevant subsequently nested referents are expected to have greater Pset_Stationing.Station values (i.e., increasing stations).If present and false, then the relevant subsequently nested referents are expected to have lower Pset_Stationing.Station values (i.e., decreasing stations)."},
			new SingleValuePropertyType("IncomingStation", "IfcLengthMeasure") { Definition = "The optional station value of the incoming segment that ends at this location. This value needs to be set if the intention is to specify a station equation, i.e. a location where stationing changes."},
			new SingleValuePropertyType("Station", "IfcLengthMeasure") { Definition = "The station value at this location."} },
				new [] { "IfcReferent" });
		yield return new PropertySetInfo("Pset_StructuralSurfaceMemberVaryingThickness", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Location1Global", "IfcLengthMeasure") { Definition = "Global X,Y,Z coordinates of the point in which Thickness1 is given"},
			new SingleValuePropertyType("Location1Local", "IfcLengthMeasure") { Definition = "Local x,y coordinates of the point in which Thickness1 is given"},
			new SingleValuePropertyType("Location2Global", "IfcLengthMeasure") { Definition = "Global X,Y,Z coordinates of the point in which Thickness2 is given"},
			new SingleValuePropertyType("Location2Local", "IfcLengthMeasure") { Definition = "Local x,y coordinates of the point in which Thickness2 is given"},
			new SingleValuePropertyType("Location3Global", "IfcLengthMeasure") { Definition = "Global X,Y,Z coordinates of the point in which Thickness3 is given"},
			new SingleValuePropertyType("Location3Local", "IfcLengthMeasure") { Definition = "Local x,y coordinates of the point in which Thickness3 is given"},
			new SingleValuePropertyType("Thickness1", "IfcPositiveLengthMeasure") { Definition = "First thickness parameter of a surface member with varying thickness"},
			new SingleValuePropertyType("Thickness2", "IfcPositiveLengthMeasure") { Definition = "Second thickness parameter of a surface member with varying thickness"},
			new SingleValuePropertyType("Thickness3", "IfcPositiveLengthMeasure") { Definition = "Third thickness parameter of a surface member with varying thickness"} },
				new [] { "IfcStructuralSurfaceMemberVarying" });
		yield return new PropertySetInfo("Pset_SumpBusterCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("TypeDesignation", "IfcLabel") { Definition = "Type designator for the element. The content depends on local standards. Eg. 'Bull nose', 'Half batter', 'Dropper', 'Chamfer' etc"} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_Superelevation", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Side", new [] { "BOTH", "LEFT", "RIGHT" } ) { Definition = "Specifies if the width is measured to the RIGHT or to the LEFT of the curve referenced by the placement, or if the same value is applied to BOTH sides."},
			new EnumerationPropertyType("TransitionSuperelevation", new [] { "LINEAR" } ) { Definition = "The type of transition of superelevation from previous event to this one."},
			new SingleValuePropertyType("Superelevation", "IfcRatioMeasure") { Definition = "Specifies the superelevation as a ratio measure (slope) at the location of the event."} },
				new [] { "IfcReferent" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("SwitchFunction", new [] { "DOUBLETHROWSWITCH", "INTERMEDIATESWITCH", "ONOFFSWITCH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates types of switches which differs in functionality."},
			new SingleValuePropertyType("HasLock", "IfcBoolean") { Definition = "Indication of whether a switching device has a key operated lock (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("IsIlluminated", "IfcBoolean") { Definition = "An indication of whether there is an illuminated indicator to show that the switch is on (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("Legend", "IfcLabel") { Definition = "A text inscribed or applied to the switch as a legend to indicate purpose or function."},
			new SingleValuePropertyType("NumberOfGangs", "IfcCountMeasure") { Definition = "Number of gangs in the object.\n\nNumber of gangs/buttons on this switch."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new TableValuePropertyType("SetPoint", "IfcInteger", "IfcLabel") { Definition = "Indicates the setpoint and label.\n\nFor toggle switches, there are two positions, 0 for off and 1 for on.  For dimmer switches, the values may indicate the fully-off and full-on positions, where missing integer values in between are interpolated.   For selector switches, the range indicates the available positions.\nAn IfcTable may be attached (using IfcMetric and IfcResourceConstraintRelationship) containing columns of the specified header names and types:\n'Position' (IfcInteger): The discrete setpoint level.\n'Sink' (IfcLabel): The Name of the switched input port (IfcDistributionPort with FlowDirection=SINK).\n'Source' (IfcLabel): The Name of the switched output port (IfcDistributionPort with FlowDirection=SOURCE).\n'Ratio' (IfcNormalisedRatioMeasure): The ratio of power at the setpoint where 0.0 is off and 1.0 is fully on."} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeContactor", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ContactorType", new [] { "CAPACITORSWITCHING", "LOWCURRENT", "MAGNETICLATCHING", "MECHANICALLATCHING", "MODULAR", "REVERSING", "STANDARD", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of contactor from which that required may be selected where:CapacitorSwitching: for switching 3 phase single or multi-step capacitor banks.\nLowCurrent: requires the use of low resistance contacts.\nMagneticLatching: enables the contactor to remain in the on position when the coil is no longer energized.\nMechanicalLatching: requires that the contactor is mechanically retained in the on position.\nModular: are totally enclosed and self contained.\nReversing: has a double set of contactors that are prewired.\nStandard: is a generic device that controls the flow of power in a circuit on or off."} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeDimmerSwitch", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("DimmerType", new [] { "ROCKER", "SELECTOR", "TWIST", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of dimmer switch from which that required may be selected."} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeEmergencyStop", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SwitchOperation", new [] { "MUSHROOM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates operation of emergency stop switch."},
			new SingleValuePropertyType("BreakingCapacity", "IfcElectricCurrentMeasure") { Definition = "The current that a fuse, circuit breaker, or other electrical apparatus is able to interrupt without being destroyed or causing an electric arc with unacceptable duration."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured."},
			new SingleValuePropertyType("NumberOfAffectedPoles", "IfcCountMeasure") { Definition = "Number of poles that the equipment affects."},
			new SingleValuePropertyType("NumberOfEarthFaultRelays", "IfcCountMeasure") { Definition = "Indicates the number of relays used for preventing earth fault."},
			new SingleValuePropertyType("NumberOfEmergencyButtons", "IfcCountMeasure") { Definition = "The number of emergency buttons built in the device."},
			new SingleValuePropertyType("NumberOfOverCurrentRelays", "IfcCountMeasure") { Definition = "Indicates number of relays used for preventing over current."},
			new SingleValuePropertyType("NumberOfPhases", "IfcCountMeasure") { Definition = "Number of phases that the equipment operates on."},
			new SingleValuePropertyType("NumberOfRelays", "IfcCountMeasure") { Definition = "Indicates number of relays built in the device."},
			new SingleValuePropertyType("RatedFrequency", "IfcFrequencyMeasure") { Definition = "Frequency of the AC electric power supply when the device or system reaches its optimum operating condition."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("ReferenceEnvironmentTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ideal temperature range."},
			new SingleValuePropertyType("TransformationRatio", "IfcPositiveRatioMeasure") { Definition = "The ratio of the actual primary current or voltage to the actual secondary current or voltage."} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeKeypad", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("KeypadType", new [] { "BUTTONS", "TOUCHSCREEN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of keypad switch from which that required may be selected."} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeMomentarySwitch", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MomentaryType", new [] { "BUTTON", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of momentary switch from which that required may be selected."} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypePHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("SetPointHistory", "IfcTimeSeries") { Definition = "Indicates the switch position over time according to Pset_SwitchingDeviceTypeCommon.SetPoint."} },
				new [] { "IfcSwitchingDevice" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeRelay", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ContactResistance", "IfcElectricResistanceMeasure") { Definition = "Resistance when electrical node is closed."},
			new SingleValuePropertyType("Current", "IfcElectricCurrentMeasure") { Definition = "The actual current and operable range."},
			new SingleValuePropertyType("InsulationResistance", "IfcElectricResistanceMeasure") { Definition = "Minimum resistance between one terminal or several terminals connected together and the case or enclosure of a component at specified voltage."},
			new SingleValuePropertyType("NominalHeight", "IfcNonNegativeLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("PullInVoltage", "IfcElectricVoltageMeasure") { Definition = "Working voltage of relay in excitation state."},
			new SingleValuePropertyType("ReleaseVoltage", "IfcElectricVoltageMeasure") { Definition = "The maximum voltage to guarantee the drop of the relay node."},
			new SingleValuePropertyType("Voltage", "IfcElectricVoltageMeasure") { Definition = "The actual voltage and operable range."} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeSelectorSwitch", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SelectorType", new [] { "ROCKER", "SELECTOR", "TWIST", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of selector switch from which that required may be selected."},
			new EnumerationPropertyType("SwitchActivation", new [] { "ACTUATOR", "FOOT", "HAND", "PROXIMITY", "SOUND", "TWOHAND", "WIRE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available activations for switches from which that required may be selected."},
			new EnumerationPropertyType("SwitchUsage", new [] { "EMERGENCY", "GUARD", "LIMIT", "START", "STOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available usages for switches from which that required may be selected."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured."},
			new SingleValuePropertyType("NominalPower", "IfcPowerMeasure") { Definition = "A conventional value of apparent power determining a value of the rated current that may be carried with rated voltage applied, under specified conditions. ( IEV ref 421-04-04)"},
			new SingleValuePropertyType("NumberOfPhases", "IfcCountMeasure") { Definition = "Number of phases that the equipment operates on."},
			new SingleValuePropertyType("RatedFrequency", "IfcFrequencyMeasure") { Definition = "Frequency of the AC electric power supply when the device or system reaches its optimum operating condition."},
			new SingleValuePropertyType("ReferenceEnvironmentTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ideal temperature range."} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeStarter", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("StarterType", new [] { "AUTOTRANSFORMER", "DIRECTONLINE", "FREQUENCY", "MANUAL", "NSTEP", "RHEOSTATIC", "STARDELTA", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of starter from which that required may be selected where:AutoTransformer: A starter for an induction motor which uses for starting one or more reduced voltages derived from an auto transformer. (IEC 441-14-45)\nManual: A starter in which the force for closing the main contacts is provided exclusively by manual energy. (IEC 441-14-39)\nDirectOnLine: A starter which connects the line voltage across the motor terminals in one step. (IEC 441-14-40)\nFrequency: A starter in which the frequency of the power supply is progressively increased until the normal operation frequency is attained.\nnStep: A starter in which there are (n-1) intermediate accelerating positions between the off and full on positions. (IEC 441-14-41)\nRheostatic: A starter using one or several resistors for obtaining, during starting, stated motor torque characteristics and for limiting the current. (IEC 441-14-425)\nStarDelta: A starter for a 3 phase induction motor such that in the starting position the stator windings are connected in star and in the final running position they are connected in delta. (IEC 441-14-44)"} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeSwitchDisconnector", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("LoadDisconnectionType", new [] { "OFFLOAD", "ONLOAD", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of load disconnection from which that required may be selected."},
			new EnumerationPropertyType("SwitchDisconnectorType", new [] { "CENTERBREAK", "DIVIDEDSUPPORT", "DOUBLEBREAK", "EARTHINGSWITCH", "ISOLATOR", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of switch disconnector from which that required may be selected where:CenterBreak: A disconnector in which both contacts of each pole are movable and engage at a point substantially midway between their supports. (IEC 441-14-08)\nDividedSupport: A disconnector in which the fixed and moving contacts of each pole are not supported by a common base or frame. (IEC 441-14-06)\nDoubleBreak: A disconnector that opens a circuit at two points. (IEC 441-14-09)\nEarthingSwitch: A disconnector in which the fixed and moving contacts of each pole are not supported by a common base or frame. (IEC 441-14-07)\nIsolator: A disconnector which in the open position satisfies isolating requirements. (IEC 441-14-12)"} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SwitchingDeviceTypeToggleSwitch", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SwitchActivation", new [] { "ACTUATOR", "FOOT", "HAND", "PROXIMITY", "SOUND", "TWOHAND", "WIRE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available activations for switches from which that required may be selected."},
			new EnumerationPropertyType("SwitchUsage", new [] { "EMERGENCY", "GUARD", "LIMIT", "START", "STOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available usages for switches from which that required may be selected."},
			new EnumerationPropertyType("ToggleSwitchType", new [] { "BREAKGLASS", "CHANGEOVER", "KEYOPERATED", "MANUALPULL", "PULLCORD", "PUSHBUTTON", "ROCKER", "SELECTOR", "TWIST", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the available types of toggle switch from which that required may be selected."} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Pset_SymmetricPairCable", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfTwistedPairs", "IfcCountMeasure") { Definition = "Total number of twisted wire pairs in copper pair cables."},
			new SingleValuePropertyType("NumberOfUntwistedPairs", "IfcCountMeasure") { Definition = "Total number of untwisted wire pairs in the copper pair cable."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_SystemFurnitureElementTypeCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Finishing", "IfcLabel") { Definition = "The finishing applied to system furniture elements of this type e.g. walnut, fabric."},
			new SingleValuePropertyType("GroupCode", "IfcIdentifier") { Definition = "e.g. panels, worksurfaces, storage, etc."},
			new SingleValuePropertyType("IsUsed", "IfcBoolean") { Definition = "Indicates whether the element is being used in a workstation (= TRUE) or not.(= FALSE)."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence.\n\nThe nominal height of the system furniture elements of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcSystemFurnitureElement", "IfcSystemFurnitureElementType" });
		yield return new PropertySetInfo("Pset_SystemFurnitureElementTypePanel", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FurniturePanelType", new [] { "ACOUSTICAL", "DOOR", "ENDS", "GLAZED", "HORZ_SEG", "MONOLITHIC", "OPEN", "SCREEN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Available panel types from which that required may be selected."},
			new SingleValuePropertyType("HasOpening", "IfcBoolean") { Definition = "indicates whether the panel has an opening (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("NominalThickness", "IfcNonNegativeLengthMeasure") { Definition = "The nominal thickness of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcSystemFurnitureElement", "IfcSystemFurnitureElementType" });
		yield return new PropertySetInfo("Pset_SystemFurnitureElementTypeSubrack", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfOccupiedUnits", "IfcCountMeasure") { Definition = "Indicates the number of vertical units occupied by the equipment."},
			new SingleValuePropertyType("NumberOfSlots", "IfcCountMeasure") { Definition = "Indicates the number of  slots."},
			new SingleValuePropertyType("NumberOfUnits", "IfcCountMeasure") { Definition = "Indicates the number of vertical units."} },
				new [] { "IfcSystemFurnitureElement", "IfcSystemFurnitureElementType" });
		yield return new PropertySetInfo("Pset_SystemFurnitureElementTypeWorkSurface", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SupportType", new [] { "ACOUSTICAL", "DOOR", "ENDS", "GLAZED", "HORZ_SEG", "MONOLITHIC", "OPEN", "SCREEN", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Available support types from which that required may be selected."},
			new SingleValuePropertyType("HangingHeight", "IfcPositiveLengthMeasure") { Definition = "The hanging height of the worksurface."},
			new SingleValuePropertyType("NominalThickness", "IfcNonNegativeLengthMeasure") { Definition = "The nominal thickness of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("ShapeDescription", "IfcLabel") { Definition = "A description of the shape of the work surface e.g. corner square, rectangle, etc."},
			new SingleValuePropertyType("UsePurpose", "IfcLabel") { Definition = "The principal purpose for which the work surface is intended to be used e.g. writing/reading, computer, meeting, printer, reference files, etc."} },
				new [] { "IfcSystemFurnitureElement", "IfcSystemFurnitureElementType" });
		yield return new PropertySetInfo("Pset_TankOccurrence", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("TankComposition", new [] { "COMPLEX", "ELEMENT", "PARTIAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the level of element composition where.COMPLEX: A set of elementary units aggregated together to fulfill the overall  required purpose.\nELEMENT: A single elementary unit that may exist of itself or as an aggregation of partial units..\nPARTIAL: A partial elementary unit."},
			new SingleValuePropertyType("HasLadder", "IfcBoolean") { Definition = "Indication of whether the tank is provided with a ladder (set TRUE) for access to the top. If no ladder is provided then value is set FALSE.Note: No indication is given of the type of ladder (gooseneck etc.)"},
			new SingleValuePropertyType("HasVisualIndicator", "IfcBoolean") { Definition = "Indication of whether the tank is provided with a visual indicator (set TRUE) that shows the water level in the tank. If no visual indicator is provided then value is set FALSE."} },
				new [] { "IfcTank" });
		yield return new PropertySetInfo("Pset_TankTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AccessType", new [] { "LOOSECOVER", "MANHOLE", "NONE", "SECUREDCOVER", "SECUREDCOVERWITHMANHOLE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of access (or cover) to a tank that may be specified.Note that covers are generally specified for rectangular tanks. For cylindrical tanks, access will normally be via a manhole."},
			new EnumerationPropertyType("EndShapeType", new [] { "CONCAVECONVEX", "CONCAVEFLAT", "CONVEXCONVEX", "FLATCONVEX", "FLATFLAT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of end shapes that can be used for preformed tanks. The convention for reading these enumerated values is that for a vertical cylinder, the first value is the base and the second is the top; for a horizontal cylinder, the order of reading should be left to right. For a speherical tank, the value UNSET should be used."},
			new EnumerationPropertyType("PatternType", new [] { "HORIZONTALCYLINDER", "RECTANGULAR", "VERTICALCYLINDER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of pattern (or shape of a tank that may be specified."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("StorageType", new [] { "FUEL", "ICE", "OIL", "POTABLEWATER", "RAINWATER", "WASTEWATER", "WATER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the general material category intended to be stored."},
			new SingleValuePropertyType("EffectiveCapacity", "IfcVolumeMeasure") { Definition = "The total effective or actual volumetric capacity of the tank."},
			new SingleValuePropertyType("FirstCurvatureRadius", "IfcPositiveLengthMeasure") { Definition = "FirstCurvatureRadius should be defined as the base or left side radius of curvature value."},
			new SingleValuePropertyType("NominalDepth", "IfcNonNegativeLengthMeasure") { Definition = "Nominal Depth of the object"},
			new SingleValuePropertyType("NominalLengthOrDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal length or, in the case of a vertical cylindrical tank, the nominal diameter of the tank."},
			new SingleValuePropertyType("NominalWidthOrDiameter", "IfcPositiveLengthMeasure") { Definition = "The nominal width or, in the case of a horizontal cylindrical tank, the nominal diameter of the tank.Note: Not required for a vertical cylindrical tank."},
			new SingleValuePropertyType("NumberOfSections", "IfcCountMeasure") { Definition = "Number of sections.\n\nNumber of sections used in the construction of the tank. Default is 1.Note: All sections assumed to be the same size."},
			new SingleValuePropertyType("OperatingWeight", "IfcMassMeasure") { Definition = "Operating weight of the tank including all of its contents."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SecondCurvatureRadius", "IfcPositiveLengthMeasure") { Definition = "SecondCurvatureRadius should be defined as the top or right side radius of curvature value."},
			new SingleValuePropertyType("TankNominalCapacity", "IfcVolumeMeasure") { Definition = "The total nominal or design volumetric capacity of the tank."} },
				new [] { "IfcTank", "IfcTankType" });
		yield return new PropertySetInfo("Pset_TankTypeExpansion", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ChargePressure", "IfcPressureMeasure") { Definition = "Nominal or design operating pressure of the tank."},
			new SingleValuePropertyType("PressureRegulatorSetting", "IfcPressureMeasure") { Definition = "Pressure that is automatically maintained in the tank."},
			new SingleValuePropertyType("ReliefValveSetting", "IfcPressureMeasure") { Definition = "Pressure at which the relief valve activates."} },
				new [] { "IfcTank", "IfcTankType" });
		yield return new PropertySetInfo("Pset_TankTypePreformed", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("EndShapeType", new [] { "CONCAVECONVEX", "CONCAVEFLAT", "CONVEXCONVEX", "FLATCONVEX", "FLATFLAT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of end shapes that can be used for preformed tanks. The convention for reading these enumerated values is that for a vertical cylinder, the first value is the base and the second is the top; for a horizontal cylinder, the order of reading should be left to right. For a speherical tank, the value UNSET should be used."},
			new EnumerationPropertyType("PatternType", new [] { "HORIZONTALCYLINDER", "RECTANGULAR", "VERTICALCYLINDER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the types of pattern (or shape of a tank that may be specified."},
			new SingleValuePropertyType("FirstCurvatureRadius", "IfcPositiveLengthMeasure") { Definition = "FirstCurvatureRadius should be defined as the base or left side radius of curvature value."},
			new SingleValuePropertyType("SecondCurvatureRadius", "IfcPositiveLengthMeasure") { Definition = "SecondCurvatureRadius should be defined as the top or right side radius of curvature value."} },
				new [] { "IfcTank", "IfcTankType" });
		yield return new PropertySetInfo("Pset_TankTypePressureVessel", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ChargePressure", "IfcPressureMeasure") { Definition = "Nominal or design operating pressure of the tank."},
			new SingleValuePropertyType("PressureRegulatorSetting", "IfcPressureMeasure") { Definition = "Pressure that is automatically maintained in the tank."},
			new SingleValuePropertyType("ReliefValveSetting", "IfcPressureMeasure") { Definition = "Pressure at which the relief valve activates."} },
				new [] { "IfcTank", "IfcTankType" });
		yield return new PropertySetInfo("Pset_TankTypeSectional", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfSections", "IfcCountMeasure") { Definition = "Number of sections.\n\nNumber of sections used in the construction of the tankNote: All sections assumed to be the same size."},
			new SingleValuePropertyType("SectionLength", "IfcPositiveLengthMeasure") { Definition = "The length of a section used in the construction of the tank."},
			new SingleValuePropertyType("SectionWidth", "IfcPositiveLengthMeasure") { Definition = "The width of a section used in the construction of the tank."} },
				new [] { "IfcTank", "IfcTankType" });
		yield return new PropertySetInfo("Pset_TelecomCableGeneral", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CableArmourType", new [] { "DIELECTRIC", "METALLIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The armour type of the cable for mechanical protection."},
			new EnumerationPropertyType("CableFunctionType", new [] { "POWERSUPPLY", "TELECOMMUNICATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Distinguishes between Telecom and Power Supply cables."},
			new SingleValuePropertyType("Attenuation", "IfcReal") { Definition = "Indicates the optical or electrical attenuation of the cable measured in dB, at a certain wavelength or frequency, changing with the length of the cable."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsFireResistant", "IfcBoolean") { Definition = "Indicates whether the cable is fire resistant."},
			new SingleValuePropertyType("JacketColour", "IfcLabel") { Definition = "Indicates the colour of the cable or fitting jacket."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal diameter or width of the object."} },
				new [] { "IfcCableFitting", "IfcCableFittingType", "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Pset_ThermalLoad", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ApplianceDiversity", "IfcPositiveRatioMeasure") { Definition = "Diversity of appliance load."},
			new SingleValuePropertyType("AppliancePercentLoadToRadiant", "IfcPositiveRatioMeasure") { Definition = "Percent of sensible load to radiant heat."},
			new SingleValuePropertyType("InfiltrationDiversitySummer", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Summer infiltration."},
			new SingleValuePropertyType("InfiltrationDiversityWinter", "IfcPositiveRatioMeasure") { Definition = "Diversity factor for Winter infiltration."},
			new SingleValuePropertyType("LightingDiversity", "IfcPositiveRatioMeasure") { Definition = "Lighting diversity."},
			new SingleValuePropertyType("LightingLoadIntensity", "IfcHeatFluxDensityMeasure") { Definition = "Average lighting load intensity in the space per unit area (PowerMeasure/IfcAreaMeasure)."},
			new SingleValuePropertyType("LightingPercentLoadToReturnAir", "IfcPositiveRatioMeasure") { Definition = "Percent of lighting load to the return air plenum."},
			new SingleValuePropertyType("LoadSafetyFactor", "IfcPositiveRatioMeasure") { Definition = "Load safety factor."},
			new SingleValuePropertyType("OccupancyDiversity", "IfcPositiveRatioMeasure") { Definition = "Diversity factor that may be applied to the number of people in the space."},
			new SingleValuePropertyType("OutsideAirPerPerson", "IfcVolumetricFlowRateMeasure") { Definition = "Design quantity of outside air to be provided per person in the space."},
			new SingleValuePropertyType("ReceptacleLoadIntensity", "IfcHeatFluxDensityMeasure") { Definition = "Average power use intensity of appliances and other non-HVAC equipment in the space per unit area.(PowerMeasure/IfcAreaMeasure)."},
			new SingleValuePropertyType("TotalCoolingLoad", "IfcPowerMeasure") { Definition = "The peak total cooling load for the building, zone or space."},
			new SingleValuePropertyType("TotalHeatingLoad", "IfcPowerMeasure") { Definition = "The peak total heating load for the building, zone or space."} },
				new [] { "IfcSpatialElement", "IfcSpatialElementType" });
		yield return new PropertySetInfo("Pset_TicketProcessing", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("TicketProcessingTime", "IfcTimeMeasure") { Definition = "Indicates the processing time of a ticket."},
			new SingleValuePropertyType("TicketStuckRatio", "IfcRatioMeasure") { Definition = "Indicates the ratio of tickets being stuck or jammed in the appliance."} },
				new [] { "IfcDoor", "IfcDoor", "IfcDoorType", "IfcDoorType" });
		yield return new PropertySetInfo("Pset_TicketVendingMachine", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("PaymentMethod", new [] { "CARD", "CASH", "E_PAYMENT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the vending machine payment method."},
			new EnumerationPropertyType("TicketVendingMachineType", new [] { "TICKETREDEMPTIONMACHINE", "TICKETREFUNDINGMACHINE", "TICKETVENDINGMACHINE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of ticket vending machine."},
			new EnumerationPropertyType("VendingMachineUserInterface", new [] { "MOUSECHOOSETYPE", "TOUCHSCREEN", "TOUCH_TONE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of vending machine user interface."},
			new SingleValuePropertyType("MoneyStuckRatio", "IfcRatioMeasure") { Definition = "Indicates the ratio of money being stuck or jammed in appliance."},
			new SingleValuePropertyType("TicketProductionSpeed", "IfcIntegerCountRateMeasure") { Definition = "Indicates the production speed of the ticket. It is measured by counting the number of tickets that can be produced per hour."},
			new SingleValuePropertyType("TicketStuckRatio", "IfcRatioMeasure") { Definition = "Indicates the ratio of tickets being stuck or jammed in the appliance."} },
				new [] { "IfcElectricAppliance", "IfcElectricApplianceType" });
		yield return new PropertySetInfo("Pset_Tiling", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Permeability", "IfcNormalisedRatioMeasure") { Definition = "Ratio of the permeability of the ceiling.\nThe ration can be used to indicate an open ceiling (that enables identification of whether ceiling construction should be considered as impeding distribution of sprinkler water, light etc. from installations within the ceiling area)."},
			new SingleValuePropertyType("TileLength", "IfcPositiveLengthMeasure") { Definition = "Length of ceiling tiles. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."},
			new SingleValuePropertyType("TileWidth", "IfcPositiveLengthMeasure") { Definition = "Width of ceiling tiles. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcCovering", "IfcCoveringType", "IfcPavement", "IfcPavementType" });
		yield return new PropertySetInfo("Pset_Tolerance", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ToleranceBasis", new [] { "APPEARANCE", "ASSEMBLY", "DEFLECTION", "EXPANSION", "FUNCTIONALITY", "SETTLEMENT", "STRUCTURAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indication of the basis of the tolerance requirement"},
			new SingleValuePropertyType("ElevationalFlatness", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range flatness associated to the elevational surface in ZX, if different to the overall flatness."},
			new SingleValuePropertyType("HorizontalFlatness", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range flatness associated to the horizontal surface in XY, if different to the overall flatness."},
			new SingleValuePropertyType("HorizontalOrthogonality", "IfcPlaneAngleMeasure") { Definition = "Indicative (95%-100%) range orthogonality associated to the horizontal shape and orientation in X, if different to the overall orthogonality."},
			new SingleValuePropertyType("HorizontalStraightness", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range straightness  associated to the horizontal shape in X, if different to the overall straightness."},
			new SingleValuePropertyType("HorizontalTolerance", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range tolerance associated to the horizontal shape and position in X, if different to the overall tolerance."},
			new SingleValuePropertyType("OrthogonalOrthogonality", "IfcPlaneAngleMeasure") { Definition = "Indicative (95%-100%) range orthogonality associated to the horizontal shape and orientation in Y, if different to the overall orthogonality."},
			new SingleValuePropertyType("OrthogonalStraightness", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range straightness  associated to the horizontal shape  in Y, if different to the overall straightness."},
			new SingleValuePropertyType("OrthogonalTolerance", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range tolerance associated to the horizontal shape and position in Y, if different to the overall tolerance."},
			new SingleValuePropertyType("OverallOrthogonality", "IfcPlaneAngleMeasure") { Definition = "Indicative (95%-100%) range orthogonality associated to the intended shape and orientation in XYZ."},
			new SingleValuePropertyType("OverallStraightness", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range straightness associated to the intended shape."},
			new SingleValuePropertyType("OverallTolerance", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range tolerance associated to the intended shape and position in XYZ."},
			new SingleValuePropertyType("PlanarFlatness", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range flatness associated to the intended shape and position in XYZ."},
			new SingleValuePropertyType("SideFlatness", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range flatness associated to the side surface in YZ, if different to the overall flatness."},
			new SingleValuePropertyType("ToleranceDescription", "IfcText") { Definition = "General description of the tolerance associated to the element or feature, its source and implications."},
			new SingleValuePropertyType("VerticalOrthogonality", "IfcPlaneAngleMeasure") { Definition = "Indicative (95%-100%) range orthogonality associated to the vertical shape and orientation in Z, if different to the overall orthogonality."},
			new SingleValuePropertyType("VerticalStraightness", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range straightness associated to the vertical shape in Z, if different to the overall straightness."},
			new SingleValuePropertyType("VerticalTolerance", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range tolerance associated to the vertical shape and position in Z, if different to the overall tolerance."} },
				new [] { "IfcProduct", "IfcTypeProduct" });
		yield return new PropertySetInfo("Pset_TrackBase", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsSurfaceGalling", "IfcBoolean") { Definition = "Indicates whether the surface is galling or not."},
			new SingleValuePropertyType("SurfaceGallingArea", "IfcAreaMeasure") { Definition = "The galling area of the object surface."} },
				new [] { "IfcSlab", "IfcSlabType" });
		yield return new PropertySetInfo("Pset_TrackElementOccurrenceSleeper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("UnderSleeperPadStiffness", new [] { "MEDIUM", "SOFT", "STIFF", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the stiffness of the under-sleeper pad as design reference for the sleeper."},
			new SingleValuePropertyType("HasSpecialEquipment", "IfcBoolean") { Definition = "Indicates whether the sleeper has any special equipment for fastening components (e.g. Balise, signum magnet) or not."},
			new SingleValuePropertyType("IsContaminatedSleeper", "IfcBoolean") { Definition = "Indicates whether the sleeper is contaminated and requires special disposal or not."},
			new SingleValuePropertyType("SequenceInTrackPanel", "IfcInteger") { Definition = "Sequence of the sleeper within the track panel."} },
				new [] { "IfcTrackElement" });
		yield return new PropertySetInfo("Pset_TrackElementPHistoryDerailer", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsDerailing", "IfcTimeSeries") { Definition = "Indicates whether the derailer is on or not."} },
				new [] { "IfcTrackElement" });
		yield return new PropertySetInfo("Pset_TrackElementTypeDerailer", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AppliedLineLoad", "IfcMassPerLengthMeasure") { Definition = "The load of line where the derailer is installed. It is a design parameter and is defined by mass per length."},
			new SingleValuePropertyType("DerailmentHeight", "IfcPositiveLengthMeasure") { Definition = "Height of derailment block when derailer in protection state."},
			new SingleValuePropertyType("DerailmentMaximumSpeedLimit", "IfcLinearVelocityMeasure") { Definition = "Indicates the maximum allowable train speed for the derailer."},
			new SingleValuePropertyType("DerailmentWheelDiameter", "IfcPositiveLengthMeasure") { Definition = "Indicates the wheel diameter requirement for the derailer."} },
				new [] { "IfcTrackElement", "IfcTrackElementType" });
		yield return new PropertySetInfo("Pset_TrackElementTypeSleeper", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("InstalledCondition", new [] { "NEW", "REGENERATED", "REUSED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Assessment of the condition of the element at point of installation."},
			new EnumerationPropertyType("SleeperType", new [] { "COMPOSITESLEEPER", "CONCRETESLEEPER", "INSULATEDSTEELSLEEPER", "MONOBLOCKCONCRETESLEEPER", "NOTINSULATEDSTEELSLEEPER", "TWOBLOCKCONCRETESLEEPER", "WOODENSLEEPER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the sleeper type."},
			new SingleValuePropertyType("FasteningType", "IfcLabel") { Definition = "Indicates the type of fastening used to generate traction between the foot of the rail and the sleeper. It depends on but is not uniquely identified by the type of sleeper. This property shall only be used when sleeper fastening is not modelled as an element."},
			new SingleValuePropertyType("HollowSleeperUsage", "IfcLabel") { Definition = "Indicates the purpose of using hollow sleeper. The possible value can be eg. cable trenching, protection of turnout mechanism, etc."},
			new SingleValuePropertyType("IsElectricallyInsulated", "IfcBoolean") { Definition = "Indicates whether the sleeper is electrically insulated due to its design or the running rails or not."},
			new SingleValuePropertyType("IsHollowSleeper", "IfcBoolean") { Definition = "Indicates whether the sleeper is hollowed or not."},
			new SingleValuePropertyType("NumberOfTrackCenters", "IfcCountMeasure") { Definition = "Indicates the number of track centers running over the sleepers."},
			new SingleValuePropertyType("TechnicalStandard", "IfcExternalReference") { Definition = "The technical standard which the element should comply with."} },
				new [] { "IfcTrackElement", "IfcTrackElementType" });
		yield return new PropertySetInfo("Pset_TractionPowerSystem", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("ElectrificationType", new [] { "AC", "DC", "NON_ELECTRIFIED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the type of railway electrification."},
			new EnumerationPropertyType("PowerSupplyMode", new [] { "AC", "DC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Power supply mode of the equipment or system."},
			new SingleValuePropertyType("NominalVoltage", "IfcElectricVoltageMeasure") { Definition = "The optimum voltage for the electrical appliance or system."},
			new SingleValuePropertyType("RatedFrequency", "IfcFrequencyMeasure") { Definition = "Frequency of the AC electric power supply when the device or system reaches its optimum operating condition."} },
				new [] { "IfcDistributionSystem" });
		yield return new PropertySetInfo("Pset_TrafficCalmingDeviceCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("TypeDesignation", "IfcLabel") { Definition = "Type designator for the element. The content depends on local standards. Eg. 'Bull nose', 'Half batter', 'Dropper', 'Chamfer' etc"} },
				new [] { "IfcElementAssembly", "IfcElementAssemblyType" });
		yield return new PropertySetInfo("Pset_TransformerTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("SecondaryCurrentType", new [] { "AC", "DC", "NOTKNOWN", "UNSET" } ) { Definition = "A list of the secondary current types that can result from transformer output."},
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("TransformerVectorGroup", new [] { "DD0", "DD6", "DY11", "DY5", "DZ0", "DZ6", "YD11", "YD5", "YY0", "YY6", "YZ11", "YZ5", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "List of the possible vector groups for the transformer from which that required may be set. Values in the enumeration list follow a standard international code where the first letter  describes how the primary windings are connected,\nthe second letter describes how the secondary windings are connected, and the numbers describe the rotation of voltages and currents from the primary to the secondary side in multiples of 30 degrees.D: means that the windings are delta-connected.\nY: means that the windings are star-connected.\nZ: means that the windings are zig-zag connected (a special start-connected providing low reactance of the transformer);\nThe connectivity is only relevant for three-phase transformers."},
			new SingleValuePropertyType("ImaginaryImpedanceRatio", "IfcRatioMeasure") { Definition = "The ratio between the imaginary part of the zero sequence impedance and the imaginary part of the positive impedance (i.e. imaginary part of the short-circuit voltage) of the transformer.\nUsed for three-phase transformer which includes a N-conductor."},
			new SingleValuePropertyType("IsNeutralPrimaryTerminalAvailable", "IfcBoolean") { Definition = "An indication of whether the neutral point of the primary winding is available as a terminal (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("IsNeutralSecondaryTerminalAvailable", "IfcBoolean") { Definition = "An indication of whether the neutral point of the secondary winding is available as a terminal (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("MaximumApparentPower", "IfcPowerMeasure") { Definition = "Maximum apparent power/capacity in VA (volt ampere)."},
			new SingleValuePropertyType("PrimaryApparentPower", "IfcPowerMeasure") { Definition = "The power in VA (volt ampere) that has been transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryVoltage", "IfcElectricVoltageMeasure") { Definition = "The voltage that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("RealImpedanceRatio", "IfcRatioMeasure") { Definition = "The ratio between the real part of the zero sequence impedance and the real part of the positive impedance (i.e. real part of the short-circuit voltage) of the transformer.\nUsed for three-phase transformer which includes a N-conductor."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SecondaryApparentPower", "IfcPowerMeasure") { Definition = "The power in VA (volt ampere) that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryCurrent", "IfcElectricCurrentMeasure") { Definition = "The current that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryVoltage", "IfcElectricVoltageMeasure") { Definition = "The voltage that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("ShortCircuitVoltage", "IfcComplexNumber") { Definition = "A complex number that specifies the real and imaginary parts of the short-circuit voltage at rated current of a transformer given in %."} },
				new [] { "IfcTransformer", "IfcTransformerType" });
		yield return new PropertySetInfo("Pset_TransitionSectionCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalLength", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall length of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In case of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcEarthworksFill" });
		yield return new PropertySetInfo("Pset_TransportElementCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("CapacityPeople", "IfcCountMeasure") { Definition = "Capacity of the transportation element measured in numbers of person."},
			new SingleValuePropertyType("CapacityWeight", "IfcMassMeasure") { Definition = "Capacity of the transport element measured by weight."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\n\nHere whether the transport element (in case of e.g., a lift) is designed to serve as a fire exit, e.g., for fire escape purposes."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcTransportationDevice", "IfcTransportationDeviceType" });
		yield return new PropertySetInfo("Pset_TransportElementElevator", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ClearDepth", "IfcPositiveLengthMeasure") { Definition = "The clear depth.\n\nIt indicates the distance from the inner surface of the elevator door to the opposite surface of the elevator car."},
			new SingleValuePropertyType("ClearHeight", "IfcPositiveLengthMeasure") { Definition = "Clear height of the object (elevator).\nThe shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence."},
			new SingleValuePropertyType("ClearWidth", "IfcPositiveLengthMeasure") { Definition = "The clear width.\n\nIt indicates the distance from the inner surfaces of the elevator car left and right from the elevator door."},
			new SingleValuePropertyType("FireFightingLift", "IfcBoolean") { Definition = "Indication whether the elevator is designed to serve as a fire fighting lift the case of fire (TRUE) or not (FALSE). A fire fighting lift is used by fire fighters to access the location of fire and to evacuate people."} },
				new [] { "IfcTransportElement", "IfcTransportElementType" });
		yield return new PropertySetInfo("Pset_TransportEquipmentOTN", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ChromaticDispersionTolerance", "IfcReal") { Definition = "Indicates the tolerance of the transport equipment chromatic dispersion. The value is defined by picosecond per nanometer (ps/nm)."},
			new SingleValuePropertyType("EquipmentCapacity", "IfcIntegerCountRateMeasure") { Definition = "Indicates the equipment capacity of the appliance. The value is defined in bits/s."},
			new SingleValuePropertyType("MinimumOpticalSignalToNoiseRatio", "IfcRatioMeasure") { Definition = "Indicates the minimum optical signal to noise ratio of the transport equipment."},
			new SingleValuePropertyType("PolarizationModeDispersionTolerance", "IfcTimeMeasure") { Definition = "Indicates the polarization mode dispersion tolerance of the transport equipment. It is usually measured by picosecond."},
			new SingleValuePropertyType("SingleChannelAveragePower", "IfcPowerMeasure") { Definition = "Indicates the average power of a single channel of the transport equipment."},
			new SingleValuePropertyType("SingleChannelPower", "IfcPowerMeasure") { Definition = "Indicates the power range of a single channel of the transport equipment."},
			new SingleValuePropertyType("SingleWaveTransmissionRate", "IfcFrequencyMeasure") { Definition = "Indicates the single wave transmission rate of the transport equipment."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Pset_TrenchExcavationCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalDepth", "IfcNonNegativeLengthMeasure") { Definition = "Nominal Depth of the object"},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcEarthworksCut" });
		yield return new PropertySetInfo("Pset_TubeBundleTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("FoulingFactor", "IfcThermalResistanceMeasure") { Definition = "Fouling factor of the tubes in the tube bundle."},
			new SingleValuePropertyType("HasTurbulator", "IfcBoolean") { Definition = "TRUE if the tube has a turbulator, FALSE if it does not."},
			new SingleValuePropertyType("HorizontalSpacing", "IfcPositiveLengthMeasure") { Definition = "Horizontal spacing between tubes in the tube bundle."},
			new SingleValuePropertyType("InLineRowSpacing", "IfcPositiveLengthMeasure") { Definition = "In-line tube row spacing."},
			new SingleValuePropertyType("InsideDiameter", "IfcPositiveLengthMeasure") { Definition = "Actual inner diameter of the tube in the tube bundle."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("NominalDiameter", "IfcPositiveLengthMeasure") { Definition = "Nominal diameter or width of the object.\n\nNominal diameter or width of the tubes in the tube bundle."},
			new SingleValuePropertyType("NumberOfCircuits", "IfcCountMeasure") { Definition = "Number of circuits.\n\nNumber of parallel fluid tube circuits."},
			new SingleValuePropertyType("NumberOfRows", "IfcCountMeasure") { Definition = "Number of tube rows in the tube bundle assembly."},
			new SingleValuePropertyType("OutsideDiameter", "IfcPositiveLengthMeasure") { Definition = "Actual outside diameter of the tube in the tube bundle."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("StaggeredRowSpacing", "IfcPositiveLengthMeasure") { Definition = "Staggered tube row spacing."},
			new SingleValuePropertyType("ThermalConductivity", "IfcThermalConductivityMeasure") { Definition = "The thermal conductivity of the object."},
			new SingleValuePropertyType("VerticalSpacing", "IfcPositiveLengthMeasure") { Definition = "Vertical spacing between tubes in the tube bundle."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Volume of the element.\n\nTotal volume of fluid in the tubes and their headers."} },
				new [] { "IfcTubeBundle", "IfcTubeBundleType" });
		yield return new PropertySetInfo("Pset_TubeBundleTypeFinned", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Diameter", "IfcPositiveLengthMeasure") { Definition = "The Diameter of the object.\n\nFor circular fins only."},
			new SingleValuePropertyType("FinCorrugatedType", "IfcLabel") { Definition = "Description of a fin corrugated type."},
			new SingleValuePropertyType("HasCoating", "IfcBoolean") { Definition = "TRUE if the fin has a coating, FALSE if it does not."},
			new SingleValuePropertyType("Height", "IfcPositiveLengthMeasure") { Definition = "Characteristic height\n\nLength of the fin as measured perpendicular to the direction of airflow."},
			new SingleValuePropertyType("Length", "IfcPositiveLengthMeasure") { Definition = "The length of the object.\n\nAs measured parallel to the direction of airflow."},
			new SingleValuePropertyType("Spacing", "IfcPositiveLengthMeasure") { Definition = "Distance between fins on a tube in the tube bundle."},
			new SingleValuePropertyType("ThermalConductivity", "IfcThermalConductivityMeasure") { Definition = "The thermal conductivity of the object."},
			new SingleValuePropertyType("Thickness", "IfcPositiveLengthMeasure") { Definition = "The geometric thickness of the object."} },
				new [] { "IfcTubeBundle", "IfcTubeBundleType" });
		yield return new PropertySetInfo("Pset_Uncertainty", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("UncertaintyBasis", new [] { "ASSESSMENT", "ESTIMATE", "INTERPRETATION", "MEASUREMENT", "OBSERVATION", "NOTKNOWN", "USERDEFINED", "NOTDEFINED" } ) { Definition = "Indication of the basis of the uncertainty"},
			new SingleValuePropertyType("HorizontalUncertainty", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range diameter associated to the vertical shape and position in X, if different to the linear uncertainty."},
			new SingleValuePropertyType("LinearUncertainty", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range diameter associated to the overall shape and position in XYZ."},
			new SingleValuePropertyType("OrthogonalUncertainty", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range diameter associated to the horizontal shape and position in Y, if different to the horizontal uncertainty."},
			new SingleValuePropertyType("UncertaintyDescription", "IfcText") { Definition = "General description of the uncertainty associated to the element or feature, its source and implications."},
			new SingleValuePropertyType("VerticalUncertainty", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range diameter associated to the vertical shape and position in Z, if different to the linear uncertainty."} },
				new [] { "IfcProduct", "IfcTypeProduct" });
		yield return new PropertySetInfo("Pset_UnitaryControlElementBaseStationController", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NumberOfManagedBTSs", "IfcCountMeasure") { Definition = "Indicates the maximum number of base transceiver stations (BTSs) that can be handled by the device."},
			new SingleValuePropertyType("NumberOfManagedCarriers", "IfcCountMeasure") { Definition = "Indicates how many carrier frequencies can be managed by the device."},
			new TableValuePropertyType("NumberOfInterfaces", "IfcLabel", "IfcInteger") { Definition = "Indicates the types of interfaces and their number in the device."} },
				new [] { "IfcUnitaryControlElement", "IfcUnitaryControlElementType" });
		yield return new PropertySetInfo("Pset_UnitaryControlElementPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Fan", "IfcTimeSeries") { Definition = "Indicates fan operation where True is on, False is off, and Unknown is automatic."},
			new SingleValuePropertyType("OperationModeHistory", "IfcTimeSeries") { Definition = "Indicates operation mode corresponding to Pset_UnitaryControlTypeCommon.Mode.  For example, 'HEAT', 'COOL', 'AUTO'."},
			new SingleValuePropertyType("SetPoint", "IfcTimeSeries") { Definition = "Indicates the setpoint and label.\n\nIndicates the temperature setpoint.  For thermostats with setbacks or separate high and low setpoints, then the time series may contain a pair of values at each entry where the first value is the heating setpoint (low) and the second value is the cooling setpoint (high)."},
			new SingleValuePropertyType("Temperature", "IfcTimeSeries") { Definition = "Temperature of the fluid.\n\nIndicates the current measured temperature."} },
				new [] { "IfcUnitaryControlElement" });
		yield return new PropertySetInfo("Pset_UnitaryControlElementTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new TableValuePropertyType("OperationMode", "IfcIdentifier", "IfcLabel") { Definition = "Table mapping operation mode identifiers to descriptive labels, which may be used for interpreting Pset_UnitaryControlElementPHistory.Mode."} },
				new [] { "IfcUnitaryControlElement", "IfcUnitaryControlElementType" });
		yield return new PropertySetInfo("Pset_UnitaryControlElementTypeControlPanel", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured.\n\nA set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the\nUltimateRatedCurrent associated with the same breaker unit."},
			new SingleValuePropertyType("NominalPower", "IfcPowerMeasure") { Definition = "A conventional value of apparent power determining a value of the rated current that may be carried with rated voltage applied, under specified conditions. ( IEV ref 421-04-04)"},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("ReferenceAirRelativeHumidity", "IfcNormalisedRatioMeasure") { Definition = "Measurement of the ratio of water vapor in the air."},
			new SingleValuePropertyType("ReferenceEnvironmentTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Ideal temperature range."} },
				new [] { "IfcUnitaryControlElement", "IfcUnitaryControlElementType" });
		yield return new PropertySetInfo("Pset_UnitaryControlElementTypeIndicatorPanel", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("UnitaryApplication", new [] { "LIFTARRIVALGONG", "LIFTCARDIRECTIONLANTERN", "LIFTFIRESYSTEMSPORT", "LIFTHALLLANTERN", "LIFTPOSITIONINDICATOR", "LIFTVOICEANNOUNCER", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The application of the unitary control element."} },
				new [] { "IfcUnitaryControlElement", "IfcUnitaryControlElementType" });
		yield return new PropertySetInfo("Pset_UnitaryControlElementTypeThermostat", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("TemperatureSetPoint", "IfcThermodynamicTemperatureMeasure") { Definition = "The temperature setpoint range and default setpoint."} },
				new [] { "IfcUnitaryControlElement", "IfcUnitaryControlElementType" });
		yield return new PropertySetInfo("Pset_UnitaryEquipmentTypeAirConditioningUnit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CondenserEnteringTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature of fluid entering condenser."},
			new SingleValuePropertyType("CondenserFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Flow rate of fluid through the condenser."},
			new SingleValuePropertyType("CondenserLeavingTemperature", "IfcThermodynamicTemperatureMeasure") { Definition = "Temperature of fluid leaving condenser."},
			new SingleValuePropertyType("CoolingEfficiency", "IfcPositiveRatioMeasure") { Definition = "Coefficient of Performance: Ratio of cooling energy output to energy input under full load operating conditions."},
			new SingleValuePropertyType("HeatingCapacity", "IfcPowerMeasure") { Definition = "Heating capacity."},
			new SingleValuePropertyType("HeatingEfficiency", "IfcPositiveRatioMeasure") { Definition = "Heating efficiency under full load heating conditions."},
			new SingleValuePropertyType("LatentCoolingCapacity", "IfcPowerMeasure") { Definition = "Latent cooling capacity."},
			new SingleValuePropertyType("OutsideAirFlowrate", "IfcVolumetricFlowRateMeasure") { Definition = "Flow rate of outside air entering the unit."},
			new SingleValuePropertyType("SensibleCoolingCapacity", "IfcPowerMeasure") { Definition = "Sensible cooling capacity."} },
				new [] { "IfcUnitaryEquipment", "IfcUnitaryEquipmentType" });
		yield return new PropertySetInfo("Pset_UnitaryEquipmentTypeAirHandler", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("AirHandlerConstruction", new [] { "CONSTRUCTEDONSITE", "MANUFACTUREDITEM", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining how the air handler might be fabricated."},
			new EnumerationPropertyType("AirHandlerFanCoilArrangement", new [] { "BLOWTHROUGH", "DRAWTHROUGH", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Enumeration defining the arrangement of the supply air fan and the cooling coil."},
			new SingleValuePropertyType("DualDeck", "IfcBoolean") { Definition = "Does the AirHandler have a dual deck? TRUE = Yes, FALSE = No."} },
				new [] { "IfcUnitaryEquipment", "IfcUnitaryEquipmentType" });
		yield return new PropertySetInfo("Pset_UnitaryEquipmentTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcUnitaryEquipment", "IfcUnitaryEquipmentType" });
		yield return new PropertySetInfo("Pset_UtilityConsumptionPHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Electricity", "IfcTimeSeries") { Definition = "The amount of electricity consumed during the period specified in the time series."},
			new SingleValuePropertyType("Fuel", "IfcTimeSeries") { Definition = "The amount of fuel consumed during the period specified in the time series."},
			new SingleValuePropertyType("Heat", "IfcTimeSeries") { Definition = "The amount of heat energy consumed during the period specified in the time series."},
			new SingleValuePropertyType("Steam", "IfcTimeSeries") { Definition = "The amount of steam consumed during the period specified in the time series."},
			new SingleValuePropertyType("Water", "IfcTimeSeries") { Definition = "The amount of water consumed during the period specified in the time series."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Pset_ValvePHistory", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MeasuredFlowRate", "IfcTimeSeries") { Definition = "The rate of flow of a fluid measured across the valve."},
			new SingleValuePropertyType("MeasuredPressureDrop", "IfcTimeSeries") { Definition = "The actual pressure drop in the fluid measured across the valve."},
			new SingleValuePropertyType("PercentageOpen", "IfcTimeSeries") { Definition = "The ratio between the amount that the valve is open to the full open position of the valve."} },
				new [] { "IfcValve" });
		yield return new PropertySetInfo("Pset_ValveTypeAirRelease", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("IsAutomatic", "IfcBoolean") { Definition = "Indication of whether the valve is automatically operated (TRUE) or manually operated (FALSE)."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new EnumerationPropertyType("ValveMechanism", new [] { "BALL", "BUTTERFLY", "CONFIGUREDGATE", "GLAND", "GLOBE", "LUBRICATEDPLUG", "NEEDLE", "PARALLELSLIDE", "PLUG", "WEDGEGATE", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The mechanism by which the valve function is achieved where:BALL: Valve that has a ported ball that can be turned relative to the body seat ports.\nBUTTERFLY: Valve in which a streamlined disc pivots about a diametric axis.\nCONFIGUREDGATE: Screwdown valve in which the closing gate is shaped in a configured manner to have a more precise control of pressure and flow change across the valve.\nGLAND: Valve with a tapered seating, in which a rotatable plug is retained by means of a gland and gland packing.\nGLOBE: Screwdown valve that has a spherical body.\nLUBRICATEDPLUG: Plug valve in which a lubricant is injected under pressure between the plug face and the body.\nNEEDLE: Valve for regulating the flow in or from a pipe, in which a slender cone moves along the axis of flow to close against a fixed conical seat.\nPARALLELSLIDE: Screwdown valve that has a machined plate that slides in formed grooves to form a seal.\nPLUG: Valve that has a ported plug that can be turned relative to the body seat ports.\nWEDGEGATE: Screwdown valve that has a wedge shaped plate fitting into tapered guides to form a seal."},
			new EnumerationPropertyType("ValveOperation", new [] { "DROPWEIGHT", "FLOAT", "HYDRAULIC", "LEVER", "LOCKSHIELD", "MOTORIZED", "PNEUMATIC", "SOLENOID", "SPRING", "THERMOSTATIC", "WHEEL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The method of valve operation where:DROPWEIGHT: A valve that is closed by the action of a weighted lever being released, the weight normally being prevented from dropping by being held by a wire, the closure normally being made by the action of heat on a fusible link in the wire\nFLOAT: A valve that is opened and closed by the action of a float that rises and falls with water level. The float may be a ball attached to a lever or other mechanism\nHYDRAULIC: A valve that is opened and closed by hydraulic actuation\nLEVER: A valve that is opened and closed by the action of a lever rotating the gate within the valve.\nLOCKSHIELD: A valve that requires the use of a special lockshield key for opening and closing, the operating mechanism being protected by a shroud during normal operation.\nMOTORIZED: A valve that is opened and closed by the action of an electric motor on an actuator\nPNEUMATIC: A valve that is opened and closed by pneumatic actuation\nSOLENOID: A valve that is normally held open by a magnetic field in a coil acting on the gate but that is closed immediately if the electrical current generating the magnetic field is removed.\nSPRING: A valve that is normally held in position by the pressure of a spring on a plate but that may be caused to open if the pressure of the fluid is sufficient to overcome the spring pressure.\nTHERMOSTATIC: A valve in which the ports are opened or closed to maintain a required predetermined temperature.\nWHEEL: A valve that is opened and closed by the action of a wheel moving the gate within the valve."},
			new EnumerationPropertyType("ValvePattern", new [] { "ANGLED_2_PORT", "CROSSOVER_4_PORT", "SINGLEPORT", "STRAIGHT_2_PORT", "STRAIGHT_3_PORT", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "The configuration of the ports of a valve according to either the linear route taken by a fluid flowing through the valve or by the number of ports where:SINGLEPORT: Valve that has a single entry port from the system that it serves, the exit port being to the surrounding environment.\nANGLED_2_PORT: Valve in which the direction of flow is changed through 90 degrees.\nSTRAIGHT_2_PORT: Valve in which the flow is straight through.\nSTRAIGHT_3_PORT: Valve with three separate ports.\nCROSSOVER_4_PORT: Valve with 4 separate ports."},
			new SingleValuePropertyType("CloseOffRating", "IfcPressureMeasure") { Definition = "Close off rating."},
			new SingleValuePropertyType("FlowCoefficient", "IfcReal") { Definition = "Flow coefficient (the quantity of fluid that passes through a fully open valve at unit pressure drop), typically expressed as the Kv or Cv value for the valve."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("Size", "IfcPositiveLengthMeasure") { Definition = "The size of the connection to the valve (or to each connection for faucets, mixing valves, etc.)."},
			new SingleValuePropertyType("TestPressure", "IfcPressureMeasure") { Definition = "The maximum pressure to which the valve has been subjected under test."},
			new SingleValuePropertyType("WorkingPressure", "IfcPressureMeasure") { Definition = "Working pressure.\n\nThe normally expected maximum working pressure of the valve."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeDrawOffCock", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasHoseUnion", "IfcBoolean") { Definition = "Indicates whether the object is fitted with a hose union connection (= TRUE) or not (= FALSE)."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeFaucet", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("FaucetFunction", new [] { "COLD", "HOT", "MIXED", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the operating temperature of a faucet that may be specified."},
			new EnumerationPropertyType("FaucetOperation", new [] { "CERAMICDISC", "LEVERHANDLE", "NONCONCUSSIVESELFCLOSING", "QUARTERTURN", "QUICKACTION", "SCREWDOWN", "SELFCLOSING", "TIMEDSELFCLOSING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the range of ways in which a faucet can be operated that may be specified where:CeramicDisc: Quick action faucet with a ceramic seal to open or close the orifice\n.\nLeverHandle: Quick action faucet that is operated by a lever handle\n.\nNonConcussiveSelfClosing:    Self closing faucet that does not induce surge pressure\n.\nQuarterTurn: Quick action faucet that can be fully opened or shut by turning the operating mechanism through 90 degrees.\nQuickAction: Faucet that can be opened or closed fully with a single small movement of the operating mechanism\n.\nScrewDown: Faucet in which a plate or disc is moved, by the rotation of a screwed spindle, to close or open the orifice.\nSelfClosing: Faucet that is opened by pressure of the top of an operating spindle and is closed under the action of a spring or weight when the pressure is released.\nTimedSelfClosing:   Self closing faucet that discharges for a predetermined period of time\n."},
			new EnumerationPropertyType("FaucetType", new [] { "BIB", "DIVERTER", "DIVIDEDFLOWCOMBINATION", "GLOBE", "PILLAR", "SINGLEOUTLETCOMBINATION", "SPRAY", "SPRAYMIXING", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the range of faucet types that may be specified where:Bib:     Faucet with a horizontal inlet and a nozzle that discharges downwards.\nGlobe:   Faucet fitted through the end of a bath, with a horizontal inlet, a partially spherical body and a vertical nozzle.\nDiverter:   Combination faucet assembly with a valve to enable the flow of mixed water to be transferred to a showerhead.\nDividedFlowCombination:  Combination faucet assembly in which hot and cold water are kept separate until emerging from a common nozzle\n.\nPillar:  Faucet that has a vertical inlet and a nozzle that discharges downwards\n.\nSingleOutletCombination =    Combination faucet assembly in which hot and cold water mix before emerging from a common nozzle\n.\nSpray:   Faucet with a spray outlet\n.\nSprayMixing:     Spray faucet connected to hot and cold water supplies that delivers water at a temperature determined during use."},
			new SingleValuePropertyType("FaucetTopDescription", "IfcText") { Definition = "Description of the operating mechanism/top of the faucet."},
			new SingleValuePropertyType("Finish", "IfcText") { Definition = "Description of the (surface) finish of the object for informational purposes."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeFlushing", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FlushingRate", "IfcVolumetricFlowRateMeasure") { Definition = "The predetermined quantity of water to be flushed."},
			new SingleValuePropertyType("HasIntegralShutOffDevice", "IfcBoolean") { Definition = "Indication of whether the flushing valve has an integral shut off device fitted (set TRUE) or not (set FALSE)."},
			new SingleValuePropertyType("IsHighPressure", "IfcBoolean") { Definition = "Indication of whether the flushing valve is suitable for use on a high pressure water main (set TRUE) or not (set FALSE)."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeGasTap", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("HasHoseUnion", "IfcBoolean") { Definition = "Indicates whether the object is fitted with a hose union connection (= TRUE) or not (= FALSE)."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeIsolating", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("IsolatingPurpose", new [] { "LANDING", "LANDINGWITHPRESSUREREGULATION", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the purpose for which the isolating valve is used since the way in which the valve is identified as an isolating valve may be in the context of its use. Note that unless there is a contextual name for the isolating valve (as in the case of a Landing Valve on a rising fire main), then the value assigned shoulkd be UNSET."},
			new SingleValuePropertyType("IsNormallyOpen", "IfcBoolean") { Definition = "If TRUE, the valve is normally open. If FALSE is is normally closed."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypeMixing", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("MixerControl", new [] { "MANUAL", "PREDEFINED", "THERMOSTATIC", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Defines the form of control of the mixing valve."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object.\n\nThe size of the pipework connection from the mixing valve."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypePressureReducing", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DownstreamPressure", "IfcPressureMeasure") { Definition = "The operating pressure of the fluid downstream of the pressure reducing valve."},
			new SingleValuePropertyType("UpstreamPressure", "IfcPressureMeasure") { Definition = "The operating pressure of the fluid upstream of the pressure reducing valve."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Pset_ValveTypePressureRelief", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("ReliefPressure", "IfcPressureMeasure") { Definition = "The pressure at which the spring or weight in the valve is set to discharge fluid."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Pset_VegetationCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("BotanicalName", "IfcLabel") { Definition = "Formal scientific name conforming to the International Code of Nomenclature for algae, fungi, and plants (ICN)"},
			new SingleValuePropertyType("LocalName", "IfcLabel") { Definition = "The local name that the plant is known as."} },
				new [] { "IfcGeographicElement" });
		yield return new PropertySetInfo("Pset_VehicleAvailability", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("MaintenanceDowntime", "IfcRatioMeasure") { Definition = "Maintenance downtime proportion."},
			new SingleValuePropertyType("VehicleAvailability", "IfcRatioMeasure") { Definition = "Vehicle or Plant availability"},
			new SingleValuePropertyType("WeatherDowntime", "IfcRatioMeasure") { Definition = "Weather downtime proportion"} },
				new [] { "IfcVehicle", "IfcVehicle", "IfcVehicle", "IfcVehicle", "IfcVehicle", "IfcVehicleType", "IfcVehicleType", "IfcVehicleType", "IfcVehicleType", "IfcVehicleType" });
		yield return new PropertySetInfo("Pset_VesselLineCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CentreLineToFairlead", "IfcLengthMeasure") { Definition = "Distance from the vessel centreline to the fairlead for the line"},
			new SingleValuePropertyType("FairleadToTermination", "IfcLengthMeasure") { Definition = "Distance from the fairlead to the bitt or winch on the vessel where the line terminates"},
			new SingleValuePropertyType("HeightAboveMainDeck", "IfcLengthMeasure") { Definition = "Height of the fairlead above the main deck of the vessel"},
			new SingleValuePropertyType("LineIdentifier", "IfcIdentifier") { Definition = "Reference ID relative to a design vessel in the project"},
			new SingleValuePropertyType("LineStrength", "IfcForceMeasure") { Definition = "Breaking load of the line (note that ultimate stress is not part of any of the material Psets)"},
			new SingleValuePropertyType("LineType", "IfcLabel") { Definition = "Mooring line type"},
			new SingleValuePropertyType("MidshipToFairLead", "IfcLengthMeasure") { Definition = "Distance from the vessel midship to the fairlead for the line"},
			new SingleValuePropertyType("PreTensionAim", "IfcForceMeasure") { Definition = "Line force that the winch is set to maintain (minimum load)"},
			new SingleValuePropertyType("TailDiameter", "IfcPositiveLengthMeasure") { Definition = "Diameter of the tail"},
			new SingleValuePropertyType("TailLength", "IfcPositiveLengthMeasure") { Definition = "Length of the tail"},
			new SingleValuePropertyType("TailStrength", "IfcForceMeasure") { Definition = "Breaking load of the tail (note that ultimate stress is not part of any of the material Psets)"},
			new SingleValuePropertyType("TailType", "IfcLabel") { Definition = "Mooring tail type"},
			new SingleValuePropertyType("WinchBreakLimit", "IfcForceMeasure") { Definition = "Line force at which the winch starts to release the line (maximum load)"} },
				new [] { "IfcMechanicalFastener", "IfcMechanicalFastenerType" });
		yield return new PropertySetInfo("Pset_VibrationIsolatorTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("IsolatorCompressibility", "IfcRatioMeasure") { Definition = "The compressibility of the vibration isolator."},
			new SingleValuePropertyType("IsolatorStaticDeflection", "IfcLengthMeasure") { Definition = "Static deflection of the vibration isolator."},
			new SingleValuePropertyType("MaximumSupportedWeight", "IfcMassMeasure") { Definition = "The maximum weight that can be carried by the vibration isolator."},
			new SingleValuePropertyType("NominalHeight", "IfcPositiveLengthMeasure") { Definition = "The nominal height of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence.\n\nHeight of the vibration isolator before the application of load."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("VibrationTransmissibility", "IfcPositiveRatioMeasure") { Definition = "The vibration transmissibility percentage."} },
				new [] { "IfcVibrationIsolator", "IfcVibrationIsolatorType" });
		yield return new PropertySetInfo("Pset_VoltageInstrumentTransformer", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AccuracyClass", "IfcRatioMeasure") { Definition = "A designation assigned to an instrument transformer the current (or voltage) error and phase displacement of which remain within specified limits under prescribed conditions of use (IEC 321-01-24)."},
			new SingleValuePropertyType("AccuracyGrade", "IfcLabel") { Definition = "The grade of accuracy."},
			new SingleValuePropertyType("NominalCurrent", "IfcElectricCurrentMeasure") { Definition = "The nominal current that is designed to be measured."},
			new SingleValuePropertyType("NominalPower", "IfcPowerMeasure") { Definition = "A conventional value of apparent power determining a value of the rated current that may be carried with rated voltage applied, under specified conditions. ( IEV ref 421-04-04)"},
			new SingleValuePropertyType("NumberOfPhases", "IfcCountMeasure") { Definition = "Number of phases that the equipment operates on."},
			new SingleValuePropertyType("PrimaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("PrimaryVoltage", "IfcElectricVoltageMeasure") { Definition = "The voltage that is going to be transformed and that runs into the transformer on the primary side."},
			new SingleValuePropertyType("RatedVoltage", "IfcElectricVoltageMeasure") { Definition = "The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum."},
			new SingleValuePropertyType("SecondaryFrequency", "IfcFrequencyMeasure") { Definition = "The frequency that has been transformed and is running out of the transformer on the secondary side."},
			new SingleValuePropertyType("SecondaryVoltage", "IfcElectricVoltageMeasure") { Definition = "The voltage that has been transformed and is running out of the transformer on the secondary side."} },
				new [] { "IfcFlowInstrument", "IfcFlowInstrument", "IfcFlowInstrumentType", "IfcFlowInstrumentType" });
		yield return new PropertySetInfo("Pset_WallCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorption values)."},
			new SingleValuePropertyType("Combustible", "IfcBoolean") { Definition = "Indication whether the object is made from combustible material (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Compartmentation", "IfcBoolean") { Definition = "Indication whether the object is designed to serve as a fire compartmentation (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("ExtendToStructure", "IfcBoolean") { Definition = "Indicates whether the object extend to the structure above (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("LoadBearing", "IfcBoolean") { Definition = "Indicates whether the object is intended to carry loads (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SurfaceSpreadOfFlame", "IfcLabel") { Definition = "Indication on how the flames spread around the surface,\nIt is given according to the national building code that governs the fire behaviour for materials."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."} },
				new [] { "IfcWall", "IfcWallType" });
		yield return new PropertySetInfo("Pset_Warranty", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Exclusions", "IfcText") { Definition = "Items, conditions or actions that may be excluded from the warranty or that may cause the warranty to become void."},
			new SingleValuePropertyType("IsExtendedWarranty", "IfcBoolean") { Definition = "Indication of whether this is an extended warranty whose duration is greater than that normally assigned to an artefact (=TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("PointOfContact", "IfcLabel") { Definition = "The organization that should be contacted for action under the terms of the warranty. Note that the role of the organization (manufacturer, supplier, installer etc.) is determined by the IfcActorRole attribute of IfcOrganization."},
			new SingleValuePropertyType("WarrantyContent", "IfcText") { Definition = "The content of the warranty."},
			new SingleValuePropertyType("WarrantyIdentifier", "IfcIdentifier") { Definition = "The identifier assigned to a warranty."},
			new SingleValuePropertyType("WarrantyPeriod", "IfcDuration") { Definition = "The time duration during which a manufacturer or supplier guarantees or warrants the performance of an artefact."},
			new SingleValuePropertyType("WarrantyStartDate", "IfcDate") { Definition = "The date on which the warranty commences."} },
				new [] { "IfcElement", "IfcElementType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcWasteTerminal", "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeFloorTrap", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("InletPatternType", new [] { "1", "12", "123", "1234", "124", "13", "134", "14", "2", "23", "234", "24", "3", "34", "4", "NONE" } ) { Definition = "Identifies the pattern of inlet connections to a trap.A trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south)."},
			new EnumerationPropertyType("TrapType", new [] { "NONE", "P_TRAP", "Q_TRAP", "S_TRAP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of trap from which the type required may be set."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the object."},
			new SingleValuePropertyType("CoverMaterial", "IfcMaterialDefinition") { Definition = "Material from which the cover or grating is constructed."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the object."},
			new SingleValuePropertyType("HasStrainer", "IfcBoolean") { Definition = "Indicates whether the gully trap has a strainer (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection.\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("IsForSullageWater", "IfcBoolean") { Definition = "Indicates if the purpose of the floor trap is to receive sullage water, or if that is amongst its purposes (= TRUE), or not (= FALSE). Note that if TRUE, it is expected that an upstand or kerb will be placed around the floor trap to prevent the ingress of surface water runoff; the provision of the upstand or kerb is not dealt with in this property set."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the y-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."},
			new SingleValuePropertyType("SpilloverLevel", "IfcPositiveLengthMeasure") { Definition = "The level at which water spills out of the object."} },
				new [] { "IfcWasteTerminal", "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeFloorWaste", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the object."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the object."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the y-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal", "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeGullySump", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BackInletPatternType", new [] { "1", "12", "123", "1234", "124", "13", "134", "14", "2", "23", "234", "24", "3", "34", "4", "NONE" } ) { Definition = "Identifies the pattern of inlet connections to a gully trap.A gulley trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the gully trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south).2\n           |!                       |\n1-|                       |-3\n   !                       ||\n          4"},
			new EnumerationPropertyType("GullyType", new [] { "BACKINLET", "VERTICAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of gully from which the type required may be set."},
			new EnumerationPropertyType("TrapType", new [] { "NONE", "P_TRAP", "Q_TRAP", "S_TRAP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of trap from which the type required may be set."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the object."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the object."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection.\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("NominalSumpDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis in the local coordinate system of the sump."},
			new SingleValuePropertyType("NominalSumpLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the sump."},
			new SingleValuePropertyType("NominalSumpWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the y-axis in the local coordinate system of the sump."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal", "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeGullyTrap", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("BackInletPatternType", new [] { "1", "12", "123", "1234", "124", "13", "134", "14", "2", "23", "234", "24", "3", "34", "4", "NONE" } ) { Definition = "Identifies the pattern of inlet connections to a gully trap.A gulley trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the gully trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south).2\n           |!                       |\n1-|                       |-3\n   !                       ||\n          4"},
			new EnumerationPropertyType("GullyType", new [] { "BACKINLET", "VERTICAL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of gully from which the type required may be set."},
			new EnumerationPropertyType("TrapType", new [] { "NONE", "P_TRAP", "Q_TRAP", "S_TRAP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of trap from which the type required may be set."},
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the object."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the object."},
			new SingleValuePropertyType("HasStrainer", "IfcBoolean") { Definition = "Indicates whether the gully trap has a strainer (= TRUE) or not (= FALSE)."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection.\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the y-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal", "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeRoofDrain", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CoverLength", "IfcPositiveLengthMeasure") { Definition = "The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the object."},
			new SingleValuePropertyType("CoverWidth", "IfcPositiveLengthMeasure") { Definition = "The length measured along the y-axis in the local coordinate system of the cover of the object."},
			new SingleValuePropertyType("NominalBodyDepth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the z-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("NominalBodyLength", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length measured along the x-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("NominalBodyWidth", "IfcPositiveLengthMeasure") { Definition = "Nominal or quoted length, measured along the y-axis of the local coordinate system of the object."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal", "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeWasteDisposalUnit", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("DrainConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the drain connection inlet to the waste disposal unit."},
			new SingleValuePropertyType("NominalDepth", "IfcNonNegativeLengthMeasure") { Definition = "Nominal Depth of the object"},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal", "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WasteTerminalTypeWasteTrap", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("WasteTrapType", new [] { "NONE", "P_TRAP", "Q_TRAP", "S_TRAP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Identifies the predefined types of trap from which the type required may be set."},
			new SingleValuePropertyType("InletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the inlet connection.\nNote that all inlet connections are assumed to be the same size."},
			new SingleValuePropertyType("OutletConnectionSize", "IfcPositiveLengthMeasure") { Definition = "Size of the outlet connection from the object."} },
				new [] { "IfcWasteTerminal", "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Pset_WaterStratumCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("AnnualRange", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) annual range in levels."},
			new SingleValuePropertyType("AnnualTrend", "IfcLengthMeasure") { Definition = "Indicative (95%-100%) annual rise in level."},
			new SingleValuePropertyType("IsFreshwater", "IfcLogical") { Definition = "Indication of freshwater (true,false or unknown)"},
			new SingleValuePropertyType("SeicheRange", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range between peaks and troughts of seiche (resonant) waves."},
			new SingleValuePropertyType("TidalRange", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range between high and low tide levels."},
			new SingleValuePropertyType("WaveRange", "IfcPositiveLengthMeasure") { Definition = "Indicative (95%-100%) range between peaks and troughs of waves"} },
				new [] { "IfcGeotechnicalStratum" });
		yield return new PropertySetInfo("Pset_Width", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Side", new [] { "BOTH", "LEFT", "RIGHT" } ) { Definition = "Specifies if the width is measured to the RIGHT or to the LEFT of the curve referenced by the placement, or if the same value is applied to BOTH sides."},
			new EnumerationPropertyType("TransitionWidth", new [] { "CONST", "LINEAR" } ) { Definition = "The type of transition of width used between the previous event and this event."},
			new SingleValuePropertyType("NominalWidth", "IfcNonNegativeLengthMeasure") { Definition = "The nominal overall width of the object. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence."} },
				new [] { "IfcReferent" });
		yield return new PropertySetInfo("Pset_WindowCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("Status", new [] { "DEMOLISH", "EXISTING", "NEW", "TEMPORARY", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as \"New\" - element designed as new addition, \"Existing\" - element exists and remains, \"Demolish\" - element existed but is to be demolished,  \"Temporary\" - element will exists only temporary (like a temporary support structure)."},
			new SingleValuePropertyType("AcousticRating", "IfcLabel") { Definition = "Acoustic rating for this object.\nIt is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorption values)."},
			new SingleValuePropertyType("FireExit", "IfcBoolean") { Definition = "Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE).\n\nHere it defines an exit window in accordance to the national building code."},
			new SingleValuePropertyType("FireRating", "IfcLabel") { Definition = "Fire rating for this object. It is given according to the national fire safety classification."},
			new SingleValuePropertyType("GlazingAreaFraction", "IfcPositiveRatioMeasure") { Definition = "Fraction of the glazing area relative to the total area of the filling element.\nIt shall be used, if the glazing area is not given separately for all panels within the filling element."},
			new SingleValuePropertyType("HasDrive", "IfcBoolean") { Definition = "Indication whether this object has an automatic drive to operate it (TRUE) or no drive (FALSE)"},
			new SingleValuePropertyType("HasSillExternal", "IfcBoolean") { Definition = "Indication whether the window opening has an external sill (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("HasSillInternal", "IfcBoolean") { Definition = "Indication whether the window opening has an internal sill (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Infiltration", "IfcVolumetricFlowRateMeasure") { Definition = "Infiltration flowrate of outside air for the filler object based on the area of the filler object at a pressure level of 50 Pascals. It shall be used, if the length of all joints is unknown."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("MechanicalLoadRating", "IfcLabel") { Definition = "Mechanical load rating for this object.\nIt is provided according to the national building code."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."},
			new SingleValuePropertyType("SecurityRating", "IfcLabel") { Definition = "Index based rating system indicating security level.\nIt is giving according to the national building code."},
			new SingleValuePropertyType("SmokeStop", "IfcBoolean") { Definition = "Indication whether the object is designed to provide a smoke stop (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("ThermalTransmittance", "IfcThermalTransmittanceMeasure") { Definition = "Thermal transmittance coefficient (U-Value) of an element, within the direction of the thermal flow (including all materials)."},
			new SingleValuePropertyType("WaterTightnessRating", "IfcLabel") { Definition = "Water tightness rating for this object.\nIt is provided according to the national building code."},
			new SingleValuePropertyType("WindLoadRating", "IfcLabel") { Definition = "Wind load resistance rating for this object.\nIt is provided according to the national building code."} },
				new [] { "IfcWindow", "IfcWindowType" });
		yield return new PropertySetInfo("Pset_WindowLiningProperties", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FirstMullionOffset", "IfcNormalisedRatioMeasure") { Definition = "Offset of the mullion centerline, measured along the x-axis of the window placement coordinate system. An offset value = 0.5 indicates that the mullion is positioned in the middle of the window."},
			new SingleValuePropertyType("FirstTransomOffset", "IfcNormalisedRatioMeasure") { Definition = "Offset of the transom centerline, measured along the z-axis of the window placement coordinate system. An offset value = 0.5 indicates that the transom is positioned in the middle of the window."},
			new SingleValuePropertyType("LiningDepth", "IfcPositiveLengthMeasure") { Definition = "The depth of the lining.\n\nFor a window, it is the depth of the window lining, measured perpendicularly to window elevation plane."},
			new SingleValuePropertyType("LiningOffset", "IfcLengthMeasure") { Definition = "Offset of the lining.\n\nFor a window, it is the offset of the window lining, given as distance along the y axis of the local placement (perpendicular to the window plane)."},
			new SingleValuePropertyType("LiningThickness", "IfcNonNegativeLengthMeasure") { Definition = "Thickness of the lining.\n\nFor a window, it is the thickness of the window lining as explained in the figure below. If LiningThickness value is 0. (zero) it denotes a window without a lining (all other lining parameters shall be set to NIL in this case). If the LiningThickness is NIL it denotes that the value is not available."},
			new SingleValuePropertyType("LiningToPanelOffsetX", "IfcLengthMeasure") { Definition = "Offset between the lining and the panel, measured along the x-axis of the local placement.\n\nFor a window, it is the offset between the lining and the window panel. Should be smaller or equal to the LiningThickness."},
			new SingleValuePropertyType("LiningToPanelOffsetY", "IfcLengthMeasure") { Definition = "Offset between the lining and the panel, measured along the y-axis of the local placement.\n\nFor a window, it is the offset between the lining and the window panel. Should be smaller or equal to the IfcWindowPanelProperties.PanelThickness."},
			new SingleValuePropertyType("MullionThickness", "IfcNonNegativeLengthMeasure") { Definition = "Thickness of the mullion.\n\nFor a window, it is the thickness of the mullion (i.e., the vertical separator of window panels within a window), measured parallel to the window elevation plane. The mullion is part of the lining and the mullion depth is assumed to be identical to the lining depth. If the MullionThickness is set to zero (and the MullionOffset set to a positive length), then the window is divided horizontally without a physical divider."},
			new SingleValuePropertyType("SecondMullionOffset", "IfcNormalisedRatioMeasure") { Definition = "Offset of the mullion centerline for the second mullion, measured along the x-axis of the window placement co-ordinate system. An offset value = 0.666 indicates that the second mullion is positioned at two/third of the window."},
			new SingleValuePropertyType("SecondTransomOffset", "IfcNormalisedRatioMeasure") { Definition = "Offset of the transom centerline for the second transom, measured along the x-axis of the window placement co-ordinate system. An offset value = 0.666 indicates that the second transom is positioned at two/third of the window."},
			new SingleValuePropertyType("TransomThickness", "IfcNonNegativeLengthMeasure") { Definition = "Thickness of the transom.\n\nFor a window, it is the thickness of the transom (horizontal separator of window panels within a window), measured parallel to the window elevation plane. The transom is part of the lining and the transom depth is assumed to be identical to the lining depth. If the TransomThickness is set to zero (and the TransomOffset set to a positive length), then the window is divided vertically without a physical divider."} },
				new [] { "IfcMember", "IfcMemberType", "IfcWindow", "IfcWindowType" });
		yield return new PropertySetInfo("Pset_WindowPanelProperties", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("OperationType", new [] { "BOTTOMHUNG", "FIXEDCASEMENT", "OTHEROPERATION", "PIVOTHORIZONTAL", "PIVOTVERTICAL", "REMOVABLECASEMENT", "SIDEHUNGLEFTHAND", "SIDEHUNGRIGHTHAND", "SLIDINGHORIZONTAL", "SLIDINGVERTICAL", "TILTANDTURNLEFTHAND", "TILTANDTURNRIGHTHAND", "TOPHUNG", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Type of operations. Also used to assign standard symbolic presentations according to national building standards.\n\nFor a window, it is the type of window panel operations. Also used to assign standard symbolic presentations according to national building standards."},
			new EnumerationPropertyType("PanelPosition", new [] { "BOTTOM", "LEFT", "MIDDLE", "RIGHT", "TOP", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Position of the panel.\n\nFor a window, it is the position of the panel within the overall window style."},
			new SingleValuePropertyType("FrameDepth", "IfcPositiveLengthMeasure") { Definition = "The length (or depth) of the frame.\n\nFor a window, it is the depth of panel frame, measured from front face to back face horizontally (i.e. perpendicular to the window elevation plane)."},
			new SingleValuePropertyType("FrameThickness", "IfcPositiveLengthMeasure") { Definition = "The thickness of the frame.\n\nFor a window, it is the width of panel frame, measured from inside of panel (at glazing) to outside of panel (at lining), i.e. parallel to the window (elevation) plane."} },
				new [] { "IfcPlate", "IfcPlateType", "IfcWindow", "IfcWindowType" });
		yield return new PropertySetInfo("Pset_WiredCommunicationPortCommon", new IPropertyTypeInfo[] {
			new EnumerationPropertyType("CommunicationStandard", new [] { "ETHERNET", "STM_1", "STM_16", "STM_256", "STM_4", "STM_64", "USB", "XDSL", "OTHER", "NOTKNOWN", "UNSET" } ) { Definition = "Indicates the communication standard supported by the physical wired communication port."},
			new SingleValuePropertyType("MaximumTransferRate", "IfcIntegerCountRateMeasure") { Definition = "Indicates the transmission rate in bit/s over the wired port."} },
				new [] { "IfcDistributionPort" });
		yield return new PropertySetInfo("Pset_WorkControlCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("WorkDayDuration", "IfcDuration") { Definition = "The elapsed time within a worktime-based day. For presentation purposes, applications may choose to display IfcTask durations in work days where IfcTaskTime.DurationType=WORKTIME. This value must be less than or equal to 24 hours (an elapsed day); if omitted then 8 hours is assumed."},
			new SingleValuePropertyType("WorkFinishTime", "IfcTime") { Definition = "The default time of day a task is scheduled to finish. For presentation purposes, if the finish time of a task matches the WorkFinishTime, then applications may choose to display the date only. Conversely when entering dates without specifying time, applications may automatically append the WorkFinishTime."},
			new SingleValuePropertyType("WorkMonthDuration", "IfcDuration") { Definition = "The elapsed time within a worktime-based month. For presentation purposes, applications may choose to display IfcTask durations in work months where IfcTaskTime.DurationType=WORKTIME. This value must be less than or equal to 744 hours (an elapsed month of 31 days); if omitted then 160 hours is assumed."},
			new SingleValuePropertyType("WorkStartTime", "IfcTime") { Definition = "The default time of day a task is scheduled to start. For presentation purposes, if the start time of a task matches the WorkStartTime, then applications may choose to display the date only. Conversely when entering dates without specifying time, applications may automatically append the WorkStartTime."},
			new SingleValuePropertyType("WorkWeekDuration", "IfcDuration") { Definition = "The elapsed time within a worktime-based week. For presentation purposes, applications may choose to display IfcTask durations in work weeks where IfcTaskTime.DurationType=WORKTIME. This value must be less than or equal to 168 hours (an elapsed week); if omitted then 40 hours is assumed."} },
				new [] { "IfcWorkControl" });
		yield return new PropertySetInfo("Pset_ZoneCommon", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossPlannedArea", "IfcAreaMeasure") { Definition = "Total planned gross area of the spatial structure element. Used for programming the spatial structure element."},
			new SingleValuePropertyType("HandicapAccessible", "IfcBoolean") { Definition = "Indication that this object is designed to be accessible by the handicapped. Set to (TRUE) if this object is rated as handicap accessible according to the local building codes, otherwise (FALSE). It is giving according to the requirements of the national building code."},
			new SingleValuePropertyType("IsExternal", "IfcBoolean") { Definition = "Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building."},
			new SingleValuePropertyType("NetPlannedArea", "IfcAreaMeasure") { Definition = "Total planned net area of the object. Used for programming the object."},
			new SingleValuePropertyType("PubliclyAccessible", "IfcBoolean") { Definition = "Indication whether this space (in case of e.g., a toilet) is designed to serve as a publicly accessible space, e.g., for a public toilet (TRUE) or not (FALSE)."},
			new SingleValuePropertyType("Reference", "IfcIdentifier") { Definition = "Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as \"construction type\". It should be provided as an alternative to the name of the \"object type\", if the software does not support object types and no classification reference to a recognized classification system used.IFC4.3.0.0 DEPRECATION  The Reference property is deprecated and shall no longer be used, use attribute Name on the relating type instead."} },
				new [] { "IfcZone" });
		yield return new PropertySetInfo("Qto_ActuatorBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcActuator", "IfcActuatorType" });
		yield return new PropertySetInfo("Qto_AirTerminalBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Perimeter", "IfcLengthMeasure") { Definition = "Perimeter of the object."},
			new SingleValuePropertyType("TotalSurfaceArea", "IfcAreaMeasure") { Definition = "Total surface area of the element.\n\nConcerns the air terminal face plate."} },
				new [] { "IfcAirTerminal", "IfcAirTerminalType" });
		yield return new PropertySetInfo("Qto_AirTerminalBoxTypeBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcAirTerminalBox", "IfcAirTerminalBoxType" });
		yield return new PropertySetInfo("Qto_AirToAirHeatRecoveryBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcAirToAirHeatRecovery", "IfcAirToAirHeatRecoveryType" });
		yield return new PropertySetInfo("Qto_AlarmBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcAlarm", "IfcAlarmType" });
		yield return new PropertySetInfo("Qto_ArealStratumBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object.\n\nArea represented, if lower edge of stratum known."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nOf upper edge of slice."},
			new SingleValuePropertyType("PlanLength", "IfcLengthMeasure") { Definition = "Projected plan length of upper edge of slice."} },
				new [] { "IfcGeotechnicalStratum" });
		yield return new PropertySetInfo("Qto_AudioVisualApplianceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcAudioVisualAppliance", "IfcAudioVisualApplianceType" });
		yield return new PropertySetInfo("Qto_BeamBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossSectionArea", "IfcAreaMeasure") { Definition = "Total area of the cross section (or profile) of the object."},
			new SingleValuePropertyType("GrossSurfaceArea", "IfcAreaMeasure") { Definition = "Total gross area of the object, normally generated as perimeter * length + 2 * cross section area. It is the sum of OuterSurfaceArea + (2 x CrossSectionArea) and shall only be given, if the OuterSurfaceArea and CrossSectionArea cannot be established separately."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nNot taking into account any cut-out's or other processing features."},
			new SingleValuePropertyType("NetSurfaceArea", "IfcAreaMeasure") { Definition = "Net surface area of the object, normally generated as perimeter * length + 2 * cross section area taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."} },
				new [] { "IfcBeam", "IfcBeamType" });
		yield return new PropertySetInfo("Qto_BodyGeometryValidation", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossSurfaceArea", "IfcAreaMeasure") { Definition = "Total gross area of the object, normally generated as perimeter * length + 2 * cross section area. It is the sum of OuterSurfaceArea + (2 x CrossSectionArea) and shall only be given, if the OuterSurfaceArea and CrossSectionArea cannot be established separately.\n\nTotal gross surface area of the element before applying product-level geometric features such as openings and projections."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account.\n\nTotal gross volume of the element before applying product-level geometric features such as openings and projections."},
			new SingleValuePropertyType("NetSurfaceArea", "IfcAreaMeasure") { Definition = "Net surface area of the object, normally generated as perimeter * length + 2 * cross section area taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net surface area of the element after applying product-level geometric features such as openings and projections."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net volume of the element before applying product-level geometric features such as openings and projections."},
			new SingleValuePropertyType("SurfaceGenusAfterFeatures", "IfcCountMeasure") { Definition = "The Surface Genus of the evaluated representation items after applying product-level geometric features such as openings and projections.Surface Genus is a topological measure that represents the number of \"holes\" or \"handles\" on a surface. For example, a sphere has genus 0, and a torus has genus 1.Computed using the Euler characteristic:$$\\chi=V-E+F$$With the numbers of vertices (V), edges (E) and faces (F)$$\\chi=2−2g−b$$With surface genus (g) and the number of boundaries (b) the latter zero in case of an enclosed volume."},
			new SingleValuePropertyType("SurfaceGenusBeforeFeatures", "IfcCountMeasure") { Definition = "The Surface Genus of the evaluated representation items before applying product-level geometric features such as openings and projections.Surface Genus is a topological measure that represents the number of \"holes\" or \"handles\" on a surface. For example, a sphere has genus 0, and a torus has genus 1.Computed using the Euler characteristic:$$\\chi=V-E+F$$With the numbers of vertices (V), edges (E) and faces (F)$$\\chi=2−2g−b$$With surface genus (g) and the number of boundaries (b) the latter zero in case of an enclosed volume."} },
				new [] { "IfcProduct" });
		yield return new PropertySetInfo("Qto_BoilerBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nNot including contained fluid."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nWeight of the element, including contained fluid as designed."},
			new SingleValuePropertyType("TotalSurfaceArea", "IfcAreaMeasure") { Definition = "Total surface area of the element."} },
				new [] { "IfcBoiler", "IfcBoilerType" });
		yield return new PropertySetInfo("Qto_BuildingBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("EavesHeight", "IfcLengthMeasure") { Definition = "Standard net height of this storey, from the top surface of the construction floor, to the bottom surface of the construction floor or roof above. Only provided is there is a constant height."},
			new SingleValuePropertyType("FootPrintArea", "IfcAreaMeasure") { Definition = "Gross area of the site covered by the building(s)."},
			new SingleValuePropertyType("GrossFloorArea", "IfcAreaMeasure") { Definition = "Sum of all gross floor areas within the spatial structure element.\n\nIncludes the area of construction elements within the building. May be provided in addition to the quantities of the spaces and the construction elements assigned to the building. In case of inconsistencies, the individual quantities of spaces and construction elements take precedence."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account.\n\nSum of all gross volumes of spaces enclosed. It includes the volumes of construction elements within the element. May be provided in addition to the quantities of the spaces and the construction elements assigned to the element. In case of inconsistencies, the individual quantities of spaces and construction elements take precedence."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height\n\nStandard gross height of this building, from the top surface of the construction floor, to the top surface of the construction floor or roof above. Only provided is there is a constant height."},
			new SingleValuePropertyType("NetFloorArea", "IfcAreaMeasure") { Definition = "Sum of all net usable floor areas.\n\nIt excludes the area of construction elements within the building. May be provided in addition to the quantities of the spaces assigned to the building. In case of inconsistencies, the individual quantities of spaces take precedence."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nSum of all net volumes of spaces enclosed by the building. It excludes the volumes of construction elements within the building. May be provided in addition to the quantities of the spaces assigned to the building. In case of inconsistencies, the individual quantities of spaces take precedence."} },
				new [] { "IfcBuilding" });
		yield return new PropertySetInfo("Qto_BuildingElementProxyQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("NetSurfaceArea", "IfcAreaMeasure") { Definition = "Net surface area of the object, normally generated as perimeter * length + 2 * cross section area taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcBuildingElementProxy", "IfcBuildingElementProxyType" });
		yield return new PropertySetInfo("Qto_BuildingStoreyBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossFloorArea", "IfcAreaMeasure") { Definition = "Sum of all gross floor areas within the spatial structure element.\n\nIncludes the area of construction elements within the building storey. May be provided in addition to the quantities of the spaces and the construction elements assigned to the storey. In case of inconsistencies, the individual quantities of spaces and construction elements take precedence."},
			new SingleValuePropertyType("GrossHeight", "IfcLengthMeasure") { Definition = "Standard gross height of this storey, from the top surface of the construction floor, to the top surface of the construction floor or roof above. Only provided is there is a constant height."},
			new SingleValuePropertyType("GrossPerimeter", "IfcLengthMeasure") { Definition = "Gross perimeter at the outer contour of the object.\n\nWithout taking interior slab openings into account."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account.\n\nSum of all gross volumes of spaces enclosed. It includes the volumes of construction elements within the element. May be provided in addition to the quantities of the spaces and the construction elements assigned to the element. In case of inconsistencies, the individual quantities of spaces and construction elements take precedence."},
			new SingleValuePropertyType("NetFloorArea", "IfcAreaMeasure") { Definition = "Sum of all net usable floor areas.\n\nIt excludes the area of construction elements within the building storey. May be provided in addition to the quantities of the spaces assigned to the storey. In case of inconsistencies, the individual quantities of spaces take precedence."},
			new SingleValuePropertyType("NetHeight", "IfcLengthMeasure") { Definition = "Standard net height of this storey, from the top surface of the construction floor, to the bottom surface of the construction floor or roof above. Only provided is there is a constant height."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nSum of all net volumes of spaces enclosed by the building storey. It iexcludes the volumes of construction elements within the building storey. May be provided in addition to the quantities of the spaces assigned to the storey. In case of inconsistencies, the individual quantities of spaces take precedence."} },
				new [] { "IfcBuildingStorey" });
		yield return new PropertySetInfo("Qto_BurnerBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcBurner", "IfcBurnerType" });
		yield return new PropertySetInfo("Qto_CableCarrierFittingBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcCableCarrierFitting", "IfcCableCarrierFittingType" });
		yield return new PropertySetInfo("Qto_CableCarrierSegmentBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossSectionArea", "IfcAreaMeasure") { Definition = "Total area of the cross section (or profile) of the object."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nCalculated at midpoint of cross-section, equal to the distance between inlet and outlet ports."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."} },
				new [] { "IfcCableCarrierSegment", "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Qto_CableFittingBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcCableFitting", "IfcCableFittingType" });
		yield return new PropertySetInfo("Qto_CableSegmentBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossSectionArea", "IfcAreaMeasure") { Definition = "Total area of the cross section (or profile) of the object."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nCalculated at midpoint of cross-section, equal to the distance between inlet and outlet ports."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."} },
				new [] { "IfcCableSegment", "IfcCableSegmentType" });
		yield return new PropertySetInfo("Qto_ChillerBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcChiller", "IfcChillerType" });
		yield return new PropertySetInfo("Qto_ChimneyBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nFrom the foundation (or beginning) to the top not taking into account any cut-out's or other processing features."} },
				new [] { "IfcChimney", "IfcChimneyType" });
		yield return new PropertySetInfo("Qto_CoilBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcCoil", "IfcCoilType" });
		yield return new PropertySetInfo("Qto_ColumnBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossSectionArea", "IfcAreaMeasure") { Definition = "Total area of the cross section (or profile) of the object."},
			new SingleValuePropertyType("GrossSurfaceArea", "IfcAreaMeasure") { Definition = "Total gross area of the object, normally generated as perimeter * length + 2 * cross section area. It is the sum of OuterSurfaceArea + (2 x CrossSectionArea) and shall only be given, if the OuterSurfaceArea and CrossSectionArea cannot be established separately."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nNot taking into account any cut-out's or other processing features."},
			new SingleValuePropertyType("NetSurfaceArea", "IfcAreaMeasure") { Definition = "Net surface area of the object, normally generated as perimeter * length + 2 * cross section area taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."} },
				new [] { "IfcColumn", "IfcColumnType" });
		yield return new PropertySetInfo("Qto_CommunicationsApplianceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcCommunicationsAppliance", "IfcCommunicationsApplianceType" });
		yield return new PropertySetInfo("Qto_CompressorBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcCompressor", "IfcCompressorType" });
		yield return new PropertySetInfo("Qto_CondenserBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcCondenser", "IfcCondenserType" });
		yield return new PropertySetInfo("Qto_ConduitSegmentBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("InnerDiameter", "IfcLengthMeasure") { Definition = "The actual inner diameter of the object."},
			new SingleValuePropertyType("OuterDiameter", "IfcLengthMeasure") { Definition = "The actual outer diameter of the object."} },
				new [] { "IfcCableCarrierSegment", "IfcCableCarrierSegmentType" });
		yield return new PropertySetInfo("Qto_ConstructionEquipmentResourceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("OperatingTime", "IfcTimeMeasure") { Definition = "Productive time using the equipment including operating time and excluding idle time."},
			new SingleValuePropertyType("UsageTime", "IfcTimeMeasure") { Definition = "Total time using the equipment including operating time and idle time."} },
				new [] { "IfcConstructionEquipmentResource", "IfcConstructionEquipmentResourceType" });
		yield return new PropertySetInfo("Qto_ConstructionMaterialResourceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account.\n\nIncluding material placed and wasted."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nIncluding material placed and wasted."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net volume of the material, including material placed but excluding material wasted."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net weight of the material, including material placed but excluding material wasted."} },
				new [] { "IfcConstructionMaterialResource", "IfcConstructionMaterialResourceType" });
		yield return new PropertySetInfo("Qto_ControllerBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcController", "IfcControllerType" });
		yield return new PropertySetInfo("Qto_CooledBeamBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcCooledBeam", "IfcCooledBeamType" });
		yield return new PropertySetInfo("Qto_CoolingTowerBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcCoolingTower", "IfcCoolingTowerType" });
		yield return new PropertySetInfo("Qto_CourseBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Thickness", "IfcLengthMeasure") { Definition = "The geometric thickness of the object."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Volume of the element."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcCourse", "IfcCourseType" });
		yield return new PropertySetInfo("Qto_CoveringBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossArea", "IfcAreaMeasure") { Definition = "Gross Area of the object. Openings, recesses, projections and cut-outs are not taken into account.\n\nSum of all gross areas of the covering facing the space."},
			new SingleValuePropertyType("NetArea", "IfcAreaMeasure") { Definition = "Total net area of the object. Openings, recesses and cut-outs are taken into account by subtraction, projections by addition.\n\nSum of all net areas of the covering facing the space."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcCovering", "IfcCoveringType" });
		yield return new PropertySetInfo("Qto_CurtainWallQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossSideArea", "IfcAreaMeasure") { Definition = "Area of the wall as viewed by an elevation view of the middle plane of the wall.  It does not take into account any wall modifications (such as openings)."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height\n\nTotal height of the curtain wall. It should only be provided, if it is constant along the curtain wall path."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nAlong center line (even if different to the wall path)."},
			new SingleValuePropertyType("NetSideArea", "IfcAreaMeasure") { Definition = "Area of the object as viewed by an elevation view of the middle plane of the object. It does take into account all object modifications (such as openings)."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic).\n\nOnly be provided, if it is constant along the curtain wall path."} },
				new [] { "IfcCurtainWall", "IfcCurtainWallType" });
		yield return new PropertySetInfo("Qto_DamperBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcDamper", "IfcDamperType" });
		yield return new PropertySetInfo("Qto_DistributionBoardBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NumberOfCircuits", "IfcCountMeasure") { Definition = "Number of circuits.\n\nNumber of circuits in the distribution board."} },
				new [] { "IfcElectricDistributionBoard", "IfcElectricDistributionBoardType" });
		yield return new PropertySetInfo("Qto_DistributionChamberElementBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcLengthMeasure") { Definition = "The depth of the object.\n\nIndicates the depth of the element."},
			new SingleValuePropertyType("GrossSurfaceArea", "IfcAreaMeasure") { Definition = "Total gross area of the object, normally generated as perimeter * length + 2 * cross section area. It is the sum of OuterSurfaceArea + (2 x CrossSectionArea) and shall only be given, if the OuterSurfaceArea and CrossSectionArea cannot be established separately."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("NetSurfaceArea", "IfcAreaMeasure") { Definition = "Net surface area of the object, normally generated as perimeter * length + 2 * cross section area taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net area of the inner surface of the chamber, subtracting any openings such as for pipes, ducts, or cables."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net volume of the chamber, subtracting any enclosed elements such as pipes, ducts, cables, or equipment."} },
				new [] { "IfcDistributionChamberElement", "IfcDistributionChamberElementType" });
		yield return new PropertySetInfo("Qto_DoorBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object.\n\nTotal area of the outer lining of the door."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height\n\nTotal outer height of the door lining. It should only be provided, if it is a rectangular door."},
			new SingleValuePropertyType("Perimeter", "IfcLengthMeasure") { Definition = "Perimeter of the object."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic).\n\nTotal outer width of the door lining. It should only be provided, if it is a rectangular door."} },
				new [] { "IfcDoor", "IfcDoorType" });
		yield return new PropertySetInfo("Qto_DuctFittingBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossCrossSectionArea", "IfcAreaMeasure") { Definition = "Area of the cross section.\n\nAt the inlet, including the duct fitting itself and the interior flow space."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nCalculated at midpoint of cross-section and equal to the distance along the flow path from the port inlet to the port outlet. For junction fittings, it indicates the length of the longest flow path."},
			new SingleValuePropertyType("NetCrossSectionArea", "IfcAreaMeasure") { Definition = "Area of the cross section of the object.\n\nIncluding the duct fitting and excluding the interior flow space."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."} },
				new [] { "IfcDuctFitting", "IfcDuctFittingType" });
		yield return new PropertySetInfo("Qto_DuctSegmentBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossCrossSectionArea", "IfcAreaMeasure") { Definition = "Area of the cross section.\n\nIncluding the duct itself and the interior flow space."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nCalculated at midpoint of cross-section, equal to the distance between inlet and outlet ports."},
			new SingleValuePropertyType("NetCrossSectionArea", "IfcAreaMeasure") { Definition = "Area of the cross section of the object.\n\nExcluding the interior flow space."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."} },
				new [] { "IfcDuctSegment", "IfcDuctSegmentType" });
		yield return new PropertySetInfo("Qto_DuctSilencerBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcDuctSilencer", "IfcDuctSilencerType" });
		yield return new PropertySetInfo("Qto_EarthworksCutBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcLengthMeasure") { Definition = "The depth of the object.\n\nDepth (one direction of the non-projected foot print area) of the slab. It shall only be provided, if the slab is rectangular.NOTE  Also referred to as width, but not to be confused with the \"Width\" quantity, that denotes the thickness in the context of the slab."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("LooseVolume", "IfcVolumeMeasure") { Definition = "Volume of the earthworks when in a loose piled state"},
			new SingleValuePropertyType("UndisturbedVolume", "IfcVolumeMeasure") { Definition = "Undisturbed Volume"},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcEarthworksCut" });
		yield return new PropertySetInfo("Qto_EarthworksFillBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CompactedVolume", "IfcVolumeMeasure") { Definition = "Volume of the earthworks when finished and compacted in place."},
			new SingleValuePropertyType("Depth", "IfcLengthMeasure") { Definition = "The depth of the object.\n\nDepth (one direction of the non-projected foot print area) of the slab. It shall only be provided, if the slab is rectangular.NOTE  Also referred to as width, but not to be confused with the \"Width\" quantity, that denotes the thickness in the context of the slab."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("LooseVolume", "IfcVolumeMeasure") { Definition = "Volume of the earthworks when in a loose piled state"},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcEarthworksFill" });
		yield return new PropertySetInfo("Qto_ElectricApplianceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcElectricAppliance", "IfcElectricApplianceType" });
		yield return new PropertySetInfo("Qto_ElectricFlowStorageDeviceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcElectricFlowStorageDevice", "IfcElectricFlowStorageDeviceType" });
		yield return new PropertySetInfo("Qto_ElectricGeneratorBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcElectricGenerator", "IfcElectricGeneratorType" });
		yield return new PropertySetInfo("Qto_ElectricMotorBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcElectricMotor", "IfcElectricMotorType" });
		yield return new PropertySetInfo("Qto_ElectricTimeControlBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcElectricTimeControl", "IfcElectricTimeControlType" });
		yield return new PropertySetInfo("Qto_EvaporativeCoolerBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcEvaporativeCooler", "IfcEvaporativeCoolerType" });
		yield return new PropertySetInfo("Qto_EvaporatorBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcEvaporator", "IfcEvaporatorType" });
		yield return new PropertySetInfo("Qto_FacilityPartBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height"},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Volume of the element."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcFacilityPart" });
		yield return new PropertySetInfo("Qto_FanBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcFan", "IfcFanType" });
		yield return new PropertySetInfo("Qto_FilterBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcFilter", "IfcFilterType" });
		yield return new PropertySetInfo("Qto_FireSuppressionTerminalBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcFireSuppressionTerminal", "IfcFireSuppressionTerminalType" });
		yield return new PropertySetInfo("Qto_FlowInstrumentBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcFlowInstrument", "IfcFlowInstrumentType" });
		yield return new PropertySetInfo("Qto_FlowMeterBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcFlowMeter", "IfcFlowMeterType" });
		yield return new PropertySetInfo("Qto_FootingBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossSectionArea", "IfcAreaMeasure") { Definition = "Total area of the cross section (or profile) of the object."},
			new SingleValuePropertyType("GrossSurfaceArea", "IfcAreaMeasure") { Definition = "Total gross area of the object, normally generated as perimeter * length + 2 * cross section area. It is the sum of OuterSurfaceArea + (2 x CrossSectionArea) and shall only be given, if the OuterSurfaceArea and CrossSectionArea cannot be established separately."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height\n\nTotal nominal height of the footing. It should only be provided, if it is constant."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nNot taking into account any cut-out's or other processing features. For strip footings it is measured along the path, for other footings it is one of the horizontal dimensions. It should only be provided, if it is constant."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic).\n\nFor strip footings it is measured perpendicular to the footing path (or longitudial axis). For other footings it is one of the horizontal dimensions. It should only be provided, if it is constant."} },
				new [] { "IfcFooting", "IfcFootingType" });
		yield return new PropertySetInfo("Qto_HeatExchangerBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcHeatExchanger", "IfcHeatExchangerType" });
		yield return new PropertySetInfo("Qto_HumidifierBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcHumidifier", "IfcHumidifierType" });
		yield return new PropertySetInfo("Qto_ImpactProtectionDeviceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"} },
				new [] { "IfcImpactProtectionDevice", "IfcImpactProtectionDeviceType" });
		yield return new PropertySetInfo("Qto_InterceptorBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcInterceptor", "IfcInterceptorType" });
		yield return new PropertySetInfo("Qto_JunctionBoxBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height"},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("NumberOfGangs", "IfcCountMeasure") { Definition = "Number of gangs in the object.\n\nNumber of gangs in the junction box."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcJunctionBox", "IfcJunctionBoxType" });
		yield return new PropertySetInfo("Qto_KerbBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcLengthMeasure") { Definition = "The depth of the object.\n\nDepth (one direction of the non-projected foot print area) of the slab. It shall only be provided, if the slab is rectangular.NOTE  Also referred to as width, but not to be confused with the \"Width\" quantity, that denotes the thickness in the context of the slab."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height"},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Volume of the element."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcKerb", "IfcKerbType" });
		yield return new PropertySetInfo("Qto_LaborResourceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("OvertimeWork", "IfcTimeMeasure") { Definition = "Work that is performed after exceeding a particular limit such as hours per day and/or hours per week, after which company or municipal policy requires a different rate to apply.  Note: Policies for when overtime takes effect are the responsibility of the user or application; they are not modelled in IFC."},
			new SingleValuePropertyType("StandardWork", "IfcTimeMeasure") { Definition = "Work that is performed at regular times, up to a particular limit after which overtime rates may apply."} },
				new [] { "IfcLaborResource", "IfcLaborResourceType" });
		yield return new PropertySetInfo("Qto_LampBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcLamp", "IfcLampType" });
		yield return new PropertySetInfo("Qto_LightFixtureBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcLightFixture", "IfcLightFixtureType" });
		yield return new PropertySetInfo("Qto_LinearStratumBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Diameter", "IfcLengthMeasure") { Definition = "The Diameter of the object."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nEffective length sampled, if lower end of segment known"} },
				new [] { "IfcGeotechnicalStratum" });
		yield return new PropertySetInfo("Qto_MarineFacilityBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height"},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Volume of the element."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcMarineFacility" });
		yield return new PropertySetInfo("Qto_MemberBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossSectionArea", "IfcAreaMeasure") { Definition = "Total area of the cross section (or profile) of the object."},
			new SingleValuePropertyType("GrossSurfaceArea", "IfcAreaMeasure") { Definition = "Total gross area of the object, normally generated as perimeter * length + 2 * cross section area. It is the sum of OuterSurfaceArea + (2 x CrossSectionArea) and shall only be given, if the OuterSurfaceArea and CrossSectionArea cannot be established separately."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nNot taking into account any cut-out's or other processing features."},
			new SingleValuePropertyType("NetSurfaceArea", "IfcAreaMeasure") { Definition = "Net surface area of the object, normally generated as perimeter * length + 2 * cross section area taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."} },
				new [] { "IfcMember", "IfcMemberType" });
		yield return new PropertySetInfo("Qto_MotorConnectionBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcMotorConnection", "IfcMotorConnectionType" });
		yield return new PropertySetInfo("Qto_OpeningElementBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object.\n\nArea of the opening as viewed by an elevation view (for wall openings) or as viewed by a ground floor view (for slab openings)."},
			new SingleValuePropertyType("Depth", "IfcLengthMeasure") { Definition = "The depth of the object.\n\nDepth (or thickness) of the opening, in case of openings it shall be identical to the width (or thickness) of the voided element, in case of recesses it shall be less. Only provided, if the depth is constant."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height\n\nHeight of the opening, in case of wall openings it is the vertical dimension in case of slab openings it is one horizontal dimension. Only provided, if the area is rectangular."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Volume of the element.\n\nVolume of the opening. It is the subtraction volume of the opening from the voided element (e.g. wall or slab). In case that the geometric volume of the opening is bigger then the subtraction volume, only the subtraction volume should be used."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic).\n\nWidth of the opening, in case of wall openings it is the horizontal dimension in case of slab openings it is one horizontal dimension. Only provided, if the area is rectangular."} },
				new [] { "IfcOpeningElement" });
		yield return new PropertySetInfo("Qto_OutletBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcOutlet", "IfcOutletType" });
		yield return new PropertySetInfo("Qto_PavementBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcLengthMeasure") { Definition = "The depth of the object.\n\nDepth (one direction of the non-projected foot print area) of the slab. It shall only be provided, if the slab is rectangular.NOTE  Also referred to as width, but not to be confused with the \"Width\" quantity, that denotes the thickness in the context of the slab."},
			new SingleValuePropertyType("GrossArea", "IfcAreaMeasure") { Definition = "Gross Area of the object. Openings, recesses, projections and cut-outs are not taken into account.\n\nIndicates the extruded area of the element. Only given, if the element is prismatic."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("NetArea", "IfcAreaMeasure") { Definition = "Total net area of the object. Openings, recesses and cut-outs are taken into account by subtraction, projections by addition.\n\nIndicates the extruded area of the object. Only given when prismatic."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net volume of the slab. Openings and recesses are taken into account by subtraction, projections by addition."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcPavement", "IfcPavementType" });
		yield return new PropertySetInfo("Qto_PictorialSignQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object."},
			new SingleValuePropertyType("SignArea", "IfcAreaMeasure") { Definition = "Sign Area"} },
				new [] { "IfcSign", "IfcSignType" });
		yield return new PropertySetInfo("Qto_PileBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("CrossSectionArea", "IfcAreaMeasure") { Definition = "Total area of the cross section (or profile) of the object."},
			new SingleValuePropertyType("GrossSurfaceArea", "IfcAreaMeasure") { Definition = "Total gross area of the object, normally generated as perimeter * length + 2 * cross section area. It is the sum of OuterSurfaceArea + (2 x CrossSectionArea) and shall only be given, if the OuterSurfaceArea and CrossSectionArea cannot be established separately."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nNot taking into account any cut-out's or other processing features."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."} },
				new [] { "IfcPile", "IfcPileType" });
		yield return new PropertySetInfo("Qto_PipeFittingBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossCrossSectionArea", "IfcAreaMeasure") { Definition = "Area of the cross section.\n\nIncluding the pipe fitting itself and the interior flow space."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nNot including contained fluid."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nCalculated at midpoint of cross-section and equal to the distance along the flow path from the port inlet to the port outlet. For junction fittings, it indicates the length of the longest flow path."},
			new SingleValuePropertyType("NetCrossSectionArea", "IfcAreaMeasure") { Definition = "Area of the cross section of the object.\n\nIncluding the pipe fitting and excluding the interior flow space."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nWeight of the pipe fitting, including contained fluid as designed."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."} },
				new [] { "IfcPipeFitting", "IfcPipeFittingType" });
		yield return new PropertySetInfo("Qto_PipeSegmentBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FootPrintArea", "IfcAreaMeasure") { Definition = "Gross area of the site covered by the building(s)."},
			new SingleValuePropertyType("GrossCrossSectionArea", "IfcAreaMeasure") { Definition = "Area of the cross section.\n\nIncluding the pipe itself and the interior flow space."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nNot including contained fluid."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nCalculated at midpoint of cross-section, equal to the distance between inlet and outlet ports."},
			new SingleValuePropertyType("NetCrossSectionArea", "IfcAreaMeasure") { Definition = "Area of the cross section of the object.\n\nExcluding the interior flow space."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nWeight of the pipe segment, including contained fluid as designed."},
			new SingleValuePropertyType("OuterSurfaceArea", "IfcAreaMeasure") { Definition = "Total area of the surfaces of the object (not taking into account the end cap areas), normally generated as perimeter * length in case of extrusions."} },
				new [] { "IfcPipeSegment", "IfcPipeSegmentType" });
		yield return new PropertySetInfo("Qto_PlateBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossArea", "IfcAreaMeasure") { Definition = "Gross Area of the object. Openings, recesses, projections and cut-outs are not taken into account.\n\nIndicates the extruded area of the element. Only given, if the element is prismatic."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("NetArea", "IfcAreaMeasure") { Definition = "Total net area of the object. Openings, recesses and cut-outs are taken into account by subtraction, projections by addition.\n\nIndicates the extruded area of the object. Only given when prismatic."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net volume of the plate. Openings and recesses are taken into account by subtraction, projections by addition."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Perimeter", "IfcLengthMeasure") { Definition = "Perimeter of the object.\n\nPerimeter measured along the outer boundaries of the plate. Only given, if the plate is prismatic (constant thickness)."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcPlate", "IfcPlateType" });
		yield return new PropertySetInfo("Qto_ProjectionElementBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object.\n\nArea of the projection as viewed by an elevation view (for wall projections) or as viewed by a ground floor view (for slab projections)."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Volume of the element.\n\nVolume of the projection. It is the additional volume of the projection to the element (e.g. wall or slab)."} },
				new [] { "IfcProjectionElement" });
		yield return new PropertySetInfo("Qto_ProtectiveDeviceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcProtectiveDevice", "IfcProtectiveDeviceType" });
		yield return new PropertySetInfo("Qto_ProtectiveDeviceTrippingUnitBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcProtectiveDeviceTrippingUnit", "IfcProtectiveDeviceTrippingUnitType" });
		yield return new PropertySetInfo("Qto_PumpBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcPump", "IfcPumpType" });
		yield return new PropertySetInfo("Qto_RailBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Volume of the element."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"} },
				new [] { "IfcRail", "IfcRailType" });
		yield return new PropertySetInfo("Qto_RailingBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nNot taking into account any cut-out's or other processing features."} },
				new [] { "IfcRailing", "IfcRailingType" });
		yield return new PropertySetInfo("Qto_RampFlightBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossArea", "IfcAreaMeasure") { Definition = "Gross Area of the object. Openings, recesses, projections and cut-outs are not taken into account.\n\nTotal area of the ramp flight (not the projected area). Only given, if the element is prismatic."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nMeasured along the walking line."},
			new SingleValuePropertyType("NetArea", "IfcAreaMeasure") { Definition = "Total net area of the object. Openings, recesses and cut-outs are taken into account by subtraction, projections by addition.\n\nTotal area of the ramp flight (not the projected area). Only given when prismatic."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net volume of the ramp flight. Openings and recesses are taken into account by subtraction, projections by addition."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcRampFlight", "IfcRampFlightType" });
		yield return new PropertySetInfo("Qto_ReinforcedSoilBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object."},
			new SingleValuePropertyType("Depth", "IfcLengthMeasure") { Definition = "The depth of the object.\n\nDepth (one direction of the non-projected foot print area) of the slab. It shall only be provided, if the slab is rectangular.NOTE  Also referred to as width, but not to be confused with the \"Width\" quantity, that denotes the thickness in the context of the slab."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Volume of the element."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcReinforcedSoil" });
		yield return new PropertySetInfo("Qto_ReinforcingElementBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Count", "IfcCountMeasure") { Definition = "Total count of reinforcing items."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"} },
				new [] { "IfcReinforcingElement", "IfcReinforcingElementType" });
		yield return new PropertySetInfo("Qto_RoofBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossArea", "IfcAreaMeasure") { Definition = "Gross Area of the object. Openings, recesses, projections and cut-outs are not taken into account.\n\nIndicates the outer surface of the roof and the sum of all roof slab gross areas."},
			new SingleValuePropertyType("NetArea", "IfcAreaMeasure") { Definition = "Total net area of the object. Openings, recesses and cut-outs are taken into account by subtraction, projections by addition.\n\nTotal net area of the outer surface of the roof. It is the suma of all roof slab net areas."},
			new SingleValuePropertyType("ProjectedArea", "IfcAreaMeasure") { Definition = "Total gross area of the outer surfaces of the roof, projected tp the ground. It is the sum of all projected roof slab gross areas. Roof openings, like sky windows and other openings and cut-outs are not taken into account."} },
				new [] { "IfcRoof", "IfcRoofType" });
		yield return new PropertySetInfo("Qto_SanitaryTerminalBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcSanitaryTerminal", "IfcSanitaryTerminalType" });
		yield return new PropertySetInfo("Qto_SensorBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcSensor", "IfcSensorType" });
		yield return new PropertySetInfo("Qto_SignalBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"} },
				new [] { "IfcSignal", "IfcSignalType" });
		yield return new PropertySetInfo("Qto_SignBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height"},
			new SingleValuePropertyType("Thickness", "IfcLengthMeasure") { Definition = "The geometric thickness of the object."},
			new SingleValuePropertyType("Weight", "IfcMassMeasure") { Definition = "Total weight of object"},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcSign", "IfcSignType" });
		yield return new PropertySetInfo("Qto_SiteBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossArea", "IfcAreaMeasure") { Definition = "Gross Area of the object. Openings, recesses, projections and cut-outs are not taken into account.\n\nMeasured in horizontal projections."},
			new SingleValuePropertyType("GrossPerimeter", "IfcLengthMeasure") { Definition = "Gross perimeter at the outer contour of the object.\n\nMeasured in horizontal projection."} },
				new [] { "IfcSite" });
		yield return new PropertySetInfo("Qto_SlabBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Depth", "IfcLengthMeasure") { Definition = "The depth of the object.\n\nDepth (one direction of the non-projected foot print area) of the slab. It shall only be provided, if the slab is rectangular.NOTE  Also referred to as width, but not to be confused with the \"Width\" quantity, that denotes the thickness in the context of the slab."},
			new SingleValuePropertyType("GrossArea", "IfcAreaMeasure") { Definition = "Gross Area of the object. Openings, recesses, projections and cut-outs are not taken into account.\n\nIndicates the extruded area of the element. Only given, if the element is prismatic."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nOnly provided if rectangular."},
			new SingleValuePropertyType("NetArea", "IfcAreaMeasure") { Definition = "Total net area of the object. Openings, recesses and cut-outs are taken into account by subtraction, projections by addition.\n\nIndicates the extruded area of the object. Only given when prismatic."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net volume of the slab. Openings and recesses are taken into account by subtraction, projections by addition."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Perimeter", "IfcLengthMeasure") { Definition = "Perimeter of the object.\n\nPerimeter measured along the outer boundaries of the slab. Only given, if the slab is prismatic (constant thickness)."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcSlab", "IfcSlabType" });
		yield return new PropertySetInfo("Qto_SleeperBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height"},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcTrackElement", "IfcTrackElementType" });
		yield return new PropertySetInfo("Qto_SolarDeviceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossArea", "IfcAreaMeasure") { Definition = "Gross Area of the object. Openings, recesses, projections and cut-outs are not taken into account.\n\nIncluding the outer frame."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcSolarDevice", "IfcSolarDeviceType" });
		yield return new PropertySetInfo("Qto_SpaceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("FinishCeilingHeight", "IfcLengthMeasure") { Definition = "Height of the suspended ceiling (from top of flooring to the bottom of the suspended ceiling). To be provided only if the space has a suspended ceiling with constant height."},
			new SingleValuePropertyType("FinishFloorHeight", "IfcLengthMeasure") { Definition = "Height of the flooring (from base slab without flooring to the flooring height). To be provided only if the space has a constant flooring height."},
			new SingleValuePropertyType("GrossCeilingArea", "IfcAreaMeasure") { Definition = "Sum of all ceiling areas of the space. It includes the area covered by elementsinside the space (columns, inner walls, etc.). The ceiling area is the real (and not the projected) area (e.g. in case of sloped ceilings)."},
			new SingleValuePropertyType("GrossFloorArea", "IfcAreaMeasure") { Definition = "Sum of all gross floor areas within the spatial structure element.\n\nIncludes the area covered by elements inside the space (columns, inner walls, etc.) and excludes the area covered by wall claddings."},
			new SingleValuePropertyType("GrossPerimeter", "IfcLengthMeasure") { Definition = "Gross perimeter at the outer contour of the object.\n\nMeasured at floor level with all sides of the space, including those parts of the perimeter that are created by virtual boundaries and openings (like doors)."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("GrossWallArea", "IfcAreaMeasure") { Definition = "Sum of all wall (and other vertically bounding elements, like columns) areas bounded by the space. It includes the area covered by elements inside the wall area (doors, windows, other openings, etc.)."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height\n\nTotal height (from base slab without flooring to ceiling without suspended ceiling) for this space (measured from top of slab below to bottom of slab above). To be provided only if the space has a constant height."},
			new SingleValuePropertyType("NetCeilingArea", "IfcAreaMeasure") { Definition = "Sum of all ceiling areas of the space. It excludes the area covered by elementsinside the space (columns, inner walls, etc.). The ceiling area is the real (and not the projected) area (e.g. in case of sloped ceilings)."},
			new SingleValuePropertyType("NetFloorArea", "IfcAreaMeasure") { Definition = "Sum of all net usable floor areas.\n\nIt excludes the area covered  by elements inside the space (columns, inner walls, built-in's etc.), slab openings, or other protruding elements. Varying heights are not taking into account (i.e. no reduction for areas under a minimum headroom)."},
			new SingleValuePropertyType("NetPerimeter", "IfcLengthMeasure") { Definition = "Net perimeter at the floor level of this space. It excludes those parts of the perimeter that are created by by virtual boundaries and openings (like doors). It is the measurement used for skirting boards and may include the perimeter of internal fixed objects like columns."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nNet volume enclosed by the space, excluding the volume of construction elements inside the space."},
			new SingleValuePropertyType("NetWallArea", "IfcAreaMeasure") { Definition = "Sum of all wall (and other vertically bounding elements, like columns) areas bounded by the space. It excludes the area covered by elements inside the wall area (doors, windows, other openings, etc.)."} },
				new [] { "IfcSpace", "IfcSpaceType" });
		yield return new PropertySetInfo("Qto_SpaceHeaterBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nNot including contained fluid."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nWeight of the element, including contained fluid as designed."} },
				new [] { "IfcSpaceHeater", "IfcSpaceHeaterType" });
		yield return new PropertySetInfo("Qto_SpatialZoneBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height"},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcSpatialZone", "IfcSpatialZoneType" });
		yield return new PropertySetInfo("Qto_StackTerminalBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcStackTerminal", "IfcStackTerminalType" });
		yield return new PropertySetInfo("Qto_StairFlightBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nMeasured along the walking line."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nTotal net volume of the stair flight. Openings and recesses are taken into account by subtraction, projections by addition."} },
				new [] { "IfcStairFlight", "IfcStairFlightType" });
		yield return new PropertySetInfo("Qto_SurfaceFeatureBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."} },
				new [] { "IfcSurfaceFeature" });
		yield return new PropertySetInfo("Qto_SwitchingDeviceBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcSwitchingDevice", "IfcSwitchingDeviceType" });
		yield return new PropertySetInfo("Qto_TankBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nNot including contained fluid."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nWeight of the element, including contained fluid as designed."},
			new SingleValuePropertyType("TotalSurfaceArea", "IfcAreaMeasure") { Definition = "Total surface area of the element."} },
				new [] { "IfcTank", "IfcTankType" });
		yield return new PropertySetInfo("Qto_TransformerBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcTransformer", "IfcTransformerType" });
		yield return new PropertySetInfo("Qto_TubeBundleBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nNot including contained fluid."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nWeight of the element, including contained fluid as designed."} },
				new [] { "IfcTubeBundle", "IfcTubeBundleType" });
		yield return new PropertySetInfo("Qto_UnitaryControlElementBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcUnitaryControlElement", "IfcUnitaryControlElementType" });
		yield return new PropertySetInfo("Qto_UnitaryEquipmentBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcUnitaryEquipment", "IfcUnitaryEquipmentType" });
		yield return new PropertySetInfo("Qto_ValveBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcValve", "IfcValveType" });
		yield return new PropertySetInfo("Qto_VehicleBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height"},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic)."} },
				new [] { "IfcVehicle", "IfcVehicle", "IfcVehicle", "IfcVehicle", "IfcVehicle", "IfcVehicleType", "IfcVehicleType", "IfcVehicleType", "IfcVehicleType", "IfcVehicleType" });
		yield return new PropertySetInfo("Qto_VibrationIsolatorBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcVibrationIsolator", "IfcVibrationIsolatorType" });
		yield return new PropertySetInfo("Qto_VolumetricStratumBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object.\n\nActual area of upper surface of shape."},
			new SingleValuePropertyType("Mass", "IfcMassMeasure") { Definition = "Mass represented, if lower surface of stratum known."},
			new SingleValuePropertyType("PlanArea", "IfcAreaMeasure") { Definition = "Projected plan area of upper surface of model."},
			new SingleValuePropertyType("Volume", "IfcVolumeMeasure") { Definition = "Volume of the element.\n\nVolume represented, if lower surface of stratum known."} },
				new [] { "IfcGeotechnicalStratum" });
		yield return new PropertySetInfo("Qto_WallBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossFootPrintArea", "IfcAreaMeasure"),
			new SingleValuePropertyType("GrossSideArea", "IfcAreaMeasure") { Definition = "Area of the wall as viewed by an elevation view of the middle plane of the wall.  It does not take into account any wall modifications (such as openings)."},
			new SingleValuePropertyType("GrossVolume", "IfcVolumeMeasure") { Definition = "Total gross volume of the object. Openings, recesses, enclosed objects and projections are not taken into account."},
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height\n\nTotal nominal height of the wall. It should only be provided, if it is constant along the wall path."},
			new SingleValuePropertyType("Length", "IfcLengthMeasure") { Definition = "The length of the object.\n\nAlong center line (even if different to the wall path)."},
			new SingleValuePropertyType("NetFootPrintArea", "IfcAreaMeasure"),
			new SingleValuePropertyType("NetSideArea", "IfcAreaMeasure") { Definition = "Area of the object as viewed by an elevation view of the middle plane of the object. It does take into account all object modifications (such as openings)."},
			new SingleValuePropertyType("NetVolume", "IfcVolumeMeasure") { Definition = "Total net volume of the object, taking into account possible processing features (cut-out's, etc.) or openings and recesses.\n\nVolume of the wall, after subtracting the openings and after considering the connection geometry."},
			new SingleValuePropertyType("NetWeight", "IfcMassMeasure") { Definition = "Total net weight of the object without add-on parts, taking into account possible processing features (cut-out's, etc.) or openings and recesses."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic).\n\nMeasured perpendicular to the wall path. It should only be provided, if it is constant along the wall path."} },
				new [] { "IfcWall", "IfcWallType" });
		yield return new PropertySetInfo("Qto_WasteTerminalBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("GrossWeight", "IfcMassMeasure") { Definition = "Total Gross Weight of the object without any add-on parts and not taking into account possible processing features (cut-out's, etc.) or openings and recesses."} },
				new [] { "IfcWasteTerminal", "IfcWasteTerminalType" });
		yield return new PropertySetInfo("Qto_WindowBaseQuantities", new IPropertyTypeInfo[] {
			new SingleValuePropertyType("Area", "IfcAreaMeasure") { Definition = "Calculated area for the object.\n\nTotal area of the outer lining of the window."},
			new SingleValuePropertyType("Height", "IfcLengthMeasure") { Definition = "Characteristic height\n\nTotal outer height of the window lining. It should only be provided, if it is a rectangular window."},
			new SingleValuePropertyType("Perimeter", "IfcLengthMeasure") { Definition = "Perimeter of the object."},
			new SingleValuePropertyType("Width", "IfcLengthMeasure") { Definition = "The width of the object. Only given, if the object has constant thickness (prismatic).\n\nTotal outer width of the window lining. It should only be provided, if it is a rectangular window."} },
				new [] { "IfcWindow", "IfcWindowType" });
	}
}