Skip to content
Snippets Groups Projects
OneM2M_TypesAndValues.ttcn 150.74 KiB
/**
 *  Copyright Notification
 *  No part of this document may be reproduced, in an electronic retrieval system or otherwise, except as authorized by written permission.
 *  The copyright and the foregoing restriction extend to reproduction in all media.
 *  © 2016, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TSDSI, TTA, TTC).
 *  All rights reserved.
 *  
 *  @author     oneM2M/ETSI
 *  @desc       Module containing types and values for oneM2M
 *
 */
module OneM2M_TypesAndValues {

	import from XSD all;
	import from OneM2M_Types all;
	import from OneM2M_Types_homeDevice all;

	group ResourceNames {
		/* Constants */	
		const XSD.String c_defaultResourceName := "MyResource";
		const XSD.String c_defaultGroupResourceName := "MyGroupResource";
		const XSD.String c_defaultGroupAnncResourceName := "MyGroupAnncResource";
		const XSD.String c_defaultAccessControlPolicyResourceName := "MyAccessControlPolicyResource";
		const XSD.String c_defaultAccessControlPolicyAnncResourceName := "MyAccessControlPolicyAnncResource";
		const XSD.String c_defaultScheduleResourceName := "MyScheduleResource";
		const XSD.String c_defaultPollingChannelResourceName := "MyPollingChannelResource";
		const XSD.String c_defaultSubscriptionResourceName := "MySubscriptionResource";
		const XSD.String c_defaultContentInstanceResourceName := "MyContentInstanceResource";
		const XSD.String c_defaultContainerResourceName := "MyContainerResource";
		const XSD.String c_defaultContainerAnncResourceName := "MyContainerAnncResource";
		const XSD.String c_defaultDeliveryResourceName := "MyDeliveryResource";
		const XSD.String c_defaultRemoteCSEResourceName := "MyRemoteCSEResource";
		const XSD.String c_defaultRemoteCSEAnncResourceName := "MyRemoteCSEAnncResource";
		const XSD.String c_defaultMgmtObjResourceName := "MyMgmtObjResource";
		const XSD.String c_defaultMgmtCmdResourceName := "MyMgmtCmdResource";
		const XSD.String c_defaultAeResourceName := "MyAeResource";
		const XSD.String c_defaultLocationPolicyResourceName := "MyLocationPolicyResource";
		const XSD.String c_defaultNodeResourceName := "MyNodeResource";
		const XSD.String c_defaultNodeID := "MyNodeId";
		const XSD.String c_defaultRequestResourceName := "MyRequestResource";
		const XSD.String c_dynamicAuthorizationConsultationName := "MyDynamicAuthorizationConsultation";
		const XSD.String c_defaultStatsConfigResourceName := "MyStatsConfigResource";
		const XSD.String c_defaultStatsCollectResourceName := "MyStatsCollectResource";
		const XSD.String c_defaultm2mServiceSubscriptionProfileResourceName := "Mym2mServiceSubscriptionProfileResource";
		const XSD.String c_defaultServiceSubscribedAppRuleResourceName := "MyServiceSubscribedAppRuleResource";
		const XSD.String c_defaultTimeSeriesResourceName := "MyTimeSeriesResource";
		const XSD.String c_defaultTimeSeriesAnncResourceName := "MyTimeSeriesAnncResource";
		const XSD.String c_defaultTimeSeriesInstanceResourceName := "MyTimeSeriesInstanceResource";
		const XSD.String c_defaultTimeSeriesInstanceAnncResourceName := "MyTimeSeriesInstanceAnncResource";
		const XSD.String c_defaultRoleResourceName := "MyRoleResource";
		const XSD.String c_defaultTokenResourceName := "MyTokenResource";
		const XSD.String c_defaultGenericInterworkingServiceResourceName := "MyGenericInterworkingServiceResource"; //<genericInterworkingService>
		const XSD.ID c_aeAuxName := "MyAe";
		const XSD.String c_defaultAE2Name := "MyAe2";
		const XSD.String c_acpAuxName := "MyAcp";
		const charstring c_invalid_location_update_period	:= "-PT30M10S" ;//duration set to invalid value  (minus value)
		const XSD.ID c_resourceShortNameLatest := "la";		//<latest>
		const XSD.ID c_resourceShortNameOldest := "ol";		//<oldest>
		const XSD.ID c_resourceShortNameFanOutPoint := "fopt"; //<fanOutPoint>
		const XSD.ID c_resourceShortNamePollingChannelUri := "pcu"; //<pollingChannelUri>
		const XSD.ID c_resourceShortNameMashup := "msp"; //<mashup>
		const XSD.ID c_resourceShortNameSemanticFanOutPoint := "sfop"; //<semanticFanOutPoint>
		const XSD.ID c_resourceShortNameSemanticValidation := "smv"; //<semanticValidation>
		const XSD.String c_defaultMmemberFilter := " PREFIX foaf:  <http://xmlns.com/foaf/0.1/> SELECT ?name WHERE { ?person foaf:name ?name . }"; // <semanticMashupJobProfile>
	}
	
	group AccessControlOperations {
	//AccessControlOperations
	const XSD.Integer c_C   := 1;
	const XSD.Integer c_R   := 2; 
	const XSD.Integer c_CR   := 3; 
	const XSD.Integer c_U   := 4; 
	const XSD.Integer c_CU   := 5; 
	const XSD.Integer c_RU   := 6; 
	const XSD.Integer c_CRU   := 7; 
	const XSD.Integer c_D   := 8;
	const XSD.Integer c_CD   := 9; 
	const XSD.Integer c_RD   := 10; 
	const XSD.Integer c_CRD   := 11; 
	const XSD.Integer c_UD   := 12; 
	const XSD.Integer c_CUD   := 13; 
	const XSD.Integer c_RUD   := 14; 
	const XSD.Integer c_CRUD   := 15; 
	const XSD.Integer c_N   := 16;
	const XSD.Integer c_CN   := 17; 
	const XSD.Integer c_RN   := 18; 
	const XSD.Integer c_CRN   := 19; 
	const XSD.Integer c_UN   := 20;
	const XSD.Integer c_CUN   := 21; 
	const XSD.Integer c_RUN   := 22; 
	const XSD.Integer c_CRUN   := 23; 
	const XSD.Integer c_DN   := 24;
	const XSD.Integer c_CDN   := 25; 
	const XSD.Integer c_RDN   := 26; 
	const XSD.Integer c_CRDN   := 27; 
	const XSD.Integer c_UDN   := 28;
	const XSD.Integer c_CUDN   := 29; 
	const XSD.Integer c_RUDN   := 30; 
	const XSD.Integer c_CRUDN   := 31; 
	const XSD.Integer c_Di   := 32;
	const XSD.Integer c_CDi   := 33; 
	const XSD.Integer c_RDi   := 34; 
	const XSD.Integer c_CRDi   := 35; 
	const XSD.Integer c_UDi   := 36;
	const XSD.Integer c_CUDi   := 37; 
	const XSD.Integer c_RUDi   := 38; 
	const XSD.Integer c_CRUDi   := 39; 
	const XSD.Integer c_DDi   := 40;
	const XSD.Integer c_CDDi   := 41; 
	const XSD.Integer c_RDDi   := 42; 
	const XSD.Integer c_CRDDi   := 43; 
	const XSD.Integer c_UDDi  := 44;
	const XSD.Integer c_CUDDi   := 45; 
	const XSD.Integer c_RUDDi   := 46; 
	const XSD.Integer c_CRUDDi   := 47; 
	const XSD.Integer c_NDi   := 48;
	const XSD.Integer c_CNDi   := 49; 
	const XSD.Integer c_RNDi   := 50; 
	const XSD.Integer c_CRNDi   := 51; 
	const XSD.Integer c_UNDi   := 52;
	const XSD.Integer c_CUNDi   := 53; 
	const XSD.Integer c_RUNDi   := 54; 
	const XSD.Integer c_CRUNDi   := 55; 
	const XSD.Integer c_DNDi   := 56;
	const XSD.Integer c_CDNDi   := 57; 
	const XSD.Integer c_RDNDi   := 58; 
	const XSD.Integer c_CRDNDi   := 59; 
	const XSD.Integer c_UDNDi   := 60;
	const XSD.Integer c_CUDNDi   := 61; 
	const XSD.Integer c_RUDNDi   := 62; 
	const XSD.Integer c_CRUDNDi   := 63;	
	}
	
/* ******************************************
 * 		oneM2M Abstract Service Primitives 
 * ******************************************
*/
	/**
	 * @desc Type for the oneM2M primitives exchange
	 * @member primitive oneM2M primitive
	 * @member host IP Address of the destination
	 * @member xmlNamespace XML Namespace to be used
	 * @member protocolBinding Protocol binding to be used
	 * @member serialization Serialization to be used
	 * @member forcedFields Attributes that need to be processed differently by the test adapter:
	 * 			- empty fields (for instance, for attribute deletion), i.e. <labels></labels> -> value_ to be omitted
	 * 			- invalid values, i.e. <maxNrOfInstances>-1</maxNrOfInstances>
	 */
	type record MsgOut {
		union {
			RequestPrimitive requestPrimitive,
			ResponsePrimitive responsePrimitive
		} primitive, 
		charstring host optional,
		charstring xmlNamespace optional, 
		charstring protocolBinding optional,
		charstring serialization optional,
		AttributeAux_list forcedFields optional
} 
	
