<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx" Version="4.0">
  <edmx:Reference Uri="http://docs.oasis-open.org/odata/odata/v4.0/cs01/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Alias="Core" Namespace="Org.OData.Core.V1" />
  </edmx:Reference>
  <edmx:DataServices>
    <Schema xmlns="http://docs.oasis-open.org/odata/ns/edm" Namespace="com.sap.vocabularies.Common.v1" Alias="Common">
      <Annotation Term="Core.Description">
        <String>Common terms for all SAP vocabularies</String>
      </Annotation>
      <Annotation Term="Core.Description" Qualifier="Published">
        <String>Copyright (c) 2009-2017 SAP SE, All Rights Reserved</String>
      </Annotation>

      <!-- Section: General semantics -->
      <Term Name="Label" Type="Edm.String">
        <Annotation Term="Core.Description" String="A short, human-readable text suitable for labels and captions in UIs" />
      </Term>

      <Term Name="QuickInfo" Type="Edm.String">
        <Annotation Term="Core.Description" String="A short, human-readable text suitable for tool tips in UIs" />
      </Term>

      <Term Name="Text" Type="Edm.String" AppliesTo="Property">
        <Annotation Term="Core.Description"
          String="A descriptive text for values of the annotated property. Value MUST be a dynamic expression when used as metadata annotation." />
      </Term>

      <Term Name="SecondaryKey" AppliesTo="EntityType" Type="Collection(Edm.PropertyPath)">
        <Annotation Term="Core.Description"
          String="The listed properties form a secondary key. Multiple secondary keys are possible using different qualifiers." />
      </Term>

      <Term Name="FieldControl" Type="Common.FieldControlType" DefaultValue="Optional" AppliesTo="Property">
        <Annotation Term="Core.Description" String="Control state of a property" />
      </Term>
      <EnumType Name="FieldControlType">
        <Member Name="Mandatory">
          <Annotation Term="Core.Description" String="Property must have a non-null value" />
        </Member>
        <Member Name="Optional">
          <Annotation Term="Core.Description" String="Property may have a value or be null" />
        </Member>
        <Member Name="ReadOnly">
          <Annotation Term="Core.Description" String="Property value cannot be changed by end user" />
        </Member>
        <Member Name="Inapplicable">
          <Annotation Term="Core.Description"
            String="Property has no meaning in the current entity state and should be invisible for end users" />
        </Member>
      </EnumType>

      <Term Name="Notification" Type="Common.NotificationType">
        <Annotation Term="Core.Description" String="Instance annotation for warning and info notifications" />
      </Term>
      <ComplexType Name="NotificationType">
        <Property Name="code" Type="Edm.String" Nullable="false" />
        <Property Name="message" Type="Edm.String" Nullable="false">
          <Annotation Term="Core.IsLanguageDependent" />
        </Property>
        <Property Name="severity" Type="Common.NotificationSeverity" Nullable="false" />
        <Property Name="target" Type="Edm.String" />
        <Property Name="details" Type="Collection(Common.NotificationDetailType)" />
      </ComplexType>
      <ComplexType Name="NotificationDetailType">
        <Property Name="code" Type="Edm.String" Nullable="false" />
        <Property Name="message" Type="Edm.String" Nullable="false">
          <Annotation Term="Core.IsLanguageDependent" />
        </Property>
        <Property Name="severity" Type="Common.NotificationSeverity" Nullable="false" />
        <Property Name="target" Type="Edm.String" />
      </ComplexType>
      <EnumType Name="NotificationSeverity">
        <Member Name="info" />
        <Member Name="warning" />
        <Member Name="error">
          <Annotation Term="Core.Description" String="Only allowed within notification details" />
        </Member>
      </EnumType>

      <!-- Section: Calendar points in time -->
      <Term Name="IsCalendarYear" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a year number as string following the logical pattern (-?)YYYY(Y*) consisting of an optional 
          minus sign for years B.C. followed by at least four digits. The string matches the regex pattern -?([1-9][0-9]{3,}|0[0-9]{3})
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsCalendarQuarter" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a calendar quarter number as string following the logical pattern Q consisting of a single digit. 
          The string matches the regex pattern [1-4]
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsCalendarMonth" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a calendar month number as string following the logical pattern MM consisting of two digits. 
          The string matches the regex pattern 0[1-9]|1[0-2]
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsCalendarWeek" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a calendar week number as string following the logical pattern WW consisting of two digits. 
          The string matches the regex pattern 0[1-9]|[1-4][0-9]|5[2-3] 
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsDayOfCalendarMonth" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Day number relative to a calendar month. Valid values are between 1 and 31.  
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.SByte" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsDayOfCalendarYear" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Day number relative to a calendar year. Valid values are between 1 and 366.  
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.Int16" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsCalendarYearQuarter" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a calendar year and quarter as string following the logical pattern (-?)YYYY(Y*)Q consisting 
          of an optional minus sign for years B.C. followed by at least five digits, where the last digit represents the quarter.
          The string matches the regex pattern -?([1-9][0-9]{3,}|0[0-9]{3})[1-4]
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsCalendarYearMonth" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a calendar year and month as string following the logical pattern (-?)YYYY(Y*)MM consisting 
          of an optional minus sign for years B.C. followed by at least six digits, where the last two digits represent the months January to December.
          The string matches the regex pattern -?([1-9][0-9]{3,}|0[0-9]{3})(0[1-9]|1[0-2])
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsCalendarYearWeek" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a calendar year and week as string following the logical pattern (-?)YYYY(Y*)WW consisting 
          of an optional minus sign for years B.C. followed by at least six digits, where the last two digits represent week number in the year.
          The string matches the regex pattern -?([1-9][0-9]{3,}|0[0-9]{3})(0[1-9]|[1-4][0-9]|5[2-3]) 
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsCalendarDate" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a calendar date: year, month and day as string following the logical pattern (-?)YYYY(Y*)MMDD consisting 
          of an optional minus sign for years B.C. followed by at least eight digits, where the last four digits represent 
          the months January to December (MM) and the day of the month (DD).
          The string matches the regex pattern -?([1-9][0-9]{3,}|0[0-9]{3})(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])
          The regex pattern does not reflect the additional constraint for "Day-of-month Values":
          The day value must be no more than 30 if month is one of 04, 06, 09, or 11, no more than 28 if month is 02 and year is not divisible by 4, 
          or is divisible by 100 but not by 400, and no more than 29 if month is 02 and year is divisible by 400, or by 4 but not by 100.          
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>


      <!-- Section: Fiscal points in time -->
      <Term Name="IsFiscalYear" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a fiscal year number as string following the logical pattern YYYY(Y*) consisting of at least four digits. 
          The string matches the regex pattern [1-9][0-9]{3,}
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsFiscalPeriod" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a fiscal period as string following the logical pattern PPP consisting of three digits. 
          The string matches the regex pattern [0-9]{3}
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsFiscalYearPeriod" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description">
          <String>Property encodes a fiscal year and period as string following the logical pattern YYYY(Y*)PPP consisting 
          of at least seven digits, where the last three digits represent the fiscal period in the year.
          The string matches the regex pattern ([1-9][0-9]{3,})([0-9]{3})
          </String>
        </Annotation>
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>
      <Term Name="IsFiscalYearVariant" Type="Core.Tag" DefaultValue="true" AppliesTo="Property">
        <Annotation Term="Core.Description" String="Property encodes a fiscal year variant" />
        <Annotation Term="Core.RequiresType" String="Edm.String" />
        <Annotation Term="Common.MutuallyExclusiveTerm" Qualifier="DatePart" />
      </Term>


      <!-- Section: Term constraints -->
      <Term Name="MutuallyExclusiveTerm" Type="Core.Tag" DefaultValue="true" AppliesTo="Term">
        <Annotation Term="Core.Description" String="Only one term of the group identified with the Qualifier attribute can be applied" />
      </Term>

    </Schema>
  </edmx:DataServices>
</edmx:Edmx>
