You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ar...@apache.org on 2018/08/20 06:01:27 UTC

[3/3] olingo-odata4 git commit: [OLINGO-1062]Cannot consume Odata Reference Services with Annotations

[OLINGO-1062]Cannot consume Odata Reference Services with Annotations


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/8cbe468c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/8cbe468c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/8cbe468c

Branch: refs/heads/master
Commit: 8cbe468c2a9c9063c41aba46726f744843ca127d
Parents: 58ec035
Author: Archana Rai <ar...@sap.com>
Authored: Mon Aug 20 11:31:08 2018 +0530
Committer: Archana Rai <ar...@sap.com>
Committed: Mon Aug 20 11:31:08 2018 +0530

----------------------------------------------------------------------
 .../apache/olingo/client/core/MetadataTest.java |  242 ++++
 .../org/apache/olingo/client/core/$metadata.xml |  779 +++++++++++
 .../org/apache/olingo/client/core/UI.xml        |  467 +++++++
 .../apache/olingo/client/core/annotations.xml   | 1276 ++++++++++++++++++
 .../org/apache/olingo/commons/api/edm/Edm.java  |   20 +
 .../commons/api/edm/EdmBindingTarget.java       |    7 +
 .../commons/api/edm/EdmEntityContainer.java     |    8 +
 .../olingo/commons/api/edm/EdmProperty.java     |    7 +
 .../api/edm/provider/CsdlAnnotation.java        |   47 +
 .../provider/annotation/CsdlAnnotationPath.java |   22 +
 .../api/edm/provider/annotation/CsdlApply.java  |   59 +
 .../api/edm/provider/annotation/CsdlCast.java   |   55 +
 .../edm/provider/annotation/CsdlCollection.java |   37 +
 .../annotation/CsdlConstantExpression.java      |   24 +
 .../api/edm/provider/annotation/CsdlIf.java     |   46 +
 .../api/edm/provider/annotation/CsdlIsOf.java   |   54 +
 .../provider/annotation/CsdlLabeledElement.java |   44 +
 .../annotation/CsdlLabeledElementReference.java |   21 +
 .../CsdlLogicalOrComparisonExpression.java      |   47 +
 .../annotation/CsdlNavigationPropertyPath.java  |   21 +
 .../api/edm/provider/annotation/CsdlNull.java   |   38 +
 .../api/edm/provider/annotation/CsdlPath.java   |   21 +
 .../provider/annotation/CsdlPropertyPath.java   |   21 +
 .../provider/annotation/CsdlPropertyValue.java  |   46 +
 .../api/edm/provider/annotation/CsdlRecord.java |   62 +
 .../api/edm/provider/annotation/CsdlUrlRef.java |   40 +
 .../olingo/commons/core/edm/AbstractEdm.java    |   95 ++
 .../core/edm/AbstractEdmBindingTarget.java      |   11 +
 .../core/edm/EdmEntityContainerImpl.java        |  432 +++++-
 .../commons/core/edm/EdmPropertyImpl.java       |   23 +
 .../commons/core/edm/EdmProviderImpl.java       |  291 +++-
 .../olingo/commons/core/edm/EdmTypeInfo.java    |   17 +-
 .../commons/core/edm/EdmImplCallCreateTest.java |   41 +
 .../core/edm/provider/EdmSchemaImplTest.java    |    2 +-
 .../uri/queryoption/apply/DynamicProperty.java  |    5 +
 35 files changed, 4407 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
index 0e2dd0f..3fc21d9 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/MetadataTest.java
@@ -32,6 +32,7 @@ import org.apache.olingo.client.api.edm.xml.XMLMetadata;
 import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.edm.Edm;
 import org.apache.olingo.commons.api.edm.EdmAction;
+import org.apache.olingo.commons.api.edm.EdmActionImport;
 import org.apache.olingo.commons.api.edm.EdmAnnotation;
 import org.apache.olingo.commons.api.edm.EdmAnnotations;
 import org.apache.olingo.commons.api.edm.EdmComplexType;
@@ -41,13 +42,17 @@ import org.apache.olingo.commons.api.edm.EdmEntityType;
 import org.apache.olingo.commons.api.edm.EdmEnumType;
 import org.apache.olingo.commons.api.edm.EdmFunction;
 import org.apache.olingo.commons.api.edm.EdmFunctionImport;
+import org.apache.olingo.commons.api.edm.EdmNavigationProperty;
 import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeKind;
 import org.apache.olingo.commons.api.edm.EdmProperty;
 import org.apache.olingo.commons.api.edm.EdmSchema;
+import org.apache.olingo.commons.api.edm.EdmSingleton;
 import org.apache.olingo.commons.api.edm.EdmTerm;
 import org.apache.olingo.commons.api.edm.EdmTypeDefinition;
 import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.edm.annotation.EdmExpression;
+import org.apache.olingo.commons.api.edm.annotation.EdmPropertyValue;
+import org.apache.olingo.commons.api.edm.annotation.EdmRecord;
 import org.apache.olingo.commons.api.edm.annotation.EdmUrlRef;
 import org.apache.olingo.commons.api.edm.constants.EdmTypeKind;
 import org.apache.olingo.commons.api.edm.provider.CsdlAnnotation;
@@ -525,4 +530,241 @@ public class MetadataTest extends AbstractTest {
       assertEquals("AnnotationPath", expression.asDynamic().getExpressionName());
     }
   }