	/**
	 * @desc Type for the oneM2M primitives exchange
	 * @member primitive oneM2M primitive
	 */
	type record MsgIn {
		union {
			RequestPrimitive requestPrimitive,
			ResponsePrimitive responsePrimitive
		} primitive, 
		AttributeList_1 nullFields optional
	}
	
	type record AcRequestPrimitive {
		charstring event,
		anytype data
	}
	with {
		encode "adapter";
	}
	
	type record AcResponsePrimitive {
		charstring event,
		anytype data
	}
	with {
		encode "adapter";
	}
	
	type record UtTriggerPrimitive {
		RequestPrimitive requestPrimitive, 
		AttributeAux_list forcedFields optional
	}
	with {
		encode "UpperTester"
	}
		
	type ResponsePrimitive UtTriggerAckPrimitive
	with {			
		encode "UpperTester"
	}
	
	type record AttributeAux {
		XSD.NCName name,
		charstring value_ optional
	};
	
	type record of AttributeAux AttributeAux_list;
	
	group ESPrimConfiguration {
	
		/**
		 * 
		 * @desc 8.4.2 Step E
		 */
		type enumerated PairwiseKeyMethod {
			e_establish,
			e_MAFFramework,
			e_supportIndication
		};
		
		/**
		 * 
		 * @desc 8.4.2 Step E-A
		 */
		type enumerated Provisioned {
			e_preProvisioning,
			e_RSPF,
			e_ESCertKE
		};
	
	}// end group ESPrimConfiguration
	

/* **********************************
* 		oneM2M Resource primitives
* ***********************************	
*/

/* Additional types */

group OptionalResourceTypes {
	
	type record AccessControlPolicy_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		SetOfAcrs privileges optional,
		SetOfAcrs selfPrivileges optional,
		ListOfURIs authorizationDecisionResourceIDs optional,
		ListOfURIs authorizationPolicyResourceIDs optional,
		ListOfURIs authorizationInformationResourceIDs optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record AccessControlPolicyAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		SetOfAcrs privileges optional,
		SetOfAcrs selfPrivileges optional,
		ListOfURIs authorizationDecisionResourceIDs optional,
		ListOfURIs authorizationPolicyResourceIDs optional,
		ListOfURIs authorizationInformationResourceIDs optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record AE_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.String appName optional,
		XSD.String app_ID optional,
		XSD.ID aE_ID optional,
		PoaList pointOfAccess optional,
		XSD.AnyURI ontologyRef optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean requestReachability optional,
		Serializations contentSerialization optional,
		E2eSecInfo e2eSecInfo optional,
		ExternalID m2M_Ext_ID optional,
		SupportedReleaseVersions supportedReleaseVersions optional,
		AERegistrationStatus registrationStatus optional,
		XSD.Boolean trackRegistrationPoints optional,
		SessionCapabilities sessionCapabilities optional,
		XSD.Boolean triggerEnable optional,
		ActivityPatternElements activityPatternElements optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Container container,
				Group group_,
				AccessControlPolicy accessControlPolicy,
				Subscription subscription,
				PollingChannel pollingChannel,
				SemanticDescriptor semanticDescriptor,
				TimeSeries timeSeries,
				Sg_flexContainerResource_group sg_flexContainerResource,
				SemanticMashupInstance semanticMashupInstance,
				MultimediaSession multimediaSession,
				CrossResourceSubscription crossResourceSubscription,
				TriggerRequest triggerRequest,
				TransactionMgmt transactionMgmt,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (app_ID) "name as 'App-ID'";
	  variant (aE_ID) "name as 'AE-ID'";
	  //variant (requestReachability) "text 'true' as '1'";
	  //variant (requestReachability) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	};

	type record AEAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.String appName optional,
		XSD.String app_ID optional,
		XSD.ID aE_ID optional,
		PoaList pointOfAccess optional,
		XSD.AnyURI ontologyRef optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean requestReachability optional,
		Serializations contentSerialization optional,
		E2eSecInfo e2eSecInfo optional,
		SupportedReleaseVersions supportedReleaseVersions optional,
		AERegistrationStatus registrationStatus optional,
		XSD.Boolean trackRegistrationPoints optional,
		SessionCapabilities sessionCapabilities optional,
		XSD.Boolean triggerEnable optional,
		ActivityPatternElements activityPatternElements optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Container container,
				ContainerAnnc containerAnnc,
				Group group_,
				GroupAnnc groupAnnc,
				AccessControlPolicy accessControlPolicy,
				AccessControlPolicyAnnc accessControlPolicyAnnc,
				Subscription subscription,
				SemanticDescriptor semanticDescriptor,
				TimeSeries timeSeries,
				TimeSeriesAnnc timeSeriesAnnc,
				Sg_flexContainerResource_group sg_flexContainerResource,
				Sg_announcedFlexContainerResource_group sg_announcedFlexContainerResource,
				SemanticMashupInstance semanticMashupInstance,
				SemanticMashupInstanceAnnc semanticMashupInstanceAnnc,
				MultimediaSession multimediaSession,
				MultimediaSessionAnnc multimediaSessionAnnc,
				CrossResourceSubscription crossResourceSubscription,
				TriggerRequest triggerRequest,
				TransactionMgmt transactionMgmt,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (app_ID) "name as 'App-ID'";
	  variant (aE_ID) "name as 'AE-ID'";
	  //variant (requestReachability) "text 'true' as '1'";
	  //variant (requestReachability) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	};
	
	type record MgmtCmd_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.String description optional,
		CmdType cmdType optional,
		ExecReqArgsListType execReqArgs optional,
		XSD.Boolean execEnable optional,
		NodeID execTarget optional,
		ExecModeType execMode optional,
		XSD.Duration execFrequency optional,
		XSD.Duration execDelay optional,
		XSD.NonNegativeInteger execNumber optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				ExecInstance execInstance,
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (execEnable) "text 'true' as '1'";
	  //variant (execEnable) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
	

	type record MgmtResource_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		MgmtDefinition mgmtDefinition optional,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.AnyURI mgmtSchema optional
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	};

