Replaces dataElements API call with properties API call

* official AAS API does not support dataElements call any more.
  Instead, properties call is used

Change-Id: Ib60b9c26778e605a8ad28b6af7ff8b479ed4a2ab
Signed-off-by: Frank Schnicke <frank.schnicke@iese.fraunhofer.de>
diff --git a/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/cfgprovider/samplecfg.properties b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/cfgprovider/samplecfg.properties
index 6506d40..4385ba3 100644
--- a/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/cfgprovider/samplecfg.properties
+++ b/components/basys.components/basyx.components.lib/WebContent/WEB-INF/config/cfgprovider/samplecfg.properties
@@ -53,7 +53,7 @@
 
 
 # List of exported properties
-dataElements                     = cfgProperty1,cfgProperty2,cfgProperty3
+properties                     = cfgProperty1,cfgProperty2,cfgProperty3
 
 
 # Export property "cfgProperty1" and its meta data
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java
index ae85f60..3b86230 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/provider/BaseConfiguredProvider.java
@@ -95,7 +95,7 @@
 	 */
 	protected Collection<String> getConfiguredProperties(Map<Object, Object> cfgValues) {
 		// Split property string
-		return splitString((String) cfgValues.get(SubmodelElementProvider.DATAELEMENTS));
+		return splitString((String) cfgValues.get(SubmodelElementProvider.PROPERTIES));
 	}
 
 	/**
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLPreconfiguredSubModelProvider.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLPreconfiguredSubModelProvider.java
index b8ed84a..f708bac 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLPreconfiguredSubModelProvider.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLPreconfiguredSubModelProvider.java
@@ -254,7 +254,7 @@
 		
 		logger.debug("Putting SQL:"+name);
 		// Add property as map of lambdas
-		submodelData.getDataElements().put(name, createSubmodelElement(name, value, cfgValues));
+		submodelData.getProperties().put(name, createSubmodelElement(name, value, cfgValues));
 	}
 
 	
diff --git a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLSubModelProvider.java b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLSubModelProvider.java
index def3b8d..7b3c5aa 100644
--- a/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLSubModelProvider.java
+++ b/components/basys.components/basyx.components.lib/src/main/java/org/eclipse/basyx/components/sqlprovider/SQLSubModelProvider.java
@@ -253,7 +253,7 @@
 		
 		logger.debug("Putting SQL:"+name);
 		// Add property as map of lambdas
-		submodelData.getDataElements().put(name, createSubmodelElement(name, value, cfgValues));
+		submodelData.getProperties().put(name, createSubmodelElement(name, value, cfgValues));
 	}
 
 	
diff --git a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProvider.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProvider.java
index 089df30..655af40 100644
--- a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProvider.java
+++ b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProvider.java
@@ -7,6 +7,7 @@
 import org.eclipse.basyx.regression.support.directory.ComponentsTestsuiteDirectory;
 import org.eclipse.basyx.regression.support.server.context.ComponentsRegressionContext;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.testsuite.regression.vab.protocol.http.AASHTTPServerResource;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
@@ -49,19 +50,19 @@
 		
 		// Get property value
 		Map<String, Object> value1 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/sampleCFG/dataElements/cfgProperty1/value");
+				.getModelPropertyValue("/aas/submodels/sampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty1/value");
 
 		assertEquals("exampleStringValue", value1.get(Property.VALUE));
 
 		
 		// Get property value
 		Map<String, Object> value2 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/sampleCFG/dataElements/cfgProperty2/value");
+				.getModelPropertyValue("/aas/submodels/sampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty2/value");
 		assertEquals("12", value2.get(Property.VALUE));
 
 		// Get property value
 		Map<String, Object> value3 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/sampleCFG/dataElements/cfgProperty3/value");
+				.getModelPropertyValue("/aas/submodels/sampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty3/value");
 		assertEquals("45.8", value3.get(Property.VALUE));
 	}
 }
diff --git a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderPropertyMetaData.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderPropertyMetaData.java
index db6a3ac..4af91ac 100644
--- a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderPropertyMetaData.java
+++ b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/cfgprovider/TestCFGProviderPropertyMetaData.java
@@ -9,6 +9,7 @@
 import org.eclipse.basyx.regression.support.server.context.ComponentsRegressionContext;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.LangStrings;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.testsuite.regression.vab.protocol.http.AASHTTPServerResource;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
@@ -48,27 +49,27 @@
 
 		// Get property value
 		Map<String, Object> value1 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/sampleCFG/dataElements/cfgProperty1");
+				.getModelPropertyValue("/aas/submodels/sampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty1");
 		assertEquals("exampleStringValue", value1.get(Property.VALUE));
 		// - Check property meta data (description)
 		Map<String, Object> value1a = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/sampleCFG/dataElements/cfgProperty1");
+				.getModelPropertyValue("/aas/submodels/sampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty1");
 		LangStrings description = LangStrings.createAsFacade((Collection<Map<String, Object>>) value1a.get("description"));
 		assertEquals("Configuration property description", description.get(""));
 
 		// Get property value
 		Map<String, Object> value2 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/sampleCFG/dataElements/cfgProperty2");
+				.getModelPropertyValue("/aas/submodels/sampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty2");
 		assertEquals("12", value2.get(Property.VALUE));
 		// - Check property meta data (description)
 		Map<String, Object> value2a = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/sampleCFG/dataElements/cfgProperty2");
+				.getModelPropertyValue("/aas/submodels/sampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty2");
 		description = LangStrings.createAsFacade((Collection<Map<String, Object>>) value2a.get("description"));
 		assertEquals("Configuration property description on multiple lines", description.get(""));
 
 		// Get property value
 		Map<String, Object> value3 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/sampleCFG/dataElements/cfgProperty3");
+				.getModelPropertyValue("/aas/submodels/sampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty3");
 		assertEquals("45.8", value3.get(Property.VALUE));
 	}
 }
diff --git a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAASNewModel.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAASNewModel.java
index d663a7b..8f9efc0 100644
--- a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAASNewModel.java
+++ b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderAASNewModel.java
@@ -7,6 +7,7 @@
 import org.eclipse.basyx.regression.support.directory.ComponentsTestsuiteDirectory;
 import org.eclipse.basyx.regression.support.server.context.ComponentsRegressionContext;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.testsuite.regression.vab.protocol.http.AASHTTPServerResource;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
@@ -51,11 +52,11 @@
 		Property prop = new Property ();
 		prop.setIdShort("prop");
 		// Create AAS structure on server
-		connSubModel.createValue("/aas/submodels/rawSampleCFG/dataElements", prop);
+		connSubModel.createValue("/aas/submodels/rawSampleCFG/" + SubmodelElementProvider.PROPERTIES, prop);
 
 		
 		// Read complex property completely
-		Map<String, Object> aasReadBack = (Map<String, Object>) connSubModel.getModelPropertyValue("/aas/submodels/rawSampleCFG/dataElements/prop");
+		Map<String, Object> aasReadBack = (Map<String, Object>) connSubModel.getModelPropertyValue("/aas/submodels/rawSampleCFG/" + SubmodelElementProvider.PROPERTIES + "/prop");
 		assertEquals(prop.getIdShort(), Property.createAsFacade(prop).getIdShort());
 	}
 }
diff --git a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderSimpleValues.java b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderSimpleValues.java
index e8598ff..ef95857 100644
--- a/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderSimpleValues.java
+++ b/components/basys.components/basyx.components.lib/src/test/java/org/eclipse/basyx/regression/rawcfgprovider/TestRawCFGProviderSimpleValues.java
@@ -9,6 +9,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.AdministrativeInformation;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.Identifiable;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.testsuite.regression.vab.protocol.http.AASHTTPServerResource;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
@@ -58,29 +59,29 @@
 				.getModelPropertyValue("/aas/submodels/rawSampleCFG/submodelElements/cfgProperty1/value");
 		assertEquals("exampleStringValueRaw", value1.get(Property.VALUE));
 		Map<String, Object> cfgProperty1 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/rawSampleCFG/dataElements/cfgProperty1");
+				.getModelPropertyValue("/aas/submodels/rawSampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty1");
 		assertEquals("Configuration property description", cfgProperty1.get("description"));
 
 		// Get property value
 		Map<String, Object> value2 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/rawSampleCFG/dataElements/cfgProperty2/value");
+				.getModelPropertyValue("/aas/submodels/rawSampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty2/value");
 		assertEquals(12, value2.get(Property.VALUE));
 		// - Check property meta data (description)
 		Map<String, Object> cfgProperty2 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/rawSampleCFG/dataElements/cfgProperty2");
+				.getModelPropertyValue("/aas/submodels/rawSampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty2");
 		assertEquals("Configuration property description on multiple lines", cfgProperty2.get("description"));
 
 		// Get property value
 		Map<String, Object> value3 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/rawSampleCFG/dataElements/cfgProperty3/value");
+				.getModelPropertyValue("/aas/submodels/rawSampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty3/value");
 		assertEquals("45.8", value3.get(Property.VALUE));
 
 		// Get property value
 		Map<String, Object> value4 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/rawSampleCFG/dataElements/cfgProperty4/value");
+				.getModelPropertyValue("/aas/submodels/rawSampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty4/value");
 		assertEquals("44.8", value4.get(Property.VALUE));
 		Map<String, Object> cfgProperty4 = (Map<String, Object>) connSubModel
-				.getModelPropertyValue("/aas/submodels/rawSampleCFG/dataElements/cfgProperty4");
+				.getModelPropertyValue("/aas/submodels/rawSampleCFG/" + SubmodelElementProvider.PROPERTIES + "/cfgProperty4");
 		assertEquals("Another configuration property description", cfgProperty4.get("description"));
 		assertEquals("8", cfgProperty4.get("newMetaData"));
 	}
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/application/ReceiveDeviceDashboardStatusApplication.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/application/ReceiveDeviceDashboardStatusApplication.java
index 4833476..303dc1c 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/application/ReceiveDeviceDashboardStatusApplication.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/application/ReceiveDeviceDashboardStatusApplication.java
@@ -69,7 +69,7 @@
 	public String getDeviceStatus() {
 		// Read the status property
 		Map<String, Object> property = (Map<String, Object>) aasServerConnection
-				.getModelPropertyValue(SubmodelElementProvider.DATAELEMENTS + "/status");
+				.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/status");
 		// Return the value of the property
 		return property.get("value").toString();
 	}
@@ -82,7 +82,7 @@
 	public int getDeviceInvocationCounter() {
 		// Read the invocation counter for device default service
 		Map<String, Object> property = (Map<String, Object>) aasServerConnection
-				.getModelPropertyValue(SubmodelElementProvider.DATAELEMENTS + "/invocations");
+				.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/invocations");
 		// Return the value of the property
 		return (int) property.get("value");
 	}
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/application/ReceiveDeviceMaintenanceApplication.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/application/ReceiveDeviceMaintenanceApplication.java
index 9364a00..e298ba6 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/application/ReceiveDeviceMaintenanceApplication.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/application/ReceiveDeviceMaintenanceApplication.java
@@ -73,7 +73,7 @@
 	public int getDevicePartSupplyStatus() {
 		// Read the status property
 		Map<String, Object> property = (Map<String, Object>) aasServerConnection
-				.getModelPropertyValue(SubmodelElementProvider.DATAELEMENTS + "/partAvailability");
+				.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/partAvailability");
 		// Return the value of the property
 		return Integer.parseInt(property.get("value").toString());
 	}
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/device/SmartBaSyxTCPDeviceMockup.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/device/SmartBaSyxTCPDeviceMockup.java
index 817ea15..0846b5c 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/device/SmartBaSyxTCPDeviceMockup.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/device/SmartBaSyxTCPDeviceMockup.java
@@ -84,9 +84,9 @@
 		// Implement the device invocation counter - read and increment invocation counter
 		Map<String, Object> property = (Map<String, Object>) aasServerConnection
 				.getModelPropertyValue(
-						"/aas/submodels/Status/" + SubmodelElementProvider.DATAELEMENTS + "/invocations");
+						"/aas/submodels/Status/" + SubmodelElementProvider.PROPERTIES + "/invocations");
 		int invocations = (int) property.get("value");
-		aasServerConnection.setModelPropertyValue("/aas/submodels/Status/dataElements/invocations/value", ++invocations);
+		aasServerConnection.setModelPropertyValue("/aas/submodels/Status/" + SubmodelElementProvider.PROPERTIES + "/invocations/value", ++invocations);
 	}
 
 	
@@ -99,7 +99,7 @@
 		super.onChangedExecutionState(newExecutionState);
 		
 		// Update property "properties/status" in external AAS
-		aasServerConnection.setModelPropertyValue("/aas/submodels/Status/dataElements/status/value",
+		aasServerConnection.setModelPropertyValue("/aas/submodels/Status/" + SubmodelElementProvider.PROPERTIES + "/status/value",
 				newExecutionState.getValue());
 	}
 
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/devicemanager/BaSyxTCPControlManufacturingDeviceManager.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/devicemanager/BaSyxTCPControlManufacturingDeviceManager.java
index 3ca2572..d7939bf 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/devicemanager/BaSyxTCPControlManufacturingDeviceManager.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/devicemanager/BaSyxTCPControlManufacturingDeviceManager.java
@@ -11,6 +11,7 @@
 import org.eclipse.basyx.models.controlcomponent.ControlComponentChangeListener;
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 import org.eclipse.basyx.vab.modelprovider.map.VABMapProvider;
@@ -175,15 +176,16 @@
 		
 		// Check what was being received. This check is performed based on a prefix that he device has to provide);
 		// - Update of device status
-		if (hasPrefix(rxStr, "status:")) aasServerConnection.setModelPropertyValue("/aas/submodels/Status/dataElements/status/value", removePrefix(rxStr, "status"));
+		if (hasPrefix(rxStr, "status:"))
+			aasServerConnection.setModelPropertyValue("/aas/submodels/Status/" + SubmodelElementProvider.PROPERTIES + "/status/value", removePrefix(rxStr, "status"));
 		// - Device indicates service invocation
 		if (hasPrefix(rxStr, "invocation:")) {
 			// Start of process
 			if (hasPrefix(rxStr, "invocation:start")) {
 				// Read and increment invocation counter
-				HashMap<String, Object> property = (HashMap<String, Object>) aasServerConnection.getModelPropertyValue("/aas/submodels/Status/dataElements/invocations");
+				HashMap<String, Object> property = (HashMap<String, Object>) aasServerConnection.getModelPropertyValue("/aas/submodels/Status/" + SubmodelElementProvider.PROPERTIES + "/invocations");
 				int invocations = (int) property.get("value");
-				aasServerConnection.setModelPropertyValue("/aas/submodels/Status/dataElements/invocations/value", ++invocations);
+				aasServerConnection.setModelPropertyValue("/aas/submodels/Status/" + SubmodelElementProvider.PROPERTIES + "/invocations/value", ++invocations);
 			}
 			
 			// End of process
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/devicemanager/ManufacturingDeviceManager.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/devicemanager/ManufacturingDeviceManager.java
index dc940a0..054f2fe 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/devicemanager/ManufacturingDeviceManager.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/mockup/devicemanager/ManufacturingDeviceManager.java
@@ -11,6 +11,7 @@
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 import org.eclipse.basyx.vab.protocol.http.connector.HTTPConnectorProvider;
@@ -180,15 +181,16 @@
 		
 		// Check what was being received. This check is performed based on a prefix that he device has to provide);
 		// - Update of device status
-		if (hasPrefix(rxStr, "status:")) aasServerConnection.setModelPropertyValue("/aas/submodels/Status/dataElements/status/value", removePrefix(rxStr, "status"));
+		if (hasPrefix(rxStr, "status:"))
+			aasServerConnection.setModelPropertyValue("/aas/submodels/Status/" + SubmodelElementProvider.PROPERTIES + "/status/value", removePrefix(rxStr, "status"));
 		// - Device indicates service invocation
 		if (hasPrefix(rxStr, "invocation:")) {
 			// Start of process
 			if (hasPrefix(rxStr, "invocation:start")) {
 				// Read and increment invocation counter
-				HashMap<String, Object> property = (HashMap<String, Object>) aasServerConnection.getModelPropertyValue("/aas/submodels/Status/dataElements/invocations");
+				HashMap<String, Object> property = (HashMap<String, Object>) aasServerConnection.getModelPropertyValue("/aas/submodels/Status/" + SubmodelElementProvider.PROPERTIES + "/invocations");
 				int invocations = (int) property.get("value");
-				aasServerConnection.setModelPropertyValue("/aas/submodels/Status/dataElements/invocations/value", ++invocations);
+				aasServerConnection.setModelPropertyValue("/aas/submodels/Status/" + SubmodelElementProvider.PROPERTIES + "/invocations/value", ++invocations);
 			} 
 			// End of process
 			if (hasPrefix(rxStr, "invocation:end")) {
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 e9ec6a8..8dcc0b5 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
@@ -77,10 +77,10 @@
 		
 		// Retrieve sub model values and compare to expected values
 		String submodelId = subModel.getIdShort();
-		String prop1Id    = subModel.getDataElements().get("prop1").getIdShort();
-		int prop1Val = (int) ((IProperty) subModel.getDataElements().get("prop1")).get();
-		String prop2Id    = subModel.getDataElements().get("prop2").getIdShort();
-		String prop2Val = (String) ((IProperty) subModel.getDataElements().get("prop2")).get();
+		String prop1Id    = subModel.getProperties().get("prop1").getIdShort();
+		int prop1Val = (int) ((IProperty) subModel.getProperties().get("prop1")).get();
+		String prop2Id    = subModel.getProperties().get("prop2").getIdShort();
+		String prop2Val = (String) ((IProperty) subModel.getProperties().get("prop2")).get();
 
 		
 		// Compare received property values to expected values
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 7e7766e..be00057 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
@@ -8,6 +8,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.restapi.SubModelProvider;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.vab.coder.json.connector.JSONConnector;
 import org.eclipse.basyx.vab.protocol.basyx.connector.BaSyxConnector;
 import org.eclipse.basyx.vab.protocol.basyx.server.BaSyxTCPServer;
@@ -63,7 +64,7 @@
 		JSONConnector toDeviceManager = new JSONConnector(basyxConnector);	
 		// - Access sub model property, check value
 		int propVal = (int) ((HashMap<String, Object>) toDeviceManager
-				.getModelPropertyValue("/aas/submodels/dynamicSM/dataElements/prop1/value")).get("value");
+				.getModelPropertyValue("/aas/submodels/dynamicSM/" + SubmodelElementProvider.PROPERTIES + "/prop1/value")).get("value");
 		
 		
 		// Check value
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 c1f117d..7f4e246 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
@@ -122,10 +122,10 @@
 		
 		// Read property values from sub model
 		String smID     = connSM.getIdShort();
-		String prop1Id = connSM.getDataElements().get("prop1").getIdShort();
-		int prop1Val = (int) ((IProperty) connSM.getDataElements().get("prop1")).get();
-		String prop2Id  = connSM.getDataElements().get("prop2").getIdShort();
-		String prop2Val = (String) ((IProperty) connSM.getDataElements().get("prop2")).get();
+		String prop1Id = connSM.getProperties().get("prop1").getIdShort();
+		int prop1Val = (int) ((IProperty) connSM.getProperties().get("prop1")).get();
+		String prop2Id  = connSM.getProperties().get("prop2").getIdShort();
+		String prop2Val = (String) ((IProperty) connSM.getProperties().get("prop2")).get();
 
 		
 		// Check property values
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 9be4eae..a2f2681 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
@@ -119,7 +119,7 @@
 		Map<String, ISubmodelElement> smElements = subModel.getSubmodelElements();
 		IProperty prop1 = (IProperty) smElements.get("prop1");
 		ISubmodelElementCollection prop2 = (ISubmodelElementCollection) smElements.get("prop2");
-		IProperty prop11 = (IProperty) prop2.getDataElements().get("prop11");
+		IProperty prop11 = (IProperty) prop2.getProperties().get("prop11");
 		IProperty prop3 = (IProperty) smElements.get("prop3");
 
 		assertEquals(smId.getId(), subModel.getIdentification().getId());
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 ca86c9e..d48956b 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
@@ -17,6 +17,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.Referable;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 import org.eclipse.basyx.vab.protocol.http.connector.HTTPConnectorProvider;
@@ -130,17 +131,17 @@
 		Map<String, Object> smId = (Map<String, Object>) submodel.get(Identifiable.IDENTIFICATION);
 
 		// - Read properties
-		Map<String, Object> prop1 = (Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1");
-		Map<String, Object> prop2 = (Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop2");
+		Map<String, Object> prop1 = (Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1");
+		Map<String, Object> prop2 = (Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop2");
 		Map<String, Object> prop11 = (Map<String, Object>) connSubModel1.getModelPropertyValue("submodelElements/prop2/prop11");
-		Map<String, Object> prop3 = (Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop3");
+		Map<String, Object> prop3 = (Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop3");
 
 		// - Change property value using VAB primitive
-		connSubModel1.setModelPropertyValue("dataElements/prop1/value", 456);
+		connSubModel1.setModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1/value", 456);
 
 		// - Read value back using VAB primitive
 		Map<String, Object> changedProp1 = (Map<String, Object>) connSubModel1
-				.getModelPropertyValue("dataElements/prop1");
+				.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1");
 
 		// - Check results
 		assertEquals("sm-001", smId.get(Identifier.ID));
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 632c940..4ad1898 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
@@ -96,10 +96,10 @@
 
 			// Read sub model properties
 			String smId     = subModel.getIdShort();
-			String prop1Id  = subModel.getDataElements().get("prop1").getIdShort();
-			int prop1Val = (int) ((IProperty) subModel.getDataElements().get("prop1")).get();
-			String prop2Id  = subModel.getDataElements().get("prop2").getIdShort();
-			String prop2Val = (String) ((IProperty) subModel.getDataElements().get("prop2")).get();
+			String prop1Id  = subModel.getProperties().get("prop1").getIdShort();
+			int prop1Val = (int) ((IProperty) subModel.getProperties().get("prop1")).get();
+			String prop2Id  = subModel.getProperties().get("prop2").getIdShort();
+			String prop2Val = (String) ((IProperty) subModel.getProperties().get("prop2")).get();
 			
 			// Compare sub model property values
 			assertTrue(smId.equals("Status"));
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 8c05a50..f6033b7 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
@@ -11,6 +11,7 @@
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.tools.webserviceclient.WebServiceJSONClient;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
@@ -101,9 +102,9 @@
 		String smEndpoint = "http://localhost:8080/basys.examples/Testsuite/components/BaSys/1.0/dynamicModelRepository/aas/submodels/Status";
 		Map<String, Object> sm = ((Map<String, Object>) jsonClient.get(smEndpoint));
 		String smId = (String) sm.get("idShort");
-		int prop1Val = (int) ((Map<String, Object>) jsonClient.get(smEndpoint + "/dataElements/prop1")).get("value");
-		String prop1Id = (String) ((Map<String, Object>) jsonClient.get(smEndpoint + "/dataElements/prop1")).get("idShort");
-		String prop2Val = (String) ((Map<String, Object>) jsonClient.get(smEndpoint + "/dataElements/prop2")).get("value");
+		int prop1Val = (int) ((Map<String, Object>) jsonClient.get(smEndpoint + "/" + SubmodelElementProvider.PROPERTIES + "/prop1")).get("value");
+		String prop1Id = (String) ((Map<String, Object>) jsonClient.get(smEndpoint + "/" + SubmodelElementProvider.PROPERTIES + "/prop1")).get("idShort");
+		String prop2Val = (String) ((Map<String, Object>) jsonClient.get(smEndpoint + "/" + SubmodelElementProvider.PROPERTIES + "/prop2")).get("value");
 
 		
 		// Check results
diff --git a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/code/BaSyxCreateProvideUseExampleAASSubmodel.java b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/code/BaSyxCreateProvideUseExampleAASSubmodel.java
index 5d1eb43..dc700af 100644
--- a/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/code/BaSyxCreateProvideUseExampleAASSubmodel.java
+++ b/examples/basys.examples/src/test/java/org/eclipse/basyx/examples/snippets/undoc/aas/code/BaSyxCreateProvideUseExampleAASSubmodel.java
@@ -56,7 +56,7 @@
 		JSONConnector toDeviceManager = new JSONConnector(basyxConnector);	
 		// - Access sub model property, check value
 		Map<String, Object> property = (Map<String, Object>) toDeviceManager
-				.getModelPropertyValue(SubmodelElementProvider.DATAELEMENTS + "/status");
+				.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/status");
 		assertEquals("offline", property.get("value"));
 		
 		
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 601fcee..1f565e8 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,6 @@
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
 import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElementCollection;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
@@ -174,28 +173,28 @@
 			ISubModel subModel = manager.retrieveSubModel(new ModelUrn("aas-001"), new ModelUrn("sm-001"));
 			// - Retrieve sub model values and compare to expected values
 			assertTrue(subModel.getIdShort().equals("sm-001"));
-			assertTrue(subModel.getDataElements().get("prop1").getIdShort().equals("prop1"));
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop1")).get() == 234);
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop3")).get() == 17);
+			assertTrue(subModel.getProperties().get("prop1").getIdShort().equals("prop1"));
+			assertTrue((int) subModel.getProperties().get("prop1").get() == 234);
+			assertTrue((int) subModel.getProperties().get("prop3").get() == 17);
 			assertTrue(subModel.getSubmodelElements().get("prop2").getIdShort().equals("prop2"));
-			assertTrue((int) ((IProperty) ((ISubmodelElementCollection) subModel.getSubmodelElements().get("prop2"))
-					.getDataElements().get("prop11")).get() == 123);
+			assertTrue((int) ((ISubmodelElementCollection) subModel.getSubmodelElements().get("prop2"))
+					.getProperties().get("prop11").get() == 123);
 
 			// Connect to sub model using lower-level VAB interface
 			VABElementProxy connSubModel1 = this.connManager.connectToVABElement("sm-001VAB");
 			// - Read property values and compare with expected values
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("value") == 234);
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop3")).get("value") == 17);
-			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("idShort").equals("prop1"));
-			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop2")).get("idShort").equals("prop2"));
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("value") == 234);
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop3")).get("value") == 17);
+			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("idShort").equals("prop1"));
+			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop2")).get("idShort").equals("prop2"));
 			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("submodelElements/prop2/prop11")).get("value") == 123);
 			// - Change property value using VAB primitive
-			connSubModel1.setModelPropertyValue("dataElements/prop1/value", 456);
+			connSubModel1.setModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1/value", 456);
 			// - Read value back using VAB primitive
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("value") == 456);
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("value") == 456);
 
 			// Read changed value back using SDK connector
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop1")).get() == 456);
+			assertTrue((int) subModel.getProperties().get("prop1").get() == 456);
 		}
 
 		
@@ -205,30 +204,30 @@
 			ISubModel subModel = manager.retrieveSubModel(new ModelUrn("aas-001M"), new ModelUrn("sm-001M"));
 			// - Retrieve sub model values and compare to expected values
 			assertTrue(subModel.getIdShort().equals("sm-001M"));
-			assertTrue(subModel.getDataElements().get("prop1").getIdShort().equals("prop1"));
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop1")).get() == 234);
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop3")).get() == 17);
+			assertTrue(subModel.getProperties().get("prop1").getIdShort().equals("prop1"));
+			assertTrue((int) subModel.getProperties().get("prop1").get() == 234);
+			assertTrue((int) subModel.getProperties().get("prop3").get() == 17);
 			assertTrue(subModel.getSubmodelElements().get("prop2").getIdShort().equals("prop2"));
-			assertTrue((int) ((IProperty) ((ISubmodelElementCollection) subModel.getSubmodelElements().get("prop2"))
-					.getDataElements().get("prop11")).get() == 123);
+			assertTrue((int) ((ISubmodelElementCollection) subModel.getSubmodelElements().get("prop2"))
+					.getProperties().get("prop11").get() == 123);
 			
 			
 			// Connect to sub model using lower-level VAB interface
 			VABElementProxy connSubModel1 = this.connManager.connectToVABElement("sm-001MVAB");
 			// - Read property values and compare with expected values
 			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("/")).get("idShort").equals("sm-001M"));
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("value") == 234);
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop3")).get("value") == 17);
-			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("idShort").equals("prop1"));
-			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop2")).get("idShort").equals("prop2"));
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("value") == 234);
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop3")).get("value") == 17);
+			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("idShort").equals("prop1"));
+			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop2")).get("idShort").equals("prop2"));
 			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("submodelElements/prop2/prop11")).get("value") == 123);
 			// - Change property value using VAB primitive
-			connSubModel1.setModelPropertyValue("dataElements/prop1/value", 456);
+			connSubModel1.setModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1/value", 456);
 			// - Read value back using VAB primitive
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("value") == 456);
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("value") == 456);
 
 			// Read changed value back using SDK connector
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop1")).get() == 456);
+			assertTrue((int) subModel.getProperties().get("prop1").get() == 456);
 		}
 	}
 }
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 a380b6f..8cb42ef 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,6 @@
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
 import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElementCollection;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
@@ -178,30 +177,30 @@
 					.retrieveSubModel(new ModelUrn("aas-001"), new ModelUrn("sm-001"));
 			// - Retrieve sub model values and compare to expected values
 			assertTrue(subModel.getIdShort().equals("sm-001"));
-			assertTrue(subModel.getDataElements().get("prop1").getIdShort().equals("prop1"));
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop1")).get() == 234);
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop3")).get() == 17);
+			assertTrue(subModel.getProperties().get("prop1").getIdShort().equals("prop1"));
+			assertTrue((int) subModel.getProperties().get("prop1").get() == 234);
+			assertTrue((int) subModel.getProperties().get("prop3").get() == 17);
 			assertTrue(subModel.getSubmodelElements().get("prop2").getIdShort().equals("prop2"));
-			assertTrue((int) ((IProperty) ((ISubmodelElementCollection) subModel.getSubmodelElements().get("prop2"))
-					.getDataElements().get("prop11")).get() == 123);
+			assertTrue((int) ((ISubmodelElementCollection) subModel.getSubmodelElements().get("prop2"))
+					.getProperties().get("prop11").get() == 123);
 
 
 			// Connect to sub model using lower-level VAB interface
 			VABElementProxy connSubModel1 = this.connManager.connectToVABElement("sm-001VAB");
 			// - Read property values and compare with expected values
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("value") == 234);
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop3")).get("value") == 17);
-			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("idShort").equals("prop1"));
-			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop2")).get("idShort").equals("prop2"));
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("value") == 234);
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop3")).get("value") == 17);
+			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("idShort").equals("prop1"));
+			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop2")).get("idShort").equals("prop2"));
 			assertTrue((int) ((Map<String, Object>) connSubModel1
 					.getModelPropertyValue("submodelElements/prop2/prop11")).get("value") == 123);
 			// - Change property value using VAB primitive
-			connSubModel1.setModelPropertyValue("dataElements/prop1/value", 456);
+			connSubModel1.setModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1/value", 456);
 			// - Read value back using VAB primitive
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("value") == 456);
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("value") == 456);
 
 			// Read changed value back using SDK connector
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop1")).get() == 456);
+			assertTrue((int) subModel.getProperties().get("prop1").get() == 456);
 		}
 
 		
@@ -212,30 +211,30 @@
 					.retrieveSubModel(new ModelUrn("aas-001M"), new ModelUrn("sm-001M"));
 			// - Retrieve sub model values and compare to expected values
 			assertTrue(subModel.getIdShort().equals("sm-001M"));
-			assertTrue(subModel.getDataElements().get("prop1").getIdShort().equals("prop1"));
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop1")).get() == 234);
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop3")).get() == 17);
+			assertTrue(subModel.getProperties().get("prop1").getIdShort().equals("prop1"));
+			assertTrue((int) subModel.getProperties().get("prop1").get() == 234);
+			assertTrue((int) subModel.getProperties().get("prop3").get() == 17);
 			assertTrue(subModel.getSubmodelElements().get("prop2").getIdShort().equals("prop2"));
-			assertTrue((int) ((IProperty) ((ISubmodelElementCollection) subModel.getSubmodelElements().get("prop2"))
-					.getDataElements().get("prop11")).get() == 123);
+			assertTrue((int) ((ISubmodelElementCollection) subModel.getSubmodelElements().get("prop2"))
+					.getProperties().get("prop11").get() == 123);
 
 			// Connect to sub model using lower-level VAB interface
 			VABElementProxy connSubModel1 = this.connManager.connectToVABElement("sm-001MVAB");
 			// - Read property values and compare with expected values
 			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("/")).get("idShort").equals("sm-001M"));
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("value") == 234);
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop3")).get("value") == 17);
-			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("idShort").equals("prop1"));
-			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop2")).get("idShort").equals("prop2"));
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("value") == 234);
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop3")).get("value") == 17);
+			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("idShort").equals("prop1"));
+			assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop2")).get("idShort").equals("prop2"));
 			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("submodelElements/prop2/prop11")).get("value") == 123);
 			// - Change property value using VAB primitive
-			connSubModel1.setModelPropertyValue("dataElements/prop1/value", 456);
+			connSubModel1.setModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1/value", 456);
 			// - Read value back using VAB primitive
-			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1"))
+			assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1"))
 					.get("value") == 456);
 
 			// Read changed value back using SDK connector
-			assertTrue((int) ((IProperty) subModel.getDataElements().get("prop1")).get() == 456);
+			assertTrue((int) subModel.getProperties().get("prop1").get() == 456);
 		}
 	}
 }
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 261dbeb..d3f4e0e 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
@@ -14,7 +14,6 @@
 import org.eclipse.basyx.examples.support.directory.ExamplesPreconfiguredDirectory;
 import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElementCollection;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
@@ -120,14 +119,14 @@
 		
 		// - Retrieve sub model values and compare to expected values
 		assertTrue(subModel.getIdShort().equals("sm-001"));
-		assertTrue(subModel.getDataElements().get("prop1").getIdShort().equals("prop1"));
-		assertTrue((int) ((IProperty) subModel.getDataElements().get("prop1")).get() == 234);
-		assertTrue((int) ((IProperty) subModel.getDataElements().get("prop3")).get() == 17);
+		assertTrue(subModel.getProperties().get("prop1").getIdShort().equals("prop1"));
+		assertTrue((int) subModel.getProperties().get("prop1").get() == 234);
+		assertTrue((int) subModel.getProperties().get("prop3").get() == 17);
 
 		ISubmodelElementCollection prop2 = (ISubmodelElementCollection) subModel.getSubmodelElements().get("prop2");
 		assertEquals("prop2", prop2.getIdShort());
-		Map<String, IDataElement> dataElements = prop2.getDataElements();
-		assertEquals(123, ((IProperty) dataElements.get("prop11")).get());
+		Map<String, IProperty> properties = prop2.getProperties();
+		assertEquals(123, properties.get("prop11").get());
 	}
 }
 
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 87fe226..6138225 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
@@ -11,6 +11,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 import org.eclipse.basyx.vab.protocol.http.connector.HTTPConnectorProvider;
@@ -102,15 +103,15 @@
 		// Connect to sub model using lower-level VAB interface
 		VABElementProxy connSubModel1 = this.connManager.connectToVABElement("sm-001VAB");
 		// - Read property values and compare with expected values
-		assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("value") == 234);
-		assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop3")).get("value") == 17);
-		assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1")).get("idShort").equals("prop1"));
-		assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop2")).get("idShort").equals("prop2"));
+		assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("value") == 234);
+		assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop3")).get("value") == 17);
+		assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1")).get("idShort").equals("prop1"));
+		assertTrue(((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop2")).get("idShort").equals("prop2"));
 		assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("submodelElements/prop2/prop11/value")).get("value") == 123);
 		// - Change property value using VAB primitive
-		connSubModel1.setModelPropertyValue("dataElements/prop1/value", 456);
+		connSubModel1.setModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1/value", 456);
 		// - Read value back using VAB primitive
-		assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue("dataElements/prop1/value")).get("value") == 456);
+		assertTrue((int) ((Map<String, Object>) connSubModel1.getModelPropertyValue(SubmodelElementProvider.PROPERTIES + "/prop1/value")).get("value") == 456);
 	}
 }
 
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/IElementContainer.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/IElementContainer.java
index 08373ce..093e1b2 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/IElementContainer.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/IElementContainer.java
@@ -3,7 +3,7 @@
 import java.util.Map;
 
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
+import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 
 /**
@@ -28,11 +28,11 @@
 	public Map<String, ISubmodelElement> getSubmodelElements();
 
 	/**
-	 * Gets only submodel elements that are data elements
+	 * Gets only submodel elements that are properties
 	 * 
 	 * @return
 	 */