+  
+  @Test
+ public void readAnnotationOnAnEntityType() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   EdmEntityType entity = edm.getEntityTypeWithAnnotations(
+       new FullQualifiedName("SEPMRA_SO_MAN2", "SEPMRA_C_CountryVHType"));
+   assertEquals(1, entity.getAnnotations().size());
+   assertNotNull(entity.getAnnotations().get(0).getTerm());
+   assertEquals("HeaderInfo", entity.getAnnotations().get(0).getTerm().getName());
+   assertNotNull(entity.getAnnotations().get(0).getExpression());
+   
+   EdmEntityType entity1 = edm.getEntityTypeWithAnnotations(
+       new FullQualifiedName("SEPMRA_SO_MAN2", "SEPMRA_C_SalesOrderCustCntctVHType"));
+   EdmAnnotation annotation = entity1.getAnnotations().get(0);
+   assertNotNull(annotation);
+   assertEquals(5, entity1.getAnnotations().size());
+   assertEquals("FieldGroup", annotation.getTerm().getName());
+   assertEquals("ContactPerson", annotation.getQualifier());
+   EdmExpression expression = annotation.getExpression();
+   assertNotNull(expression);
+   assertTrue(expression.isDynamic());
+   EdmRecord record = expression.asDynamic().asRecord();
+   assertNotNull(record);
+   assertEquals(2, record.asRecord().getPropertyValues().size());
+   List<EdmPropertyValue> propertyValues = record.asRecord().getPropertyValues();
+   assertEquals("Data", propertyValues.get(0).getProperty());
+   assertTrue(propertyValues.get(0).getValue().isDynamic());
+   List<EdmExpression> items = propertyValues.get(0).getValue().asDynamic().asCollection().getItems();
+   assertEquals(4, items.size());
+   assertEquals("Label", propertyValues.get(1).getProperty());
+   assertEquals("Contact Person", propertyValues.get(1).getValue().asConstant().asPrimitive());
+   
+   assertEquals(1, entity1.getNavigationProperty("to_Customer").getAnnotations().size());
+   EdmNavigationProperty navProperty = entity1.getNavigationProperty("to_Customer");
+   assertEquals("ThingPerspective", navProperty.
+       getAnnotations().get(0).getTerm().getName());
+ }
+ 
+ @Test
+ public void readAnnotationOnAProperty() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   EdmEntityType entity = edm.getEntityTypeWithAnnotations(
+       new FullQualifiedName("SEPMRA_SO_MAN2", "I_DraftAdministrativeDataType"));
+   EdmProperty property = (EdmProperty) entity.getProperty("DraftUUID");
+   assertNotNull(property.getAnnotations());
+   assertEquals(1, property.getAnnotations().size());
+   assertEquals("UI.HeaderInfo", property.getAnnotations().get(0).getTerm().
+       getFullQualifiedName().getFullQualifiedNameAsString());
+ }
+ 
+ @Test
+ public void readAnnotationOnActionImport() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   EdmEntityContainer container = edm.getEntityContainer();
+   EdmActionImport actionImport = container.getActionImport("AIRTString");
+   assertEquals(3, actionImport.getAnnotations().size());
+   assertEquals("Description", actionImport.getAnnotations().get(0).getTerm().getName());
+   assertEquals("HeaderInfo", actionImport.getAnnotations().get(2).getTerm().getName());
+ }
+ 
+ @Test
+ public void readAnnotationOnASingleton() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   EdmEntityContainer container = edm.getEntityContainer();
+   EdmSingleton singleton = container.getSingleton("SINav");
+   assertEquals(1, singleton.getAnnotations().size());
+   assertEquals("HeaderInfo", singleton.getAnnotations().get(0).getTerm().getName());
+   
+   EdmEntityType singletonET = singleton.getEntityType();
+   EdmProperty singlComplexProp = (EdmProperty)singletonET.getProperty("ComplexProperty");
+   EdmComplexType singlCompType = (EdmComplexType) singlComplexProp.getTypeWithAnnotations();
+   EdmNavigationProperty singlNavProp = (EdmNavigationProperty) singlCompType.
+       getNavigationProperty("NavPropertyDraftAdministrativeDataType");
+   assertEquals(1, singlNavProp.getAnnotations().size());
+   assertEquals("AdditionalInfo", singlNavProp.getAnnotations().get(0).getTerm().getName());
+ }
+ 
+ @Test
+ public void readAnnotationOnBoundFunction() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   List<String> parameterNames = new ArrayList<String>();
+   EdmFunction function = edm.getBoundFunction(new FullQualifiedName("SEPMRA_SO_MAN2", "_FC_RTTimeOfDay_"), 
+       new FullQualifiedName("Edm","TimeOfDay"), false, parameterNames);
+   assertEquals(1, function.getAnnotations().size());
+   assertEquals("HeaderInfo", function.getAnnotations().get(0).getTerm().getName());
+   
+   // Annotations on Bound Function parameter
+   assertEquals(1, function.getParameter("ParameterTimeOfDay").getAnnotations().size());
+   assertEquals("HeaderInfo", function.getParameter("ParameterTimeOfDay")
+       .getAnnotations().get(0).getTerm().getName());
+ }
+ 
+ @Test
+ public void readAnnotationOnSchema() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   EdmSchema schema = edm.getSchema("sepmra_so_man2_anno_mdl.v1");
+   assertNotNull(schema);
+   assertEquals(112, schema.getAnnotationGroups().size());
+   
+   EdmAnnotations annotations = edm.getSchema("SEPMRA_SO_MAN2").getAnnotationGroups().get(22);
+   assertEquals("SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType", annotations.getTargetPath());
+   assertEquals(1, annotations.getAnnotations().size());
+   assertEquals("SelectionFields", annotations.getAnnotations()
+       .get(0).getTerm().getName());
+   assertTrue(annotations.getAnnotations().get(0).getExpression().isDynamic());
+ }
+ 
+ @Test
+ public void readAnnotationOnContainer() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   EdmEntityContainer container = edm.getEntityContainer();
+   assertEquals(1, container.getAnnotations().size());
+   assertEquals("HeaderInfo", container.getAnnotations().get(0).getTerm().getName());
+ }
+ 
+ @Test
+ public void readAnnotationOnComplexType() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   EdmComplexType complexType = edm.getComplexTypeWithAnnotations(
+       new FullQualifiedName("SEPMRA_SO_MAN2", "CTPrim"));
+   assertEquals(1, complexType.getAnnotations().size());
+   assertEquals("HeaderInfo", complexType.getAnnotations().get(0).getTerm().getName());
+   // Annotations on complex type property
+   EdmProperty complexTypeProp = (EdmProperty) complexType.getProperty("PropertyInt16");
+   assertEquals(1, complexTypeProp.getAnnotations().size());
+   assertEquals("HeaderInfo", complexTypeProp.getAnnotations().get(0).getTerm().getName());
+   // Annotations on complex type navigation property
+   EdmNavigationProperty complexTypeNavProp = complexType.
+       getNavigationProperty("NavPropertyDraftAdministrativeDataType");
+   assertEquals(1, complexTypeNavProp.getAnnotations().size());
+   assertEquals("HeaderInfo", complexTypeNavProp.getAnnotations().get(0).getTerm().getName());
+ }
+ 
+ @Test
+ public void readAnnotationOnTypeDefinitions() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   EdmTypeDefinition typeDefn = edm.getTypeDefinition(new FullQualifiedName("SEPMRA_SO_MAN2", "TDString"));
+   assertEquals(1, typeDefn.getAnnotations().size());
+   assertEquals("HeaderInfo", typeDefn.getAnnotations().get(0).getTerm().getName());
+ }
+ 
+ @Test
+ public void readAnnotationOnBoundActions() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   EdmAction action = edm.getBoundAction(new FullQualifiedName("SEPMRA_SO_MAN2", "BA_RTCountryVHType"), 
+       new FullQualifiedName("SEPMRA_SO_MAN2","I_DraftAdministrativeDataType"), false);
+   assertEquals(1, action.getAnnotations().size());
+   assertEquals("HeaderInfo", action.getAnnotations().get(0).getTerm().getName());
+   
+   //Annotations on Bound Action parameter
+   assertEquals(1, action.getParameter("ParameterCTPrim").getAnnotations().size());
+   assertEquals("HeaderInfo", action.getParameter("ParameterCTPrim")
+       .getAnnotations().get(0).getTerm().getName());
+ }
+ 
+ @Test
+ public void readAnnotationOnEntitySet() {
+   final Edm edm = fetchEdm();
+   assertNotNull(edm);
+   EdmEntityContainer container = edm.getEntityContainer();
+   EdmEntitySet entitySet = container.getEntitySet("I_DraftAdministrativeData");
+   assertEquals(1, entitySet.getAnnotations().size());
+   assertEquals("HeaderInfo", entitySet.getAnnotations().get(0).getTerm().getName());
+   
+   
+   
+   EdmEntityType entityType50 = edm.getEntityTypeWithAnnotations(
+       new FullQualifiedName("SEPMRA_SO_MAN2", "I_DraftAdministrativeDataType"));
+   assertEquals(1, ((EdmProperty)entityType50.getProperty("DraftUUID")).getAnnotations().size());
+   assertEquals("UI.HeaderInfo", ((EdmProperty)entityType50.getProperty("DraftUUID")).
+       getAnnotations().get(0).getTerm().getFullQualifiedName().getFullQualifiedNameAsString());
+   
+   
+   
+   // Annotations on properties of entity type included in EntitySet
+   EdmEntityType entityType3 = entitySet.getEntityTypeWithAnnotations();
+   assertEquals(2, ((EdmProperty)entityType3.getProperty("DraftUUID")).getAnnotations().size());
+   assertEquals("AdditionalInfo", ((EdmProperty)entityType3.getProperty("DraftUUID"))
+       .getAnnotations().get(0).getTerm().getName());
+   assertEquals("HeaderInfo", ((EdmProperty)entityType3.getProperty("DraftUUID"))
+       .getAnnotations().get(1).getTerm().getName());
+   
+   // Annotations on navigation properties of entity type included in EntitySet
+   EdmEntitySet entitySet1 = container.getEntitySet("SEPMRA_C_SalesOrderCustCntctVH");
+   EdmEntityType entityType5 = entitySet1.getEntityTypeWithAnnotations();
+   assertEquals(2, ((EdmNavigationProperty)entityType5.getNavigationProperty("to_Customer"))
+       .getAnnotations().size());
+   assertEquals("AdditionalInfo", ((EdmNavigationProperty)entityType5
+       .getNavigationProperty("to_Customer"))
+       .getAnnotations().get(0).getTerm().getName());
+   assertEquals("HeaderInfo", ((EdmNavigationProperty)entityType5
+       .getNavigationProperty("to_Customer"))
+       .getAnnotations().get(1).getTerm().getName());
+   
+   
+   
+   EdmComplexType complexType = edm.getComplexTypeWithAnnotations(
+       new FullQualifiedName("SEPMRA_SO_MAN2", "CTPrim"));
+   EdmProperty complexTypeProp = (EdmProperty) complexType.getProperty("PropertyInt16");
+   assertEquals(1, complexTypeProp.getAnnotations().size());
+   assertEquals("HeaderInfo", complexTypeProp.getAnnotations().get(0).getTerm().getName());
+   
+   
+   
+   // Annotations on properties of complex properties of entity type included in EntitySet
+   EdmProperty complexProp = (EdmProperty) entityType3.getProperty("ComplexProperty");
+   EdmComplexType compType = (EdmComplexType) complexProp.getTypeWithAnnotations();
+   EdmProperty prop = (EdmProperty) compType.getProperty("PropertyInt16");
+   assertEquals(1, prop.getAnnotations().size());
+   assertEquals("AdditionalInfo", prop.getAnnotations().get(0).getTerm().getName());
+   
+   // Annotations on navigation properties of complex properties of entity type included in EntitySet
+   EdmNavigationProperty navProp = (EdmNavigationProperty) compType
+       .getProperty("NavPropertyDraftAdministrativeDataType");
+   assertEquals(1, navProp.getAnnotations().size());
+   assertEquals("AdditionalInfo", navProp.getAnnotations().get(0).getTerm().getName());
+ }
+ 
+ private Edm fetchEdm() {
+   List<InputStream> streams = new ArrayList<InputStream>();
+   streams.add(getClass().getResourceAsStream("annotations.xml"));
+   streams.add(getClass().getResourceAsStream("VOC_Core.xml"));
+   streams.add(getClass().getResourceAsStream("UI.xml"));
+   final Edm edm = client.getReader().readMetadata(getClass().getResourceAsStream("$metadata.xml"),
+       streams);
+  return edm;
+ }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/client-core/src/test/resources/org/apache/olingo/client/core/$metadata.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/$metadata.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/$metadata.xml
new file mode 100644
index 0000000..4a29589
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/$metadata.xml
@@ -0,0 +1,779 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" Version="1.0">
+  <edmx:Reference xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Uri="../v4.0/cs02/vocabularies/Org.OData.Common.V1.xml">
+    <edmx:Include Namespace="com.vocabularies.Common.v1" Alias="Common"/>
+  </edmx:Reference>
+  <edmx:Reference xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Uri="../v4.0/cs02/vocabularies/Org.OData.Core.V1.xml">
+    <edmx:Include Namespace="Org.OData.Core.V1" Alias="Core"/>
+  </edmx:Reference>
+  <edmx:DataServices m:DataServiceVersion="2.0">
+    <Schema xmlns="http://schemas.microsoft.com/ado/2008/09/edm" Namespace="SEPMRA_SO_MAN2" xml:lang="en">
+    <EnumType Name="ENString" IsFlags="true" UnderlyingType="Edm.Int16">
+		<Member Name="String1" Value="1"/>
+		<Member Name="String2" Value="2"/>
+		<Member Name="String3" Value="4"/>
+		</EnumType>
+	<TypeDefinition Name="TDString" UnderlyingType="Edm.String" MaxLength="15"/>
+	  <ComplexType Name="CTPrim">
+		<Property Name="PropertyInt16" Type="Edm.Int16"/>
+		<NavigationProperty Name="NavPropertyDraftAdministrativeDataType" Type="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType"/>
+	  </ComplexType>
+      <EntityType Name="I_DraftAdministrativeDataType">
+        <Key>
+          <PropertyRef Name="DraftUUID"/>
+        </Key>
+        <Property Name="DraftUUID" Type="Edm.Guid" Nullable="false"/>
+        <Property Name="ComplexProperty" Type="SEPMRA_SO_MAN2.CTPrim" Nullable="true"/>
+        <Property Name="DraftEntityType" Type="Edm.String" MaxLength="30"/>
+        <Property Name="CreationDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
+        <Property Name="CreatedByUser" Type="Edm.String" MaxLength="12"/>
+        <Property Name="LastChangeDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
+        <Property Name="LastChangedByUser" Type="Edm.String" MaxLength="12"/>
+        <Property Name="DraftAccessType" Type="Edm.String" MaxLength="1"/>
+        <Property Name="ProcessingStartDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
+        <Property Name="InProcessByUser" Type="Edm.String" MaxLength="12"/>
+        <Property Name="DraftIsKeptByUser" Type="Edm.Boolean"/>
+        <Property Name="EnqueueStartDateTime" Type="Edm.DateTimeOffset" Precision="7"/>
+        <Property Name="DraftIsCreatedByMe" Type="Edm.Boolean"/>
+        <Property Name="DraftIsLastChangedByMe" Type="Edm.Boolean"/>
+        <Property Name="DraftIsProcessedByMe" Type="Edm.Boolean"/>
+        <Property Name="CreatedByUserDescription" Type="Edm.String" MaxLength="80"/>
+        <Property Name="LastChangedByUserDescription" Type="Edm.String" MaxLength="80"/>
+        <Property Name="InProcessByUserDescription" Type="Edm.String" MaxLength="80"/>
+      </EntityType>
+      <EntityType Name="SEPMRA_C_SalesOrderCustCntctVHType">
+        <Key>
+          <PropertyRef Name="ContactPerson"/>
+        </Key>
+        <Property Name="ContactPerson" Type="Edm.String" Nullable="false" MaxLength="10"/>
+        <Property Name="Customer" Type="Edm.String" MaxLength="10"/>
+        <Property Name="FirstName" Type="Edm.String" MaxLength="40"/>
+        <Property Name="LastName" Type="Edm.String" MaxLength="40"/>
+        <Property Name="EmailAddress" Type="Edm.String" MaxLength="255"/>
+        <NavigationProperty Name="to_Customer" Type="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType"/>
+      </EntityType>
+      <EntityType Name="SEPMRA_C_CountryVHType">
+        <Key>
+          <PropertyRef Name="Country"/>
+        </Key>
+        <Property Name="Country" Type="Edm.String" Nullable="false" MaxLength="3"/>
+        <Property Name="CountryT" Type="Edm.String" MaxLength="50"/>
+      </EntityType>
+      <Action Name="BA_RTCountryVHType" IsBound="true">
+		<Parameter Name="ParameterCountryType" Type="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType" Nullable="false"/>
+		<ReturnType Type="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType"/>
+	  </Action>
+	  <Action Name="BA_RTCountryVHType" IsBound="true">
+		<Parameter Name="ParameterSalesOrder" Type="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType" Nullable="false"/>
+		<Parameter Name="ParameterCTPrim" Type="SEPMRA_SO_MAN2.CTPrim" Nullable="false"/>
+		<ReturnType Type="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType"/>
+	  </Action>
+	  <Action Name="BA_RTCountryVHType" IsBound="true">
+		<Parameter Name="ParameterDraftAdministrativeDataType" Type="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType" Nullable="false"/>
+		<Parameter Name="ParameterCTPrim" Type="SEPMRA_SO_MAN2.CTPrim" Nullable="false"/>
+		<ReturnType Type="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType"/>
+	  </Action>
+	  <Function Name="_FC_RTTimeOfDay_" IsBound="true" IsComposable="true">
+		<Parameter Name="ParameterTimeOfDay" Type="Edm.TimeOfDay" Nullable="false"/>
+		<ReturnType Type="Edm.TimeOfDay"/>
+	  </Function>
+	  <Function Name="_FC_RTTimeOfDay_" IsBound="true" IsComposable="true">
+		<Parameter Name="ParameterTimeOfDay" Type="Edm.TimeOfDay" Nullable="false"/>
+		<Parameter Name="ParameterAny" Type="Edm.String" Nullable="false"/>
+		<ReturnType Type="Edm.TimeOfDay"/>
+	  </Function>
+      <EntityContainer Name="SEPMRA_SO_MAN2_Entities" m:IsDefaultEntityContainer="true">
+        <EntitySet Name="I_DraftAdministrativeData" EntityType="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType"/>
+        <EntitySet Name="SEPMRA_C_SalesOrderCustCntctVH" EntityType="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType">
+        <NavigationPropertyBinding Path="Customer" Target="SEPMRA_C_CountryVH" />
+        </EntitySet>
+        <EntitySet Name="SEPMRA_C_CountryVH" EntityType="SEPMRA_SO_MAN2.SEPMRA_C_CountryVHType"/>
+        <ActionImport Name="AIRTString" Action="Namespace1_Alias.UARTString">
+			<Annotation Term="Core.Description">
+				<String>Action Import returns a simple String</String>
+			</Annotation>
+			<Annotation Term="SEPMRA_SO_MAN2.Data">
+				<Bool>true</Bool>
+			</Annotation>
+		</ActionImport>
+		<Singleton Name="SINav" Type="SEPMRA_SO_MAN2.I_DraftAdministrativeDataType">
+			<NavigationPropertyBinding Path="NavPropertyDraftAdministrativeDataType" Target="I_DraftAdministrativeData"/>
+		</Singleton>
+      </EntityContainer>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTP">
+        <Annotation Term="Common.DraftRoot">
+          <Record>
+            <PropertyValue Property="ActivationAction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTPActivation"/>
+            <PropertyValue Property="EditAction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTPEdit"/>
+            <PropertyValue Property="PreparationAction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTPPreparation"/>
+            <PropertyValue Property="ValidationFunction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTPValidation"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_ScheduleLineTP">
+        <Annotation Term="Common.DraftNode">
+          <Record>
+            <PropertyValue Property="PreparationAction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_ScheduleLineTPPreparation"/>
+            <PropertyValue Property="ValidationFunction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_ScheduleLineTPValidation"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.DraftActivationVia">
+          <Collection>
+            <String>SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTP</String>
+          </Collection>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderItemTP">
+        <Annotation Term="Common.DraftNode">
+          <Record>
+            <PropertyValue Property="PreparationAction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderItemTPPreparation"/>
+            <PropertyValue Property="ValidationFunction" String="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderItemTPValidation"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.DraftActivationVia">
+          <Collection>
+            <String>SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderTP</String>
+          </Collection>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType/Customer">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Sales Order Customer"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderCustomer"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="Customer"/>
+                  <PropertyValue Property="ValueListProperty" String="Customer"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="CompanyName"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustomerVHType/Country">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Country"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_CountryVH"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="Country"/>
+                  <PropertyValue Property="ValueListProperty" String="Country"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="CountryT"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/SalesOrder">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Sales Order"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderTP"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrder"/>
+                  <PropertyValue Property="ValueListProperty" String="SalesOrder"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/Product">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Product Value Help"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderProductVH"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="Product"/>
+                  <PropertyValue Property="ValueListProperty" String="Product"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="Name"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="MainProductCategory"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="Supplier"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="SupplierName"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType/TransactionCurrency">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Currency"/>
+            <PropertyValue Property="CollectionPath" String="I_Currency"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="TransactionCurrency"/>
+                  <PropertyValue Property="ValueListProperty" String="Currency"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="Currency_Text"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderPartyVHType/Country">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Country"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_CountryVH"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="Country"/>
+                  <PropertyValue Property="ValueListProperty" String="Country"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="CountryT"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/CustomerContact">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Customer Contact Person"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderCustCntctVH"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SoldToParty"/>
+                  <PropertyValue Property="ValueListProperty" String="Customer"/>
+                </Record>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="CustomerContact"/>
+                  <PropertyValue Property="ValueListProperty" String="ContactPerson"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="FirstName"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="LastName"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="EmailAddress"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SoldToParty">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Customer"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderCustomerVH"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SoldToParty"/>
+                  <PropertyValue Property="ValueListProperty" String="Customer"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="CompanyName"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="CityName"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="Country"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="CountryT"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/BillToParty">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Party"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderPartyVH"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="BillToParty"/>
+                  <PropertyValue Property="ValueListProperty" String="Party"/>
+                </Record>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SoldToParty"/>
+                  <PropertyValue Property="ValueListProperty" String="Customer"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="PartyName"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="CityName"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="Country"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="CountryT"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/ShipToParty">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Party"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderPartyVH"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="ShipToParty"/>
+                  <PropertyValue Property="ValueListProperty" String="Party"/>
+                </Record>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SoldToParty"/>
+                  <PropertyValue Property="ValueListProperty" String="Customer"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="PartyName"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="CityName"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="Country"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="CountryT"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/CreatedByUser">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Sales Order Reviser"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderReviser"/>
+            <PropertyValue Property="SearchSupported" Bool="false"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="CreatedByUser"/>
+                  <PropertyValue Property="ValueListProperty" String="UserID"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/LastChangedByUser">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Sales Order Reviser"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderReviser"/>
+            <PropertyValue Property="SearchSupported" Bool="false"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="LastChangedByUser"/>
+                  <PropertyValue Property="ValueListProperty" String="UserID"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/TransactionCurrency">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Currency"/>
+            <PropertyValue Property="CollectionPath" String="I_Currency"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="TransactionCurrency"/>
+                  <PropertyValue Property="ValueListProperty" String="Currency"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="Currency_Text"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SalesOrderOverallStatus">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Status"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderStatus"/>
+            <PropertyValue Property="SearchSupported" Bool="false"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrderOverallStatus"/>
+                  <PropertyValue Property="ValueListProperty" String="SalesOrderOverallStatus"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="SalesOrderOverallStatus_Text"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SalesOrderPaymentMethod">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="EPM Demo: Sales Order Payment Method Values"/>
+            <PropertyValue Property="CollectionPath" String="Sepm_I_SlsordPaymentMethod"/>
+            <PropertyValue Property="SearchSupported" Bool="false"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrderPaymentMethod"/>
+                  <PropertyValue Property="ValueListProperty" String="SalesOrderPaymentMethod"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="SalesOrderPaymentMethod_Text"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType/SalesOrderPaymentTerms">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="EPM Demo: Sales Order Payment Terms"/>
+            <PropertyValue Property="CollectionPath" String="Sepm_I_SlsordPaymentTerms"/>
+            <PropertyValue Property="SearchSupported" Bool="false"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrderPaymentTerms"/>
+                  <PropertyValue Property="ValueListProperty" String="SalesOrderPaymentTerms"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="SalesOrderPaymentTerms_Text"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/SalesOrder">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Sales Order"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderTP"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrder"/>
+                  <PropertyValue Property="ValueListProperty" String="SalesOrder"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/SalesOrderItem">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Sales Order Item"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_C_SalesOrderItemTP"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrder"/>
+                  <PropertyValue Property="ValueListProperty" String="SalesOrder"/>
+                </Record>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="SalesOrderItem"/>
+                  <PropertyValue Property="ValueListProperty" String="SalesOrderItem"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType/QuantityUnit">
+        <Annotation Term="Common.ValueList">
+          <Record>
+            <PropertyValue Property="Label" String="Quantity Unit"/>
+            <PropertyValue Property="CollectionPath" String="SEPMRA_I_QuantityUnit"/>
+            <PropertyValue Property="SearchSupported" Bool="true"/>
+            <PropertyValue Property="Parameters">
+              <Collection>
+                <Record Type="Common.ValueListParameterInOut">
+                  <PropertyValue Property="LocalDataProperty" PropertyPath="QuantityUnit"/>
+                  <PropertyValue Property="ValueListProperty" String="UnitOfMeasure"/>
+                </Record>
+                <Record Type="Common.ValueListParameterDisplayOnly">
+                  <PropertyValue Property="ValueListProperty" String="UnitOfMeasure_Text"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderCustCntctVHType">
+        <Annotation Term="UI.SelectionFields">
+          <Collection>
+            <PropertyPath>ContactPerson</PropertyPath>
+          </Collection>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType">
+        <Annotation Term="Common.SemanticKey">
+          <Collection>
+            <PropertyPath>SalesOrderItem</PropertyPath>
+            <PropertyPath>SalesOrder</PropertyPath>
+          </Collection>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderPartyVHType">
+        <Annotation Term="Common.SemanticKey">
+          <Collection>
+            <PropertyPath>Party</PropertyPath>
+          </Collection>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType">
+        <Annotation Term="Common.SemanticKey">
+          <Collection>
+            <PropertyPath>SalesOrder</PropertyPath>
+          </Collection>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType">
+        <Annotation Term="Common.SemanticKey">
+          <Collection>
+            <PropertyPath>ScheduleLine</PropertyPath>
+            <PropertyPath>SalesOrderItem</PropertyPath>
+            <PropertyPath>SalesOrder</PropertyPath>
+          </Collection>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_SO_MAN2_Entities/SEPMRA_C_SalesOrderCustomer">
+        <Annotation Term="Capabilities.FilterRestrictions">
+          <Record>
+            <PropertyValue Property="FilterExpressionRestrictions">
+              <Collection>
+                <Record>
+                  <PropertyValue Property="Property" PropertyPath="URL"/>
+                  <PropertyValue Property="AllowedExpressions" String="SearchExpression"/>
+                </Record>
+              </Collection>
+            </PropertyValue>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderTPType">
+        <Annotation Term="Common.SideEffects" Qualifier="AdminData">
+          <Record>
+            <PropertyValue Property="SourceEntities">
+              <Collection>
+                <NavigationPropertyPath/>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="TargetProperties">
+              <Collection>
+                <PropertyPath>LastChangedByUser</PropertyPath>
+                <PropertyPath>LastChangedDateTime</PropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.SideEffects" Qualifier="SoldToPartyChange">
+          <Record>
+            <PropertyValue Property="SourceProperties">
+              <Collection>
+                <PropertyPath>SoldToParty</PropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="TargetEntities">
+              <Collection>
+                <NavigationPropertyPath>to_Customer</NavigationPropertyPath>
+                <NavigationPropertyPath>to_CustomerContact</NavigationPropertyPath>
+                <NavigationPropertyPath>to_BillToParty</NavigationPropertyPath>
+                <NavigationPropertyPath>to_ShipToParty</NavigationPropertyPath>
+                <NavigationPropertyPath>to_TransactionCurrency</NavigationPropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="TargetProperties">
+              <Collection>
+                <PropertyPath>CustomerContact</PropertyPath>
+                <PropertyPath>BillToParty</PropertyPath>
+                <PropertyPath>ShipToParty</PropertyPath>
+                <PropertyPath>NetAmountInTransactionCurrency</PropertyPath>
+                <PropertyPath>TransactionCurrency</PropertyPath>
+                <PropertyPath>CustomerContact_fc</PropertyPath>
+                <PropertyPath>BillToParty_fc</PropertyPath>
+                <PropertyPath>ShipToParty_fc</PropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.SideEffects" Qualifier="BillToPartyChange">
+          <Record>
+            <PropertyValue Property="SourceProperties">
+              <Collection>
+                <PropertyPath>BillToParty</PropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="TargetEntities">
+              <Collection>
+                <NavigationPropertyPath>to_BillToParty</NavigationPropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.SideEffects" Qualifier="ShipToPartyChange">
+          <Record>
+            <PropertyValue Property="SourceProperties">
+              <Collection>
+                <PropertyPath>ShipToParty</PropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="TargetEntities">
+              <Collection>
+                <NavigationPropertyPath>to_ShipToParty</NavigationPropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+          </Record>
+        </Annotation>
+        <Annotation Term="Common.SideEffects" Qualifier="CustomerContactChange">
+          <Record>
+            <PropertyValue Property="SourceProperties">
+              <Collection>
+                <PropertyPath>CustomerContact</PropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="TargetEntities">
+              <Collection>
+                <NavigationPropertyPath>to_CustomerContact</NavigationPropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_SalesOrderItemTPType">
+        <Annotation Term="Common.SideEffects" Qualifier="ProductChange">
+          <Record>
+            <PropertyValue Property="SourceProperties">
+              <Collection>
+                <PropertyPath>Product</PropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="TargetEntities">
+              <Collection>
+                <NavigationPropertyPath>to_Product</NavigationPropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="TargetProperties">
+              <Collection>
+                <PropertyPath>GrossAmountInTransacCurrency</PropertyPath>
+                <PropertyPath>NetAmountInTransactionCurrency</PropertyPath>
+                <PropertyPath>TaxAmountInTransactionCurrency</PropertyPath>
+                <PropertyPath>to_SalesOrder/GrossAmountInTransacCurrency</PropertyPath>
+                <PropertyPath>to_SalesOrder/NetAmountInTransactionCurrency</PropertyPath>
+                <PropertyPath>to_SalesOrder/TaxAmountInTransactionCurrency</PropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+      <Annotations xmlns="http://docs.oasis-open.org/odata/ns/edm" Target="SEPMRA_SO_MAN2.SEPMRA_C_ScheduleLineTPType">
+        <Annotation Term="Common.SideEffects" Qualifier="QuantityChange">
+          <Record>
+            <PropertyValue Property="SourceProperties">
+              <Collection>
+                <PropertyPath>Quantity</PropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="TargetProperties">
+              <Collection>
+                <PropertyPath>to_SalesOrderItem/GrossAmountInTransacCurrency</PropertyPath>
+                <PropertyPath>to_SalesOrderItem/TaxAmountInTransactionCurrency</PropertyPath>
+                <PropertyPath>to_SalesOrderItem/NetAmountInTransactionCurrency</PropertyPath>
+                <PropertyPath>to_SalesOrder/GrossAmountInTransacCurrency</PropertyPath>
+                <PropertyPath>to_SalesOrder/NetAmountInTransactionCurrency</PropertyPath>
+                <PropertyPath>to_SalesOrder/TaxAmountInTransactionCurrency</PropertyPath>
+              </Collection>
+            </PropertyValue>
+            <PropertyValue Property="EffectTypes" EnumMember="Common.EffectType/ValueChange"/>
+          </Record>
+        </Annotation>
+      </Annotations>
+    </Schema>
+  </edmx:DataServices>
+</edmx:Edmx>

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/8cbe468c/lib/client-core/src/test/resources/org/apache/olingo/client/core/UI.xml
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/resources/org/apache/olingo/client/core/UI.xml b/lib/client-core/src/test/resources/org/apache/olingo/client/core/UI.xml
new file mode 100644
index 0000000..6a084d7
--- /dev/null
+++ b/lib/client-core/src/test/resources/org/apache/olingo/client/core/UI.xml
@@ -0,0 +1,467 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+
+-->
+<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
+  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/os/vocabularies/Org.OData.Core.V1.xml">
+    <edmx:Include Namespace="Org.OData.Core.V1" Alias="Core" />
+  </edmx:Reference>
+  <edmx:Reference Uri="/coco/vocabularies/Communication.xml">
+    <edmx:Include Namespace="Org.OData.Communication.V1" Alias="vCard" />
+  </edmx:Reference>
+  <edmx:Reference Uri="/coco/vocabularies/Common.xml">
+    <edmx:Include Namespace="Org.OData.Common.V1" Alias="Common" />
+  </edmx:Reference>
+  <edmx:DataServices>
+    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Alias="UI" Namespace="com.vocabularies.UI.v1">
+      <Annotation Term="Core.Description">
+        <String>Terms for presenting data in user interfaces</String>
+      </Annotation>
+      <Annotation Term="Core.Description" Qualifier="Published">
+        <String>2013-10-16 © Copyright 2013</String>
+      </Annotation>
+
+      <!-- Semantic Views / Perspectives -->
+
+      <Term Name="HeaderInfo" Type="UI.HeaderInfoType" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+        <Annotation Term="Core.Description">
+          <String>HeaderInfos are mandatory and must be exposed on every thing of the model</String>
+        </Annotation>
+      </Term>
+      <ComplexType Name="HeaderInfoType">
+        <Property Name="TypeName" Type="Edm.String">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+        <Property Name="TypeNamePlural" Type="Edm.String" Nullable="false">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+        <Property Name="TypeImageUrl" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsURL" />
+        </Property>
+        <Property Name="Title" Type="UI.DataField" Nullable="false" />
+        <Property Name="Description" Type="UI.DataField" Nullable="true" />
+        <Property Name="ImageUrl" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsURL" />
+        </Property>
+      </ComplexType>
+
+      <Term Name="Identification" Type="Collection(UI.DataFieldAbstract)" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+        <Annotation Term="Core.Description">
+          <String>HeaderInfo plus this set of attributes identifies the object</String>
+        </Annotation>
+      </Term>
+
+      <Term Name="Badge" Type="UI.BadgeType" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+        <Annotation Term="Core.Description">
+          <String>Badge is similar to a business card view</String>
+        </Annotation>
+      </Term>
+      <ComplexType Name="BadgeType">
+        <Property Name="HeadLine" Type="UI.DataField" Nullable="false" />
+        <Property Name="Title" Type="UI.DataField" Nullable="false" />
+        <Property Name="ImageUrl" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsURL" />
+        </Property>
+        <Property Name="TypeImageUrl" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsURL" />
+        </Property>
+        <Property Name="MainInfo" Type="UI.DataField" Nullable="true" />
+        <Property Name="SecondaryInfo" Type="UI.DataField" Nullable="true" />
+      </ComplexType>
+
+      <Term Name="LineItem" Type="Collection(UI.DataFieldAbstract)" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+      </Term>
+
+      <Term Name="StatusInfo" Type="Collection(UI.DataFieldAbstract)" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+      </Term>
+
+      <Term Name="FieldGroup" Type="UI.FieldGroupType" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+      </Term>
+      <ComplexType Name="FieldGroupType">
+        <Property Name="Label" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+        <Property Name="Data" Type="Collection(UI.DataFieldAbstract)" />
+      </ComplexType>
+
+      <!-- To be discussed, please don't deliver -->
+      <Term Name="GeoPoints" Type="Collection(Edm.AnnotationPath)" AppliesTo="EntityType">
+        <Annotation Term="Core.Description">
+          <String>
+            Each collection element MUST reference an annotation of a
+              vCard.Contact or
+              collection of vCard.ContactData or
+              UI.Contacts or
+              UI.GeoLocation or
+               of UI.GeoLocationType
+          </String>
+        </Annotation>
+        <Annotation Term="UI.ThingPerspective" />
+      </Term>
+      <!-- To be discussed, please don't deliver -->
+
+      <Term Name="GeoLocations" Type="Collection(UI.GeoLocationType)" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+      </Term>
+      <Term Name="GeoLocation" Type="UI.GeoLocationType" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+      </Term>
+      <ComplexType Name="GeoLocationType">
+        <Annotation Term="Core.Description">
+          <String>Set of Attributes which defines the Localization of the object</String>
+        </Annotation>
+        <Property Name="Latitude" Type="Edm.Double" Nullable="true" />
+        <Property Name="Longitude" Type="Edm.Double" Nullable="true" />
+        <Property Name="Location" Type="Edm.GeographyPoint" Nullable="true" />
+        <Property Name="Address" Type="vCard.AddressType" Nullable="true" />
+      </ComplexType>
+
+      <Term Name="Contacts" Type="Collection(Edm.AnnotationPath)" AppliesTo="EntityType">
+        <Annotation Term="Core.Description" String="Each collection element MUST reference an annotation of a vCard.Contact" />
+        <Annotation Term="UI.ThingPerspective" />
+      </Term>
+
+      <!-- To be discussed, please don't deliver -->
+      <Term Name="MediaResource" Type="UI.MediaResourceType" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+        <Annotation Term="Core.Description" String="Properties that are relevant for Media Resources" />
+      </Term>
+      <ComplexType Name="MediaResourceType">
+        <Property Name="Url" Type="Edm.String" Nullable="false">
+          <Annotation Term="Core.IsURL" />
+        </Property>
+        <Property Name="ContentType" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsMediaType" />
+        </Property>
+        <Property Name="ByteSize" Type="Edm.Int64" Nullable="true" />
+        <Property Name="ChangedAt" Type="Edm.DateTimeOffset" Nullable="true" />
+        <Property Name="Thumbnail" Type="UI.ImageType" Nullable="true" />
+        <Property Name="Title" Type="UI.DataField" Nullable="false" />
+        <Property Name="Description" Type="UI.DataField" Nullable="true" />
+      </ComplexType>
+      <ComplexType Name="ImageType">
+        <Property Name="Url" Type="Edm.String" Nullable="false">
+          <Annotation Term="Core.IsURL" />
+        </Property>
+        <Property Name="Width" Type="Edm.String" Nullable="true" />
+        <Property Name="Height" Type="Edm.String" Nullable="true" />
+      </ComplexType>
+      <!-- To be discussed, please don't deliver -->
+
+      <!-- To be discussed, please don't deliver -->
+      <Term Name="AdditionalInfo" Type="Edm.AnnotationPath" AppliesTo="Annotation">
+        <Annotation Term="Core.Description">
+          <String>
+            Applies to UI.GeoLocation and vCard.Contact annotations only
+            Provides additional related information for a UI.GeoLocation or vCard.Contact
+            Reference to UI.HeaderInfo, UI.Badge, a qualified UI.FieldGroup, or a dedicated property tagged with Core.IsUrl
+          </String>
+        </Annotation>
+      </Term>
+      <!-- To be discussed, please don't deliver -->
+
+      <Term Name="DataPoint" Type="UI.DataPointType" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+      </Term>
+      <ComplexType Name="DataPointType">
+        <Property Name="Title" Type="Edm.String" Nullable="false">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+        <Property Name="Description" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+        <Property Name="LongDescription" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+        <Property Name="Value" Type="Edm.PrimitiveType" Nullable="false">
+          <Annotation Term="Core.Description" String="The numeric value of the DataPoint" />
+          <Annotation Term="Core.LongDescription">
+            <String>
+              It could be annotated with either UoM.ISOCurrency or UoM.Unit.
+              Percentage values are annotated with UoM.Unit = '%'.
+              A renderer should take an optional Common.Text annotation into consideration.
+            </String>
+          </Annotation>
+        </Property>
+        <Property Name="ValueFormat" Type="UI.NumberFormat" Nullable="true" />
+        <Property Name="ReferencePeriod" Type="UI.ReferencePeriod" Nullable="true" />
+        <Property Name="Criticality" Type="UI.CriticalityType" Nullable="true" />
+        <Property Name="CriticalityCalculation" Type="UI.CriticalityCalculationType" Nullable="true" />
+        <Property Name="Trend" Type="UI.TrendType" Nullable="true" />
+        <Property Name="TrendCalculation" Type="UI.TrendCalculationType" Nullable="true" />
+        <Property Name="Responsible" Type="vCard.ContactType" Nullable="true" />
+      </ComplexType>
+
+      <ComplexType Name="NumberFormat">
+        <Property Name="ScaleFactor" Type="Edm.Decimal" Scale="variable" Nullable="true" />
+        <Property Name="NumberOfFractionalDigits" Type="Edm.Byte" Nullable="true" />
+      </ComplexType>
+
+      <ComplexType Name="ReferencePeriod">
+        <Property Name="Description" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+        <Property Name="Start" Type="Edm.DateTimeOffset" Nullable="true" />
+        <Property Name="End" Type="Edm.DateTimeOffset" Nullable="true" />
+      </ComplexType>
+
+      <EnumType Name="CriticalityType">
+        <Member Name="Negative" />
+        <Member Name="Critical" />
+        <Member Name="Positive" />
+      </EnumType>
+
+      <ComplexType Name="CriticalityCalculationType">
+        <Annotation Term="Core.Description">
+          <String>
+              Direction: Target
+               - Positive: ge ToleranceRangeLowValue and le ToleranceRangeHighValue
+               - Critical: ge DeviationRangeLowValue  and lt ToleranceRangeLowValue or
+                           gt ToleranceRangeHighValue and le DeviationRangeHighValue
+               - Negative: lt DeviationRangeLowValue and gt DeviationRangeHighValue
+              Direction: Minimize
+               - Positive: le ToleranceRangeHighValue
+               - Critical: gt ToleranceRangeHighValue and le DeviationRangeHighValue
+               - Negative: gt DeviationRangeHighValue
+              Direction: Maximize
+               - Positive: ge ToleranceRangeLowValue
+               - Critical: lt ToleranceRangeLowValue and ge DeviationRangeLowValue
+               - Negative: lt DeviationRangeLowValue
+            </String>
+        </Annotation>
+        <Property Name="ImprovementDirection" Type="UI.ImprovementDirectionType" Nullable="false">
+        </Property>
+        <Property Name="ToleranceRangeLowValue" Type="Edm.PrimitiveType" Nullable="true" />
+        <Property Name="ToleranceRangeHighValue" Type="Edm.PrimitiveType" Nullable="true" />
+        <Property Name="DeviationRangeLowValue" Type="Edm.PrimitiveType" Nullable="true" />
+        <Property Name="DeviationRangeHighValue" Type="Edm.PrimitiveType" Nullable="true" />
+      </ComplexType>
+
+      <EnumType Name="ImprovementDirectionType">
+        <Member Name="Minimize" />
+        <Member Name="Target" />
+        <Member Name="Maximize" />
+      </EnumType>
+
+      <EnumType Name="TrendType">
+        <Member Name="StrongUp" />
+        <Member Name="Up" />
+        <Member Name="Sideways" />
+        <Member Name="Down" />
+        <Member Name="StrongDown" />
+      </EnumType>
+
+      <ComplexType Name="TrendCalculationType">
+        <Annotation Term="Core.Description">
+          <String>
+            Value sub ReferenceValue ( div ReferenceValue if IsRelativeDifference ) must be
+             - StrongUp:   ge StrongUpDifference
+             - Up:         lt StrongUpDifference and ge UpDifference
+             - Sideways:   lt UpDifference         and gt DownDifference
+             - Down:       gt StrongDownDifference and le DownDifference
+             - StrongDown: le StrongDownDifference
+          </String>
+        </Annotation>
+        <Property Name="ReferenceValue" Type="Edm.PrimitiveType" Nullable="false" />
+        <Property Name="IsRelativeDifference" Type="Edm.Boolean" DefaultValue="false" />
+        <Property Name="UpDifference" Type="Edm.Decimal" Nullable="false" />
+        <Property Name="StrongUpDifference" Type="Edm.Decimal" Nullable="false" />
+        <Property Name="DownDifference" Type="Edm.Decimal" Nullable="false" />
+        <Property Name="StrongDownDifference" Type="Edm.Decimal" Nullable="false" />
+      </ComplexType>
+
+      <Term Name="Chart" Type="UI.ChartDefinitionType" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+      </Term>
+      <ComplexType Name="ChartDefinitionType">
+        <Property Name="Title" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+        <Property Name="Description" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+        <Property Name="ChartType" Type="UI.ChartType" Nullable="false" />
+        <Property Name="Measures" Type="Collection(Edm.PropertyPath)" />
+        <Property Name="Dimensions" Type="Collection(Edm.PropertyPath)" />
+      </ComplexType>
+
+      <EnumType Name="ChartType">
+        <Member Name="Column" />
+        <Member Name="ColumnStacked" />
+        <Member Name="ColumnStacked100" />
+        <Member Name="Bar" />
+        <Member Name="BarStacked" />
+        <Member Name="BarStacked100" />
+        <Member Name="Area" />
+        <Member Name="AreaStacked" />
+        <Member Name="AreaStacked100" />
+        <Member Name="HorizontalArea" />
+        <Member Name="HorizontalAreaStacked" />
+        <Member Name="HorizontalAreaStacked100" />
+        <Member Name="Line" />
+        <Member Name="Pie" />
+        <Member Name="Donut" />
+        <Member Name="Scatter" />
+        <Member Name="Bubble" />
+        <Member Name="Radar" />
+        <Member Name="HeatMap" />
+        <Member Name="TreeMap" />
+        <Member Name="Waterfall" />
+        <!-- Future: GeoPie, GeoBubble, ChoroplethMap -->
+      </EnumType>
+
+      <Term Name="SelectionFields" Type="Collection(Edm.PropertyPath)" AppliesTo="EntityType">
+        <Annotation Term="UI.ThingPerspective" />
+        <Annotation Term="Core.Description" String="Properties that might be relevant for filtering a listof entity instances" />
+      </Term>
+
+      <!-- Segmentation of content according to facets of the Object -->
+
+      <Term Name="Facets" Type="Collection(UI.Facet)" AppliesTo="EntityType">
+      </Term>
+
+      <ComplexType Name="Facet" Abstract="true">
+        <Annotation Term="Core.Description" String="Base type for facets" />
+        <Property Name="Label" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+      </ComplexType>
+      <ComplexType Name="CollectionFacet" BaseType="UI.Facet">
+        <Annotation Term="Core.Description" String="Collection of Facets" />
+        <Property Name="Facets" Type="Collection(UI.Facet)" />
+      </ComplexType>
+      <ComplexType Name="ReferenceFacet" BaseType="UI.Facet">
+        <Annotation Term="Core.Description" String="Facet that refers to a thing perspective, e.g. LineItem" />
+        <Property Name="Target" Type="Edm.AnnotationPath" Nullable="false">
+          <Annotation Term="Core.Description">
+            <String>Path MUST end in vCard.Contact or vCard.Address or a term that is tagged with UI.ThingPerspective, e.g.  UI.StatusInfo, UI.LineItem, UI.Identification, UI.FieldGroup, UI.Badge</String>
+          </Annotation>
+        </Property>
+      </ComplexType>
+      <ComplexType Name="ReferenceURLFacet" BaseType="UI.Facet">
+        <Property Name="Url" Type="Edm.String" Nullable="false">
+          <Annotation Term="Core.IsURL" />
+        </Property>
+        <Property Name="UrlContentType" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsMediaType" />
+        </Property>
+      </ComplexType>
+
+
+      <!-- basic type definitions for reuse goes here -->
+
+      <Term Name="ThingPerspective" Type="Core.Tag" DefaultValue="true" AppliesTo="Term">
+        <Annotation Term="Core.Description" String="This Term is a Thing Perspective" />
+      </Term>
+      <Term Name="IsSummary" Type="Core.Tag" DefaultValue="true" AppliesTo="Record">
+        <Annotation Term="Core.Description"
+          String="This Facet and all included Facets are the summary of the thing. At most one Facet of a thing can be tagged with this term" />
+        <Annotation Term="Core.RequiresType" String="UI.Facet" />
+      </Term>
+      <Term Name="PartOfPreview" Type="Core.Tag" DefaultValue="true" AppliesTo="Record">
+        <Annotation Term="Core.Description" String="This Facet and all included Facets are part of the Thing preview" />
+        <Annotation Term="Core.RequiresType" String="UI.Facet" />
+      </Term>
+      <Term Name="Map" Type="Core.Tag" DefaultValue="true" AppliesTo="Record">
+        <Annotation Term="Core.Description" String="Target MUST reference a UI.GeoLocation, vCard.Address or a collection of these" />
+        <Annotation Term="Core.RequiresType" String="UI.ReferenceFacet" />
+      </Term>
+      <!-- To be discussed, please don't deliver -->
+      <Term Name="Gallery" Type="Core.Tag" DefaultValue="true" AppliesTo="Record">
+        <Annotation Term="Core.Description" String="Target MUST reference a UI.MediaResource" />
+        <Annotation Term="Core.RequiresType" String="UI.ReferenceFacet" />
+      </Term>
+      <!-- To be discussed, please don't deliver -->
+
+      <Term Name="IsImageURL" Type="Core.Tag" DefaultValue="true" AppliesTo="Property Term">
+        <Annotation Term="Core.Description"
+          String="Properties and terms annotated with this term MUST contain a valid URL referencing an resource with a MIME type image" />
+        <Annotation Term="Core.RequiresType" String="Edm.String" />
+      </Term>
+      <Term Name="MultiLineText" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
+        <Annotation Term="Core.Description"
+          String="Properties annotated with this annotation should be rendered as multi-line text (e.g. text area)" />
+        <Annotation Term="Core.RequiresType" String="Edm.String" />
+      </Term>
+      <!-- To be discussed, please don't deliver -->
+      <!-- not ready yet, wait for UI5 concerning the format of that value -->
+      <Term Name="DisplayTimeZone" Type="Edm.Int32" AppliesTo="Property">
+        <Annotation Term="Core.Description">
+          <String>Contains information for time- or date-time-fields in which time zone the time value should be displayed.</String>
+        </Annotation>
+      </Term>
+      <!-- To be discussed, please don't deliver -->
+
+      <Term Name="Importance" Type="UI.ImportanceType" AppliesTo="Annotation Record">
+        <Annotation Term="Core.Description"
+          String="Expresses the importance, e.g. importance of a DataField or a the importance of a annotation" />
+      </Term>
+      <EnumType Name="ImportanceType">
+        <Member Name="High" />
+        <Member Name="Medium" />
+        <Member Name="Low" />
+      </EnumType>
+
+      <ComplexType Name="DataFieldAbstract" Abstract="true">
+        <Property Name="Label" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+      </ComplexType>
+
+      <ComplexType Name="DataFieldForAnnotation" BaseType="UI.DataFieldAbstract">
+        <Property Name="Target" Type="Edm.AnnotationPath">
+          <Annotation Term="Core.Description" String="Annotation path MUST end in vCard.Address or UI.DataPoint" />
+        </Property>
+      </ComplexType>
+      <ComplexType Name="DataFieldForAction" BaseType="UI.DataFieldAbstract">
+        <Property Name="Action" Type="Common.QualifiedName">
+          <Annotation Term="Core.Description" String="Qualified name of an Action, Function, ActionImport or FunctionImport in scope" />
+        </Property>
+      </ComplexType>
+      <ComplexType Name="DataField" BaseType="UI.DataFieldAbstract">
+        <Property Name="Value" Type="Edm.PrimitiveType" Nullable="false">
+          <Annotation Term="Core.IsLanguageDependent" />
+        </Property>
+      </ComplexType>
+      <ComplexType Name="DataFieldWithNavigationPath" BaseType="UI.DataField">
+        <Property Name="Target" Type="Edm.NavigationPropertyPath" Nullable="false">
+          <Annotation Term="Core.Description">
+            <String>Contains either a navigation property or a term cast, where term is of type Edm.EntityType or a concrete entity type or a collection of these types</String>
+          </Annotation>
+        </Property>
+      </ComplexType>
+      <ComplexType Name="DataFieldWithUrl" BaseType="UI.DataField">
+        <Property Name="Url" Type="Edm.String" Nullable="false">
+          <Annotation Term="Core.IsURL" />
+        </Property>
+        <Property Name="UrlContentType" Type="Edm.String" Nullable="true">
+          <Annotation Term="Core.IsMediaType" />
+        </Property>
+      </ComplexType>
+
+    </Schema>
+  </edmx:DataServices>
+</edmx:Edmx>
\ No newline at end of file