	type record AnnouncedMgmtResource_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		MgmtDefinition mgmtDefinition optional,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.AnyURI mgmtSchema optional
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	};

	type record FlexContainerResource_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	};

	type record AnnouncedFlexContainerResource_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize,
		XSD.AnyURI nodeLink optional
	}
	with {
	  variant "name as uncapitalized";
	  variant (resourceName) "attribute";
	};

	type record Container_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.NonNegativeInteger maxNrOfInstances optional,
		XSD.NonNegativeInteger maxByteSize optional,
		XSD.NonNegativeInteger maxInstanceAge optional,
		XSD.NonNegativeInteger currentNrOfInstances optional,
		XSD.NonNegativeInteger currentByteSize optional,
		XSD.AnyURI locationID optional,
		XSD.AnyURI ontologyRef optional,
		XSD.Boolean disableRetrieval optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				ContentInstance contentInstance,
				Container container,
				Subscription subscription,
				SemanticDescriptor semanticDescriptor,
				Sg_flexContainerResource_group sg_flexContainerResource,
				TimeSeries timeSeries,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  //variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (disableRetrieval) "text 'true' as '1'";
	  //variant (disableRetrieval) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record ContainerAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.NonNegativeInteger maxNrOfInstances optional,
		XSD.NonNegativeInteger maxByteSize optional,
		XSD.NonNegativeInteger maxInstanceAge optional,
		XSD.NonNegativeInteger currentNrOfInstances optional,
		XSD.NonNegativeInteger currentByteSize optional,
		XSD.AnyURI locationID optional,
		XSD.AnyURI ontologyRef optional,
		XSD.Boolean disableRetrieval optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				ContentInstance contentInstance,
				ContentInstanceAnnc contentInstanceAnnc,
				Container container,
				ContainerAnnc containerAnnc,
				Subscription subscription,
				SemanticDescriptor semanticDescriptor,
				SemanticDescriptorAnnc semanticDescriptorAnnc,
				Sg_flexContainerResource_group sg_flexContainerResource,
				Sg_announcedFlexContainerResource_group sg_announcedFlexContainerResource,
				TimeSeries timeSeries,
				TimeSeriesAnnc timeSeriesAnnc,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (disableRetrieval) "text 'true' as '1'";
	  //variant (disableRetrieval) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record ContentInstance_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		ContentInfo contentInfo optional,
		XSD.NonNegativeInteger contentSize optional,
		ContentRef contentRef optional,
		XSD.AnyURI ontologyRef optional,
		XSD.AnySimpleType content optional, 
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				SemanticDescriptor semanticDescriptor,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record ContentInstanceAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		XSD.NonNegativeInteger stateTag optional,
		ContentInfo contentInfo optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI ontologyRef optional,
		XSD.AnySimpleType content optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				SemanticDescriptor semanticDescriptor,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record CSEBase_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		CseTypeID cseType optional,
		XSD.ID cSE_ID optional,
		ResourceTypeList_1 supportedResourceType optional,//TODO Remove inline type
		PoaList pointOfAccess optional,
		XSD.AnyURI nodeLink optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		Serializations contentSerialization optional,
		E2eSecInfo e2eSecInfo optional,
		SupportedReleaseVersions supportedReleaseVersions optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				RemoteCSE remoteCSE,
				RemoteCSEAnnc remoteCSEAnnc,
				Node node,
				AE aE,
				Container container,
				Group group_,
				AccessControlPolicy accessControlPolicy,
				Subscription subscription,
				MgmtCmd mgmtCmd,
				LocationPolicy locationPolicy,
				StatsConfig statsConfig,
				StatsCollect statsCollect,
				Request request,
				Delivery delivery,
				Schedule schedule,
				M2mServiceSubscriptionProfile m2mServiceSubscriptionProfile,
				ServiceSubscribedAppRule serviceSubscribedAppRule,
				Role role,
				XSD.Token token,
				Sg_flexContainerResource_group sg_flexContainerResource,
				AuthorizationDecision_1 authorizationDecision,
				AuthorizationPolicy authorizationPolicy,
				AuthorizationInformation authorizationInformation,
				OntologyRepository ontologyRepository,
				SemanticMashupJobProfile semanticMashupJobProfile,
				SemanticMashupInstance semanticMashupInstance,
				AEContactList aEContactList,
				LocalMulticastGroup localMulticastGroup,
				CrossResourceSubscription crossResourceSubscription,
				BackgroundDataTransfer backgroundDataTransfer,
				TransactionMgmt transactionMgmt,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (cSE_ID) "name as 'CSE-ID'";
	  variant (supportedResourceType) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].aE) "name as capitalized";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	};

	type record Delivery_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.ID source optional,
		XSD.ID target optional,
		Timestamp lifespan optional,
		EventCat eventCat optional,
		DeliveryMetaData deliveryMetaData optional,
		AggregatedRequest aggregatedRequest optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record GenericInterworkingService_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.String serviceName optional,
		ListOfDataLinks inputDataPointLinks optional,
		ListOfDataLinks outputDataPointLinks optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record of union {
				GenericInterworkingService genericInterworkingService,
				GenericInterworkingOperationInstance genericInterworkingOperationInstance,
				SemanticDescriptor semanticDescriptor,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record GenericInterworkingOperationInstance_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.String operationName optional,
		XSD.String operationState optional,
		ListOfDataLinks inputDataPointLinks optional,
		ListOfDataLinks outputDataPointLinks optional,
		ListOfDataLinks inputLinks optional,
		ListOfDataLinks outputLinks optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				SemanticDescriptor semanticDescriptor,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record Group_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.ID creator optional,
		MemberType memberType optional,
		SpecializationType specializationType optional,
		XSD.NonNegativeInteger currentNrOfMembers optional,
		XSD.PositiveInteger maxNrOfMembers optional,
		record length(0 .. infinity) of XSD.AnyURI memberIDs optional,//TODO A list that can be empty
		ListOfURIs membersAccessControlPolicyIDs optional,
		XSD.Boolean memberTypeValidated optional,
		ConsistencyStrategy consistencyStrategy optional,
		XSD.String groupName optional,
		XSD.Boolean semanticSupportIndicator optional,
		BatchNotify notifyAggregation optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				SemanticDescriptor semanticDescriptor,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (memberIDs) "list";
	  //variant (memberTypeValidated) "text 'true' as '1'";
	  //variant (memberTypeValidated) "text 'false' as '0'";
	  //variant (semanticSupportIndicator) "text 'true' as '1'";
	  //variant (semanticSupportIndicator) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record GroupAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		MemberType memberType optional,
		SpecializationType specializationType optional,
		XSD.NonNegativeInteger currentNrOfMembers optional,
		XSD.PositiveInteger maxNrOfMembers optional,
		record of XSD.AnyURI memberIDs optional,
		ListOfURIs membersAccessControlPolicyIDs optional,
		XSD.Boolean memberTypeValidated optional,
		ConsistencyStrategy consistencyStrategy optional,
		XSD.String groupName optional,
		XSD.Boolean semanticSupportIndicator optional,
		BatchNotify notifyAggregation optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				SemanticDescriptor semanticDescriptor,
				SemanticDescriptorAnnc semanticDescriptorAnnc,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (memberIDs) "list";
	  //variant (memberTypeValidated) "text 'true' as '1'";
	  //variant (memberTypeValidated) "text 'false' as '0'";
	  //variant (semanticSupportIndicator) "text 'true' as '1'";
	  //variant (semanticSupportIndicator) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record LocationPolicy_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		LocationSource locationSource optional,
		LocationInformationType locationInformationType optional,
		ListOfDuration locationUpdatePeriod optional,
		LocationTargetID locationTargetID optional,
		XSD.AnyURI locationServer optional,
		XSD.AnyURI locationContainerID optional,
		XSD.String locationContainerName optional,
		XSD.String locationStatus optional,
		XSD.AnySimpleType geographicalTargetArea optional,//FIXME Use AnySimpleType instead
		GeofenceEventCriteria geofenceEventCriteria optional,
		ExternalID authID optional,
		XSD.Boolean retrieveLastKnownLocation optional,
		LocationUpdateEventCriteria locationUpdateEventCriteria optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record LocationPolicyAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		LocationSource locationSource optional,
		LocationInformationType locationInformationType optional,
		ListOfDuration locationUpdatePeriod optional,
		LocationTargetID locationTargetID optional,
		XSD.AnyURI locationServer optional,
		XSD.AnyURI locationContainerID optional,
		XSD.String locationContainerName optional,
		XSD.String locationStatus optional,
		XSD.AnySimpleType geographicalTargetArea optional,//FIXME Use AnySimpleType instead
		GeofenceEventCriteria geofenceEventCriteria optional,
		ExternalID authID optional,
		XSD.Boolean retrieveLastKnownLocation optional,
		LocationUpdateEventCriteria locationUpdateEventCriteria optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	};

	type record M2mServiceSubscriptionProfile_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				ServiceSubscribedNode serviceSubscribedNode,
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record Node_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		NodeID nodeID optional,
		XSD.ID hostedCSELink optional,
		ListOfM2MID hostedAELinks optional,
		ListOfM2MID hostedServiceLinks optional,
		XSD.String mgmtClientAddress optional,
		XSD.Boolean roamingStatus optional,
		XSD.String networkID optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Memory memory,
				Battery battery,
				AreaNwkInfo areaNwkInfo,
				AreaNwkDeviceInfo areaNwkDeviceInfo,
				Firmware firmware,
				Software software,
				DeviceInfo deviceInfo,
				DeviceCapability deviceCapability,
				Reboot reboot,
				EventLog eventLog,
				CmdhPolicy cmdhPolicy,
				ActiveCmdhPolicy activeCmdhPolicy,
				Subscription subscription,
				SemanticDescriptor semanticDescriptor,
				Transaction transaction,
				Schedule schedule
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record NodeAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		NodeID nodeID optional,
		XSD.ID hostedCSELink optional,
		ListOfM2MID hostedAELinks optional,
		ListOfM2MID hostedServiceLinks optional,
		XSD.String mgmtClientAddress optional,
		XSD.Boolean roamingStatus optional,
		XSD.String networkID optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				MemoryAnnc memoryAnnc,
				BatteryAnnc batteryAnnc,
				AreaNwkInfoAnnc areaNwkInfoAnnc,
				AreaNwkDeviceInfoAnnc areaNwkDeviceInfoAnnc,
				FirmwareAnnc firmwareAnnc,
				SoftwareAnnc softwareAnnc,
				DeviceInfoAnnc deviceInfoAnnc,
				DeviceCapabilityAnnc deviceCapabilityAnnc,
				RebootAnnc rebootAnnc,
				EventLogAnnc eventLogAnnc,
				Subscription subscription,
				SemanticDescriptor semanticDescriptor,
				SemanticDescriptorAnnc semanticDescriptorAnnc,
				Transaction transaction,
				Schedule schedule
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record OntologyRepository_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Ontology ontology,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
	
	type record Ontology_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.ID creator optional,
		XSD.String description optional,
		SemanticFormat ontologyFormat optional,
		XSD.AnySimpleType ontologyContent optional,//FIXME Use AnySimpleType instead
		Sparql semanticOpExec optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record PollingChannel_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		Timestamp expirationTime optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	};

	type record RemoteCSE_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		CseTypeID cseType optional,
		PoaList pointOfAccess optional,
		XSD.AnyURI cSEBase optional,
		XSD.ID cSE_ID optional,
		ExternalID m2M_Ext_ID optional,
		TriggerRecipientID trigger_Recipient_ID optional,
		XSD.Boolean requestReachability optional,
		XSD.AnyURI nodeLink optional,
		XSD.UnsignedInt triggerReferenceNumber optional,
		Serializations contentSerialization optional,
		E2eSecInfo e2eSecInfo optional,
		ListOfM2MID descendantCSEs optional,
		SupportedReleaseVersions supportedReleaseVersions optional,
		MulticastCapability multicastCapability optional,
		ExternalID externalGroupID optional,
		XSD.Boolean triggerEnable optional,
		ActivityPatternElements activityPatternElements optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				NodeAnnc nodeAnnc,
				Container container,
				ContainerAnnc containerAnnc,
				Group group_,
				GroupAnnc groupAnnc,
				AccessControlPolicy accessControlPolicy,
				AccessControlPolicyAnnc accessControlPolicyAnnc,
				Subscription subscription,
				PollingChannel pollingChannel,
				TimeSeries timeSeries,
				TimeSeriesAnnc timeSeriesAnnc,
				LocationPolicyAnnc locationPolicyAnnc,
				AEAnnc aEAnnc,
				Sg_flexContainerResource_group sg_flexContainerResource,
				Sg_announcedFlexContainerResource_group sg_announcedFlexContainerResource,
				OntologyRepositoryAnnc ontologyRepositoryAnnc,
				SemanticMashupJobProfile semanticMashupJobProfile,
				SemanticMashupJobProfileAnnc semanticMashupJobProfileAnnc,
				SemanticMashupInstance semanticMashupInstance,
				SemanticMashupInstanceAnnc semanticMashupInstanceAnnc,
				CrossResourceSubscription crossResourceSubscription,
				TransactionMgmt transactionMgmt,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (cSEBase) "name as capitalized";
	  variant (cSE_ID) "name as 'CSE-ID'";
	  variant (m2M_Ext_ID) "name as 'M2M-Ext-ID'";
	  variant (trigger_Recipient_ID) "name as 'Trigger-Recipient-ID'";
	  //variant (requestReachability) "text 'true' as '1'";
	  //variant (requestReachability) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	  variant (choice.choice_list[-].aEAnnc) "name as capitalized";
	};

	type record RemoteCSEAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		CseTypeID cseType optional,
		PoaList pointOfAccess optional,
		XSD.AnyURI cSEBase optional,
		XSD.ID cSE_ID optional,
		XSD.Boolean requestReachability optional,
		XSD.AnyURI nodeLink optional,
		Serializations contentSerialization optional,
		E2eSecInfo e2eSecInfo optional,
		ListOfM2MID descendantCSEs optional,
		SupportedReleaseVersions supportedReleaseVersions optional,
		MulticastCapability multicastCapability optional,
		ExternalID externalGroupID optional,
		XSD.Boolean triggerEnable optional,
		ActivityPatternElements activityPatternElements optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				NodeAnnc nodeAnnc,
				Container container,
				ContainerAnnc containerAnnc,
				Group group_,
				GroupAnnc groupAnnc,
				AccessControlPolicy accessControlPolicy,
				AccessControlPolicyAnnc accessControlPolicyAnnc,
				Subscription subscription,
				PollingChannel pollingChannel,
				LocationPolicyAnnc locationPolicyAnnc,
				TimeSeries timeSeries,
				TimeSeriesAnnc timeSeriesAnnc,
				AEAnnc aEAnnc,
				Sg_flexContainerResource_group sg_flexContainerResource,
				Sg_announcedFlexContainerResource_group sg_announcedFlexContainerResource,
				OntologyRepositoryAnnc ontologyRepositoryAnnc,
				SemanticMashupJobProfile semanticMashupJobProfile,
				SemanticMashupJobProfileAnnc semanticMashupJobProfileAnnc,
				SemanticMashupInstance semanticMashupInstance,
				SemanticMashupInstanceAnnc semanticMashupInstanceAnnc,
				CrossResourceSubscription crossResourceSubscription,
				TransactionMgmt transactionMgmt,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (cSEBase) "name as capitalized";
	  variant (cSE_ID) "name as 'CSE-ID'";
	  //variant (requestReachability) "text 'true' as '1'";
	  //variant (requestReachability) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	  variant (choice.choice_list[-].aEAnnc) "name as capitalized";
	};
	
	type record Request_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.NonNegativeInteger stateTag optional,
		Operation operation optional,
		XSD.AnyURI target optional,
		XSD.ID originator optional,
		RequestID requestID optional,
		MetaInformation metaInformation optional,
		PrimitiveContent primitiveContent optional,
		RequestStatus requestStatus optional,
		OperationResult operationResult optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record Schedule_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		ScheduleEntries scheduleElement optional,
		XSD.Boolean networkCoordinated optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record ScheduleAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.AnyURI link optional,
		ScheduleEntries scheduleElement optional,
		XSD.Boolean networkCoordinated optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	};

	type record SemanticDescriptor_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.ID creator optional,
		SemanticFormat descriptorRepresentation optional,
		Sparql semanticOpExec optional,
		XSD.Base64Binary descriptor optional,
		XSD.AnyURI ontologyRef optional,
		ListOfURIs relatedSemantics optional,
		XSD.Boolean semanticValidated optional,
		XSD.Boolean validationEnable optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
	
	type record SemanticDescriptorAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		SemanticFormat descriptorRepresentation optional,
		Sparql semanticOpExec optional,
		XSD.Base64Binary descriptor optional,
		XSD.AnyURI ontologyRef optional,
		ListOfURIs relatedSemantics optional,
		XSD.Boolean semanticValidated optional,
		XSD.Boolean validationEnable optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record SemanticMashupJobProfile_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.ID creator optional,
		Sparql memberFilter optional,
		ListOfURIs smiID optional,
		XSD.Base64Binary inputDescriptor optional,
		XSD.Base64Binary outputDescriptor optional,
		XSD.Base64Binary functionDescriptor optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record SemanticMashupInstance_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.ID creator optional,
		XSD.AnyURI smjpID optional,
		XSD.Base64Binary smjpInputParameter optional,
		MashupMemberStoreType memberStoreType optional,
		MashupMembers mashupMember optional,
		MashupResultGenType resultGenType optional,
		XSD.Duration periodForResultGen optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};



	type record SemanticMashupResult_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,		
		XSD.ID creator optional,
		XSD.Base64Binary smjpInputParameter optional,
		Serializations mashupResultFormat optional,
		XSD.Base64Binary mashupResult optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record ServiceSubscribedAppRule_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfM2MID applicableCredIDs optional,
		ListOfM2MID allowedApp_IDs optional,
		ListOfM2MID allowedAEs optional,
		record length(1 .. infinity) of RoleID allowedRole_IDs optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (allowedApp_IDs) "name as 'allowedApp-IDs'";
	  variant (allowedRole_IDs) "name as 'allowedRole-IDs'";
	  variant (allowedRole_IDs) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record ServiceSubscribedNode_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		NodeID nodeID optional,
		XSD.ID cSE_ID optional,
		record of DeviceID deviceIdentifier optional,
		ListOfURIs ruleLinks optional,
		XSD.Boolean niddRequired optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (cSE_ID) "name as 'CSE-ID'";
	  variant (deviceIdentifier) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record StatsCollect_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.ID creator optional,
		XSD.String statsCollectID optional,
		XSD.ID collectingEntityID optional,
		ListOfM2MID collectedEntityID optional,
		StatsRuleStatusType statsRuleStatus optional,
		StatModelType statModel optional,
		ScheduleEntries collectPeriod optional,
		XSD.String eventID optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record StatsConfig_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.ID creator optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				EventConfig eventConfig,
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record Subscription_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.ID creator optional,
		EventNotificationCriteria eventNotificationCriteria optional,
		XSD.PositiveInteger expirationCounter optional,
		ListOfURIs notificationURI optional,
		XSD.AnyURI groupID optional,
		XSD.AnyURI notificationForwardingURI optional,
		BatchNotify batchNotify optional,
		RateLimit rateLimit optional,
		XSD.PositiveInteger preSubscriptionNotify optional,
		PendingNotification pendingNotification optional,
		XSD.PositiveInteger notificationStoragePriority optional,
		XSD.Boolean latestNotify optional,
		NotificationContentType notificationContentType optional,
		EventCat notificationEventCat optional,
		XSD.AnyURI subscriberURI optional,
		ListOfURIs associatedCrossResourceSub optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Schedule schedule,
				NotificationTargetMgmtPolicyRef notificationTargetMgmtPolicyRef,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (latestNotify) "text 'true' as '1'";
	  //variant (latestNotify) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
	
	type record TimeSeries_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.ID creator optional,
		XSD.NonNegativeInteger maxNrOfInstances optional,
		XSD.NonNegativeInteger maxByteSize optional,
		XSD.NonNegativeInteger maxInstanceAge optional,
		XSD.NonNegativeInteger currentNrOfInstances optional,
		XSD.NonNegativeInteger currentByteSize optional,
		XSD.PositiveInteger periodicInterval optional,
		XSD.Boolean missingDataDetect optional,
		XSD.PositiveInteger missingDataMaxNr optional,
		MissingDataList missingDataList optional,
		XSD.NonNegativeInteger missingDataCurrentNr optional,
		XSD.PositiveInteger missingDataDetectTimer optional,
		XSD.AnyURI ontologyRef optional,
		ContentInfo contentInfo optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				TimeSeriesInstance timeSeriesInstance,
				Subscription subscription,
				SemanticDescriptor semanticDescriptor,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (missingDataDetect) "text 'true' as '1'";
	  //variant (missingDataDetect) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


	type record TimeSeriesAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.NonNegativeInteger maxNrOfInstances optional,
		XSD.NonNegativeInteger maxByteSize optional,
		XSD.NonNegativeInteger maxInstanceAge optional,
		XSD.NonNegativeInteger currentNrOfInstances optional,
		XSD.NonNegativeInteger currentByteSize optional,
		XSD.PositiveInteger periodicInterval optional,
		XSD.PositiveInteger missingDataMaxNr optional,
		MissingDataList missingDataList optional,
		XSD.NonNegativeInteger missingDataCurrentNr optional,
		XSD.PositiveInteger missingDataDetectTimer optional,
		XSD.AnyURI ontologyRef optional,
		ContentInfo contentInfo optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				TimeSeriesInstance timeSeriesInstance,
				TimeSeriesInstanceAnnc timeSeriesInstanceAnnc,
				Subscription subscription,
				SemanticDescriptor semanticDescriptor,
				SemanticDescriptorAnnc semanticDescriptorAnnc,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (missingDataDetect) "text 'true' as '1'";
	  //variant (missingDataDetect) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
	
	type record TimeSeriesInstance_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		AbsRelTimestamp dataGenerationTime optional,
		XSD.AnySimpleType content optional,
		XSD.NonNegativeInteger sequenceNr optional,
		XSD.NonNegativeInteger contentSize  optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Transaction transaction,
				SemanticDescriptor semanticDescriptor
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	};


	type record TimeSeriesInstanceAnnc_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		Timestamp expirationTime optional,
		XSD.AnyURI link optional,
		AbsRelTimestamp dataGenerationTime optional,
		XSD.AnySimpleType content optional,
		XSD.NonNegativeInteger sequenceNr optional,
		XSD.NonNegativeInteger contentSize optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Transaction transaction,
				SemanticDescriptor semanticDescriptor
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	};
		
	type record DynamicAuthorizationConsultation_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.Boolean dynamicAuthorizationEnabled,
		ListOfURIs dynamicAuthorizationPoA optional,
		Timestamp dynamicAuthorizationLifetime optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (dynamicAuthorizationEnabled) "text 'true' as '1'";
	  //variant (dynamicAuthorizationEnabled) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record Role_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		RoleID roleID optional,
		XSD.ID issuer optional,
		XSD.ID holder optional,
		Timestamp notBefore optional,
		Timestamp notAfter optional,
		XSD.String roleName optional,
		XSD.AnyURI tokenLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list 
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record DeviceAirConditioner_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				BinarySwitch binarySwitch,
				RunState runState,
				AirConJobMode airConJobMode,
				AirConOperationMode airConOperationMode,
				AirCleanOperationMode airCleanOperationMode,
				Temperature temperature,
				Timer timer_,
				SleepTimer sleepTimer,
				Turbo turbo,
				AirFlow airFlow,
				PowerSave powerSave,
				AirQualitySensor airQualitySensor,
				FilterInfo filterInfo,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record DeviceClothesWasherDryer_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				BinarySwitch binarySwitch,
				ClothesWasherDryerOperationMode clothesWasherDryerOperationMode,
				RunState runState,
				ClothesWasherDryerJobMode clothesWasherDryerJobMode,
				ClothesWasherJobModeOption clothesWasherJobModeOption,
				RemoteControlEnable remoteControlEnable,
				Timer timer_,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record DeviceElectricVehicleCharger_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				FaultDetection faultDetection,
				BinarySwitch binarySwitch,
				RunState runState,
				Battery battery,
				ElectricVehicleConnector electricVehicleConnector,
				Subscription subscription
			} choice_list
		} choice optional
	}	
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record DeviceLight_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				FaultDetection faultDetection,
				BinarySwitch binarySwitch,
				RunState runState,
				Colour colour,
				ColourSaturation colourSaturation,
				Brightness brightness,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record DeviceMicrogeneration_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				FaultDetection faultDetection,
				BinarySwitch binarySwitch,
				RunState runState,
				EnergyGeneration energyGeneration,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};	
	
	type record DeviceOven_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				BinarySwitch binarySwitch,
				RunState runState,
				Timer timer_,
				Temperature temperature,
				Subscription subscription
			} choice_list
		} choice optional
	}	
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};	

	type record DeviceRefrigerator_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				BinarySwitch binarySwitch,
				PowerSave powerSave,
				DoorStatus doorStatus,
				FrozenTemperature frozenTemperature,
				FridgeTemperature fridgeTemperature,
				CustomTemperature customTemperature,
				Refrigeration refrigeration,
				ControlPanelLock controlPanelLock,
				WaterFilterInfo waterFilterInfo,
				Subscription subscription
			} choice_list
		} choice optional
	}	
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};	

	type record DeviceRobotCleaner_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				BinarySwitch binarySwitch,
				RunState runState,
				RobotCleanerJobMode robotCleanerJobMode,
				RobotCleanerOperationMode robotCleanerOperationMode,
				Battery battery,
				Timer timer_,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};	

	type record DeviceSmartElectricMeter_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				FaultDetection faultDetection,
				BinarySwitch binarySwitch,
				RunState runState,
				Clock clock,
				EnergyConsumption energyConsumption,
				EnergyGeneration energyGeneration,
				Subscription subscription
			} choice_list
		} choice optional
	}	
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};	

	type record DeviceStorageBattery_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				FaultDetection faultDetection,
				BinarySwitch binarySwitch,
				RunState runState,
				Battery battery,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};	
	
	type record DeviceTelevision_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				BinarySwitch binarySwitch,
				AudioVolume audioVolume,
				TelevisionChannel televisionChannel,
				PlayerControl playerControl,
				MediaInput mediaInput,
				MediaOutput mediaOutput,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};	
	
	type record DeviceThermostat_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				RunState runState,
				Timer timer_,
				Temperature temperature,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};		
	
	type record DeviceWaterHeater_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				FaultDetection faultDetection,
				BinarySwitch binarySwitch,
				RunState runState,
				Clock clock,
				Boiler boiler,
				HotWaterSupply hotWaterSupply,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};	
	
	type record BinarySwitch_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean powerState optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Toggle toggle,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record FaultDetection_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean status optional,
		XSD.Integer code optional,
		XSD.String description optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record RunState_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		EnumMachineState currentMachineState optional,
		record of EnumMachineState machineStates optional,
		EnumJobState currentJobState optional,
		record of EnumJobState jobStates optional,
		XSD.Float progressPercentage optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record Battery_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Integer level optional,
		XSD.Integer capacity optional,
		XSD.Boolean charging optional,
		XSD.Boolean discharging optional,
		XSD.Boolean lowBattery optional,
		XSD.Integer batteryThreshold optional,
		XSD.Integer electricEnergy optional,
		XSD.Integer voltage optional,
		XSD.String material optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record ElectricVehicleConnector_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean status optional,
		XSD.Integer chargingCapacity optional,
		XSD.Integer dischargingCapacity optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record EnergyGeneration_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Float powerGenerationData optional,
		XSD.Integer roundingEnergyGeneration optional,
		XSD.Integer significantDigits optional,
		XSD.Integer multiplyingFactors optional,
		XSD.String generationSource optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record EnergyConsumption_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Float power optional,
		XSD.Float absoluteEnergyConsumption optional,
		XSD.Integer roundingEnergyConsumption optional,
		XSD.Integer significantDigits optional,
		XSD.Integer multiplyingFactors optional,
		XSD.Float voltage optional,
		XSD.Float current optional,
		XSD.Float frequency optional,
		XSD.String measuringScope optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record Temperature_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Float currentTemperature optional,
		XSD.Float targetTemperature optional,
		XSD.String unit optional,
		XSD.Float minValue optional,
		XSD.Float maxValue optional,
		XSD.Float stepValue optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record Turbo_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean turboEnabled optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record AirFlow_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Integer speed optional,
		XSD.Integer minSpeed optional,
		XSD.Integer maxSpeed optional,
		EnumVerticalDirection verticalDirection optional,
		record of EnumVerticalDirection supportedVerticalDirection optional,
		EnumHorizontalDirection horizontalDirection optional,
		record of EnumHorizontalDirection supportedHorizontalDirection optional,
		XSD.Boolean automode optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record SpinLevel_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		EnumSpinLevelStrength spinLevelStrength optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record WaterFlow_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		EnumWaterFlowStrength waterFlowStrength optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record Brightness_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Integer brightness optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record Colour_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Integer red optional,
		XSD.Integer green optional,
		XSD.Integer blue optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record ColourSaturation_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Integer colourSaturation optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record DoorStatus_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		EnumDoorState doorState optional,
		Timestamp openDuration optional,
		XSD.Boolean openAlarm optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record PowerSave_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean powerSaveEnabled optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record MediaInput_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Integer mediaID optional,
		record of EnumSupportedMediaSource supportedMediaSources optional,
		XSD.String mediaName optional,
		XSD.Boolean status optional,
		EnumSupportedMediaSource mediaType optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record AudioVolume_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Integer volumePercentage optional,
		XSD.Integer stepValue optional,
		XSD.Integer maxValue optional,
		XSD.Boolean muteEnabled optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				UpVolume upVolume,
				DownVolume downVolume,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	
	type record TelevisionChannel_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Integer channelId optional,
		record of XSD.Integer availableChannels optional,
		XSD.Integer previousChannel optional,
		XSD.String channelName optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				UpChannel upChannel,
				DownChannel downChannel,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record Boiler_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean status optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record Clock_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		Timestamp currentTime optional,
		Timestamp currentDate optional,
		XSD.String currentTimeZone optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};
	
	type record HotWaterSupply_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean bath optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	};

	type record DeviceInfo_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		MgmtDefinition mgmtDefinition optional,
		ListOfURIs objectIDs optional,
		ListOfURIs objectPaths optional,
		XSD.String description optional,
		XSD.AnyURI mgmtSchema optional,
		XSD.String deviceLabel optional,
		XSD.String manufacturer optional,
		XSD.String manufacturerDetailsLink optional,
		Timestamp manufacturingDate optional,
		XSD.String model optional,
		XSD.String subModel optional,
		XSD.String deviceType optional,
		XSD.String deviceName optional,
		XSD.String fwVersion optional,
		XSD.String swVersion optional,
		XSD.String hwVersion optional,
		XSD.String osVersion optional,
		XSD.String country optional,
		XSD.String location optional,
		Timestamp systemTime optional,
		XSD.AnyURI supportURL optional,
		XSD.AnyURI presentationURL optional,
		ProtocolList protocol optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of Subscription subscription_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.subscription_list) "untagged";
	  variant (choice.subscription_list[-]) "name as 'subscription'";
	};

	type record Token_optional
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		TokenID tokenID optional,
		DynAuthJWT tokenObject optional,
		XSD.String version optional,
		XSD.ID issuer optional,
		XSD.ID holder optional,
		Timestamp notBefore optional,
		Timestamp notAfter optional,
		XSD.String tokenName optional,
		ListOfM2MID audience optional,
		TokenPermissions permissions optional,
		XSD.String extension_ optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (extension_) "name as 'extension'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


}//end group OptionalResourceTypes
	
	
	