-	public Map<String, IDataElement> getDataElements();
+	public Map<String, IProperty> getProperties();
 
 	/**
 	 * Gets only submodel elements that are operations
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/ISubmodelElementCollection.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/ISubmodelElementCollection.java
index efddcb4..547978e 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/ISubmodelElementCollection.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/api/submodelelement/ISubmodelElementCollection.java
@@ -3,7 +3,7 @@
 import java.util.Collection;
 import java.util.Map;
 
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
+import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 
 /**
@@ -42,7 +42,7 @@
 	 * 
 	 * @return
 	 */
-	public Map<String, IDataElement> getDataElements();
+	public Map<String, IProperty> getProperties();
 
 	/**
 	 * Gets the operations contained in the collection
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/ConnectedSubModel.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/ConnectedSubModel.java
index b86e297..5d0a57a 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/ConnectedSubModel.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/ConnectedSubModel.java
@@ -13,6 +13,7 @@
 import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyElements;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
+import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.ConnectedSubmodelElementFactory;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.AdministrativeInformation;
@@ -109,7 +110,7 @@
 		}
 		
 		if (element instanceof IDataElement) {
-			getProxy().createValue(SubmodelElementProvider.DATAELEMENTS, element);
+			getProxy().createValue(SubmodelElementProvider.PROPERTIES, element);
 		} else if (element instanceof IOperation) {
 			getProxy().createValue(SubmodelElementProvider.OPERATIONS, element);
 		} else if (element instanceof ISubmodelElement) {
@@ -118,9 +119,9 @@
 	}
 
 	@Override
-	public Map<String, IDataElement> getDataElements() {
-		return ConnectedSubmodelElementFactory.getDataElements(getProxy(), SubmodelElementProvider.DATAELEMENTS,
-						SubmodelElementProvider.DATAELEMENTS);
+	public Map<String, IProperty> getProperties() {
+		return ConnectedSubmodelElementFactory.getProperties(getProxy(), SubmodelElementProvider.PROPERTIES,
+						SubmodelElementProvider.PROPERTIES);
 	}
 
 	@Override
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/ConnectedSubmodelElementCollection.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/ConnectedSubmodelElementCollection.java
index 7a7bda7..b4139e3 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/ConnectedSubmodelElementCollection.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/ConnectedSubmodelElementCollection.java
@@ -6,7 +6,7 @@
 import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyElements;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElementCollection;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
+import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
@@ -44,8 +44,8 @@
 	}
 
 	@Override
-	public Map<String, IDataElement> getDataElements() {
-		return ConnectedSubmodelElementFactory.getDataElements(getProxy(), Property.VALUE, "");
+	public Map<String, IProperty> getProperties() {
+		return ConnectedSubmodelElementFactory.getProperties(getProxy(), Property.VALUE, "");
 	}
 
 	@Override
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/ConnectedSubmodelElementFactory.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/ConnectedSubmodelElementFactory.java
index b6e61a5..c87d8c7 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/ConnectedSubmodelElementFactory.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/connected/submodelelement/ConnectedSubmodelElementFactory.java
@@ -9,6 +9,7 @@
 import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyElements;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
+import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedBlob;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedFile;
@@ -192,4 +193,32 @@
 		}
 		return ret;
 	}
+	
+	/**
+	 * Creates connected IProperty elements from VABElementProxy
+	 * 
+	 * @param rootProxy
+	 * @param collectionPath
+	 * @param elementPath
+	 * @return
+	 */
+	@SuppressWarnings("unchecked")
+	public static Map<String, IProperty> getProperties(VABElementProxy rootProxy, String collectionPath,
+			String elementPath) {
+		// Query the whole list of elements
+		Collection<Map<String, Object>> mapElemList = (Collection<Map<String, Object>>) rootProxy.getModelPropertyValue(collectionPath);
+
+		// Get the type and idShort for each operation and create the corresponding
+		// connected variant
+		Map<String, IProperty> ret = new HashMap<>();
+		for (Map<String, Object> node : mapElemList) {
+			String idShort = Referable.createAsFacade(node, KeyElements.DATAELEMENT).getIdShort();
+			String subPath = VABPathTools.concatenatePaths(elementPath, idShort);
+			VABElementProxy proxy = rootProxy.getDeepProxy(subPath);
+			if (Property.isProperty(node)) {
+				ret.put(idShort, new ConnectedProperty(proxy));
+			}
+		}
+		return ret;
+	}
 }
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/SubModel.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/SubModel.java
index 5bd98fb..93c3f8b 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/SubModel.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/SubModel.java
@@ -18,7 +18,7 @@
 import org.eclipse.basyx.submodel.metamodel.api.reference.IReference;
 import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyElements;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
