Separates SubmodelElementCollection & ContainerProperty

* Was previously unified

Change-Id: Ide44210b57e1b3854af3d081cff5c713610a5329
Signed-off-by: Frank Schnicke <frank.schnicke@iese.fraunhofer.de>
diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java b/components/basys.components/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java
index 1e21a05..8d34f46 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java
@@ -14,7 +14,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.Referable;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.haskind.Kind;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.qualifiable.Qualifier;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 

 /**

  * Base class for providers that receiver their configuration through a configuration properties object

@@ -241,7 +241,7 @@
 	 * @param cfgValues

 	 *            Provider configuration

 	 */

-	protected Property createSubmodelElement(String propertyName, Object propertyValue, Map<Object, Object> cfgValues) {

+	protected SingleProperty createSubmodelElement(String propertyName, Object propertyValue, Map<Object, Object> cfgValues) {

 

 		// Get property type

 		String propertyType = cfgValues.get(buildCfgName(propertyName, TYPE)).toString();

@@ -264,7 +264,7 @@
 	 * @param cfgValues

 	 *            Provider configuration

 	 */

-	protected Property createProperty(String propertyName, Object propertyValue, Map<Object, Object> cfgValues) {

+	protected SingleProperty createProperty(String propertyName, Object propertyValue, Map<Object, Object> cfgValues) {

 

 		// Try to get property meta data

 		String property_semanticsInternal = null;

@@ -289,7 +289,7 @@
 		}

 

 		// Create and return single valued property

-		Property prop = new Property(propertyValue, new Referable(propertyName, "", property_description),

+		SingleProperty prop = new SingleProperty(propertyValue, new Referable(propertyName, "", property_description),

 				property_semanticsInternal, new Qualifier(property_qualifierType, property_qualifier, null));

 		return prop;

 	}

diff --git a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductQualitySubmodel.java b/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductQualitySubmodel.java
index cca4e44..f445878 100644
--- a/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductQualitySubmodel.java
+++ b/components/basys.components/src/main/java/org/eclipse/basyx/models/manufacturing/process/product/ProductQualitySubmodel.java
@@ -7,7 +7,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.factory.MetaModelElementFactory;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.operation.Operation;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 

 

 

@@ -50,7 +50,7 @@
 		MetaModelElementFactory fac = new MetaModelElementFactory();

 		

 		// Add quality data property

-		getDataElements().put("qualityData", new Property(qualityData));

+		getDataElements().put("qualityData", new SingleProperty(qualityData));

 		

 		// Add access operations for quality data

 		// - Add a quality data entry

diff --git a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java b/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java
index 7e1df56..8c07a8a 100644
--- a/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java
+++ b/components/basys.components/src/test/java/org/eclipse/basyx/regression/support/processengine/submodel/DeviceSubmodelFactory.java
@@ -7,7 +7,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.factory.MetaModelElementFactory;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.operation.Operation;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.regression.support.processengine.stubs.ICoilcar;
 
 
@@ -15,13 +15,13 @@
 	public SubModel create(String id, ICoilcar coilcar) {
 		MetaModelElementFactory factory = new MetaModelElementFactory();
 		// create a single value property
-		Property property1 = new Property(0);
+		SingleProperty property1 = new SingleProperty(0);
 		property1.setId("currentPosition");
 		
-		Property property2 = new Property(0);
+		SingleProperty property2 = new SingleProperty(0);
 		property2.setId("lifterPosition");
 		
-		Property property3 = new Property(false);
+		SingleProperty property3 = new SingleProperty(false);
 		property3.setId("physicalSpeed");
 		
 		// create 2 opertations
@@ -41,7 +41,7 @@
 		oplist.add(op1);
 		oplist.add(op2);
 		// create a list for defined properties
-		List<Property> propList = new ArrayList<>();
+		List<SingleProperty> propList = new ArrayList<>();
 		propList.add(property1);
 		propList.add(property2);
 		propList.add(property3);
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceSubModelDeployment.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceSubModelDeployment.java
index 0e27dbe..6bc5deb 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceSubModelDeployment.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceSubModelDeployment.java
@@ -9,7 +9,7 @@
 import org.eclipse.basyx.aas.backend.provider.VABMultiSubmodelProvider;

 import org.eclipse.basyx.aas.backend.provider.VirtualPathModelProvider;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.examples.support.directory.ExampleAASRegistry;

 import org.eclipse.basyx.vab.backend.connector.basyx.BaSyxConnectorProvider;

 import org.eclipse.basyx.vab.backend.server.basyx.BaSyxTCPServer;

@@ -42,11 +42,11 @@
 		// - Set sub model ID "SampleSM" to full qualified ID urn:de.FHG:devices.es.iese:SampleSM:1.0:3:x-509#003

 		submodel.setId("urn:de.FHG:devices.es.iese:SampleSM:1.0:3:x-509#003");

 		// - Add example properties

-		Property prop1 = new Property(7);

+		SingleProperty prop1 = new SingleProperty(7);

 		prop1.setId("prop1");

 		submodel.addSubModelElement(prop1);

 

-		Property prop2 = new Property("myStr");

+		SingleProperty prop2 = new SingleProperty("myStr");

 		prop2.setId("prop2");

 		submodel.addSubModelElement(prop2);

 

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceSubModelDeploymentVAB.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceSubModelDeploymentVAB.java
index 0eb602b..c12d141 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceSubModelDeploymentVAB.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/deployment/device/DeviceSubModelDeploymentVAB.java
@@ -5,7 +5,7 @@
 import org.eclipse.basyx.aas.backend.provider.VABMultiSubmodelProvider;

 import org.eclipse.basyx.aas.backend.provider.VirtualPathModelProvider;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.vab.backend.connector.JSONConnector;

 import org.eclipse.basyx.vab.backend.connector.basyx.BaSyxConnector;

 import org.eclipse.basyx.vab.backend.server.basyx.BaSyxTCPServer;

@@ -38,11 +38,11 @@
 		// - Set sub model ID

 		submodel.setId("dynamicSM");

 		// - Add example properties

-		Property prop1 = new Property(7);

+		SingleProperty prop1 = new SingleProperty(7);

 		prop1.setId("prop1");

 		submodel.addSubModelElement(prop1);

 

-		Property prop2 = new Property("myStr");

+		SingleProperty prop2 = new SingleProperty("myStr");

 		prop2.setId("prop2");

 		submodel.addSubModelElement(prop2);

 

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToSubModelEndpoints.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToSubModelEndpoints.java
index 5f1497d..fc42f16 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToSubModelEndpoints.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/registry/ConnectToSubModelEndpoints.java
@@ -12,7 +12,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.descriptor.AASDescriptor;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.descriptor.SubmodelDescriptor;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.identifier.IdentifierType;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.DynamicModelProviderServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -100,11 +100,11 @@
 		submodel.setId(subModelId);

 

 		// - Add example properties to sub model

-		Property prop1 = new Property(7);

+		SingleProperty prop1 = new SingleProperty(7);

 		prop1.setId("prop1");

 		submodel.addSubModelElement(prop1);

 

-		Property prop2 = new Property("myStr");

+		SingleProperty prop2 = new SingleProperty("myStr");

 		prop2.setId("prop2");

 		submodel.addSubModelElement(prop2);

 		// - Transfer sub model to server

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/ConnectToAASSubModelSDK.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/ConnectToAASSubModelSDK.java
index 230fa09..c54b788 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/ConnectToAASSubModelSDK.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/ConnectToAASSubModelSDK.java
@@ -14,7 +14,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElement;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElementCollection;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.SubmodelServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_Empty;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -64,11 +64,11 @@
 

 			// Add example properties

 			// - Add simple property

-			Property prop1 = new Property(234);

+			SingleProperty prop1 = new SingleProperty(234);

 			prop1.setId("prop1");

 			addSubModelElement(prop1);

 

-			Property prop11 = new Property(123);

+			SingleProperty prop11 = new SingleProperty(123);

 			prop11.setId("prop11");

 			// - Add container property that holds other properties

 			List<SubmodelElement> containerProperties = fac.createList(prop11);

@@ -76,7 +76,7 @@
 			addSubModelElement(fac.createContainer(new SubmodelElementCollection(), containerProperties, fac.emptyList(), "prop2"));

 

 			// Add another property manually to sub model container "properties"

-			Property prop3 = new Property(17);

+			SingleProperty prop3 = new SingleProperty(17);

 			prop3.setId("prop3");

 			{

 				((Map<String, Object>) this.get("dataElements")).put("prop3", prop3);

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/ConnectToAASSubModelVAB.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/ConnectToAASSubModelVAB.java
index a76adbb..d8aad24 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/ConnectToAASSubModelVAB.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/ConnectToAASSubModelVAB.java
@@ -12,7 +12,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElement;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElementCollection;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.SubmodelServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_Empty;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -66,11 +66,11 @@
 

 			// Add example properties

 			// - Add simple property

-			Property prop1 = new Property(234);

+			SingleProperty prop1 = new SingleProperty(234);

 			prop1.setId("prop1");

 			addSubModelElement(prop1);

 

-			Property prop11 = new Property(123);

+			SingleProperty prop11 = new SingleProperty(123);

 			prop11.setId("prop11");

 			// - Add container property that holds other properties

 			List<SubmodelElement> containerProperties = fac.createList(prop11);

@@ -78,7 +78,7 @@
 			addSubModelElement(fac.createContainer(new SubmodelElementCollection(), containerProperties, fac.emptyList(), "prop2"));

 

 			// Add another property manually to sub model container "properties"

-			Property prop3 = new Property(17);

+			SingleProperty prop3 = new SingleProperty(17);

 			prop3.setId("prop3");

 			{

 				((Map<String, Object>) this.get("dataElements")).put("prop3", prop3);

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/CreateAASSubModelSDK.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/CreateAASSubModelSDK.java
index c84e13a..c51cacf 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/CreateAASSubModelSDK.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/CreateAASSubModelSDK.java
@@ -9,7 +9,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElement;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElementCollection;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.junit.Test;

 

 

@@ -50,11 +50,11 @@
 

 			// Add example properties

 			// - Add simple property

-			Property prop1 = new Property(234);

+			SingleProperty prop1 = new SingleProperty(234);

 			prop1.setId("prop1");

 			addSubModelElement(prop1);

 

-			Property prop11 = new Property(123);

+			SingleProperty prop11 = new SingleProperty(123);

 			prop11.setId("prop11");

 			// - Add container property that holds other properties

 			List<SubmodelElement> containerProperties = fac.createList(prop11);

@@ -62,7 +62,7 @@
 			addSubModelElement(fac.createContainer(new SubmodelElementCollection(), containerProperties, fac.emptyList(), "prop2"));

 

 			// Add another property manually to sub model container "properties"

-			Property prop3 = new Property(17);

+			SingleProperty prop3 = new SingleProperty(17);

 			prop3.setId("prop3");

 			{

 				((Map<String, Object>) this.get("dataElements")).put("prop3", prop3);

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/CreateAASSubModelVAB.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/CreateAASSubModelVAB.java
index b439341..c67380d 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/CreateAASSubModelVAB.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/CreateAASSubModelVAB.java
@@ -5,7 +5,7 @@
 import java.util.Map;

 

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDefHelper;

 import org.junit.Test;

 

@@ -55,7 +55,7 @@
 			

 			// Add another property manually to sub model container "properties"

 			// - Using the Property class ensures presence of all meta properties

-			Property addedProperty = new Property(); 

+			SingleProperty addedProperty = new SingleProperty(); 

 			addedProperty.set(17);

 			addedProperty.setId("prop3");

 			// - Add property to sub model container "properties"

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeployment.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeployment.java
index 2bae660..bd8068d 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeployment.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeployment.java
@@ -7,7 +7,7 @@
 import org.eclipse.basyx.aas.api.modelurn.ModelUrn;

 import org.eclipse.basyx.aas.backend.connected.ConnectedAssetAdministrationShellManager;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.DynamicModelProviderServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -65,11 +65,11 @@
 		SubModel submodel = new SubModel();

 		// - Add example properties to sub model

 		submodel.setId(STATUS_SM);

-		Property prop1 = new Property(7);

+		SingleProperty prop1 = new SingleProperty(7);

 		prop1.setId("prop1");

 		submodel.addSubModelElement(prop1);

 

-		Property prop2 = new Property("myStr");

+		SingleProperty prop2 = new SingleProperty("myStr");

 		prop2.setId("prop2");

 		submodel.addSubModelElement(prop2);

 

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeploymentHTTP.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeploymentHTTP.java
index 36474fd..e5595a6 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeploymentHTTP.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/aas/submodels/DynamicSubModelDeploymentHTTP.java
@@ -6,7 +6,7 @@
 

 import org.eclipse.basyx.aas.api.webserviceclient.WebServiceJSONClient;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.DynamicModelProviderServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -80,11 +80,11 @@
 		// Add example properties

 		SubModel submodel = new SubModel();

 		submodel.setId("urn:de.FHG:devices.es.iese:statusSM:1.0:3:x-509:003");

-		Property prop1 = new Property(7);

+		SingleProperty prop1 = new SingleProperty(7);

 		prop1.setId("prop1");

 		submodel.addSubModelElement(prop1);

 

-		Property prop2 = new Property("myStr");

+		SingleProperty prop2 = new SingleProperty("myStr");

 		prop2.setId("prop2");

 		submodel.addSubModelElement(prop2);

 

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASServletConnection.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASServletConnection.java
index 629613c..698e6c6 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASServletConnection.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASServletConnection.java
@@ -15,7 +15,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElement;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElementCollection;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDefHelper;

 import org.eclipse.basyx.components.servlet.submodel.SubmodelServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_Empty;

@@ -63,11 +63,11 @@
 

 			// Add example properties

 			// - Add simple property

-			Property prop1 = new Property(234);

+			SingleProperty prop1 = new SingleProperty(234);

 			prop1.setId("prop1");

 			addSubModelElement(prop1);

 

-			Property prop11 = new Property(123);

+			SingleProperty prop11 = new SingleProperty(123);

 			prop11.setId("prop11");

 			// - Add container property that holds other properties

 			List<SubmodelElement> containerProperties = fac.createList(

@@ -77,7 +77,7 @@
 			addSubModelElement(fac.createContainer(new SubmodelElementCollection(), containerProperties, fac.emptyList(), "prop2"));

 

 			// Add another property manually to sub model container "properties"

-			Property prop3 = new Property(17);

+			SingleProperty prop3 = new SingleProperty(17);

 			prop3.setId("prop3");

 			{

 				((Map<String, Object>) this.get("dataElements")).put("prop3", prop3);

@@ -120,7 +120,7 @@
 			

 			// Add another property manually to sub model container "properties"

 			// - Using the Property class ensures presence of all meta properties

-			Property addedProperty = new Property(); 

+			SingleProperty addedProperty = new SingleProperty(); 

 			addedProperty.set(17);

 			addedProperty.setId("prop3");

 			// - Add property to sub model container "properties"

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASServletConnectionFull.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASServletConnectionFull.java
index 1056869..bfa5f81 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASServletConnectionFull.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASServletConnectionFull.java
@@ -15,7 +15,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElement;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElementCollection;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDefHelper;

 import org.eclipse.basyx.components.servlet.submodel.SubmodelServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_Empty;

@@ -63,11 +63,11 @@
 

 			// Add example properties

 			// - Add simple property

-			Property prop1 = new Property(234);

+			SingleProperty prop1 = new SingleProperty(234);

 			prop1.setId("prop1");

 			addSubModelElement(prop1);

 

-			Property prop11 = new Property(123);

+			SingleProperty prop11 = new SingleProperty(123);

 			prop11.setId("prop11");

 			// - Add container property that holds other properties

 			List<SubmodelElement> containerProperties = fac.createList(

@@ -77,7 +77,7 @@
 			addSubModelElement(fac.createContainer(new SubmodelElementCollection(), containerProperties, fac.emptyList(), "prop2"));

 

 			// Add another property manually to sub model container "properties"

-			Property prop3 = new Property(17);

+			SingleProperty prop3 = new SingleProperty(17);

 			prop3.setId("prop3");

 			{

 				((Map<String, Object>) this.get("dataElements")).put("prop3", prop3);

@@ -120,7 +120,7 @@
 			

 			// Add another property manually to sub model container "properties"

 			// - Using the Property class ensures presence of all meta properties

-			Property addedProperty = new Property(); 

+			SingleProperty addedProperty = new SingleProperty(); 

 			addedProperty.set(17);

 			addedProperty.setId("prop3");

 			// - Add property to sub model container "properties"

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASSubModelServletConnectorConnection.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASSubModelServletConnectorConnection.java
index 250369d..0a40832 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASSubModelServletConnectorConnection.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASSubModelServletConnectorConnection.java
@@ -15,7 +15,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElement;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElementCollection;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.SubmodelServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_Empty;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -61,11 +61,11 @@
 

 			// Add example properties

 			// - Add simple property

-			Property prop1 = new Property(234);

+			SingleProperty prop1 = new SingleProperty(234);

 			prop1.setId("prop1");

 			addSubModelElement(prop1);

 

-			Property prop11 = new Property(123);

+			SingleProperty prop11 = new SingleProperty(123);

 			prop11.setId("prop11");

 			// - Add container property that holds other properties

 			List<SubmodelElement> containerProperties = fac.createList(

@@ -75,7 +75,7 @@
 			addSubModelElement(fac.createContainer(new SubmodelElementCollection(), containerProperties, fac.emptyList(), "prop2"));

 

 			// Add another property manually to sub model container "properties"

-			Property prop3 = new Property(17);

+			SingleProperty prop3 = new SingleProperty(17);

 			prop3.setId("prop3");

 			{

 				((Map<String, Object>) this.get("dataElements")).put("prop3", prop3);

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASSubModelServletVABConnection.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASSubModelServletVABConnection.java
index 2b42d38..d5be3e2 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASSubModelServletVABConnection.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/connection/servlet/AASSubModelServletVABConnection.java
@@ -9,7 +9,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElement;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElementCollection;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.SubmodelServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_Empty;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -55,11 +55,11 @@
 

 			// Add example properties

 			// - Add simple property

-			Property prop1 = new Property(234);

+			SingleProperty prop1 = new SingleProperty(234);

 			prop1.setId("prop1");

 			addSubModelElement(prop1);

 

-			Property prop11 = new Property(123);

+			SingleProperty prop11 = new SingleProperty(123);

 			prop11.setId("prop11");

 			// - Add container property that holds other properties

 			List<SubmodelElement> containerProperties = fac.createList(

@@ -69,7 +69,7 @@
 			addSubModelElement(fac.createContainer(new SubmodelElementCollection(), containerProperties, fac.emptyList(), "prop2"));

 

 			// Add another property manually to sub model container "properties"

-			Property prop3 = new Property(17);

+			SingleProperty prop3 = new SingleProperty(17);

 			prop3.setId("prop3");

 			{

 				((Map<String, Object>) this.get("dataElements")).put("prop3", prop3);

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASDynamicOperationSnippet.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASDynamicOperationSnippet.java
index 26bcf2b..8fa77d4 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASDynamicOperationSnippet.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASDynamicOperationSnippet.java
@@ -7,7 +7,7 @@
 import java.util.function.Supplier;

 

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.EmptyVABLambdaElementServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -72,11 +72,11 @@
 		// - Add example properties

 		SubModel submodel = new SubModel();

 		submodel.setId("urn:de.FHG:devices.es.iese:statusSM:1.0:3:x-509#003");

-		Property prop1 = new Property(7);

+		SingleProperty prop1 = new SingleProperty(7);

 		prop1.setId("prop1");

 		submodel.addSubModelElement(prop1);

 

-		Property prop2 = new Property("myStr");

+		SingleProperty prop2 = new SingleProperty("myStr");

 		prop2.setId("prop2");

 		submodel.addSubModelElement(prop2);

 		// - Transfer sub model to server

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASManualHTTPOperationsSnippet.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASManualHTTPOperationsSnippet.java
index 2ae22e2..34a3840 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASManualHTTPOperationsSnippet.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASManualHTTPOperationsSnippet.java
@@ -6,7 +6,7 @@
 

 import org.eclipse.basyx.aas.api.webserviceclient.WebServiceJSONClient;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.EmptyVABLambdaElementServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -67,11 +67,11 @@
 		// Add example properties

 		SubModel submodel = new SubModel();

 		submodel.setId("urn:de.FHG:devices.es.iese:statusSM:1.0:3:x-509#003");

-		Property prop1 = new Property(7);

+		SingleProperty prop1 = new SingleProperty(7);

 		prop1.setId("prop1");

 		submodel.addSubModelElement(prop1);

 

-		Property prop2 = new Property("myStr");

+		SingleProperty prop2 = new SingleProperty("myStr");

 		prop2.setId("prop2");

 		submodel.addSubModelElement(prop2);

 

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASPropertiesCRUDAccessSnippet.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASPropertiesCRUDAccessSnippet.java
index 7f97b0f..e7b8dad 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASPropertiesCRUDAccessSnippet.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASPropertiesCRUDAccessSnippet.java
@@ -3,7 +3,7 @@
 import static org.junit.Assert.assertTrue;

 

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.EmptyVABLambdaElementServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -66,11 +66,11 @@
 		// - Add example properties

 		SubModel submodel = new SubModel();

 		submodel.setId("urn:de.FHG:devices.es.iese:statusSM:1.0:3:x-509#003");

-		Property prop1 = new Property(7);

+		SingleProperty prop1 = new SingleProperty(7);

 		prop1.setId("prop1");

 		submodel.addSubModelElement(prop1);

 

-		Property prop2 = new Property("myStr");

+		SingleProperty prop2 = new SingleProperty("myStr");

 		prop2.setId("prop2");

 		submodel.addSubModelElement(prop2);

 		// - Transfer sub model to server

diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASTailoredSupplierSnippet.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASTailoredSupplierSnippet.java
index 7e0178b..70dac25 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASTailoredSupplierSnippet.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/dynamic/RunAASTailoredSupplierSnippet.java
@@ -7,7 +7,7 @@
 import java.util.function.Supplier;

 

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.components.servlet.submodel.EmptyVABLambdaElementServlet;

 import org.eclipse.basyx.examples.contexts.BaSyxExamplesContext_1MemoryAASServer_1SQLDirectory;

 import org.eclipse.basyx.examples.deployment.BaSyxDeployment;

@@ -108,11 +108,11 @@
 		// - Add example properties

 		SubModel submodel = new SubModel();

 		submodel.setId("urn:de.FHG:devices.es.iese:statusSM:1.0:3:x-509#003");

-		Property prop1 = new Property(7);

+		SingleProperty prop1 = new SingleProperty(7);

 		prop1.setId("prop1");

 		submodel.addSubModelElement(prop1);

 

-		Property prop2 = new Property("myStr");

+		SingleProperty prop2 = new SingleProperty("myStr");

 		prop2.setId("prop2");

 		submodel.addSubModelElement(prop2);

 

diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/ConnectedSubmodelElementCollection.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/ConnectedSubmodelElementCollection.java
index b5f1a77..eb4dbbd 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/ConnectedSubmodelElementCollection.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/ConnectedSubmodelElementCollection.java
@@ -3,26 +3,21 @@
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Map;
 import java.util.Set;
 
 import org.eclipse.basyx.aas.api.metamodel.aas.qualifier.qualifiable.IConstraint;
 import org.eclipse.basyx.aas.api.metamodel.aas.reference.IReference;
-import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.IDataElement;
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.ISubmodelElement;
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.ISubmodelElementCollection;
-import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.operation.IOperation;
-import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.IProperty;
 import org.eclipse.basyx.aas.backend.connected.facades.ConnectedVABElementContainerFacade;
 import org.eclipse.basyx.aas.impl.metamodel.facades.HasDataSpecificationFacade;
 import org.eclipse.basyx.aas.impl.metamodel.facades.HasKindFacade;
 import org.eclipse.basyx.aas.impl.metamodel.facades.HasSemanticsFacade;
 import org.eclipse.basyx.aas.impl.metamodel.facades.QualifiableFacade;
 import org.eclipse.basyx.aas.impl.metamodel.facades.ReferableFacade;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.IVABElementContainer;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElementCollection;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.vab.core.proxy.VABElementProxy;
 
 /**
@@ -31,7 +26,7 @@
  * @author rajashek
  *
  */
-public class ConnectedSubmodelElementCollection extends ConnectedSubmodelElement implements IVABElementContainer, ISubmodelElementCollection {
+public class ConnectedSubmodelElementCollection extends ConnectedSubmodelElement implements ISubmodelElementCollection {
 	ConnectedVABElementContainerFacade facade;
 
 	public ConnectedSubmodelElementCollection(VABElementProxy proxy) {
@@ -81,13 +76,13 @@
 
 	@Override
 	public void setValue(ArrayList<?> value) {
-		getProxy().setModelPropertyValue(Property.VALUE, value);
+		getProxy().setModelPropertyValue(SingleProperty.VALUE, value);
 
 	}
 
 	@Override
 	public ArrayList<?> getValue() {
-		return (ArrayList<?>) getProxy().getModelPropertyValue(Property.VALUE);
+		return (ArrayList<?>) getProxy().getModelPropertyValue(SingleProperty.VALUE);
 	}
 
 	@Override
@@ -121,29 +116,4 @@
 	public HashMap<String, ISubmodelElement> getElements() {
 		return (HashMap<String, ISubmodelElement>) getProxy().getModelPropertyValue(SubModel.SUBMODELELEMENT);
 	}
-
-	public void addProperty(IProperty property) {
-		getElements().put(property.getId(), property);
-		getDataElements().put(property.getId(), property);
-	}
-
-	public void addOperation(IOperation operation) {
-		getElements().put(operation.getId(), operation);
-		getOperations().put(operation.getId(), operation);
-	}
-
-	@Override
-	public void addSubModelElement(ISubmodelElement element) {
-		facade.addSubModelElement(element);
-	}
-
-	@Override
-	public Map<String, IDataElement> getDataElements() {
-		return facade.getDataElements();
-	}
-
-	@Override
-	public Map<String, IOperation> getOperations() {
-		return facade.getOperations();
-	}
 }
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/operation/ConnectedOperation.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/operation/ConnectedOperation.java
index 3cbb79a..a1c8024 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/operation/ConnectedOperation.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/operation/ConnectedOperation.java
@@ -19,7 +19,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.facades.ReferableFacade;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.Referable;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.operation.Operation;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDefHelper;

 import org.eclipse.basyx.vab.core.proxy.VABElementProxy;

 

@@ -77,8 +77,8 @@
 		int i = 0;

 		for (Object param : params) {

 			HashMap<String, Object> valueWrapper = new HashMap<String, Object>();

-			valueWrapper.put(Property.VALUETYPE, PropertyValueTypeDefHelper.fromObject(param));

-			valueWrapper.put(Property.VALUE, param);

+			valueWrapper.put(SingleProperty.VALUETYPE, PropertyValueTypeDefHelper.fromObject(param));

+			valueWrapper.put(SingleProperty.VALUE, param);

 

 			params[i] = valueWrapper;

 			i++;

@@ -93,8 +93,8 @@
 			Object resultWrapper = ((List<?>) result).get(0);

 			if (resultWrapper instanceof Map<?, ?>) {

 				Map<String, Object> map = (Map<String, Object>) resultWrapper;

-				if (map.get(Referable.IDSHORT).equals("Response") && map.get(Property.VALUE) != null) {

-					result = map.get(Property.VALUE);

+				if (map.get(Referable.IDSHORT).equals("Response") && map.get(SingleProperty.VALUE) != null) {

+					result = map.get(SingleProperty.VALUE);

 				}

 			}

 		}

diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedCollectionProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedCollectionProperty.java
index 2371af1..ba89db3 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedCollectionProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedCollectionProperty.java
@@ -6,7 +6,7 @@
 import org.eclipse.basyx.aas.api.exception.TypeMismatchException;
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.ICollectionProperty;
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.PropertyType;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.vab.core.proxy.VABElementProxy;
 
 /**
@@ -25,7 +25,7 @@
 	@Override
 	public void set(Collection<Object> collection) throws ServerException {
 		try {
-			getProxy().setModelPropertyValue(Property.VALUE, collection);
+			getProxy().setModelPropertyValue(SingleProperty.VALUE, collection);
 		} catch (Exception e) {
 			throw new ServerException(e.getClass().toString(), e.getMessage());
 		}
@@ -34,7 +34,7 @@
 	@Override
 	public void add(Object newValue) throws ServerException, TypeMismatchException {
 		try {
-			getProxy().createValue(Property.VALUE, newValue);
+			getProxy().createValue(SingleProperty.VALUE, newValue);
 		} catch (Exception e) {
 			throw new ServerException(e.getClass().toString(), e.getMessage());
 		}
@@ -43,7 +43,7 @@
 	@Override
 	public void remove(Object objectRef) throws ServerException {
 		try {
-			getProxy().deleteValue(Property.VALUE, objectRef);
+			getProxy().deleteValue(SingleProperty.VALUE, objectRef);
 		} catch (Exception e) {
 			throw new ServerException(e.getClass().toString(), e.getMessage());
 		}
@@ -61,6 +61,6 @@
 
 	@SuppressWarnings("unchecked")
 	private Collection<Object> getCollection() {
-		return (Collection<Object>) getProxy().getModelPropertyValue(Property.VALUE);
+		return (Collection<Object>) getProxy().getModelPropertyValue(SingleProperty.VALUE);
 	}
 }
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedMapProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedMapProperty.java
index 7de9474..53866ef 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedMapProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedMapProperty.java
@@ -7,7 +7,7 @@
 import org.eclipse.basyx.aas.api.exception.TypeMismatchException;
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.IMapProperty;
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.PropertyType;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.vab.core.proxy.VABElementProxy;
 
 /**
@@ -32,9 +32,9 @@
 		try {
 			// check whether the value already exists and call update or create accordingly
 			if(getValue(key) != null)
-				getProxy().setModelPropertyValue(Property.VALUE + "/" + key, value);
+				getProxy().setModelPropertyValue(SingleProperty.VALUE + "/" + key, value);
 			else
-				getProxy().createValue(Property.VALUE + "/" + key, value);
+				getProxy().createValue(SingleProperty.VALUE + "/" + key, value);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -43,7 +43,7 @@
 	@Override
 	public void set(Map<String, Object> map) throws ServerException {
 		try {
-			getProxy().setModelPropertyValue(Property.VALUE, map);
+			getProxy().setModelPropertyValue(SingleProperty.VALUE, map);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -62,7 +62,7 @@
 	@Override
 	public void remove(String key) throws ServerException, TypeMismatchException {
 		try {
-			getProxy().deleteValue(Property.VALUE + "/" + key);
+			getProxy().deleteValue(SingleProperty.VALUE + "/" + key);
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
@@ -70,6 +70,6 @@
 
 	@SuppressWarnings("unchecked")
 	private Map<String, Object> getMap() {
-		return ((Map<String, Object>) getProxy().getModelPropertyValue(Property.VALUE));
+		return ((Map<String, Object>) getProxy().getModelPropertyValue(SingleProperty.VALUE));
 	}
 }
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedProperty.java
index 831ae35..7561d2e 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedProperty.java
@@ -3,7 +3,7 @@
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.IProperty;
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.PropertyType;
 import org.eclipse.basyx.aas.backend.connected.aas.submodelelement.ConnectedDataElement;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.vab.core.proxy.VABElementProxy;
 /**
  * "Connected" implementation of IProperty
@@ -25,12 +25,12 @@
 
 	@Override
 	public void setValueId(String obj) {
-		getProxy().setModelPropertyValue(Property.VALUEID, obj);
+		getProxy().setModelPropertyValue(SingleProperty.VALUEID, obj);
 		
 	}
 
 	@Override
 	public String getValueId() {
-		return (String) getProxy().getModelPropertyValue(Property.VALUEID);
+		return (String) getProxy().getModelPropertyValue(SingleProperty.VALUEID);
 	}
 }
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedPropertyFactory.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedPropertyFactory.java
index 2fe9a7a..7e874b5 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedPropertyFactory.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedPropertyFactory.java
@@ -5,7 +5,7 @@
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.IProperty;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.Referable;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDef;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDefHelper;

 import org.eclipse.basyx.vab.core.proxy.VABElementProxy;

@@ -25,9 +25,9 @@
 		Map<String, Object> property = (Map<String, Object>) proxy.getModelPropertyValue("");

 		if (property.containsKey(SubModel.PROPERTIES)) {

 			return new ConnectedContainerProperty(proxy);

-		} else if (property.containsKey(Property.VALUETYPE)) {

+		} else if (property.containsKey(SingleProperty.VALUETYPE)) {

 			

-			PropertyValueTypeDef valueType = PropertyValueTypeDefHelper.readTypeDef(property.get(Property.VALUETYPE));

+			PropertyValueTypeDef valueType = PropertyValueTypeDefHelper.readTypeDef(property.get(SingleProperty.VALUETYPE));

 						

 			if (valueType == PropertyValueTypeDef.Map) {

 				return new ConnectedMapProperty(proxy);

@@ -39,7 +39,7 @@
 				return conProp;

 			} 

 			

-		} else if ((property.get(Property.VALUE) != null) && (property.get(Referable.IDSHORT) != null)){

+		} else if ((property.get(SingleProperty.VALUE) != null) && (property.get(Referable.IDSHORT) != null)){

 			// handle  property without valueType

 			ConnectedSingleProperty conProp = new ConnectedSingleProperty(proxy);

 			conProp.putAllLocal(property);

diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedReferenceElement.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedReferenceElement.java
index abba669..dd04ae7 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedReferenceElement.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedReferenceElement.java
@@ -6,7 +6,7 @@
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.IReferenceElement;
 import org.eclipse.basyx.aas.backend.connected.aas.submodelelement.ConnectedDataElement;
 import org.eclipse.basyx.aas.impl.metamodel.facades.ReferenceFacade;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.vab.core.proxy.VABElementProxy;
 /**
  * "Connected" implementation of IReferenceElement
@@ -21,14 +21,14 @@
 
 	@Override
 	public void setValue(IReference ref) {
-		getProxy().setModelPropertyValue(Property.VALUE, ref);
+		getProxy().setModelPropertyValue(SingleProperty.VALUE, ref);
 		
 	}
 
 	@SuppressWarnings("unchecked")
 	@Override
 	public IReference getValue() {
-		return new ReferenceFacade((Map<String, Object>) getElem().getPath(Property.VALUE));
+		return new ReferenceFacade((Map<String, Object>) getElem().getPath(SingleProperty.VALUE));
 	}
 
 }
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedSingleProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedSingleProperty.java
index b2d1180..93cb80b 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedSingleProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/ConnectedSingleProperty.java
@@ -5,7 +5,7 @@
 import org.eclipse.basyx.aas.api.exception.ServerException;

 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.ISingleProperty;

 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.PropertyType;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.vab.core.proxy.VABElementProxy;

 

 /**

@@ -23,13 +23,13 @@
 

 	@Override

 	public Object get() throws Exception {

-		Object value = getProxy().getModelPropertyValue(Property.VALUE);

+		Object value = getProxy().getModelPropertyValue(SingleProperty.VALUE);

 		

 		// unpack c# value

 		if (value instanceof Map<?,?>) {

-			if (((Map<?, ?>) value).get(Property.VALUETYPE) != null

-					&& ((Map<?, ?>) value).get(Property.VALUE) != null) {

-				value = ((Map<?, ?>) value).get(Property.VALUE);

+			if (((Map<?, ?>) value).get(SingleProperty.VALUETYPE) != null

+					&& ((Map<?, ?>) value).get(SingleProperty.VALUE) != null) {

+				value = ((Map<?, ?>) value).get(SingleProperty.VALUE);

 			}

 		}

 		

@@ -39,7 +39,7 @@
 	@Override

 	public void set(Object newValue) throws ServerException {

 		try {

-			getProxy().setModelPropertyValue(Property.VALUE, newValue);

+			getProxy().setModelPropertyValue(SingleProperty.VALUE, newValue);

 		} catch (Exception e) {

 			e.printStackTrace();

 		}

diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/blob/ConnectedBlob.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/blob/ConnectedBlob.java
index 36df3b7..56d07f8 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/blob/ConnectedBlob.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/blob/ConnectedBlob.java
@@ -4,7 +4,7 @@
 
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.blob.IBlob;
 import org.eclipse.basyx.aas.backend.connected.aas.submodelelement.ConnectedDataElement;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.blob.Blob;
 import org.eclipse.basyx.vab.core.proxy.VABElementProxy;
 /**
@@ -19,14 +19,14 @@
 	
 	@Override
 	public void setValue(byte[] value) {
-		getProxy().setModelPropertyValue(Property.VALUE, value);
+		getProxy().setModelPropertyValue(SingleProperty.VALUE, value);
 		
 	}
 
 	@SuppressWarnings("unchecked")
 	@Override
 	public byte[] getValue() {
-		return convert((List<Integer>) getProxy().getModelPropertyValue(Property.VALUE));
+		return convert((List<Integer>) getProxy().getModelPropertyValue(SingleProperty.VALUE));
 	}
 
 	@Override
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/file/ConnectedFile.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/file/ConnectedFile.java
index b36e172..6275ac9 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/file/ConnectedFile.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/backend/connected/aas/submodelelement/property/file/ConnectedFile.java
@@ -2,7 +2,7 @@
 
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.file.IFile;
 import org.eclipse.basyx.aas.backend.connected.aas.submodelelement.ConnectedDataElement;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.blob.Blob;
 import org.eclipse.basyx.vab.core.proxy.VABElementProxy;
 /**
@@ -17,13 +17,13 @@
 	
 	@Override
 	public void setValue(String value) {
-		getProxy().setModelPropertyValue(Property.VALUE, value);
+		getProxy().setModelPropertyValue(SingleProperty.VALUE, value);
 		
 	}
 
 	@Override
 	public String getValue() {
-		return (String) getProxy().getModelPropertyValue(Property.VALUE);
+		return (String) getProxy().getModelPropertyValue(SingleProperty.VALUE);
 	}
 
 	@Override
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/factory/MetaModelElementFactory.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/factory/MetaModelElementFactory.java
index 1c34f14..b19ffeb 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/factory/MetaModelElementFactory.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/factory/MetaModelElementFactory.java
@@ -11,7 +11,8 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElementCollection;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.operation.Operation;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.operation.OperationVariable;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.ContainerProperty;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 

 /**

  * Creates meta model entities <br />

@@ -56,8 +57,8 @@
 	 * @param container

 	 * @param object

 	 */

-	public SubmodelElementCollection createContainer(SubmodelElementCollection property, List<SubmodelElement> properties, List<SubmodelElement> operations) {

-		SubmodelElementCollection ret = new SubmodelElementCollection();

+	public ContainerProperty createContainer(SubmodelElementCollection property, List<SubmodelElement> properties, List<SubmodelElement> operations) {

+		ContainerProperty ret = new ContainerProperty();

 		ret.putAll(property);

 

 		properties.stream().forEach(x -> ret.addSubModelElement(x));

@@ -72,8 +73,8 @@
 	 * @param container

 	 * @param object

 	 */

-	public SubmodelElementCollection createContainer(SubmodelElementCollection property, List<SubmodelElement> properties, List<SubmodelElement> operations, String id) {

-		SubmodelElementCollection ret = new SubmodelElementCollection();

+	public ContainerProperty createContainer(SubmodelElementCollection property, List<SubmodelElement> properties, List<SubmodelElement> operations, String id) {

+		ContainerProperty ret = new ContainerProperty();

 		ret.putAll(property);

 		ret.setId(id);

 

@@ -91,7 +92,7 @@
 	 * @param operations

 	 * @return

 	 */

-	public SubModel create(SubModel subModel, List<Property> properties, List<Operation> operations) {

+	public SubModel create(SubModel subModel, List<SingleProperty> properties, List<Operation> operations) {

 		SubModel ret = new SubModel();

 		ret.putAll(subModel);

 		properties.stream().forEach(e -> ret.addSubModelElement(e));

diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/ReferenceElement.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/ReferenceElement.java
index bd805b0..258b7f5 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/ReferenceElement.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/ReferenceElement.java
@@ -3,7 +3,7 @@
 import org.eclipse.basyx.aas.api.metamodel.aas.reference.IReference;

 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.IReferenceElement;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.reference.Reference;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 

 /**

  * A ReferenceElement as defined in DAAS document <br/>

@@ -22,7 +22,7 @@
 	 * Constructor

 	 */

 	public ReferenceElement() {

-		put(Property.VALUE, null);

+		put(SingleProperty.VALUE, null);

 	}

 

 	/**

@@ -31,18 +31,18 @@
 	 *            AAS or a reference to an external object or entity

 	 */

 	public ReferenceElement(Reference ref) {

-		put(Property.VALUE, ref);

+		put(SingleProperty.VALUE, ref);

 	}

 

 	@Override

 	public void setValue(IReference ref) {

-		put(Property.VALUE, ref);

+		put(SingleProperty.VALUE, ref);

 		

 	}

 

 	@Override

 	public IReference getValue() {

-		return (IReference) get(Property.VALUE);

+		return (IReference) get(SingleProperty.VALUE);

 	}

 

 }

diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/SubmodelElementCollection.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/SubmodelElementCollection.java
index 00e6176..5bf7e9f 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/SubmodelElementCollection.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/SubmodelElementCollection.java
@@ -4,26 +4,19 @@
 import java.util.Collection;

 import java.util.HashMap;

 import java.util.HashSet;

-import java.util.Map;

 import java.util.Set;

 

 import org.eclipse.basyx.aas.api.metamodel.aas.qualifier.qualifiable.IConstraint;

 import org.eclipse.basyx.aas.api.metamodel.aas.reference.IReference;

-import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.IDataElement;

 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.ISubmodelElement;

 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.ISubmodelElementCollection;

-import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.operation.IOperation;

-import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.IContainerProperty;

-import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.PropertyType;

 import org.eclipse.basyx.aas.impl.metamodel.facades.HasDataSpecificationFacade;

 import org.eclipse.basyx.aas.impl.metamodel.facades.HasKindFacade;

 import org.eclipse.basyx.aas.impl.metamodel.facades.HasSemanticsFacade;

 import org.eclipse.basyx.aas.impl.metamodel.facades.QualifiableFacade;

 import org.eclipse.basyx.aas.impl.metamodel.facades.ReferableFacade;

-import org.eclipse.basyx.aas.impl.metamodel.facades.VABElementContainerFacade;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.IVABElementContainer;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 

 /**

  * SubmodelElementCollection as defined by DAAS document <br/>

@@ -32,29 +25,21 @@
  * @author schnicke

  *

  */

-public class SubmodelElementCollection extends SubmodelElement implements IContainerProperty, IVABElementContainer, ISubmodelElementCollection {

+public class SubmodelElementCollection extends SubmodelElement implements ISubmodelElementCollection {

 	private static final long serialVersionUID = 1L;

 

 	public static final String ORDERED = "ordered";

 	public static final String ALLOWDUPLICATES = "allowDuplicates";

 

-	private VABElementContainerFacade containerFacade;

 

 	/**

 	 * Constructor

 	 */

 	public SubmodelElementCollection() {

 		// Put attributes

-		put(Property.VALUE, new ArrayList<>());

+		put(SingleProperty.VALUE, new ArrayList<>());

 		put(ORDERED, true);

 		put(ALLOWDUPLICATES, true);

-

-		put(SubModel.SUBMODELELEMENT, new HashMap<>());

-

-		// Helper for operations and properties

-		put(SubModel.PROPERTIES, new HashMap<>());

-		put(SubModel.OPERATIONS, new HashMap<>());

-		containerFacade = new VABElementContainerFacade(this);

 	}

 

 	/**

@@ -71,24 +56,9 @@
 	 */

 	public SubmodelElementCollection(Collection<SubmodelElement> value, boolean ordered, boolean allowDuplicates) {

 		// Put attributes

-		put(Property.VALUE, value);

+		put(SingleProperty.VALUE, value);

 		put(ORDERED, ordered);

 		put(ALLOWDUPLICATES, allowDuplicates);

-

-		put(SubModel.SUBMODELELEMENT, new HashMap<>());

-

-		// Helper for operations and properties

-		put(SubModel.PROPERTIES, new HashMap<>());

-		put(SubModel.OPERATIONS, new HashMap<>());

-

-		for (SubmodelElement elem : value) {

-			containerFacade.addSubModelElement(elem);

-		}

-	}

-

-	@Override

-	public PropertyType getPropertyType() {

-		return PropertyType.Container;

 	}

 

 	@Override

@@ -181,13 +151,13 @@
 

 	@Override

 	public void setValue(ArrayList<?> value) {

-		put(Property.VALUE, value);

+		put(SingleProperty.VALUE, value);

 

 	}

 

 	@Override

 	public ArrayList<?> getValue() {

-		return (ArrayList<?>) get(Property.VALUE);

+		return (ArrayList<?>) get(SingleProperty.VALUE);

 	}

 

 	@Override

@@ -222,29 +192,4 @@
 	public HashMap<String, ISubmodelElement> getElements() {

 		return (HashMap<String, ISubmodelElement>) get(SubModel.SUBMODELELEMENT);

 	}

-

-	@Override

-	public void setValueId(String obj) {

-		put(Property.VALUEID, obj);

-	}

-

-	@Override

-	public String getValueId() {

-		return (String) get(Property.VALUEID);

-	}

-

-	@Override

-	public void addSubModelElement(ISubmodelElement element) {

-		containerFacade.addSubModelElement(element);

-	}

-

-	@Override

-	public Map<String, IDataElement> getDataElements() {

-		return containerFacade.getDataElements();

-	}

-

-	@Override

-	public Map<String, IOperation> getOperations() {

-		return containerFacade.getOperations();

-	}

 }

diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/operation/OperationVariable.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/operation/OperationVariable.java
index c4753f6..211060b 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/operation/OperationVariable.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/operation/OperationVariable.java
@@ -13,7 +13,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.facades.QualifiableFacade;

 import org.eclipse.basyx.aas.impl.metamodel.facades.ReferableFacade;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElement;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 

 /**

  * OperationVariable as described by DAAS document An operation variable is a

@@ -32,7 +32,7 @@
 	 *            element of kind=Type

 	 */

 	public OperationVariable(SubmodelElement value) {

-		put(Property.VALUE, value);

+		put(SingleProperty.VALUE, value);

 	}

 

 	public OperationVariable() {

@@ -40,12 +40,12 @@
 	}

 

 	public void setValue(ISubmodelElement value) {

-		put(Property.VALUE, value);

+		put(SingleProperty.VALUE, value);

 	}

 

 	@Override

 	public ISubmodelElement getValue() {

-		return (ISubmodelElement) get(Property.VALUE);

+		return (ISubmodelElement) get(SingleProperty.VALUE);

 	}

 

 	@Override

diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/AbstractProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/AbstractProperty.java
new file mode 100644
index 0000000..0665501
--- /dev/null
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/AbstractProperty.java
@@ -0,0 +1,35 @@
+package org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property;
+
+import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.IProperty;
+import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.PropertyType;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.DataElement;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDef;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDefHelper;
+
+public abstract class AbstractProperty extends DataElement implements IProperty {
+	private static final long serialVersionUID = 1724792579215822224L;
+
+	@Override
+	public PropertyType getPropertyType() {
+		PropertyValueTypeDef type = PropertyValueTypeDefHelper.fromName((String) get(SingleProperty.VALUETYPE));
+		if (type == PropertyValueTypeDef.Collection) {
+			return PropertyType.Collection;
+		} else if (type == PropertyValueTypeDef.Map) {
+			return PropertyType.Map;
+		} else {
+			return PropertyType.Single;
+		}
+	}
+
+	@Override
+	public void setValueId(String obj) {
+		put(SingleProperty.VALUEID, obj);
+
+	}
+
+	@Override
+	public String getValueId() {
+		return (String) get(SingleProperty.VALUEID);
+	}
+
+}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/ContainerProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/ContainerProperty.java
new file mode 100644
index 0000000..d966b2c
--- /dev/null
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/ContainerProperty.java
@@ -0,0 +1,50 @@
+package org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.IDataElement;
+import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.ISubmodelElement;
+import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.operation.IOperation;
+import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.IContainerProperty;
+import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.PropertyType;
+import org.eclipse.basyx.aas.impl.metamodel.facades.VABElementContainerFacade;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.IVABElementContainer;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;
+
+public class ContainerProperty extends AbstractProperty implements IContainerProperty, IVABElementContainer {
+	private static final long serialVersionUID = -8066834863070042378L;
+
+	private VABElementContainerFacade containerFacade;
+
+	
+	public ContainerProperty() {
+		containerFacade = new VABElementContainerFacade(this);
+
+		put(SubModel.SUBMODELELEMENT, new HashMap<>());
+
+		// Helper for operations and properties
+		put(SubModel.PROPERTIES, new HashMap<>());
+		put(SubModel.OPERATIONS, new HashMap<>());
+	}
+
+	@Override
+	public PropertyType getPropertyType() {
+		return PropertyType.Container;
+	}
+
+	@Override
+	public void addSubModelElement(ISubmodelElement element) {
+		containerFacade.addSubModelElement(element);
+	}
+
+	@Override
+	public Map<String, IDataElement> getDataElements() {
+		return containerFacade.getDataElements();
+	}
+
+	@Override
+	public Map<String, IOperation> getOperations() {
+		return containerFacade.getOperations();
+	}
+}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/Event.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/Event.java
index 002e69a..f6d869e 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/Event.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/Event.java
@@ -6,7 +6,7 @@
  * @author pschorn

  *

  */

-public class Event extends Property {

+public class Event extends SingleProperty {

 

 	/**

 	 * 

diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/Property.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/Property.java
deleted file mode 100644
index f46e704..0000000
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/Property.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property;
-
-import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.ISingleProperty;
-import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.PropertyType;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.HasSemantics;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.Referable;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.qualifiable.Qualifier;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.DataElement;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDef;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDefHelper;
-
-/**
- * Property class
- * 
- * @author kuhn, schnicke
- *
- */
-public class Property extends DataElement implements ISingleProperty {
-
-	/**
-	 * Version of serialized instances
-	 */
-	private static final long serialVersionUID = 1L;
-	public static final String VALUE = "value";
-	public static final String VALUEID = "valueId";
-	public static final String VALUETYPE = "valueType";
-
-	/**
-	 * Constructor
-	 */
-	public Property() {
-		// Put attributes
-		put(Property.VALUE, null);
-		put(Property.VALUEID, null);
-	}
-
-	/**
-	 * Constructor that creates a property with data
-	 * 
-	 * @param value
-	 *            the value of the property instance <b>!! Is defined in standard as
-	 *            String, but does not make sense in this context !!</b>
-	 * @param valueType
-	 *            type of the value TODO: Macht String sinn?
-	 */
-	public Property(Object value) {
-		// Put attributes
-		put(Property.VALUEID, null);
-		set(value);
-	}
-
-	public Property(Object value, Referable referable, String semanticId, Qualifier qualifier) {
-		this(value);
-		putAll(referable);
-		put(HasSemantics.SEMANTICID, value);
-		putAll(qualifier);
-	}
-
-	@Override
-	public void set(Object value) {
-		put(Property.VALUE, value);
-		put(Property.VALUETYPE, PropertyValueTypeDefHelper.fromObject(value));
-
-	}
-
-	@Override
-	public PropertyType getPropertyType() {
-		PropertyValueTypeDef type = PropertyValueTypeDefHelper.fromName((String) get(Property.VALUETYPE));
-		if (type == PropertyValueTypeDef.Collection) {
-			return PropertyType.Collection;
-		} else if (type == PropertyValueTypeDef.Map) {
-			return PropertyType.Map;
-		} else {
-			return PropertyType.Single;
-		}
-	}
-
-	@Override
-	public String getId() {
-		return (String) get(Referable.IDSHORT);
-	}
-
-	@Override
-	public void setId(String id) {
-		put(Referable.IDSHORT, id);
-	}
-
-	@Override
-	public Object get() {
-		return get(Property.VALUE);
-	}
-
-	@Override
-	public void setValueId(String obj) {
-		put(Property.VALUEID, obj);
-
-	}
-
-	@Override
-	public String getValueId() {
-		return (String) get(Property.VALUEID);
-	}
-
-}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/SingleProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/SingleProperty.java
new file mode 100644
index 0000000..b3653c1
--- /dev/null
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/SingleProperty.java
@@ -0,0 +1,77 @@
+package org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property;
+
+import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.ISingleProperty;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.HasSemantics;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.Referable;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.qualifiable.Qualifier;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDefHelper;
+
+/**
+ * Property class
+ * 
+ * @author kuhn, schnicke
+ *
+ */
+public class SingleProperty extends AbstractProperty implements ISingleProperty {
+
+	/**
+	 * Version of serialized instances
+	 */
+	private static final long serialVersionUID = 1L;
+	public static final String VALUE = "value";
+	public static final String VALUEID = "valueId";
+	public static final String VALUETYPE = "valueType";
+
+	/**
+	 * Constructor
+	 */
+	public SingleProperty() {
+		// Put attributes
+		put(SingleProperty.VALUE, null);
+		put(SingleProperty.VALUEID, null);
+	}
+
+	/**
+	 * Constructor that creates a property with data
+	 * 
+	 * @param value
+	 *            the value of the property instance <b>!! Is defined in standard as
+	 *            String, but does not make sense in this context !!</b>
+	 * @param valueType
+	 *            type of the value TODO: Macht String sinn?
+	 */
+	public SingleProperty(Object value) {
+		// Put attributes
+		put(SingleProperty.VALUEID, null);
+		set(value);
+	}
+
+	public SingleProperty(Object value, Referable referable, String semanticId, Qualifier qualifier) {
+		this(value);
+		putAll(referable);
+		put(HasSemantics.SEMANTICID, value);
+		putAll(qualifier);
+	}
+
+	@Override
+	public void set(Object value) {
+		put(SingleProperty.VALUE, value);
+		put(SingleProperty.VALUETYPE, PropertyValueTypeDefHelper.fromObject(value));
+
+	}
+
+	@Override
+	public String getId() {
+		return (String) get(Referable.IDSHORT);
+	}
+
+	@Override
+	public void setId(String id) {
+		put(Referable.IDSHORT, id);
+	}
+
+	@Override
+	public Object get() {
+		return get(SingleProperty.VALUE);
+	}
+}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/blob/Blob.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/blob/Blob.java
index 2c4d4a6..745e761 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/blob/Blob.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/blob/Blob.java
@@ -2,7 +2,7 @@
 
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.blob.IBlob;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.DataElement;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 
 /**
  * A blob element as defined in DAAS document <br/>
@@ -27,19 +27,19 @@
 	public Blob(byte[] value, String mimeType) {
 		super();
 
-		put(Property.VALUE, value);
+		put(SingleProperty.VALUE, value);
 		put(MIMETYPE, mimeType);
 	}
 
 	@Override
 	public void setValue(byte[] value) {
-		put(Property.VALUE, value);
+		put(SingleProperty.VALUE, value);
 		
 	}
 
 	@Override
 	public byte[] getValue() {
-		return (byte[]) get(Property.VALUE);
+		return (byte[]) get(SingleProperty.VALUE);
 	}
 
 	@Override
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/file/File.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/file/File.java
index 0b1220b..acc823f 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/file/File.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/aas/impl/metamodel/hashmap/aas/submodelelement/property/file/File.java
@@ -2,7 +2,7 @@
 
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.file.IFile;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.DataElement;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.blob.Blob;
 
 /**
@@ -34,20 +34,20 @@
 		super();
 
 		// Save value
-		put(Property.VALUE, value);
+		put(SingleProperty.VALUE, value);
 		put(MIMETYPE, mimeType);
 	}
 
 
 	@Override
 	public void setValue(String value) {
-		put(Property.VALUE, value);
+		put(SingleProperty.VALUE, value);
 		
 	}
 
 	@Override
 	public String getValue() {
-		return (String) get(Property.VALUE);
+		return (String) get(SingleProperty.VALUE);
 	}
 
 	@Override
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/provider/xml/transformers/TransformProperty.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/provider/xml/transformers/TransformProperty.java
index fbf6870..a5985c7 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/provider/xml/transformers/TransformProperty.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/provider/xml/transformers/TransformProperty.java
@@ -6,7 +6,7 @@
 import java.util.Map;
 
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.HasSemantics;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 
 /**
  * Returns HashSet<Property> Object for the Map with <aas:submodelElements>
@@ -21,8 +21,8 @@
 	 * HashSet of property class
 	 */
 	@SuppressWarnings("unchecked")
-	public static HashSet<Property> transformProperty(Map<String, Object> object) {
-		HashSet<Property> propertySet = new HashSet<Property>();
+	public static HashSet<SingleProperty> transformProperty(Map<String, Object> object) {
+		HashSet<SingleProperty> propertySet = new HashSet<SingleProperty>();
 		Map<String, Object> submodelElementsObj = (Map<String, Object>) object.get("aas:submodelElements");
 		Object submodelElementObj = submodelElementsObj.get("aas:submodelElement");
 		// We need to check if submodelElementObj is instance of MAP object or
@@ -43,7 +43,7 @@
 	 * The function accepts each SubmodelementObject and populates the propertyset
 	 */
 	@SuppressWarnings("unchecked")
-	private static void handlesubModelelementObject(HashSet<Property> propertySet, Object object2) {
+	private static void handlesubModelelementObject(HashSet<SingleProperty> propertySet, Object object2) {
 		Map<String, Object> subModelElemObj = (Map<String, Object>) object2;
 		Object propertObj = subModelElemObj.get("aas:property");
 		// We need to check if propertObj is instance of MAP object or Collection and
@@ -63,14 +63,14 @@
 	 * The function accepts each property Map object and populates the propertyset
 	 */
 	@SuppressWarnings("unchecked")
-	private static void populatePropertySet(HashSet<Property> propertySet, Object object3) {
+	private static void populatePropertySet(HashSet<SingleProperty> propertySet, Object object3) {
 		Map<String, Object> PropertyObj = (Map<String, Object>) object3;
 		// read corresponding tags and populate the Property object
 		String idShort = (String) PropertyObj.get("aas:idShort");
 		String category = (String) PropertyObj.get("aas:category");
 		HasSemantics transformHasSemanticsObj = TransformHasSemantics.transformHasSemantics(PropertyObj);
 		String value = (String) PropertyObj.get("aas:value");
-		Property prop = new Property();
+		SingleProperty prop = new SingleProperty();
 		prop.put("semanticId", transformHasSemanticsObj);
 		prop.setIdshort(idShort);
 		prop.setCategory(category);
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/provider/xml/transformers/TransformSubmodel.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/provider/xml/transformers/TransformSubmodel.java
index 5a47426..ea065f5 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/provider/xml/transformers/TransformSubmodel.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/vab/provider/xml/transformers/TransformSubmodel.java
@@ -7,7 +7,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.HasSemantics;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.Identifiable;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.qualifier.haskind.HasKind;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 
 /**
  * Returns SubModel Object for the Map with <aas:submodels>
@@ -26,12 +26,12 @@
 		Identifiable transformIdentifier = TransformIdentifiable.transformIdentifier(object);
 		HasKind hasKindObj = TransformHasKind.transformHasKind(object);
 		HasSemantics transformHasSemanticsObj = TransformHasSemantics.transformHasSemantics(object);
-		HashSet<Property> transformPropertySet = TransformProperty.transformProperty(object);
+		HashSet<SingleProperty> transformPropertySet = TransformProperty.transformProperty(object);
 		SubModel submodelobj = new SubModel();
 		submodelobj.putAll(transformIdentifier);
 		submodelobj.putAll(hasKindObj);
 		submodelobj.putAll(transformHasSemanticsObj);
-		for (Property property : transformPropertySet) {
+		for (SingleProperty property : transformPropertySet) {
 			submodelobj.addSubModelElement(property);
 		}
 		System.out.println();
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedAssetAdministrationShell.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedAssetAdministrationShell.java
index 3eeeb12..f500686 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedAssetAdministrationShell.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedAssetAdministrationShell.java
@@ -22,7 +22,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.descriptor.AASDescriptor;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.descriptor.SubmodelDescriptor;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.identifier.IdentifierType;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.testsuite.support.vab.TypeDestroyer;

 import org.eclipse.basyx.testsuite.support.vab.stub.AASRegistryStub;

 import org.eclipse.basyx.testsuite.support.vab.stub.ConnectorProviderStub;

@@ -51,7 +51,7 @@
 		MetaModelElementFactory factory = new MetaModelElementFactory();

 

 		// Create a SubModel containing no operations and one property

-		Property p = new Property(propVal);

+		SingleProperty p = new SingleProperty(propVal);

 		p.setId(propId);

 

 		SubModel sm = factory.create(new SubModel(), Collections.singletonList(p), new ArrayList<>());

diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedAssetAdministrationShellManager.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedAssetAdministrationShellManager.java
index 7bda6c1..d3de3bb 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedAssetAdministrationShellManager.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedAssetAdministrationShellManager.java
@@ -15,7 +15,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.descriptor.AASDescriptor;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.descriptor.SubmodelDescriptor;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.identifier.IdentifierType;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.testsuite.support.vab.stub.AASRegistryStub;
 import org.eclipse.basyx.testsuite.support.vab.stub.ConnectorProviderStub;
 import org.eclipse.basyx.vab.provider.hashmap.VABHashmapProvider;
@@ -89,11 +89,11 @@
 
 		// - Add example properties to sub model
 		submodel.setId(smId);
-		Property prop1 = new Property(7);
+		SingleProperty prop1 = new SingleProperty(7);
 		prop1.setId("prop1");
 		submodel.addSubModelElement(prop1);
 
-		Property prop2 = new Property("myStr");
+		SingleProperty prop2 = new SingleProperty("myStr");
 		prop1.setId("prop2");
 		submodel.addSubModelElement(prop2);
 
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedSubModel.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedSubModel.java
index e1bf2f8..48317cc 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedSubModel.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/TestConnectedSubModel.java
@@ -15,7 +15,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.factory.MetaModelElementFactory;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.operation.Operation;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.testsuite.support.backend.common.stubs.java.directory.TestsuiteDirectory_BaSyxNative;
 import org.eclipse.basyx.testsuite.support.backend.servers.AASTCPServerResource;
 import org.eclipse.basyx.vab.backend.connector.basyx.BaSyxConnectorProvider;
@@ -48,7 +48,7 @@
 		MetaModelElementFactory factory = new MetaModelElementFactory();
 
 		// Create a simple value property
-		Property propertyMeta = new Property(100);
+		SingleProperty propertyMeta = new SingleProperty(100);
 		propertyMeta.setId(PROP);
 
 		// Create an operation
@@ -120,7 +120,7 @@
 	public void saveAndLoadPropertyTest() throws Exception {
 		
 		// Construct test data
-		Property property = new Property();
+		SingleProperty property = new SingleProperty();
 		property.setId("test1");
 		property.set("test2");
 		
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedCollectionProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedCollectionProperty.java
index 243ba06..ca7ef14 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedCollectionProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedCollectionProperty.java
@@ -13,7 +13,7 @@
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.ICollectionProperty;

 import org.eclipse.basyx.aas.backend.connected.aas.submodelelement.property.ConnectedCollectionProperty;

 import org.eclipse.basyx.aas.backend.provider.VirtualPathModelProvider;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.testsuite.support.vab.TypeDestroyer;

 import org.eclipse.basyx.testsuite.support.vab.stub.VABConnectionManagerStub;

 import org.eclipse.basyx.vab.core.VABConnectionManager;

@@ -38,7 +38,7 @@
 		collection.add(2);

 

 		// Create PropertySingleValued containing the collection

-		Property propertySingleValued = new Property(collection);

+		SingleProperty propertySingleValued = new SingleProperty(collection);

 

 		// Create dummy connection manager containing the

 		// created PropertySingleValued map

diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedContainerProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedContainerProperty.java
index ec7ae02..f2a73b2 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedContainerProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedContainerProperty.java
@@ -16,7 +16,8 @@
 import org.eclipse.basyx.aas.impl.metamodel.factory.MetaModelElementFactory;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.SubmodelElementCollection;
 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.operation.Operation;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.ContainerProperty;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.testsuite.support.vab.TypeDestroyer;
 import org.eclipse.basyx.testsuite.support.vab.stub.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.core.VABConnectionManager;
@@ -47,7 +48,7 @@
 		collection.add(2);
 
 		// Create PropertySingleValued containing the collection
-		Property propertyMeta = new Property(collection);
+		SingleProperty propertyMeta = new SingleProperty(collection);
 		propertyMeta.setId(COLLECTIONPROP);
 
 		// Create operation
@@ -57,7 +58,7 @@
 		operation.setId(OPERATION);
 
 		// Create ComplexDataProperty containing the created operation and property
-		SubmodelElementCollection complex = factory.createContainer(new SubmodelElementCollection(),
+		ContainerProperty complex = factory.createContainer(new SubmodelElementCollection(),
 				Collections.singletonList(propertyMeta), Collections.singletonList(operation));
 
 		Map<String, Object> destroyType = TypeDestroyer.destroyType(complex);
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedMapProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedMapProperty.java
index 93518ee..b8a1321 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedMapProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedMapProperty.java
@@ -12,7 +12,7 @@
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.IMapProperty;
 import org.eclipse.basyx.aas.backend.connected.aas.submodelelement.property.ConnectedMapProperty;
 import org.eclipse.basyx.aas.backend.provider.VirtualPathModelProvider;
-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;
+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;
 import org.eclipse.basyx.testsuite.support.vab.TypeDestroyer;
 import org.eclipse.basyx.testsuite.support.vab.stub.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.core.VABConnectionManager;
@@ -42,7 +42,7 @@
 		map.put(MAP_2_KEY, MAP_2_VAL);
 
 		// Create PropertySingleValued containing the map
-		Property propertyMeta = new Property(map);
+		SingleProperty propertyMeta = new SingleProperty(map);
 		Map<String, Object> destroyType = TypeDestroyer.destroyType(propertyMeta);
 		// Create dummy connection manager containing the
 		// created PropertySingleValued map
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedSingleProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedSingleProperty.java
index 22dade9..c4d9dd1 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedSingleProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/connected/property/TestConnectedSingleProperty.java
@@ -7,7 +7,7 @@
 import org.eclipse.basyx.aas.api.metamodel.aas.submodelelement.property.ISingleProperty;

 import org.eclipse.basyx.aas.backend.connected.aas.submodelelement.property.ConnectedSingleProperty;

 import org.eclipse.basyx.aas.backend.provider.VirtualPathModelProvider;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.testsuite.support.vab.TypeDestroyer;

 import org.eclipse.basyx.testsuite.support.vab.stub.VABConnectionManagerStub;

 import org.junit.Before;

@@ -27,7 +27,7 @@
 	@Before

 	public void build() {

 		// Create PropertySingleValued containing the simple value

-		Property propertyMeta = new Property(VALUE);

+		SingleProperty propertyMeta = new SingleProperty(VALUE);

 		Map<String, Object> destroyType = TypeDestroyer.destroyType(propertyMeta);

 		prop = new ConnectedSingleProperty(new VABConnectionManagerStub(new VirtualPathModelProvider(destroyType)).connectToVABElement(""));

 	}

diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/provider/VirtualPathModelProviderTest.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/provider/VirtualPathModelProviderTest.java
index d4712f4..1538045 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/provider/VirtualPathModelProviderTest.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/backend/provider/VirtualPathModelProviderTest.java
@@ -7,7 +7,7 @@
 import java.util.HashMap;

 

 import org.eclipse.basyx.aas.backend.provider.VirtualPathModelProvider;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.valuetypedef.PropertyValueTypeDefHelper;

 import org.eclipse.basyx.testsuite.regression.vab.provider.TestProvider;

 import org.eclipse.basyx.testsuite.support.aas.vab.stub.elements.SimpleAASSubmodel;

@@ -47,7 +47,7 @@
 		VABElementProxy submodelElement = getConnectionManager().connectToVABElement(submodelAddr);

 

 		// Create element

-		Property prop = new Property(500);

+		SingleProperty prop = new SingleProperty(500);

 		submodelElement.createValue("dataElements/newProperty", prop);

 

 		// Read back value

diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/support/aas/vab/stub/elements/SimpleAASSubmodel.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/support/aas/vab/stub/elements/SimpleAASSubmodel.java
index d8224d4..4f6e71c 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/support/aas/vab/stub/elements/SimpleAASSubmodel.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/support/aas/vab/stub/elements/SimpleAASSubmodel.java
@@ -6,7 +6,7 @@
 import org.eclipse.basyx.aas.impl.metamodel.factory.MetaModelElementFactory;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.SubModel;

 import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.operation.Operation;

-import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.Property;

+import org.eclipse.basyx.aas.impl.metamodel.hashmap.aas.submodelelement.property.SingleProperty;

 

 /**

  * A simple VAB submodel element that explains the development of conforming

@@ -34,11 +34,11 @@
 		// Create example properties

 		MetaModelElementFactory fac = new MetaModelElementFactory();

 

-		Property intProp = new Property(123);

+		SingleProperty intProp = new SingleProperty(123);

 		intProp.setId("integerProperty");

 		addSubModelElement(intProp);

 

-		Property stringProp = new Property("Test");

+		SingleProperty stringProp = new SingleProperty("Test");

 		stringProp.setId("stringProperty");

 		addSubModelElement(stringProp);