<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Capabilities.V1.xml">
    <edmx:Include Alias="Capabilities" Namespace="Org.OData.Capabilities.V1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
    <edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Measures.V1.xml">
    <edmx:Include Alias="Measures" Namespace="Org.OData.Measures.V1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://sap.github.io/odata-vocabularies/vocabularies/UI.xml">
    <edmx:Include Alias="UI" Namespace="com.sap.vocabularies.UI.v1"/>
  </edmx:Reference>
  <edmx:Reference Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Validation.V1.xml">
    <edmx:Include Alias="Validation" Namespace="Org.OData.Validation.V1"/>
  </edmx:Reference>
  <edmx:DataServices>
    <Schema Namespace="CatalogService" xmlns="http://docs.oasis-open.org/odata/ns/edm">
      <Annotation Term="Core.Links">
        <Collection>
          <Record>
            <PropertyValue Property="rel" String="author"/>
            <PropertyValue Property="href" String="https://cap.cloud.sap"/>
          </Record>
        </Collection>
      </Annotation>
      <EntityContainer Name="EntityContainer">
        <EntitySet Name="ListOfBooks" EntityType="CatalogService.ListOfBooks">
          <NavigationPropertyBinding Path="genre" Target="Genres"/>
          <NavigationPropertyBinding Path="currency" Target="Currencies"/>
          <NavigationPropertyBinding Path="reviews" Target="Reviews"/>
          <NavigationPropertyBinding Path="texts" Target="Books_texts"/>
          <NavigationPropertyBinding Path="localized" Target="Books_texts"/>
        </EntitySet>
        <EntitySet Name="Books" EntityType="CatalogService.Books">
          <NavigationPropertyBinding Path="genre" Target="Genres"/>
          <NavigationPropertyBinding Path="currency" Target="Currencies"/>
          <NavigationPropertyBinding Path="reviews" Target="Reviews"/>
          <NavigationPropertyBinding Path="texts" Target="Books_texts"/>
          <NavigationPropertyBinding Path="localized" Target="Books_texts"/>
        </EntitySet>
        <EntitySet Name="Genres" EntityType="CatalogService.Genres">
          <NavigationPropertyBinding Path="parent" Target="Genres"/>
          <NavigationPropertyBinding Path="children" Target="Genres"/>
          <NavigationPropertyBinding Path="texts" Target="Genres_texts"/>
          <NavigationPropertyBinding Path="localized" Target="Genres_texts"/>
        </EntitySet>
        <EntitySet Name="Currencies" EntityType="CatalogService.Currencies">
          <NavigationPropertyBinding Path="texts" Target="Currencies_texts"/>
          <NavigationPropertyBinding Path="localized" Target="Currencies_texts"/>
        </EntitySet>
        <EntitySet Name="Reviews" EntityType="CatalogService.Reviews"/>
        <EntitySet Name="Books_texts" EntityType="CatalogService.Books_texts"/>
        <EntitySet Name="Genres_texts" EntityType="CatalogService.Genres_texts"/>
        <EntitySet Name="Currencies_texts" EntityType="CatalogService.Currencies_texts"/>
        <ActionImport Name="submitOrder" Action="CatalogService.submitOrder"/>
      </EntityContainer>
      <EntityType Name="ListOfBooks">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="modifiedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="ID" Type="Edm.Int32" Nullable="false"/>
        <Property Name="title" Type="Edm.String" MaxLength="111"/>
        <Property Name="author" Type="Edm.String" MaxLength="111"/>
        <NavigationProperty Name="genre" Type="CatalogService.Genres">
          <ReferentialConstraint Property="genre_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="genre_ID" Type="Edm.Guid"/>
        <Property Name="stock" Type="Edm.Int32"/>
        <Property Name="price" Type="Edm.Decimal" Precision="9" Scale="2"/>
        <NavigationProperty Name="currency" Type="CatalogService.Currencies">
          <ReferentialConstraint Property="currency_code" ReferencedProperty="code"/>
        </NavigationProperty>
        <Property Name="currency_code" Type="Edm.String" MaxLength="3"/>
        <Property Name="image" Type="Edm.Stream"/>
        <NavigationProperty Name="reviews" Type="Collection(CatalogService.Reviews)">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
        <Property Name="rating" Type="Edm.Int32"/>
        <Property Name="numberOfReviews" Type="Edm.Int32"/>
        <NavigationProperty Name="texts" Type="Collection(CatalogService.Books_texts)">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
        <NavigationProperty Name="localized" Type="CatalogService.Books_texts"/>
      </EntityType>
      <EntityType Name="Books">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="createdAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="modifiedAt" Type="Edm.DateTimeOffset" Precision="7"/>
        <Property Name="ID" Type="Edm.Int32" Nullable="false"/>
        <Property Name="title" Type="Edm.String" MaxLength="111"/>
        <Property Name="descr" Type="Edm.String" MaxLength="1111"/>
        <Property Name="author" Type="Edm.String" MaxLength="111"/>
        <NavigationProperty Name="genre" Type="CatalogService.Genres">
          <ReferentialConstraint Property="genre_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="genre_ID" Type="Edm.Guid"/>
        <Property Name="stock" Type="Edm.Int32"/>
        <Property Name="price" Type="Edm.Decimal" Precision="9" Scale="2"/>
        <NavigationProperty Name="currency" Type="CatalogService.Currencies">
          <ReferentialConstraint Property="currency_code" ReferencedProperty="code"/>
        </NavigationProperty>
        <Property Name="currency_code" Type="Edm.String" MaxLength="3"/>
        <Property Name="image" Type="Edm.Stream"/>
        <NavigationProperty Name="reviews" Type="Collection(CatalogService.Reviews)">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
        <Property Name="rating" Type="Edm.Int32"/>
        <Property Name="numberOfReviews" Type="Edm.Int32"/>
        <NavigationProperty Name="texts" Type="Collection(CatalogService.Books_texts)">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
        <NavigationProperty Name="localized" Type="CatalogService.Books_texts"/>
      </EntityType>
      <EntityType Name="Genres">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="name" Type="Edm.String" MaxLength="255"/>
        <Property Name="descr" Type="Edm.String" MaxLength="1000"/>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <NavigationProperty Name="parent" Type="CatalogService.Genres" Partner="children">
          <ReferentialConstraint Property="parent_ID" ReferencedProperty="ID"/>
        </NavigationProperty>
        <Property Name="parent_ID" Type="Edm.Guid"/>
        <NavigationProperty Name="children" Type="Collection(CatalogService.Genres)" Partner="parent">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
        <NavigationProperty Name="texts" Type="Collection(CatalogService.Genres_texts)">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
        <NavigationProperty Name="localized" Type="CatalogService.Genres_texts">
          <ReferentialConstraint Property="ID" ReferencedProperty="ID"/>
        </NavigationProperty>
      </EntityType>
      <EntityType Name="Currencies">
        <Key>
          <PropertyRef Name="code"/>
        </Key>
        <Property Name="name" Type="Edm.String" MaxLength="255"/>
        <Property Name="descr" Type="Edm.String" MaxLength="1000"/>
        <Property Name="code" Type="Edm.String" MaxLength="3" Nullable="false"/>
        <Property Name="symbol" Type="Edm.String" MaxLength="5"/>
        <Property Name="minorUnit" Type="Edm.Int16"/>
        <Property Name="numcode" Type="Edm.Int32"/>
        <Property Name="exponent" Type="Edm.Int32"/>
        <Property Name="minor" Type="Edm.String"/>
        <NavigationProperty Name="texts" Type="Collection(CatalogService.Currencies_texts)">
          <OnDelete Action="Cascade"/>
        </NavigationProperty>
        <NavigationProperty Name="localized" Type="CatalogService.Currencies_texts">
          <ReferentialConstraint Property="code" ReferencedProperty="code"/>
        </NavigationProperty>
      </EntityType>
      <EntityType Name="Reviews">
        <Key>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
        <Property Name="subject" Type="Edm.String" MaxLength="111"/>
        <Property Name="reviewer" Type="Edm.String" MaxLength="255"/>
        <Property Name="rating" Type="Edm.Int32"/>
        <Property Name="title" Type="Edm.String" MaxLength="111"/>
        <Property Name="text" Type="Edm.String" MaxLength="1111"/>
        <Property Name="date" Type="Edm.DateTimeOffset"/>
        <Property Name="liked" Type="Edm.Int32" DefaultValue="0"/>
      </EntityType>
      <EntityType Name="Books_texts">
        <Key>
          <PropertyRef Name="ID_texts"/>
        </Key>
        <Property Name="ID_texts" Type="Edm.Guid" Nullable="false"/>
        <Property Name="locale" Type="Edm.String" MaxLength="14"/>
        <Property Name="ID" Type="Edm.Int32"/>
        <Property Name="title" Type="Edm.String" MaxLength="111"/>
        <Property Name="descr" Type="Edm.String" MaxLength="1111"/>
      </EntityType>
      <EntityType Name="Genres_texts">
        <Key>
          <PropertyRef Name="locale"/>
          <PropertyRef Name="ID"/>
        </Key>
        <Property Name="locale" Type="Edm.String" MaxLength="14" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="255"/>
        <Property Name="descr" Type="Edm.String" MaxLength="1000"/>
        <Property Name="ID" Type="Edm.Guid" Nullable="false"/>
      </EntityType>
      <EntityType Name="Currencies_texts">
        <Key>
          <PropertyRef Name="locale"/>
          <PropertyRef Name="code"/>
        </Key>
        <Property Name="locale" Type="Edm.String" MaxLength="14" Nullable="false"/>
        <Property Name="name" Type="Edm.String" MaxLength="255"/>
        <Property Name="descr" Type="Edm.String" MaxLength="1000"/>
        <Property Name="code" Type="Edm.String" MaxLength="3" Nullable="false"/>
      </EntityType>
      <ComplexType Name="return_CatalogService_submitOrder">
        <Property Name="stock" Type="Edm.Int32"/>
      </ComplexType>
      <Action Name="submitOrder" IsBound="false">
        <Parameter Name="book" Type="Edm.Int32"/>
        <Parameter Name="quantity" Type="Edm.Int32"/>
        <ReturnType Type="CatalogService.return_CatalogService_submitOrder"/>
      </Action>
      <Annotations Target="CatalogService.ListOfBooks">
        <Annotation Term="UI.HeaderInfo">
          <Record Type="UI.HeaderInfoType">
            <PropertyValue Property="TypeName" String="Book"/>
            <PropertyValue Property="TypeNamePlural" String="Books"/>
            <PropertyValue Property="Description">
              <Record Type="UI.DataField">
                <PropertyValue Property="Value" Path="author"/>
              </Record>
            </PropertyValue>
            <PropertyValue Property="Title">
              <Record Type="UI.DataField">
                <PropertyValue Property="Value" Path="title"/>
              </Record>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="UI.HeaderFacets">
          <Collection>
            <Record Type="UI.ReferenceFacet">
              <PropertyValue Property="Label" String="Description"/>
              <PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Descr"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="UI.Facets">
          <Collection>
            <Record Type="UI.ReferenceFacet">
              <PropertyValue Property="Label" String="Details"/>
              <PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Price"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="UI.FieldGroup" Qualifier="Descr">
          <Record Type="UI.FieldGroupType">
            <PropertyValue Property="Data">
              <Collection>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="descr"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="UI.FieldGroup" Qualifier="Price">
          <Record Type="UI.FieldGroupType">
            <PropertyValue Property="Data">
              <Collection>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="price"/>
                </Record>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="currency/symbol"/>
                  <PropertyValue Property="Label" String="Currency"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="UI.SelectionFields">
          <Collection>
            <PropertyPath>ID</PropertyPath>
            <PropertyPath>price</PropertyPath>
            <PropertyPath>currency_code</PropertyPath>
          </Collection>
        </Annotation>
        <Annotation Term="UI.LineItem">
          <Collection>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="ID"/>
              <PropertyValue Property="Label" String="Title"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="author"/>
              <PropertyValue Property="Label" String="Author"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="genre/name"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="price"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="currency/symbol"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="UI.Identification">
          <Collection>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="title"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="Common.SemanticKey">
          <Collection>
            <PropertyPath>ID</PropertyPath>
          </Collection>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.EntityContainer/ListOfBooks">
        <Annotation Term="Capabilities.DeleteRestrictions">
          <Record Type="Capabilities.DeleteRestrictionsType">
            <PropertyValue Property="Deletable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.InsertRestrictions">
          <Record Type="Capabilities.InsertRestrictionsType">
            <PropertyValue Property="Insertable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.UpdateRestrictions">
          <Record Type="Capabilities.UpdateRestrictionsType">
            <PropertyValue Property="Updatable" Bool="false"/>
          </Record>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/createdAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Immutable" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Created On"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/modifiedAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Changed On"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/ID">
        <Annotation Term="Common.SemanticObject" String="Books"/>
        <Annotation Term="Common.Text" Path="title">
          <Annotation Term="UI.TextArrangement" EnumMember="UI.TextArrangementType/TextOnly"/>
        </Annotation>
        <Annotation Term="Common.Label" String="ID"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/title">
        <Annotation Term="Common.Label" String="Title"/>
        <Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/author">
        <Annotation Term="Common.Label" String="Name"/>
        <Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/genre">
        <Annotation Term="Common.Label" String="Genre"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/genre_ID">
        <Annotation Term="Common.Text" Path="genre/name">
          <Annotation Term="UI.TextArrangement" EnumMember="UI.TextArrangementType/TextOnly"/>
        </Annotation>
        <Annotation Term="Common.Label" String="Genre"/>
        <Annotation Term="Common.ValueList">
          <Record Type="Common.ValueListType">
            <PropertyValue Property="Label" String="Genre"/>
            <PropertyValue Property="CollectionPath" String="Genres"/>
            <PropertyValue Property="Parameters">
              <Collection>
                <Record Type="Common.ValueListParameterInOut">
                  <PropertyValue Property="LocalDataProperty" PropertyPath="genre_ID"/>
                  <PropertyValue Property="ValueListProperty" String="ID"/>
                </Record>
                <Record Type="Common.ValueListParameterDisplayOnly">
                  <PropertyValue Property="ValueListProperty" String="name"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/stock">
        <Annotation Term="Common.Label" String="Stock"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/price">
        <Annotation Term="Measures.ISOCurrency" Path="currency_code"/>
        <Annotation Term="Common.Label" String="Price"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/currency">
        <Annotation Term="Common.Label" String="Currency"/>
        <Annotation Term="Core.Description" String="Currency code as specified by ISO 4217"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/currency_code">
        <Annotation Term="Common.Label" String="Currency"/>
        <Annotation Term="Common.ValueList">
          <Record Type="Common.ValueListType">
            <PropertyValue Property="Label" String="Currency"/>
            <PropertyValue Property="CollectionPath" String="Currencies"/>
            <PropertyValue Property="Parameters">
              <Collection>
                <Record Type="Common.ValueListParameterInOut">
                  <PropertyValue Property="LocalDataProperty" PropertyPath="currency_code"/>
                  <PropertyValue Property="ValueListProperty" String="code"/>
                </Record>
                <Record Type="Common.ValueListParameterDisplayOnly">
                  <PropertyValue Property="ValueListProperty" String="name"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="Core.Description" String="Currency code as specified by ISO 4217"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/image">
        <Annotation Term="Core.MediaType" String="image/png"/>
        <Annotation Term="Common.Label" String="Image"/>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/rating">
        <Annotation Term="Validation.AllowedValues">
          <Collection>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Best"/>
              <PropertyValue Property="Value" Int="5"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Good"/>
              <PropertyValue Property="Value" Int="4"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Avg"/>
              <PropertyValue Property="Value" Int="3"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Poor"/>
              <PropertyValue Property="Value" Int="2"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Worst"/>
              <PropertyValue Property="Value" Int="1"/>
            </Record>
          </Collection>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.ListOfBooks/numberOfReviews">
        <Annotation Term="Common.Label" String="Number of Reviews"/>
      </Annotations>
      <Annotations Target="CatalogService.Books">
        <Annotation Term="UI.HeaderInfo">
          <Record Type="UI.HeaderInfoType">
            <PropertyValue Property="TypeName" String="Book"/>
            <PropertyValue Property="TypeNamePlural" String="Books"/>
            <PropertyValue Property="Description">
              <Record Type="UI.DataField">
                <PropertyValue Property="Value" Path="author"/>
              </Record>
            </PropertyValue>
            <PropertyValue Property="Title">
              <Record Type="UI.DataField">
                <PropertyValue Property="Value" Path="title"/>
              </Record>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="UI.HeaderFacets">
          <Collection>
            <Record Type="UI.ReferenceFacet">
              <PropertyValue Property="Label" String="Description"/>
              <PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Descr"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="UI.Facets">
          <Collection>
            <Record Type="UI.ReferenceFacet">
              <PropertyValue Property="Label" String="Details"/>
              <PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Price"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="UI.FieldGroup" Qualifier="Descr">
          <Record Type="UI.FieldGroupType">
            <PropertyValue Property="Data">
              <Collection>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="descr"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="UI.FieldGroup" Qualifier="Price">
          <Record Type="UI.FieldGroupType">
            <PropertyValue Property="Data">
              <Collection>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="price"/>
                </Record>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="currency/symbol"/>
                  <PropertyValue Property="Label" String="Currency"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="UI.SelectionFields">
          <Collection>
            <PropertyPath>ID</PropertyPath>
            <PropertyPath>price</PropertyPath>
            <PropertyPath>currency_code</PropertyPath>
          </Collection>
        </Annotation>
        <Annotation Term="UI.LineItem">
          <Collection>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="ID"/>
              <PropertyValue Property="Label" String="Title"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="author"/>
              <PropertyValue Property="Label" String="Author"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="genre/name"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="price"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="currency/symbol"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="UI.Identification">
          <Collection>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="title"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="Common.SemanticKey">
          <Collection>
            <PropertyPath>ID</PropertyPath>
          </Collection>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.EntityContainer/Books">
        <Annotation Term="Capabilities.DeleteRestrictions">
          <Record Type="Capabilities.DeleteRestrictionsType">
            <PropertyValue Property="Deletable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.InsertRestrictions">
          <Record Type="Capabilities.InsertRestrictionsType">
            <PropertyValue Property="Insertable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.UpdateRestrictions">
          <Record Type="Capabilities.UpdateRestrictionsType">
            <PropertyValue Property="Updatable" Bool="false"/>
          </Record>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.Books/createdAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Immutable" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Created On"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/modifiedAt">
        <Annotation Term="UI.HiddenFilter" Bool="true"/>
        <Annotation Term="UI.ExcludeFromNavigationContext" Bool="true"/>
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Common.Label" String="Changed On"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/ID">
        <Annotation Term="Common.SemanticObject" String="Books"/>
        <Annotation Term="Common.Text" Path="title">
          <Annotation Term="UI.TextArrangement" EnumMember="UI.TextArrangementType/TextOnly"/>
        </Annotation>
        <Annotation Term="Common.Label" String="ID"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/title">
        <Annotation Term="Common.Label" String="Title"/>
        <Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/descr">
        <Annotation Term="UI.MultiLineText" Bool="true"/>
        <Annotation Term="Common.Label" String="Description"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/author">
        <Annotation Term="Common.Label" String="Name"/>
        <Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/genre">
        <Annotation Term="Common.Label" String="Genre"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/genre_ID">
        <Annotation Term="Common.Text" Path="genre/name">
          <Annotation Term="UI.TextArrangement" EnumMember="UI.TextArrangementType/TextOnly"/>
        </Annotation>
        <Annotation Term="Common.Label" String="Genre"/>
        <Annotation Term="Common.ValueList">
          <Record Type="Common.ValueListType">
            <PropertyValue Property="Label" String="Genre"/>
            <PropertyValue Property="CollectionPath" String="Genres"/>
            <PropertyValue Property="Parameters">
              <Collection>
                <Record Type="Common.ValueListParameterInOut">
                  <PropertyValue Property="LocalDataProperty" PropertyPath="genre_ID"/>
                  <PropertyValue Property="ValueListProperty" String="ID"/>
                </Record>
                <Record Type="Common.ValueListParameterDisplayOnly">
                  <PropertyValue Property="ValueListProperty" String="name"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.Books/stock">
        <Annotation Term="Common.Label" String="Stock"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/price">
        <Annotation Term="Measures.ISOCurrency" Path="currency_code"/>
        <Annotation Term="Common.Label" String="Price"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/currency">
        <Annotation Term="Common.Label" String="Currency"/>
        <Annotation Term="Core.Description" String="Currency code as specified by ISO 4217"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/currency_code">
        <Annotation Term="Common.Label" String="Currency"/>
        <Annotation Term="Common.ValueList">
          <Record Type="Common.ValueListType">
            <PropertyValue Property="Label" String="Currency"/>
            <PropertyValue Property="CollectionPath" String="Currencies"/>
            <PropertyValue Property="Parameters">
              <Collection>
                <Record Type="Common.ValueListParameterInOut">
                  <PropertyValue Property="LocalDataProperty" PropertyPath="currency_code"/>
                  <PropertyValue Property="ValueListProperty" String="code"/>
                </Record>
                <Record Type="Common.ValueListParameterDisplayOnly">
                  <PropertyValue Property="ValueListProperty" String="name"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="Core.Description" String="Currency code as specified by ISO 4217"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/image">
        <Annotation Term="Core.MediaType" String="image/png"/>
        <Annotation Term="Common.Label" String="Image"/>
      </Annotations>
      <Annotations Target="CatalogService.Books/rating">
        <Annotation Term="Validation.AllowedValues">
          <Collection>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Best"/>
              <PropertyValue Property="Value" Int="5"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Good"/>
              <PropertyValue Property="Value" Int="4"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Avg"/>
              <PropertyValue Property="Value" Int="3"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Poor"/>
              <PropertyValue Property="Value" Int="2"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Worst"/>
              <PropertyValue Property="Value" Int="1"/>
            </Record>
          </Collection>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.Books/numberOfReviews">
        <Annotation Term="Common.Label" String="Number of Reviews"/>
      </Annotations>
      <Annotations Target="CatalogService.submitOrder()/book">
        <Annotation Term="Common.SemanticObject" String="Books"/>
        <Annotation Term="Common.Text" Path="title">
          <Annotation Term="UI.TextArrangement" EnumMember="UI.TextArrangementType/TextOnly"/>
        </Annotation>
        <Annotation Term="Common.Label" String="ID"/>
      </Annotations>
      <Annotations Target="CatalogService.Genres">
        <Annotation Term="Common.SemanticKey">
          <Collection>
            <PropertyPath>name</PropertyPath>
          </Collection>
        </Annotation>
        <Annotation Term="UI.SelectionFields">
          <Collection>
            <PropertyPath>name</PropertyPath>
          </Collection>
        </Annotation>
        <Annotation Term="UI.LineItem">
          <Collection>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="name"/>
              <PropertyValue Property="Label" String="Name"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="UI.Identification">
          <Collection>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="name"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="UI.HeaderInfo">
          <Record Type="UI.HeaderInfoType">
            <PropertyValue Property="TypeName" String="Genre"/>
            <PropertyValue Property="TypeNamePlural" String="Genres"/>
            <PropertyValue Property="Title">
              <Record Type="UI.DataField">
                <PropertyValue Property="Value" Path="name"/>
              </Record>
            </PropertyValue>
            <PropertyValue Property="Description">
              <Record Type="UI.DataField">
                <PropertyValue Property="Value" Path="ID"/>
              </Record>
            </PropertyValue>
          </Record>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.EntityContainer/Genres">
        <Annotation Term="Capabilities.DeleteRestrictions">
          <Record Type="Capabilities.DeleteRestrictionsType">
            <PropertyValue Property="Deletable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.InsertRestrictions">
          <Record Type="Capabilities.InsertRestrictionsType">
            <PropertyValue Property="Insertable" Bool="false"/>
          </Record>
        </Annotation>
        <Annotation Term="Capabilities.UpdateRestrictions">
          <Record Type="Capabilities.UpdateRestrictionsType">
            <PropertyValue Property="Updatable" Bool="false"/>
          </Record>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.Genres/name">
        <Annotation Term="Common.Label" String="Genre"/>
      </Annotations>
      <Annotations Target="CatalogService.Genres/descr">
        <Annotation Term="Common.Label" String="Description"/>
      </Annotations>
      <Annotations Target="CatalogService.Genres/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="CatalogService.Genres/parent_ID">
        <Annotation Term="Common.ValueList">
          <Record Type="Common.ValueListType">
            <PropertyValue Property="Label" String="Genres"/>
            <PropertyValue Property="CollectionPath" String="Genres"/>
            <PropertyValue Property="Parameters">
              <Collection>
                <Record Type="Common.ValueListParameterInOut">
                  <PropertyValue Property="LocalDataProperty" PropertyPath="parent_ID"/>
                  <PropertyValue Property="ValueListProperty" String="ID"/>
                </Record>
                <Record Type="Common.ValueListParameterDisplayOnly">
                  <PropertyValue Property="ValueListProperty" String="name"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.Currencies">
        <Annotation Term="Common.SemanticKey">
          <Collection>
            <PropertyPath>code</PropertyPath>
          </Collection>
        </Annotation>
        <Annotation Term="UI.SelectionFields">
          <Collection>
            <PropertyPath>name</PropertyPath>
            <PropertyPath>descr</PropertyPath>
          </Collection>
        </Annotation>
        <Annotation Term="UI.LineItem">
          <Collection>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="descr"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="symbol"/>
            </Record>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="code"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="UI.HeaderInfo">
          <Record Type="UI.HeaderInfoType">
            <PropertyValue Property="TypeName" String="Currency"/>
            <PropertyValue Property="TypeNamePlural" String="Currencies"/>
            <PropertyValue Property="Title">
              <Record Type="UI.DataField">
                <PropertyValue Property="Value" Path="descr"/>
              </Record>
            </PropertyValue>
            <PropertyValue Property="Description">
              <Record Type="UI.DataField">
                <PropertyValue Property="Value" Path="code"/>
              </Record>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="UI.Facets">
          <Collection>
            <Record Type="UI.ReferenceFacet">
              <PropertyValue Property="Label" String="Details"/>
              <PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Details"/>
            </Record>
            <Record Type="UI.ReferenceFacet">
              <PropertyValue Property="Label" String="Extended"/>
              <PropertyValue Property="Target" AnnotationPath="@UI.FieldGroup#Extended"/>
            </Record>
          </Collection>
        </Annotation>
        <Annotation Term="UI.FieldGroup" Qualifier="Details">
          <Record Type="UI.FieldGroupType">
            <PropertyValue Property="Data">
              <Collection>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="name"/>
                </Record>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="symbol"/>
                </Record>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="code"/>
                </Record>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="descr"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="UI.FieldGroup" Qualifier="Extended">
          <Record Type="UI.FieldGroupType">
            <PropertyValue Property="Data">
              <Collection>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="numcode"/>
                </Record>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="minor"/>
                </Record>
                <Record Type="UI.DataField">
                  <PropertyValue Property="Value" Path="exponent"/>
                </Record>
              </Collection>
            </PropertyValue>
          </Record>
        </Annotation>
        <Annotation Term="UI.Identification">
          <Collection>
            <Record Type="UI.DataField">
              <PropertyValue Property="Value" Path="name"/>
            </Record>
          </Collection>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.Currencies/name">
        <Annotation Term="Common.Label" String="Name"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies/descr">
        <Annotation Term="Common.Label" String="Description"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies/code">
        <Annotation Term="Common.Text" Path="name"/>
        <Annotation Term="Common.Label" String="Currency Code"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies/symbol">
        <Annotation Term="Common.Label" String="Currency"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies/minorUnit">
        <Annotation Term="Common.Label" String="Currency Minor Unit Fractions"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies/numcode">
        <Annotation Term="Common.Label" String="Numeric Code"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies/exponent">
        <Annotation Term="Common.Label" String="Exponent"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies/minor">
        <Annotation Term="Common.Label" String="Minor Unit"/>
      </Annotations>
      <Annotations Target="CatalogService.Reviews/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="CatalogService.Reviews/subject">
        <Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
      </Annotations>
      <Annotations Target="CatalogService.Reviews/reviewer">
        <Annotation Term="Core.Computed" Bool="true"/>
        <Annotation Term="Core.Description" String="User's unique ID"/>
        <Annotation Term="Common.Label" String="User ID"/>
      </Annotations>
      <Annotations Target="CatalogService.Reviews/rating">
        <Annotation Term="Validation.AllowedValues">
          <Collection>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Best"/>
              <PropertyValue Property="Value" Int="5"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Good"/>
              <PropertyValue Property="Value" Int="4"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Avg"/>
              <PropertyValue Property="Value" Int="3"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Poor"/>
              <PropertyValue Property="Value" Int="2"/>
            </Record>
            <Record Type="Validation.AllowedValue">
              <Annotation Term="Core.SymbolicName" String="Worst"/>
              <PropertyValue Property="Value" Int="1"/>
            </Record>
          </Collection>
        </Annotation>
      </Annotations>
      <Annotations Target="CatalogService.Reviews/title">
        <Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
      </Annotations>
      <Annotations Target="CatalogService.Reviews/date">
        <Annotation Term="Core.Computed" Bool="true"/>
      </Annotations>
      <Annotations Target="CatalogService.Books_texts/ID_texts">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="CatalogService.Books_texts/locale">
        <Annotation Term="Common.Label" String="Language Code"/>
      </Annotations>
      <Annotations Target="CatalogService.Books_texts/ID">
        <Annotation Term="Common.SemanticObject" String="Books"/>
        <Annotation Term="Common.Text" Path="title">
          <Annotation Term="UI.TextArrangement" EnumMember="UI.TextArrangementType/TextOnly"/>
        </Annotation>
        <Annotation Term="Common.Label" String="ID"/>
      </Annotations>
      <Annotations Target="CatalogService.Books_texts/title">
        <Annotation Term="Common.Label" String="Title"/>
        <Annotation Term="Common.FieldControl" EnumMember="Common.FieldControlType/Mandatory"/>
      </Annotations>
      <Annotations Target="CatalogService.Books_texts/descr">
        <Annotation Term="UI.MultiLineText" Bool="true"/>
        <Annotation Term="Common.Label" String="Description"/>
      </Annotations>
      <Annotations Target="CatalogService.Genres_texts/locale">
        <Annotation Term="Common.Label" String="Language Code"/>
      </Annotations>
      <Annotations Target="CatalogService.Genres_texts/name">
        <Annotation Term="Common.Label" String="Genre"/>
      </Annotations>
      <Annotations Target="CatalogService.Genres_texts/descr">
        <Annotation Term="Common.Label" String="Description"/>
      </Annotations>
      <Annotations Target="CatalogService.Genres_texts/ID">
        <Annotation Term="Core.ComputedDefaultValue" Bool="true"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies_texts/locale">
        <Annotation Term="Common.Label" String="Language Code"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies_texts/name">
        <Annotation Term="Common.Label" String="Name"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies_texts/descr">
        <Annotation Term="Common.Label" String="Description"/>
      </Annotations>
      <Annotations Target="CatalogService.Currencies_texts/code">
        <Annotation Term="Common.Text" Path="name"/>
        <Annotation Term="Common.Label" String="Currency Code"/>
      </Annotations>
    </Schema>
  </edmx:DataServices>
</edmx:Edmx>