group InvalidTypes {
		
	type record AE_invalid {
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for AE
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.String appName optional,
		XSD.String app_ID optional,
		XSD.ID aE_ID optional,
		PoaList pointOfAccess optional,
		XSD.AnyURI ontologyRef optional,
		XSD.AnyURI nodeLink optional,
		XSD.Boolean requestReachability optional,
		Serializations contentSerialization optional,
		E2eSecInfo e2eSecInfo optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Container container,
				Group group_,
				AccessControlPolicy accessControlPolicy,
				Subscription subscription,
				PollingChannel pollingChannel,
				Schedule schedule,
				SemanticDescriptor semanticDescriptor,
				TimeSeries timeSeries,
				Sg_flexContainerResource_group sg_flexContainerResource
			} choice_list
		} choice optional
	}
	with {
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (app_ID) "name as 'App-ID'";
	  variant (aE_ID) "name as 'AE-ID'";
	  //variant (requestReachability) "text 'true' as '1'";
	  //variant (requestReachability) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	  variant (choice.choice_list[-].group_) "name as 'group'";
	};
       
	type record AccessControlPolicy_invalid {
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for ACP
		Labels labels optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		SetOfAcrs privileges optional,
		SetOfAcrs selfPrivileges optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				Transaction transaction
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
    	
	type record Container_invalid {
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Container
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.Integer stateTag optional,
		XSD.ID creator optional,
		XSD.Integer maxNrOfInstances optional,
		XSD.Integer maxByteSize optional,
		XSD.Integer maxInstanceAge optional,
		XSD.Integer currentNrOfInstances optional,
		XSD.Integer currentByteSize optional,
		XSD.AnyURI locationID optional,
		XSD.AnyURI ontologyRef optional,
		XSD.Boolean disableRetrieval optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				ContentInstance contentInstance,
				Container container,
				Subscription subscription,
				SemanticDescriptor semanticDescriptor,
				Sg_flexContainerResource_group sg_flexContainerResource
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  //variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (disableRetrieval) "text 'true' as '1'";
	  //variant (disableRetrieval) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
	          
	type record GenericInterworkingService_invalid
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		ListOfNCNames announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.AnyURI containerDefinition optional,
		XSD.AnyURI ontologyRef optional,
		XSD.NonNegativeInteger contentSize optional,
		XSD.String serviceName optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Container
		ListOfDataLinks inputDataPointLinks optional,
		ListOfDataLinks outputDataPointLinks optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record of union {
				GenericInterworkingService genericInterworkingService,
				GenericInterworkingOperationInstance genericInterworkingOperationInstance,
				SemanticDescriptor semanticDescriptor,
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

	type record Group_invalid {
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Group
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.ID creator optional,
		MemberType memberType optional,
		XSD.NonNegativeInteger currentNrOfMembers optional,
		XSD.PositiveInteger maxNrOfMembers optional,
		ListOfURIs memberIDs optional,
		ListOfURIs membersAccessControlPolicyIDs optional,
		XSD.Boolean memberTypeValidated optional,
		ConsistencyStrategy consistencyStrategy optional,
		XSD.String groupName optional,
		XSD.Boolean semanticSupportIndicator optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription,
				SemanticDescriptor semanticDescriptor
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (memberTypeValidated) "text 'true' as '1'";
	  //variant (memberTypeValidated) "text 'false' as '0'";
	  //variant (semanticSupportIndicator) "text 'true' as '1'";
	  //variant (semanticSupportIndicator) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};

       
	type record PollingChannel_invalid {
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for PollingChannel
		Labels labels optional,
		Timestamp expirationTime optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	};
       
	type record Schedule_invalid {
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for Schedule
		Labels labels optional,
		Timestamp expirationTime optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		ScheduleEntries scheduleElement optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
       
	type record Subscription_invalid {
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.NonNegativeInteger maxNrOfInstances optional,//Invalid field, non existing for Subscription
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		XSD.ID creator optional,
		EventNotificationCriteria eventNotificationCriteria optional,
		XSD.PositiveInteger expirationCounter optional,
		ListOfURIs notificationURI optional,
		XSD.AnyURI groupID optional,
		XSD.AnyURI notificationForwardingURI optional,
		BatchNotify batchNotify optional,
		RateLimit rateLimit optional,
		XSD.PositiveInteger preSubscriptionNotify optional,
		PendingNotification pendingNotification optional,
		XSD.PositiveInteger notificationStoragePriority optional,
		XSD.Boolean latestNotify optional,
		NotificationContentType notificationContentType optional,
		EventCat notificationEventCat optional,
		XSD.AnyURI subscriberURI optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Schedule schedule,
				NotificationTargetMgmtPolicyRef notificationTargetMgmtPolicyRef
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  //variant (latestNotify) "text 'true' as '1'";
	  //variant (latestNotify) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
	
	type record TimeSeries_invalid
	{
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for TimeSeries
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		XSD.NonNegativeInteger stateTag optional,
		XSD.ID creator optional,
		XSD.NonNegativeInteger maxNrOfInstances optional,
		XSD.NonNegativeInteger maxByteSize optional,
		XSD.NonNegativeInteger maxInstanceAge optional,
		XSD.NonNegativeInteger currentNrOfInstances optional,
		XSD.NonNegativeInteger currentByteSize optional,
		XSD.NonNegativeInteger periodicInterval optional,
		XSD.Boolean missingDataDetect optional,
		XSD.NonNegativeInteger missingDataMaxNr optional,
		MissingDataList missingDataList optional,
		XSD.NonNegativeInteger missingDataCurrentNr optional,
		XSD.NonNegativeInteger missingDataDetectTimer optional,
		XSD.AnyURI ontologyRef optional,
		ContentInfo contentInfo optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				TimeSeriesInstance_optional timeSeriesInstance,
				Subscription_optional subscription,
				SemanticDescriptor_optional semanticDescriptor
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  //variant (missingDataDetect) "text 'true' as '1'";
	  //variant (missingDataDetect) "text 'false' as '0'";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};


       
	 type record LocationPolicy_invalid {
		ResourceName resourceName optional,
		ResourceType resourceType optional,
		XSD.ID resourceID optional,
		NhURI parentID optional,
		Timestamp creationTime optional,
		Timestamp lastModifiedTime optional,
		XSD.PositiveInteger expirationCounter optional,//Invalid field, non existing for LocationPolicy
		Labels labels optional,
		AcpType accessControlPolicyIDs optional,
		Timestamp expirationTime optional,
		ListOfURIs dynamicAuthorizationConsultationIDs optional,
		ListOfURIs announceTo optional,
		record length(1 .. infinity) of XSD.NCName announcedAttribute optional,
		LocationSource locationSource optional,
		ListOfDuration locationUpdatePeriod optional,
		LocationTargetID locationTargetID optional,
		XSD.AnyURI locationServer optional,
		XSD.AnyURI locationContainerID optional,
		XSD.String locationContainerName optional,
		XSD.String locationStatus optional,
		union {
			record length(1 .. infinity) of ChildResourceRef childResource_list,
			record length(1 .. infinity) of union {
				Subscription subscription
			} choice_list
		} choice optional
	}
	with {
	  variant "name as uncapitalized";
	  variant "element";
	  variant (resourceName) "attribute";
	  variant (announcedAttribute) "list";
	  variant (choice) "untagged";
	  variant (choice.childResource_list) "untagged";
	  variant (choice.childResource_list[-]) "name as 'childResource'";
	  variant (choice.choice_list) "untagged";
	  variant (choice.choice_list[-]) "untagged";
	};
       
}//end group invalidTypes

group OtherTypes {
	
	type set of charstring SetOfCharstring;
		
	type enumerated SyncPoints {
	   e_done  (0),
	   e_error	(1)  
	 }

	type enumerated Configurations {
		e_cf01,
		e_cf02,
		e_cf02CseSimuMaster,
		e_cf03,
		e_cf04,
		e_cf06,
		e_cf06DasSimuMaster
	};
	
	type enumerated TestSystemRole {
		e_cse,
		e_ae,
		e_das
	};
		
	type NhURI ParentID;
    	
	type record MyResource {
		integer parentIndex,
		ResourceType resourceType,
		PrimitiveContent resource
	};
		
	type record of MyResource MyResourcesList;
		
	type record of integer IntegerList;
		
	type enumerated PrimitiveScope {
		e_cseRelative,
		e_spRelative, 
		e_absolute
	}
		
	type enumerated AddressingMethod {
		e_nonHierarchical,
		e_hierarchical,
		e_hybrid
	}
		
	type union Resource_2 {
		//ResourceTypes
		AEAnnc_optional aEAnnc,
		AE_optional aE,
		AccessControlPolicy_optional accessControlPolicy,
		AccessControlPolicyAnnc_optional accessControlPolicyAnnc,
		ContentInstance_optional contentInstance,
		ContentInstanceAnnc_optional contentInstanceAnnc,
		Container_optional container,
		ContainerAnnc_optional containerAnnc,
		CSEBase_optional cSEBase,
		Group_optional group_,
		GroupAnnc_optional groupAnnc,
		LocationPolicy_optional locationPolicy,
		LocationPolicyAnnc_optional locationPolicyAnnc,
		MgmtResource_optional mgmtResource,//MgmtResource
		AnnouncedMgmtResource_optional announcedMgmtResource,//AnnouncedMgmtResource
		Node_optional node,
		NodeAnnc_optional nodeAnnc,
		PollingChannel_optional pollingChannel,
		RemoteCSE_optional remoteCSE,
		Schedule_optional schedule,
		ScheduleAnnc_optional scheduleAnnc,
		StatsConfig_optional statsConfig,
		StatsCollect_optional statsCollect,
		M2mServiceSubscriptionProfile_optional m2mServiceSubscriptionProfile,
		ServiceSubscribedAppRule_optional serviceSubscribedAppRule,
		Subscription_optional subscription,
		TimeSeries_optional timeSeries,
		Token_optional token
	}
	with {
		variant "untagged";
	}		
		
	type record of ResourceType ResourceTypeList_1
	with {
		variant "name as uncapitalized";
		variant "list";
	};
	
	type union PrimitiveContent {
	//TS-0004 - 7.5.2-1 & 7.5.2-2 Common elements to request/response content
	//ResourceTypes
	AEAnnc_optional aEAnnc,
	AE_optional aE,
	AccessControlPolicy_optional accessControlPolicy,
	AccessControlPolicyAnnc_optional accessControlPolicyAnnc,
	ContentInstance_optional contentInstance,
	ContentInstanceAnnc_optional contentInstanceAnnc,
	Container_optional container,
	ContainerAnnc_optional containerAnnc,
	Delivery_optional delivery,
	FlexContainerResource_optional flexContainer,
	CSEBase_optional cSEBase,
	Group_optional group_,
	GroupAnnc_optional groupAnnc,
	LocationPolicy_optional locationPolicy,
	LocationPolicyAnnc_optional locationPolicyAnnc,
	MgmtResource_optional mgmtResource,//MgmtResource
	MgmtCmd_optional mgmtCmd,
	AnnouncedMgmtResource_optional announcedMgmtResource,//AnnouncedMgmtResource
	Node_optional node,
	NodeAnnc_optional nodeAnnc,
	OntologyRepository_optional ontologyRepository,
	Ontology_optional ontology,
	PollingChannel_optional pollingChannel,
	Request_optional request, 
	RemoteCSE_optional remoteCSE,
	RemoteCSEAnnc_optional remoteCSEAnnc,
	Schedule_optional schedule,
	ScheduleAnnc_optional scheduleAnnc,
	StatsConfig_optional statsConfig,
	StatsCollect_optional statsCollect,
	M2mServiceSubscriptionProfile_optional m2mServiceSubscriptionProfile,
	ServiceSubscribedAppRule_optional serviceSubscribedAppRule,
	ServiceSubscribedNode_optional serviceSubscribedNode,
	Subscription_optional subscription,
	SemanticDescriptor_optional semanticDescriptor,
	SemanticMashupInstance_optional semanticMashupInstance,
	SemanticMashupJobProfile_optional semanticMashupJobProfile,
	SemanticMashupResult_optional semanticMashupResult,
	TimeSeries_optional timeSeries,
	TimeSeriesInstance_optional timeSeriesInstance,
	TimeSeriesAnnc_optional timeSeriesAnnc,
	TimeSeriesInstanceAnnc_optional timeSeriesInstanceAnnc,
	GenericInterworkingService_optional genericInterworkingService,
	DynamicAuthorizationConsultation_optional dynamicAuthorizationConsultation,
	GenericInterworkingOperationInstance_optional genericInterworkingOperationInstance,
	Role_optional role,
	Token_optional token,
	//HAIM 
	DeviceAirConditioner_optional deviceAirConditioner,
	DeviceClothesWasherDryer_optional deviceClothesWasherDryer,
	DeviceElectricVehicleCharger_optional deviceElectricVehicleCharger,
	DeviceLight_optional deviceLight,
	DeviceMicrogeneration_optional deviceMicrogeneration,
	DeviceOven_optional deviceOven,
	DeviceRefrigerator_optional deviceRefrigerator,
	DeviceRobotCleaner_optional deviceRobotCleaner,
	DeviceSmartElectricMeter_optional deviceSmartElectricMeter,
	DeviceStorageBattery_optional deviceStorageBattery,
	DeviceTelevision_optional deviceTelevision,
	DeviceThermostat_optional deviceThermostat,
	DeviceWaterHeater_optional deviceWaterHeater,
	BinarySwitch_optional binarySwitch,
	FaultDetection_optional faultDetection,
	RunState_optional runState,
	Battery_optional battery,
	ElectricVehicleConnector_optional electricVehicleConnector,
	EnergyGeneration_optional energyGeneration,
	EnergyConsumption_optional energyConsumption,
	Temperature_optional temperature,
	Turbo_optional turbo,
	AirFlow_optional airFlow,
	SpinLevel_optional spinLevel,
	WaterFlow_optional waterFlow,
	Timer timerAction,
	TelevisionChannel_optional televisionChannel,
	Brightness_optional brightness,
	Colour_optional colour,
	ColourSaturation_optional colourSaturation,
	DoorStatus_optional doorStatus,
	PowerSave_optional powerSave,
	MediaInput_optional mediaInput,
	AudioVolume_optional audioVolume,
	Boiler_optional boiler,
	Clock_optional clock,
	HotWaterSupply_optional hotWaterSupply,
	DeviceInfo_optional deviceInfo,
	//SecurityInfo
	SecurityInfo securityInfo,
	//TS-0004 - 7.5.2-1 Elements used for request content
	Notification notification,
	AggregatedNotification aggregatedNotification,
	AttributeList attributeList,
	ResponsePrimitive responsePrimitive,
	//TS-0004 - 7.5.2-2 Elements used for response content
	Resource resource,
	URIList uRIList,
	ResourceRefList resourceRefList,
	AggregatedResponse aggregatedResponse,
	URI uRI,
	RequestPrimitive requestPrimitive,
	DebugInfo debugInfo,
	//Invalid types
	AE_invalid aE_invalid,
	AccessControlPolicy_invalid accessControlPolicy_invalid,
	Container_invalid container_invalid,
	GenericInterworkingService_invalid genericInterworkingService_invalid,
	Group_invalid group_invalid,
	PollingChannel_invalid pollingChannel_invalid,
	Schedule_invalid schedule_invalid,
	Subscription_invalid subscription_invalid,
	LocationPolicy_invalid locationPolicy_invalid,
	TimeSeries_invalid timeSeries_invalid
}
	
}

	group tsSettings {

	/**
	 * @desc Authorized protocol bindings
	 * @member e_http HTTP protocol binding
	 * @member e_coap CoAP protocol binding
	 * @member e_mqtt MQTT protocol binding
	 * @member e_ws   WebSocket protocol binding
	 */
	type enumerated ProtocolBindings {
		e_http (0),
		e_coap (1),
		e_mqtt (2),
		e_wsck (3)
	}
    
	/**
	 * @desc Authorized serialization representations
	 * @member e_xml   Data serialization using XML
	 * @member e_json Data serialization using JSON
	 * @member e_cbor  Data serialization using CBOR
	 */
	type charstring SerializationRepresentations (pattern "(xml|json|cbor)");
    
	/**
	 * @desc Basic description of a Protocol Binding settings
	 * @member tsAddress  Test System IP address
	 * @member remotePort Remote port (SUT listener port)
	 * @member localPort  Test Adapter listener port (used by mcxPortIn) or,
	 *                    The local client port. In this case, the value 'omit' is interpreted as random port number by the Test Adapter
	 * @member sutAddress SUT IP address, optional.
	 *                    If omitted, the SUT IP address defined in SutDesc data structure will be used by the Test Adapter
	 */
	type record BindingDesc {
		charstring       tsAddress,
		integer          remotePort optional,
		integer          localPort optional,
		charstring       sutAddress
	}
    
	/**
	 * @desc HTTP binding protocol settings
	 */
	type record HttpBindingDesc {
		ProtocolBindings bindingProtocol (e_http),
		BindingDesc      bindingDesc
	}
    
	/**
	 * @desc COAP binding protocol settings
	 */
	type record CoapBindingDesc {
		ProtocolBindings bindingProtocol (e_coap),
		BindingDesc      bindingDesc
	}
    
	/**
	 * @desc MQTT binding protocol settings
	 * @member bindingProtocol 
	 * @member hostingCSE_ID   
	 * @member credentialId    
	 * @member bindingDesc     
	 */
	type record MqttBindingDesc {
		ProtocolBindings bindingProtocol (e_mqtt),
		BindingDesc      bindingDesc,
		XSD.ID       	 originator,
		XSD.ID		     receiver
	}
    
	/**
	 * @desc WebSocket binding protocol settings 
	 */
	type record WSBindingDesc {
		ProtocolBindings bindingProtocol (e_wsck),
		BindingDesc      bindingDesc,
		charstring       requestUri 
	}
    
	type union BindingProtocolsSelect {
		HttpBindingDesc httpBindingDesc,
		CoapBindingDesc coapBindingDesc,
		MqttBindingDesc mqttBindingDesc,
		WSBindingDesc   wsBindingDesc
	}
    
	/**
	 * @desc 
	 * @member binding
	 * @member serialization
	 */
	type record PortDesc {
		BindingProtocolsSelect binding,
		SerializationRepresentations serialization
	}
    
	/**
	 * @desc UpperTester component settings
	 * @member requestId    
	 * @member url     Test System IP address
	 */
	type record UtDesc {
		charstring url
	}
    
	/**
	 * @desc AeSimu component settings
	 * @member mcaPort   TTCN-3 'mca' protocol for sending to the SUT
	 * @member mcaPortIn TTCN-3 'mca' protocol for receiving from the SUT
	 */
	type record AeSimuComponentDesc {
		/**
		 * @desc Test System AE-ID with AE-ID-Stem format (relative) according to TS-0001-7.2-1
		 */			
		XSD.ID aeIdStem,
		/**
		 * @desc Test System APP-ID with App-ID format according to TS-0001-7.2-1
		 */		
		XSD.ID appId,
		PortDesc mcaPort,
		PortDesc mcaPortIn
	}
    
	/**
	 * @desc CseSimu component settings
	 * @member mcaPort   TTCN-3 'mca' protocol for sending to the SUT
	 * @member mcaPortIn TTCN-3 'mca' protocol for receiving from the SUT
	 * @member mccPort   TTCN-3 'mcc' protocol for sending to the SUT
	 * @member mccPortIn TTCN-3 'mcc' protocol for receiving from the SUT
	 */
	type record CseSimuComponentDesc {
		/**
		 * @desc Test System CSE Name
		 */	
		XSD.ID cseName, 
		/**
		 * @desc Test System CSE-ID with SP-relative-CSE-ID format (relative) according to TS-0001-7.2-1
		 */		
		XSD.ID cseId,
		/**
		 * @desc Test System CSE resource ID with Unstructured-CSE-relative-Resource-ID (relative) format according to TS-0001-7.2-1
		 */			
		XSD.ID cseResourceId,
		/**
		 * @desc Test System M2M-SP-ID with M2M-SP-ID format (absolute) according to TS-0001-7.2-1 Unstructured-CSE-relative -Resource-ID
		 */
		XSD.ID spId,
		/**
		 * @desc Test System CSE Supported resource type
		 */	
		ResourceTypeList_1 supportedResourceType,
		PortDesc mcaPort,
		PortDesc mcaPortIn,
		PortDesc mccPort,
		PortDesc mccPortIn
	}

} 
with {
  encode "adapter";
} // End of group tsSettings
	
	
} 
// end of module