+import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 import org.eclipse.basyx.submodel.metamodel.facade.submodelelement.SubmodelElementFacadeFactory;
 import org.eclipse.basyx.submodel.metamodel.map.modeltype.ModelType;
@@ -207,16 +207,16 @@
 		Referable.createAsFacade(this, getKeyElement()).setIdShort(id);
 	}
 
-	public void setDataElements(Map<String, IDataElement> properties) {
-		// first, remove all data elements
+	public void setProperties(Map<String, IProperty> properties) {
+		// first, remove all properties
 		Set<Entry<String, ISubmodelElement>> elementSet = getSubmodelElements().entrySet();
 		for ( Iterator<Entry<String, ISubmodelElement>> iterator = elementSet.iterator(); iterator.hasNext(); ) {
 			Entry<String, ISubmodelElement> entry = iterator.next();
-			if (entry.getValue() instanceof IDataElement) {
+			if (entry.getValue() instanceof IProperty) {
 				iterator.remove();
 			}
 		}
-		// then add all given data elements
+		// then add all given data properties
 		properties.values().forEach(this::addSubModelElement);
 	}
 
@@ -273,14 +273,14 @@
 	}
 
 	@Override
-	public Map<String, IDataElement> getDataElements() {
-		Map<String, IDataElement> dataElements = new HashMap<>();
+	public Map<String, IProperty> getProperties() {
+		Map<String, IProperty> properties = new HashMap<>();
 		getSubmodelElements().values().forEach(e -> {
-			if (e instanceof IDataElement) {
-				dataElements.put(e.getIdShort(), (IDataElement) e);
+			if (e instanceof IProperty) {
+				properties.put(e.getIdShort(), (IProperty) e);
 			}
 		});
-		return dataElements;
+		return properties;
 	}
 
 	@Override
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/submodelelement/SubmodelElementCollection.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/submodelelement/SubmodelElementCollection.java
index 1e06529..4047e14 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/submodelelement/SubmodelElementCollection.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/metamodel/map/submodelelement/SubmodelElementCollection.java
@@ -10,14 +10,13 @@
 import org.eclipse.basyx.submodel.metamodel.api.reference.enums.KeyElements;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElementCollection;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
+import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 import org.eclipse.basyx.submodel.metamodel.facade.submodelelement.SubmodelElementFacadeFactory;
 import org.eclipse.basyx.submodel.metamodel.map.modeltype.ModelType;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.HasDataSpecification;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.LangStrings;
 import org.eclipse.basyx.submodel.metamodel.map.qualifier.Referable;
-import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.DataElement;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.operation.Operation;
 
@@ -186,14 +185,14 @@
 
 	@SuppressWarnings("unchecked")
 	@Override
-	public Map<String, IDataElement> getDataElements() {
-		Map<String, IDataElement> ret = new HashMap<>();
+	public Map<String, IProperty> getProperties() {
+		Map<String, IProperty> ret = new HashMap<>();
 		Collection<Object> smElems = (Collection<Object>) get(Property.VALUE);
 		for (Object smElemO : smElems) {
 			Map<String, Object> smElem = (Map<String, Object>) smElemO;
-			if (DataElement.isDataElement(smElem)) {
+			if (Property.isProperty(smElem)) {
 				String idShort = Referable.createAsFacade(smElem, KeyElements.DATAELEMENT).getIdShort();
-				IDataElement dataElement = (IDataElement) SubmodelElementFacadeFactory.createSubmodelElement(smElem);
+				IProperty dataElement = (IProperty) SubmodelElementFacadeFactory.createSubmodelElement(smElem);
 				ret.put(idShort, dataElement);
 			}
 		}
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/DataElementProvider.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/PropertyProvider.java
similarity index 93%
rename from sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/DataElementProvider.java
rename to sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/PropertyProvider.java
index 24b0222..91b2030 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/DataElementProvider.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/PropertyProvider.java
@@ -16,11 +16,11 @@
  * @author schnicke
  *
  */
-public class DataElementProvider extends MetaModelProvider {
+public class PropertyProvider extends MetaModelProvider {
 
 	private IModelProvider proxy;
 
-	public DataElementProvider(IModelProvider proxy) {
+	public PropertyProvider(IModelProvider proxy) {
 		this.proxy = proxy;
 	}
 
@@ -60,8 +60,6 @@
 		if (path.equals(Property.VALUE)) {
 			// Set value and type
 			proxy.setModelPropertyValue(Property.VALUE, newValue);
-
-			// TODO: differentiate between different types of data elements
 			proxy.setModelPropertyValue(Property.VALUETYPE, PropertyValueTypeDefHelper.getTypeWrapperFromObject(newValue));
 		} else {
 			throw new MalformedRequestException("Invalid access path");
diff --git a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/SubmodelElementProvider.java b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/SubmodelElementProvider.java
index 25cd672..dea3ed4 100644
--- a/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/SubmodelElementProvider.java
+++ b/sdks/java/basys.sdk/src/main/java/org/eclipse/basyx/submodel/restapi/SubmodelElementProvider.java
@@ -7,6 +7,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElement;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.DataElement;
+import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.operation.Operation;
 import org.eclipse.basyx.vab.exception.provider.MalformedRequestException;
 import org.eclipse.basyx.vab.exception.provider.ProviderException;
@@ -23,7 +24,7 @@
 public class SubmodelElementProvider extends MetaModelProvider {
 	// Constants for API-Access
 	public static final String ELEMENTS = "submodelElements";
-	public static final String DATAELEMENTS = "dataElements";
+	public static final String PROPERTIES = "properties";
 	public static final String OPERATIONS = "operations";
 
 	// The VAB model provider containing the submodelElements this SubmodelElementProvider is based on
@@ -46,7 +47,7 @@
 	 */
 	public static IModelProvider getElementProvider(Map<String, Object> element, IModelProvider genericProxy) {
 		if (DataElement.isDataElement(element)) {
-			return new DataElementProvider(genericProxy);
+			return new PropertyProvider(genericProxy);
 		} else if (Operation.isOperation(element)) {
 			return new OperationProvider(genericProxy);
 		} else if (SubmodelElementCollection.isSubmodelElementCollection(element)) {
@@ -66,10 +67,10 @@
 		return all.values().stream().collect(Collectors.toList());
 	}
 	
-	private Collection<Map<String, Object>> getDataElementList() {
+	private Collection<Map<String, Object>> getPropertyList() {
 		Collection<Map<String, Object>> all = getElementsList();
-		// DataElements detection => has ("value" but not "ordered") or ("min" and "max")
-		return all.stream().filter(DataElement::isDataElement).collect(Collectors.toList());
+		// Property detection => has ("value" but not "ordered") or ("min" and "max")
+		return all.stream().filter(Property::isProperty).collect(Collectors.toList());
 	}
 
 	private Collection<Map<String, Object>> getOperationList() {
@@ -78,11 +79,11 @@
 	}
 
 	/**
-	 * Handles first-level access on submodel elements (e.g. /dataElements/)
+	 * Handles first-level access on submodel elements (e.g. /properties/)
 	 */
 	private Object handleQualifierGet(String qualifier, String path) {
-		if (qualifier.equals(DATAELEMENTS)) {
-			return getDataElementList();
+		if (qualifier.equals(PROPERTIES)) {
+			return getPropertyList();
 		} else if (qualifier.equals(OPERATIONS)) {
 			return getOperationList();
 		} else if (qualifier.equals(ELEMENTS)) {
@@ -119,8 +120,8 @@
 		switch (qualifier) {
 			case (ELEMENTS):
 				return getElementProvider(element, elementProxy).getModelPropertyValue(subPath);
-			case (DATAELEMENTS):
-				return new DataElementProvider(elementProxy).getModelPropertyValue(subPath);
+			case (PROPERTIES):
+				return new PropertyProvider(elementProxy).getModelPropertyValue(subPath);
 			case (OPERATIONS):
 				return new OperationProvider(elementProxy).getModelPropertyValue(subPath);
 			default:
@@ -144,7 +145,7 @@
 	public void setModelPropertyValue(String path, Object newValue) throws ProviderException {
 		String[] pathElements = VABPathTools.splitPath(path);
 		String qualifier = pathElements[0];
-		if (pathElements.length < 2 || (!qualifier.equals(DATAELEMENTS) && !qualifier.equals(ELEMENTS))) {
+		if (pathElements.length < 2 || (!qualifier.equals(PROPERTIES) && !qualifier.equals(ELEMENTS))) {
 			// only possible to set values in a data elements, currently
 			throw new MalformedRequestException("Invalid access");
 		}
@@ -156,7 +157,7 @@
 			throw new MalformedRequestException("Invalid access");
 		} else if (DataElement.isDataElement(element)) {
 			String subPath = VABPathTools.buildPath(pathElements, 2);
-			new DataElementProvider(elementProxy).setModelPropertyValue(subPath, newValue);
+			new PropertyProvider(elementProxy).setModelPropertyValue(subPath, newValue);
 		} else {
 			// API for other elements not specified, yet => let modelprovider resolve request
 			String subPath = VABPathTools.buildPath(pathElements, 2);
@@ -166,7 +167,7 @@
 
 	@Override
 	public void createValue(String path, Object newEntity) throws ProviderException {
-		if (path.equals(DATAELEMENTS) || path.equals(OPERATIONS) || path.equals(ELEMENTS)) {
+		if (path.equals(PROPERTIES) || path.equals(OPERATIONS) || path.equals(ELEMENTS)) {
 			createSubmodelElement(newEntity);
 		} else {
 			String[] pathElements = VABPathTools.splitPath(path);
@@ -187,7 +188,7 @@
 
 		String qualifier = pathElements[0];
 		String idShort = pathElements[1];
-		if (qualifier.equals(DATAELEMENTS) || qualifier.equals(OPERATIONS) || qualifier.equals(ELEMENTS)) {
+		if (qualifier.equals(PROPERTIES) || qualifier.equals(OPERATIONS) || qualifier.equals(ELEMENTS)) {
 			// Delete a specific submodel element
 			modelProvider.deleteValue(idShort);
 		} else {
@@ -199,7 +200,7 @@
 	public void deleteValue(String path, Object obj) {
 		String[] pathElements = VABPathTools.splitPath(path);
 		String qualifier = pathElements[0];
-		if (!qualifier.equals(ELEMENTS) && !qualifier.equals(DATAELEMENTS)) {
+		if (!qualifier.equals(ELEMENTS) && !qualifier.equals(PROPERTIES)) {
 			// only possible to delete values from data elements (or in collections)
 			throw new MalformedRequestException("Invalid access");
 		}
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/aggregator/TestAASAggregatorProvider.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/aggregator/TestAASAggregatorProvider.java
index 8406291..42706ec 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/aggregator/TestAASAggregatorProvider.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/aggregator/TestAASAggregatorProvider.java
@@ -15,7 +15,9 @@
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.operation.Operation;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.vab.exception.provider.ResourceNotFoundException;
+import org.eclipse.basyx.vab.modelprovider.VABPathTools;
 import org.junit.Test;
 
 /**
@@ -69,7 +71,7 @@
 		assertEquals(sm.getIdShort(), retrievedSm.getIdShort());
 
 		// Test feedthrough of SET
-		String propValuePath = smPath + "/dataElements/" + prop.getIdShort() + "/value";
+		String propValuePath = VABPathTools.concatenatePaths(smPath, SubmodelElementProvider.PROPERTIES, prop.getIdShort(), "value");
 		int expectedPropValue = 20;
 		provider.setModelPropertyValue(propValuePath, expectedPropValue);
 
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestAASHTTP.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestAASHTTP.java
index 0b6cec8..4bb1648 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestAASHTTP.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestAASHTTP.java
@@ -12,7 +12,6 @@
 import org.eclipse.basyx.aas.registration.memory.InMemoryRegistry;
 import org.eclipse.basyx.submodel.metamodel.api.ISubModel;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 import org.eclipse.basyx.testsuite.regression.aas.restapi.StubAASServlet;
@@ -112,10 +111,10 @@
 		// TODO: Extend
 		// - retrieve properties and operations
 
-		Map<String, IDataElement> properties = sm.getDataElements();
+		Map<String, IProperty> properties = sm.getProperties();
 		// 2 properties -> SMElementCollections don't count
 		assertEquals(3, properties.size());
-		IProperty prop = (IProperty) properties.get("integerProperty");
+		IProperty prop = properties.get("integerProperty");
 		assertEquals(123, prop.get());
 
 		Map<String, IOperation> operations = sm.getOperations();
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestConnectedAssetAdministrationShellManager.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestConnectedAssetAdministrationShellManager.java
index 4397a90..4bd1dff 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestConnectedAssetAdministrationShellManager.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/manager/TestConnectedAssetAdministrationShellManager.java
@@ -111,8 +111,8 @@
 		ISubModel sm = manager.retrieveSubModel(aasId, smId);
 
 		// - check id and properties
-		IProperty prop1Connected = (IProperty) sm.getDataElements().get("prop1");
-		IProperty prop2Connected = (IProperty) sm.getDataElements().get("prop2");
+		IProperty prop1Connected = (IProperty) sm.getProperties().get("prop1");
+		IProperty prop2Connected = (IProperty) sm.getProperties().get("prop2");
 
 		assertEquals(smIdShort, sm.getIdShort());
 		assertEquals(smId.getId(), sm.getIdentification().getId());
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/AssetAdministrationShellSuite.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/AssetAdministrationShellSuite.java
index e738283..6211f06 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/AssetAdministrationShellSuite.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/metamodel/AssetAdministrationShellSuite.java
@@ -141,7 +141,7 @@
 
 		// Check if the submodel has been retrieved correctly
 		ISubModel sm = shell.getSubModels().get(SMIDSHORT);
-		IProperty prop = (IProperty) sm.getDataElements().get(PROPID);
+		IProperty prop = (IProperty) sm.getProperties().get(PROPID);
 		assertEquals(PROPVAL, prop.get());
 	}
 
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java
index da2dfef..0101c50 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiAASProviderTest.java
@@ -13,6 +13,7 @@
 import org.eclipse.basyx.aas.restapi.VABMultiSubmodelProvider;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.restapi.SubModelProvider;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.testsuite.regression.submodel.restapi.SimpleAASSubmodel;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.exception.provider.ProviderException;
@@ -55,7 +56,7 @@
 	public void getTest() {
 		// test reading from a valid aas
 		Map<String, Object> result = (Map<String, Object>) proxy
-				.getModelPropertyValue("a1/aas/submodels/SimpleAASSubmodel/dataElements/integerProperty/value");
+				.getModelPropertyValue("a1/aas/submodels/SimpleAASSubmodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty/value");
 		assertEquals(123, result.get(Property.VALUE));
 
 		// test reading from an invalid aas
@@ -66,14 +67,14 @@
 	@Test
 	public void setTest() {
 		// test setting in a valid aas
-		proxy.setModelPropertyValue("a1/aas/submodels/SimpleAASSubmodel/dataElements/integerProperty/value", 100);
+		proxy.setModelPropertyValue("a1/aas/submodels/SimpleAASSubmodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty/value", 100);
 
 		// test setting in an invalid aas
-		proxy.setModelPropertyValue("A1/aas/submodels/SimpleAASSubmodel/dataElements/integerProperty/value", 200);
+		proxy.setModelPropertyValue("A1/aas/submodels/SimpleAASSubmodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty/value", 200);
 
 		// retrieving property
 		Map<String, Object> result = (Map<String, Object>) proxy
-				.getModelPropertyValue("a1/aas/submodels/SimpleAASSubmodel/dataElements/integerProperty/value");
+				.getModelPropertyValue("a1/aas/submodels/SimpleAASSubmodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty/value");
 		assertEquals(100, result.get(Property.VALUE));
 	}
 
@@ -81,15 +82,15 @@
 	@Test
 	public void removeTest() {
 		// test deleting from an invalid aas
-		proxy.deleteValue("A1/aas/submodels/SimpleAASSubmodel/dataElements/integerProperty/value");
+		proxy.deleteValue("A1/aas/submodels/SimpleAASSubmodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty/value");
 		Map<String, Object> result = (Map<String, Object>) proxy
-				.getModelPropertyValue("a1/aas/submodels/SimpleAASSubmodel/dataElements/integerProperty/value");
+				.getModelPropertyValue("a1/aas/submodels/SimpleAASSubmodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty/value");
 		assertEquals(123, result.get(Property.VALUE));
 
 		// test deleting from a valid aas
-		proxy.deleteValue("a1/aas/submodels/SimpleAASSubmodel/dataElements/integerProperty");
+		proxy.deleteValue("a1/aas/submodels/SimpleAASSubmodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty");
 		try {
-			proxy.getModelPropertyValue("a1/aas/submodels/SimpleAASSubmodel/dataElements/integerProperty/");
+			proxy.getModelPropertyValue("a1/aas/submodels/SimpleAASSubmodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty/");
 			fail();
 		} catch (ResourceNotFoundException e) {
 		}
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java
index 206e07b..9bf470c 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/aas/restapi/MultiSubmodelProviderTest.java
@@ -17,6 +17,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.SubModel;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.restapi.SubModelProvider;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.testsuite.regression.submodel.restapi.SimpleAASSubmodel;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.exception.provider.ProviderException;
@@ -110,11 +111,11 @@
 	void getTestRunner(String smId) {
 		// Get property value
 		Map<String, Object> value = (Map<String, Object>) proxy
-				.getModelPropertyValue("/aas/submodels/" + smId + "/dataElements/integerProperty/value");
+				.getModelPropertyValue("/aas/submodels/" + smId + "/" + SubmodelElementProvider.PROPERTIES + "/integerProperty/value");
 		assertEquals(123, value.get(Property.VALUE));
 
 		// Get property value with /submodel suffix
-		value = (Map<String, Object>) proxy.getModelPropertyValue("/aas/submodels/" + smId + "/submodel/dataElements/integerProperty/value");
+		value = (Map<String, Object>) proxy.getModelPropertyValue("/aas/submodels/" + smId + "/submodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty/value");
 		assertEquals(123, value.get(Property.VALUE));
 	}
 }
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedProperty.java
index 8fda45b..5fceb14 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedProperty.java
@@ -8,7 +8,7 @@
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedProperty;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.valuetypedef.PropertyValueTypeDef;
-import org.eclipse.basyx.submodel.restapi.DataElementProvider;
+import org.eclipse.basyx.submodel.restapi.PropertyProvider;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.modelprovider.map.VABMapProvider;
 import org.eclipse.basyx.vab.support.TypeDestroyer;
@@ -31,7 +31,7 @@
 		// Create PropertySingleValued containing the simple value
 		Property propertyMeta = new Property(VALUE);
 		Map<String, Object> destroyType = TypeDestroyer.destroyType(propertyMeta);
-		prop = new ConnectedProperty(new VABConnectionManagerStub(new DataElementProvider(new VABMapProvider(destroyType))).connectToVABElement(""));
+		prop = new ConnectedProperty(new VABConnectionManagerStub(new PropertyProvider(new VABMapProvider(destroyType))).connectToVABElement(""));
 	}
 
 	@Test
@@ -40,7 +40,7 @@
 		propertyMeta.setValueType(PropertyValueTypeDef.String);
 		Map<String, Object> destroyType = TypeDestroyer.destroyType(propertyMeta);
 		prop = new ConnectedProperty(
-				new VABConnectionManagerStub(new DataElementProvider(new VABMapProvider(destroyType)))
+				new VABConnectionManagerStub(new PropertyProvider(new VABMapProvider(destroyType)))
 						.connectToVABElement(""));
 		prop.set("content");
 		assertEquals("content", prop.get());
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubModel.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubModel.java
index b700844..3a1580e 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubModel.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubModel.java
@@ -6,7 +6,6 @@
 
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
@@ -19,8 +18,6 @@
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElementCollection;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IBlob;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IFile;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.relationship.IRelationshipElement;
@@ -30,7 +27,6 @@
 import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.Blob;
-import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.File;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.operation.Operation;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.relationship.RelationshipElement;
@@ -57,7 +53,6 @@
 	private final String OPERATION_ID = "operation_id";
 	private final String PROPERTY_ID = "property_id";
 	private final String BLOB_ID = "blob_id";
-	private final String FILE_ID = "file_id";
 	private final String RELATIONSHIP_ELEM_ID = "relElem_id";
 	private final String SUBMODEL_ELEM_COLLECTION_ID = "elemCollection_id";
 
@@ -104,13 +99,13 @@
 	@Test
 	public void propertiesTest() throws Exception {
 		// Retrieve all properties
-		Map<String, IDataElement> props = submodel.getDataElements();
+		Map<String, IProperty> props = submodel.getProperties();
 
 		// Check if number of properties is as expected
 		assertEquals(1, props.size());
 
 		// Check the value of the property
-		IProperty prop = (IProperty) props.get(PROP);
+		IProperty prop = props.get(PROP);
 		assertEquals(100, prop.get());
 	}
 
@@ -136,16 +131,16 @@
 	public void saveAndLoadPropertyTest() throws Exception {
 		
 		// Get sample DataElements and save them into SubModel
-		Map<String, IDataElement> testData = getTestDataElements();
+		Map<String, IProperty> testData = getTestDataProperty();
 		for(ISubmodelElement element: testData.values()) {
 			submodel.addSubModelElement(element);
 		}
 		
 		// Load it
-		Map<String, IDataElement> map = submodel.getDataElements();
+		Map<String, IProperty> map = submodel.getProperties();
 		
 		// Check if it loaded correctly
-		checkDataElements(map);
+		checkProperties(map);
 	}
 	
 	@Test
@@ -168,7 +163,7 @@
 	public void saveAndLoadSubmodelElementTest() throws Exception {
 		
 		// Get sample DataElements and save them into SubModel
-		Map<String, IDataElement> testDataElements = getTestDataElements();
+		Map<String, IProperty> testDataElements = getTestDataProperty();
 		for(ISubmodelElement element: testDataElements.values()) {
 			submodel.addSubModelElement(element);
 		}
@@ -190,7 +185,7 @@
 		
 		// Check if it loaded correctly
 		// Including DataElements and Operations as they are also SubmodelElements
-		checkDataElements(map);
+		checkProperties(map);
 		checkOperations(map);
 		checkSubmodelElements(map);
 	}
@@ -222,25 +217,14 @@
 	/**
 	 * Generates test IDataElements
 	 */
-	private Map<String, IDataElement> getTestDataElements() {
-		Map<String, IDataElement> ret = new HashMap<>();
+	private Map<String, IProperty> getTestDataProperty() {
+		Map<String, IProperty> ret = new HashMap<>();
 		
 		Property property = new Property();
 		property.setIdShort(PROPERTY_ID);
 		property.set("test2");
 		
-		Blob blob = new Blob();
-		blob.setIdShort(BLOB_ID);
-		blob.setValue(new byte[] {1, 2, 3});
-		
-		File file = new File();
-		file.setIdShort(FILE_ID);
-		file.setValue("fileValue");
-		
 		ret.put(property.getIdShort(), property);
-		ret.put(blob.getIdShort(), blob);
-		ret.put(file.getIdShort(), file);
-		
 		return ret;
 	}
 	
@@ -287,25 +271,15 @@
 	/**
 	 * Checks if the given Map contains all expected IDataElements
 	 */
-	private void checkDataElements(Map<String, ? extends ISubmodelElement> actual) throws Exception {
+	private void checkProperties(Map<String, ? extends ISubmodelElement> actual) throws Exception {
 		assertNotNull(actual);
 		
-		Map<String, IDataElement> expected = getTestDataElements();
+		Map<String, IProperty> expected = getTestDataProperty();
 		
-		IProperty expectedProperty = (IProperty) expected.get(PROPERTY_ID);
+		IProperty expectedProperty = expected.get(PROPERTY_ID);
 		IProperty acutalProperty = (IProperty) actual.get(PROPERTY_ID);
 		assertNotNull(acutalProperty);
 		assertEquals(expectedProperty.get(), acutalProperty.get());
-		
-		IBlob expectedBlob = (IBlob) expected.get(BLOB_ID);
-		IBlob actualBlob = (IBlob) actual.get(BLOB_ID);
-		assertNotNull(actualBlob);
-		assertTrue(Arrays.equals(expectedBlob.getValue(), actualBlob.getValue()));
-		
-		IFile expectedFile = (IFile) expected.get(FILE_ID);
-		IFile actualFile = (IFile) actual.get(FILE_ID);
-		assertNotNull(actualFile);
-		assertEquals(expectedFile.getValue(), actualFile.getValue());
 	}
 	
 	/**
@@ -316,7 +290,7 @@
 		
 		Map<String, IOperation> expected = getTestOperations();
 		
-		IOperation expectedOperation = (IOperation) expected.get(OPERATION_ID);
+		IOperation expectedOperation = expected.get(OPERATION_ID);
 		IOperation actualOperation = (IOperation) actual.get(OPERATION_ID);
 		
 		assertNotNull(actualOperation);
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubmodelElementCollection.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubmodelElementCollection.java
index fc2974f..62f15ad 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubmodelElementCollection.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/TestConnectedSubmodelElementCollection.java
@@ -5,7 +5,6 @@
 import java.util.Map;
 
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElementCollection;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.ConnectedSubmodelElementCollection;
@@ -67,13 +66,13 @@
 	@Test
 	public void testProperty() throws Exception {
 		// Get contained properties
-		Map<String, IDataElement> props = prop.getDataElements();
+		Map<String, IProperty> props = prop.getProperties();
 
 		// Check number of properties
 		assertEquals(1, props.size());
 
 		// Retrieves collection property
-		IProperty prop = (IProperty) props.get(PROP);
+		IProperty prop = props.get(PROP);
 
 		// Check contained values
 		assertEquals(4, prop.get());
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/TestConnectedSubmodelElementFactory.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/TestConnectedSubmodelElementFactory.java
index ba3cac7..9bb6631 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/TestConnectedSubmodelElementFactory.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/TestConnectedSubmodelElementFactory.java
@@ -1,22 +1,22 @@
 package org.eclipse.basyx.testsuite.regression.submodel.metamodel.connected.submodelelement;
 
-import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.ISubmodelElement;
-import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IDataElement;
+import org.eclipse.basyx.submodel.metamodel.api.submodelelement.dataelement.IProperty;
 import org.eclipse.basyx.submodel.metamodel.api.submodelelement.operation.IOperation;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.ConnectedSubmodelElementCollection;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.ConnectedSubmodelElementFactory;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedBlob;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedFile;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedMultiLanguageProperty;
+import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedProperty;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedRange;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedReferenceElement;
-import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedProperty;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.event.ConnectedBasicEvent;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.operation.ConnectedOperation;
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.relationship.ConnectedRelationshipElement;
@@ -76,7 +76,7 @@
 		
 		Map<String, Object> values = new HashMap<>();
 		
-		values.put(SubmodelElementProvider.DATAELEMENTS, dataElements);
+		values.put(SubmodelElementProvider.PROPERTIES, dataElements);
 		values.put(SubmodelElementProvider.OPERATIONS, operations);
 		values.put(SubModel.SUBMODELELEMENT, submodelElements);
 		
@@ -97,23 +97,23 @@
 		Blob blob = new Blob();
 		blob.setIdShort(BLOB_ID);
 		ret.put(BLOB_ID, blob);
-		
+
 		File file = new File();
 		file.setIdShort(FILE_ID);
 		ret.put(FILE_ID, file);
-		
+
 		MultiLanguageProperty mlp = new MultiLanguageProperty();
 		mlp.setIdShort(MLP_ID);
 		ret.put(MLP_ID, mlp);
-		
+
 		Range range = new Range();
 		range.setIdShort(RANGE_ID);
 		ret.put(RANGE_ID, range);
-		
+
 		ReferenceElement refElement = new ReferenceElement();
 		refElement.setIdShort(REFELEMENT_ID);
 		ret.put(REFELEMENT_ID, refElement);
-		
+
 		return ret;
 	}
 
@@ -155,21 +155,16 @@
 	}
 	
 	/**
-	 * Tests if getDataElements() returns the correct value
+	 * Tests if getProperties() returns the correct value
 	 */
 	@Test
-	public void testGetDataElements() {
-		Map<String, IDataElement> dataElements =
-				ConnectedSubmodelElementFactory.getDataElements(
-						proxy, SubmodelElementProvider.DATAELEMENTS, SubmodelElementProvider.DATAELEMENTS);
+	public void testGetProperties() {
+		Map<String, IProperty> properties =
+				ConnectedSubmodelElementFactory.getProperties(
+						proxy, SubmodelElementProvider.PROPERTIES, SubmodelElementProvider.PROPERTIES);
 		
-		assertEquals(6, dataElements.size());
-		assertTrue(dataElements.get(PROPERTY_ID) instanceof ConnectedProperty);
-		assertTrue(dataElements.get(BLOB_ID) instanceof ConnectedBlob);
-		assertTrue(dataElements.get(FILE_ID) instanceof ConnectedFile);
-		assertTrue(dataElements.get(MLP_ID) instanceof ConnectedMultiLanguageProperty);
-		assertTrue(dataElements.get(RANGE_ID) instanceof ConnectedRange);
-		assertTrue(dataElements.get(REFELEMENT_ID) instanceof ConnectedReferenceElement);
+		assertEquals(1, properties.size());
+		assertTrue(properties.get(PROPERTY_ID) instanceof ConnectedProperty);
 	}
 	
 	/**
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedBlob.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedBlob.java
index 46ee307..e6866ba 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedBlob.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedBlob.java
@@ -8,7 +8,7 @@
 
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedBlob;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.Blob;
-import org.eclipse.basyx.submodel.restapi.DataElementProvider;
+import org.eclipse.basyx.submodel.restapi.PropertyProvider;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
 import org.eclipse.basyx.vab.support.TypeDestroyingProvider;
@@ -33,7 +33,7 @@
 		blob.setMimeType("mimeType");
 		
 		VABConnectionManagerStub manager = new VABConnectionManagerStub(
-				new DataElementProvider(new TypeDestroyingProvider(new VABLambdaProvider(blob))));
+				new PropertyProvider(new TypeDestroyingProvider(new VABLambdaProvider(blob))));
 
 		connectedBlob = new ConnectedBlob(manager.connectToVABElement(""));
 	}
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedFile.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedFile.java
index 5a448cd..a4e7e25 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedFile.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedFile.java
@@ -4,7 +4,7 @@
 
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedFile;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.File;
-import org.eclipse.basyx.submodel.restapi.DataElementProvider;
+import org.eclipse.basyx.submodel.restapi.PropertyProvider;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
 import org.eclipse.basyx.vab.support.TypeDestroyingProvider;
@@ -29,7 +29,7 @@
 		file.setMimeType("mimeType");
 		
 		VABConnectionManagerStub manager = new VABConnectionManagerStub(
-				new DataElementProvider(new TypeDestroyingProvider(new VABLambdaProvider(file))));
+				new PropertyProvider(new TypeDestroyingProvider(new VABLambdaProvider(file))));
 
 		connectedFile = new ConnectedFile(manager.connectToVABElement(""));
 	}
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedMultiLanguageProperty.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedMultiLanguageProperty.java
index 37a7e16..5b53146 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedMultiLanguageProperty.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedMultiLanguageProperty.java
@@ -9,7 +9,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.reference.Key;
 import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.MultiLanguageProperty;
-import org.eclipse.basyx.submodel.restapi.DataElementProvider;
+import org.eclipse.basyx.submodel.restapi.PropertyProvider;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
 import org.eclipse.basyx.vab.support.TypeDestroyingProvider;
@@ -36,7 +36,7 @@
 		MLP = new MultiLanguageProperty(ref, langStrings);
 		
 		VABConnectionManagerStub manager = new VABConnectionManagerStub(
-				new DataElementProvider(new TypeDestroyingProvider(new VABLambdaProvider(MLP))));
+				new PropertyProvider(new TypeDestroyingProvider(new VABLambdaProvider(MLP))));
 
 		// Retrieve the ConnectedContainerProperty
 		connectedMLP = new ConnectedMultiLanguageProperty(manager.connectToVABElement(""));
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedRange.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedRange.java
index da401fe..e83a023 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedRange.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedRange.java
@@ -4,7 +4,7 @@
 
 import org.eclipse.basyx.submodel.metamodel.connected.submodelelement.dataelement.ConnectedRange;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.Range;
-import org.eclipse.basyx.submodel.restapi.DataElementProvider;
+import org.eclipse.basyx.submodel.restapi.PropertyProvider;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
 import org.eclipse.basyx.vab.support.TypeDestroyingProvider;
@@ -27,7 +27,7 @@
 		range = new Range("valueType", new Integer(1), new Integer(10));
 		
 		VABConnectionManagerStub manager = new VABConnectionManagerStub(
-				new DataElementProvider(new TypeDestroyingProvider(new VABLambdaProvider(range))));
+				new PropertyProvider(new TypeDestroyingProvider(new VABLambdaProvider(range))));
 
 		connectedRange = new ConnectedRange(manager.connectToVABElement(""));
 	}
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedReferenceElement.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedReferenceElement.java
index 8c84ea0..562d7d8 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedReferenceElement.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/dataelement/TestConnectedReferenceElement.java
@@ -8,7 +8,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.reference.Key;
 import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.ReferenceElement;
-import org.eclipse.basyx.submodel.restapi.DataElementProvider;
+import org.eclipse.basyx.submodel.restapi.PropertyProvider;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
 import org.eclipse.basyx.vab.support.TypeDestroyingProvider;
@@ -34,7 +34,7 @@
 		refElem = new ReferenceElement(ref);
 		
 		VABConnectionManagerStub manager = new VABConnectionManagerStub(
-				new DataElementProvider(new TypeDestroyingProvider(new VABLambdaProvider(refElem))));
+				new PropertyProvider(new TypeDestroyingProvider(new VABLambdaProvider(refElem))));
 
 		connectedRefElem = new ConnectedReferenceElement(manager.connectToVABElement(""));
 	}
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/event/TestConnectedBasicEvent.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/event/TestConnectedBasicEvent.java
index fa3126c..58f8f91 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/event/TestConnectedBasicEvent.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/event/TestConnectedBasicEvent.java
@@ -8,7 +8,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.reference.Key;
 import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.event.BasicEvent;
-import org.eclipse.basyx.submodel.restapi.DataElementProvider;
+import org.eclipse.basyx.submodel.restapi.PropertyProvider;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
 import org.eclipse.basyx.vab.support.TypeDestroyingProvider;
@@ -34,7 +34,7 @@
 		event = new BasicEvent(ref);
 		
 		VABConnectionManagerStub manager = new VABConnectionManagerStub(
-				new DataElementProvider(new TypeDestroyingProvider(new VABLambdaProvider(event))));
+				new PropertyProvider(new TypeDestroyingProvider(new VABLambdaProvider(event))));
 
 		connectedEvent = new ConnectedBasicEvent(manager.connectToVABElement(""));
 	}
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/relationship/TestConnectedRelationshipElement.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/relationship/TestConnectedRelationshipElement.java
index 4526df0..95dd6a3 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/relationship/TestConnectedRelationshipElement.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/connected/submodelelement/relationship/TestConnectedRelationshipElement.java
@@ -8,7 +8,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.reference.Key;
 import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.relationship.RelationshipElement;
-import org.eclipse.basyx.submodel.restapi.DataElementProvider;
+import org.eclipse.basyx.submodel.restapi.PropertyProvider;
 import org.eclipse.basyx.testsuite.regression.vab.manager.VABConnectionManagerStub;
 import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
 import org.eclipse.basyx.vab.support.TypeDestroyingProvider;
@@ -36,7 +36,7 @@
 		
 		
 		VABConnectionManagerStub manager = new VABConnectionManagerStub(
-				new DataElementProvider(new TypeDestroyingProvider(new VABLambdaProvider(relElem))));
+				new PropertyProvider(new TypeDestroyingProvider(new VABLambdaProvider(relElem))));
 
 		connectedRelElem = new ConnectedRelationshipElement(manager.connectToVABElement(""));
 	}
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/submodelelement/TestSubmodelElementCollection.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/submodelelement/TestSubmodelElementCollection.java
index 61cc409..6d24f0d 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/submodelelement/TestSubmodelElementCollection.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/submodelelement/TestSubmodelElementCollection.java
@@ -25,7 +25,6 @@
 import org.eclipse.basyx.submodel.metamodel.map.reference.Key;
 import org.eclipse.basyx.submodel.metamodel.map.reference.Reference;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.SubmodelElementCollection;
-import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.DataElement;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.operation.Operation;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.operation.OperationVariable;
@@ -51,7 +50,7 @@
 	@Before
 	public void buildSubmodelElementCollection() {
 		elements1 = new ArrayList<>();
-		elements1.add(getDataElement());
+		elements1.add(getProperty());
 		elements1.add(getOperation());
 
 		elements2 = new ArrayList<ISubmodelElement>();
@@ -125,11 +124,11 @@
 		Map<String, IDataElement> dataElements = new HashMap<String, IDataElement>();
 		Map<String, IOperation> operations = new HashMap<String, IOperation>();
 		Map<String, ISubmodelElement> submodels = new HashMap<String, ISubmodelElement>();
-		dataElements.put(PROPERTY_ID, getDataElement());
+		dataElements.put(PROPERTY_ID, getProperty());
 		operations.put(OPERATION_ID, getOperation());
 		submodels.putAll(operations);
 		submodels.putAll(dataElements);
-		assertEquals(dataElements, collection.getDataElements());
+		assertEquals(dataElements, collection.getProperties());
 		assertEquals(operations, collection.getOperations());
 		assertEquals(submodels, collection.getSubmodelElements());
 	}
@@ -143,18 +142,18 @@
 		collection.addElement(property);
 		assertEquals(new Reference(new Key(KeyElements.SUBMODELELEMENTCOLLECTION, true, "", KeyType.IDSHORT)), property.getParent());
 		Map<String, ISubmodelElement> submodelElements = new HashMap<String, ISubmodelElement>();
-		submodelElements.put(PROPERTY_ID, getDataElement());
+		submodelElements.put(PROPERTY_ID, getProperty());
 		submodelElements.put(OPERATION_ID, getOperation());
 		submodelElements.put(newIdShort, property);
 		assertEquals(submodelElements, collection.getSubmodelElements());
 	}
 
 	/**
-	 * Get a dummy data element
+	 * Get a dummy property
 	 * 
-	 * @return data element
+	 * @return property
 	 */
-	private DataElement getDataElement() {
+	private Property getProperty() {
 		Referable referable = new Referable(PROPERTY_ID, "testCategory", new LangStrings("DE", "test"));
 		Reference semanticId = new Reference(new Key(KeyElements.ASSET, true, "testValue", IdentifierType.IRI));
 		Qualifiable qualifiable = new Qualifiable(new Formula(Collections
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/support/TestAASLambdaPropertyHelper.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/support/TestAASLambdaPropertyHelper.java
index 10477c2..ca8b1af 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/support/TestAASLambdaPropertyHelper.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/metamodel/map/support/TestAASLambdaPropertyHelper.java
@@ -6,7 +6,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.AASLambdaPropertyHelper;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.valuetypedef.PropertyValueTypeDef;
-import org.eclipse.basyx.submodel.restapi.DataElementProvider;
+import org.eclipse.basyx.submodel.restapi.PropertyProvider;
 import org.eclipse.basyx.vab.modelprovider.VABElementProxy;
 import org.eclipse.basyx.vab.modelprovider.lambda.VABLambdaProvider;
 import org.junit.Test;
@@ -31,7 +31,7 @@
 		});
 		
 		// Wrap in provider
-		DataElementProvider provider = new DataElementProvider(new VABLambdaProvider(temperature));
+		PropertyProvider provider = new PropertyProvider(new VABLambdaProvider(temperature));
 		ConnectedProperty connectedProperty = new ConnectedProperty(new VABElementProxy("", provider));
 
 		// Check correct property type
diff --git a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/restapi/SubModelProviderTest.java b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/restapi/SubModelProviderTest.java
index 1d92641..4aa2574 100644
--- a/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/restapi/SubModelProviderTest.java
+++ b/sdks/java/basys.sdk/src/test/java/org/eclipse/basyx/testsuite/regression/submodel/restapi/SubModelProviderTest.java
@@ -13,6 +13,7 @@
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.Property;
 import org.eclipse.basyx.submodel.metamodel.map.submodelelement.dataelement.property.valuetypedef.PropertyValueTypeDefHelper;
 import org.eclipse.basyx.submodel.restapi.SubModelProvider;
+import org.eclipse.basyx.submodel.restapi.SubmodelElementProvider;
 import org.eclipse.basyx.testsuite.regression.vab.protocol.http.TestsuiteDirectory;
 import org.eclipse.basyx.vab.exception.provider.ResourceNotFoundException;
 import org.eclipse.basyx.vab.manager.VABConnectionManager;
@@ -57,56 +58,56 @@
 	}
 
 	/**
-	 * Test creating single data elements
+	 * Test creating single property
 	 */
 	@SuppressWarnings("unchecked")
 	@Test
-	public void testCreateDataElement() {
+	public void testCreateProperty() {
 		VABElementProxy submodelElement = getConnectionManager().connectToVABElement(submodelAddr);
 
 		// Create element
 		Property prop = new Property(500);
 		prop.setIdShort("newProperty");
-		submodelElement.createValue("/submodel/dataElements", prop);
+		submodelElement.createValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "", prop);
 
 		// Read back value
 		Map<String, Object> result = (Map<String, Object>) submodelElement
-				.getModelPropertyValue("/submodel/dataElements/newProperty/value");
+				.getModelPropertyValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "/newProperty/value");
 		assertEquals(500, result.get(Property.VALUE));
 	}
 
 	/**
-	 * Test reading single data elements
+	 * Test reading single property
 	 */
 	@SuppressWarnings("unchecked")
 	@Test
-	public void testReadDataElement() {
+	public void testReadProperty() {
 		VABElementProxy submodelElement = getConnectionManager().connectToVABElement(submodelAddr);
 
 		// Read list of properties
-		Object result = submodelElement.getModelPropertyValue("/submodel/dataElements");
+		Object result = submodelElement.getModelPropertyValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "");
 		Collection<Map<String, Object>> propertySet = (Collection<Map<String, Object>>) result;
 		HashMap<String, Object> property = (HashMap<String, Object>) propertySet.stream().filter(elem -> elem.get(Identifiable.IDSHORT).equals("integerProperty")).findFirst().get();
 		assertEquals(123, property.get(Property.VALUE));
 
 		// Read whole property
-		result = submodelElement.getModelPropertyValue("/submodel/dataElements/integerProperty");
+		result = submodelElement.getModelPropertyValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty");
 		property = (HashMap<String, Object>) result;
 		assertEquals(123, property.get(Property.VALUE));
 
 		// Read idShort
-		result = submodelElement.getModelPropertyValue("/submodel/dataElements/stringProperty");
+		result = submodelElement.getModelPropertyValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "/stringProperty");
 		property = (HashMap<String, Object>) result;
 		assertEquals("stringProperty", property.get(Identifiable.IDSHORT));
 
 		// Read single value
 		Map<String, Object> resMap = (Map<String, Object>) submodelElement
-				.getModelPropertyValue("/submodel/dataElements/stringProperty/value");
+				.getModelPropertyValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "/stringProperty/value");
 		assertEquals("Test", resMap.get(Property.VALUE));
 
 		// Read null value
 		resMap = (Map<String, Object>) submodelElement
-				.getModelPropertyValue("/submodel/dataElements/nullProperty/value");
+				.getModelPropertyValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "/nullProperty/value");
 		assertEquals(null, resMap.get(Property.VALUE));
 
 		// Read container property
@@ -124,11 +125,11 @@
 	}
 
 	/**
-	 * Test updating single data elements
+	 * Test updating single property
 	 */
 	@SuppressWarnings("unchecked")
 	@Test
-	public void testUpdateDataElement() {
+	public void testUpdateProperty() {
 		VABElementProxy submodelElement = getConnectionManager().connectToVABElement(submodelAddr);
 
 		// Wrap object before updating element
@@ -137,22 +138,22 @@
 		updatedElement.put("valueType", PropertyValueTypeDefHelper.getTypeWrapperFromObject(3));
 
 		// Update element
-		submodelElement.setModelPropertyValue("/submodel/dataElements/integerProperty/value", updatedElement);
+		submodelElement.setModelPropertyValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty/value", updatedElement);
 
 		// Check result
 		Map<String, Object> result = (Map<String, Object>) submodelElement
-				.getModelPropertyValue("/submodel/dataElements/integerProperty");
+				.getModelPropertyValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty");
 		assertEquals(3, result.get(Property.VALUE));
 	}
 
 	/**
-	 * Test reading all data elements of the submodel
+	 * Test reading all properties of the submodel
 	 */
 	@SuppressWarnings("unchecked")
 	@Test
-	public void testReadDataElements() {
+	public void testReadProperties() {
 		VABElementProxy submodel = getConnectionManager().connectToVABElement(submodelAddr);
-		Collection<Map<String, Object>> set = (Collection<Map<String, Object>>) submodel.getModelPropertyValue("/submodel/dataElements");
+		Collection<Map<String, Object>> set = (Collection<Map<String, Object>>) submodel.getModelPropertyValue("/submodel/" + SubmodelElementProvider.PROPERTIES);
 		// Should be two properties, one collection and four operations
 		assertEquals(3, set.size());
 	}
@@ -192,18 +193,18 @@
 	}
 
 	/**
-	 * Test deleting a single data element
+	 * Test deleting a single property
 	 */
 	@Test
-	public void testDeleteDataElement() {
+	public void testDeleteProperty() {
 		VABElementProxy submodelElement = getConnectionManager().connectToVABElement(submodelAddr);
 
 		// Delete property
-		submodelElement.deleteValue("/submodel/dataElements/integerProperty");
+		submodelElement.deleteValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty");
 
 		// Test, if it has been deleted
 		try {
-			submodelElement.getModelPropertyValue("/submodel/dataElements/integerProperty");
+			submodelElement.getModelPropertyValue("/submodel/" + SubmodelElementProvider.PROPERTIES + "/integerProperty");
 			fail();
 		} catch (ResourceNotFoundException e) {}
 	}