You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2016/02/13 07:34:06 UTC

[12/22] olingo-odata4 git commit: OLINGO-861, OLINGO-863, OLINGO-868, OLINGO-869 : Improvements to MetadataParser for annotation support

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6d94f0e3/lib/server-core-ext/src/test/resources/trippin.xml
----------------------------------------------------------------------
diff --git a/lib/server-core-ext/src/test/resources/trippin.xml b/lib/server-core-ext/src/test/resources/trippin.xml
index 5970793..3266344 100644
--- a/lib/server-core-ext/src/test/resources/trippin.xml
+++ b/lib/server-core-ext/src/test/resources/trippin.xml
@@ -1,356 +1,458 @@
 <?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.
-
--->
+<!-- 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:DataServices>
-        <Schema Namespace="Microsoft.OData.SampleService.Models.TripPin" xmlns="http://docs.oasis-open.org/odata/ns/edm">
-            <EnumType Name="PersonGender">
-                <Member Name="Male" Value="0" />
-                <Member Name="Female" Value="1" />
-                <Member Name="Unknown" Value="2" />
-            </EnumType>
-            <ComplexType Name="City">
-                <Property Name="CountryRegion" Type="Edm.String" Nullable="false" />
-                <Property Name="Name" Type="Edm.String" Nullable="false" />
-                <Property Name="Region" Type="Edm.String" Nullable="false" />
-            </ComplexType>
-            <ComplexType Name="Location" OpenType="true">
-                <Property Name="Address" Type="Edm.String" Nullable="false" />
-                <Property Name="City" Type="Microsoft.OData.SampleService.Models.TripPin.City" Nullable="false" />
-            </ComplexType>
-            <ComplexType Name="EventLocation" BaseType="Microsoft.OData.SampleService.Models.TripPin.Location" OpenType="true">
-                <Property Name="BuildingInfo" Type="Edm.String" />
-            </ComplexType>
-            <ComplexType Name="AirportLocation" BaseType="Microsoft.OData.SampleService.Models.TripPin.Location" OpenType="true">
-                <Property Name="Loc" Type="Edm.GeographyPoint" Nullable="false" SRID="4326" />
-            </ComplexType>
-            <EntityType Name="Photo" HasStream="true">
-                <Key>
-                    <PropertyRef Name="Id" />
-                </Key>
-                <Property Name="Id" Type="Edm.Int64" Nullable="false">
-                    <Annotation Term="Org.OData.Core.V1.Permissions">
-                        <EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
-                    </Annotation>
-                </Property>
-                <Property Name="Name" Type="Edm.String" />
-                <Annotation Term="Org.OData.Core.V1.AcceptableMediaTypes">
-                    <Collection>
-                        <String>image/jpeg</String>
-                    </Collection>
-                </Annotation>
-            </EntityType>
-            <EntityType Name="Person" OpenType="true">
-                <Key>
-                    <PropertyRef Name="UserName" />
-                </Key>
-                <Property Name="UserName" Type="Edm.String" Nullable="false">
-                    <Annotation Term="Org.OData.Core.V1.Permissions">
-                        <EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
-                    </Annotation>
-                </Property>
-                <Property Name="FirstName" Type="Edm.String" Nullable="true" />
-                <Property Name="LastName" Type="Edm.String" Nullable="false" />
-                <Property Name="Emails" Type="Collection(Edm.String)" />
-                <Property Name="AddressInfo" Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Location)" />
-                <Property Name="Gender" Type="Microsoft.OData.SampleService.Models.TripPin.PersonGender" />
-                <Property Name="Concurrency" Type="Edm.Int64" Nullable="false">
-                    <Annotation Term="Org.OData.Core.V1.Computed" Bool="true" />
-                </Property>
-                <NavigationProperty Name="Friends" Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Person)" />
-                <NavigationProperty Name="Trips" Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Trip)" ContainsTarget="true" />
-                <NavigationProperty Name="Photo" Type="Microsoft.OData.SampleService.Models.TripPin.Photo" />
-            </EntityType>
-            <EntityType Name="Airline">
-                <Key>
-                    <PropertyRef Name="AirlineCode" />
-                </Key>
-                <Property Name="AirlineCode" Type="Edm.String" Nullable="false">
-                    <Annotation Term="Org.OData.Core.V1.Permissions">
-                        <EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
-                    </Annotation>
-                </Property>
-                <Property Name="Name" Type="Edm.String" Nullable="false" />
-                <Property Name="Picture" Type="Edm.Stream" Nullable="true" />
-            </EntityType>
-            <EntityType Name="Airport">
-                <Key>
-                    <PropertyRef Name="IcaoCode" />
-                </Key>
-                <Property Name="IcaoCode" Type="Edm.String" Nullable="false">
-                    <Annotation Term="Org.OData.Core.V1.Permissions">
-                        <EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
-                    </Annotation>
-                </Property>
-                <Property Name="Name" Type="Edm.String" Nullable="false" />
-                <Property Name="IataCode" Type="Edm.String" Nullable="false">
-                    <Annotation Term="Org.OData.Core.V1.Immutable" Bool="true" />
-                </Property>
-                <Property Name="Location" Type="Microsoft.OData.SampleService.Models.TripPin.AirportLocation" Nullable="false" />
-            </EntityType>
-            <EntityType Name="PlanItem">
-                <Key>
-                    <PropertyRef Name="PlanItemId" />
-                </Key>
-                <Property Name="PlanItemId" Type="Edm.Int32" Nullable="false">
-                    <Annotation Term="Org.OData.Core.V1.Permissions">
-                        <EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
-                    </Annotation>
-                </Property>
-                <Property Name="ConfirmationCode" Type="Edm.String" />
-                <Property Name="StartsAt" Type="Edm.DateTimeOffset" />
-                <Property Name="EndsAt" Type="Edm.DateTimeOffset" />
-                <Property Name="Duration" Type="Edm.Duration" />
-            </EntityType>
-            <EntityType Name="PublicTransportation" BaseType="Microsoft.OData.SampleService.Models.TripPin.PlanItem">
-                <Property Name="SeatNumber" Type="Edm.String" />
-            </EntityType>
-            <EntityType Name="Flight" BaseType="Microsoft.OData.SampleService.Models.TripPin.PublicTransportation">
-                <Property Name="FlightNumber" Type="Edm.String" Nullable="false" />
-                <NavigationProperty Name="From" Type="Microsoft.OData.SampleService.Models.TripPin.Airport" Nullable="false" />
-                <NavigationProperty Name="To" Type="Microsoft.OData.SampleService.Models.TripPin.Airport" Nullable="false" />
-                <NavigationProperty Name="Airline" Type="Microsoft.OData.SampleService.Models.TripPin.Airline" Nullable="false" />
-            </EntityType>
-            <EntityType Name="Event" BaseType="Microsoft.OData.SampleService.Models.TripPin.PlanItem" OpenType="true">
-                <Property Name="Description" Type="Edm.String" />
-                <Property Name="OccursAt" Type="Microsoft.OData.SampleService.Models.TripPin.EventLocation" Nullable="false" />
-            </EntityType>
-            <EntityType Name="Trip">
-                <Key>
-                    <PropertyRef Name="TripId" />
-                </Key>
-                <Property Name="TripId" Type="Edm.Int32" Nullable="false">
-                    <Annotation Term="Org.OData.Core.V1.Permissions">
-                        <EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
-                    </Annotation>
-                </Property>
-                <Property Name="ShareId" Type="Edm.Guid" />
-                <Property Name="Description" Type="Edm.String" />
-                <Property Name="Name" Type="Edm.String" Nullable="false" />
-                <Property Name="Budget" Type="Edm.Single" Nullable="false">
-                    <Annotation Term="Org.OData.Measures.V1.ISOCurrency" String="USD" />
-                    <Annotation Term="Org.OData.Measures.V1.Scale" Int="2" />
-                </Property>
-                <Property Name="StartsAt" Type="Edm.DateTimeOffset" Nullable="false" />
-                <Property Name="EndsAt" Type="Edm.DateTimeOffset" Nullable="false" />
-                <Property Name="Tags" Type="Collection(Edm.String)" Nullable="false" />
-                <NavigationProperty Name="Photos" Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Photo)" />
-                <NavigationProperty Name="PlanItems" Type="Collection(Microsoft.OData.SampleService.Models.TripPin.PlanItem)" ContainsTarget="true" />
-            </EntityType>
-            <Function Name="GetFavoriteAirline" IsBound="true" EntitySetPath="person/Trips/PlanItems/Microsoft.OData.SampleService.Models.TripPin.Flight/Airline" IsComposable="true">
-                <Parameter Name="person" Type="Microsoft.OData.SampleService.Models.TripPin.Person" Nullable="false" />
-                <ReturnType Type="Microsoft.OData.SampleService.Models.TripPin.Airline" Nullable="false" />
-            </Function>
-            <Function Name="GetInvolvedPeople" IsBound="true" IsComposable="true">
-                <Parameter Name="trip" Type="Microsoft.OData.SampleService.Models.TripPin.Trip" Nullable="false" />
-                <ReturnType Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Person)" Nullable="false" />
-            </Function>
-            <Function Name="GetFriendsTrips" IsBound="true" EntitySetPath="person/Friends/Trips" IsComposable="true">
-                <Parameter Name="person" Type="Microsoft.OData.SampleService.Models.TripPin.Person" Nullable="false" />
-                <Parameter Name="userName" Type="Edm.String" Nullable="false" />
-                <ReturnType Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Trip)" Nullable="false" />
-            </Function>
-            <Function Name="GetNearestAirport" IsComposable="true">
-                <Parameter Name="lat" Type="Edm.Double" Nullable="false" />
-                <Parameter Name="lon" Type="Edm.Double" Nullable="false" />
-                <ReturnType Type="Microsoft.OData.SampleService.Models.TripPin.Airport" Nullable="false" />
-            </Function>
-            <Action Name="ResetDataSource" />
-            <Action Name="ShareTrip" IsBound="true">
-                <Parameter Name="person" Type="Microsoft.OData.SampleService.Models.TripPin.Person" Nullable="false" />
-                <Parameter Name="userName" Type="Edm.String" Nullable="false" />
-                <Parameter Name="tripId" Type="Edm.Int32" Nullable="false" />
-            </Action>
-            <EntityContainer Name="DefaultContainer">
-                <EntitySet Name="Photos" EntityType="Microsoft.OData.SampleService.Models.TripPin.Photo">
-                    <Annotation Term="Org.OData.Core.V1.ResourcePath" String="Photos" />
-                    <Annotation Term="Org.OData.Capabilities.V1.SearchRestrictions">
-                        <Record>
-                            <PropertyValue Property="Searchable" Bool="true" />
-                            <PropertyValue Property="UnsupportedExpressions">
-                                <EnumMember>Org.OData.Capabilities.V1.SearchExpressions/none</EnumMember>
-                            </PropertyValue>
-                        </Record>
-                    </Annotation>
-                    <Annotation Term="Org.OData.Capabilities.V1.InsertRestrictions">
-                        <Record>
-                            <PropertyValue Property="Insertable" Bool="true" />
-                            <PropertyValue Property="NonInsertableNavigationProperties">
-                                <Collection />
-                            </PropertyValue>
-                        </Record>
-                    </Annotation>
-                </EntitySet>
-                <EntitySet Name="People" EntityType="Microsoft.OData.SampleService.Models.TripPin.Person">
-                    <NavigationPropertyBinding Path="Friends" Target="People" />
-                    <NavigationPropertyBinding Path="Microsoft.OData.SampleService.Models.TripPin.Flight/Airline" Target="Airlines" />
-                    <NavigationPropertyBinding Path="Microsoft.OData.SampleService.Models.TripPin.Flight/From" Target="Airports" />
-                    <NavigationPropertyBinding Path="Microsoft.OData.SampleService.Models.TripPin.Flight/To" Target="Airports" />
-                    <NavigationPropertyBinding Path="Photo" Target="Photos" />
-                    <NavigationPropertyBinding Path="Microsoft.OData.SampleService.Models.TripPin.Trip/Photos" Target="Photos" />
-                    <Annotation Term="Org.OData.Core.V1.OptimisticConcurrency">
-                        <Collection>
-                            <PropertyPath>Concurrency</PropertyPath>
-                        </Collection>
-                    </Annotation>
-                    <Annotation Term="Org.OData.Core.V1.ResourcePath" String="People" />
-                    <Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
-                        <Record>
-                            <PropertyValue Property="Navigability">
-                                <EnumMember>Org.OData.Capabilities.V1.NavigationType/None</EnumMember>
-                            </PropertyValue>
-                            <PropertyValue Property="RestrictedProperties">
-                                <Collection>
-                                    <Record>
-                                        <PropertyValue Property="NavigationProperty" NavigationPropertyPath="Friends" />
-                                        <PropertyValue Property="Navigability">
-                                            <EnumMember>Org.OData.Capabilities.V1.NavigationType/Recursive</EnumMember>
-                                        </PropertyValue>
-                                    </Record>
-                                </Collection>
-                            </PropertyValue>
-                        </Record>
-                    </Annotation>
-                    <Annotation Term="Org.OData.Capabilities.V1.SearchRestrictions">
-                        <Record>
-                            <PropertyValue Property="Searchable" Bool="true" />
-                            <PropertyValue Property="UnsupportedExpressions">
-                                <EnumMember>Org.OData.Capabilities.V1.SearchExpressions/none</EnumMember>
-                            </PropertyValue>
-                        </Record>
-                    </Annotation>
-                    <Annotation Term="Org.OData.Capabilities.V1.InsertRestrictions">
-                        <Record>
-                            <PropertyValue Property="Insertable" Bool="true" />
-                            <PropertyValue Property="NonInsertableNavigationProperties">
-                                <Collection>
-                                    <NavigationPropertyPath>Trips</NavigationPropertyPath>
-                                    <NavigationPropertyPath>Friends</NavigationPropertyPath>
-                                </Collection>
-                            </PropertyValue>
-                        </Record>
-                    </Annotation>
-                </EntitySet>
-                <EntitySet Name="Airlines" EntityType="Microsoft.OData.SampleService.Models.TripPin.Airline">
-                    <Annotation Term="Org.OData.Core.V1.ResourcePath" String="Airlines" />
-                    <Annotation Term="Org.OData.Capabilities.V1.SearchRestrictions">
-                        <Record>
-                            <PropertyValue Property="Searchable" Bool="true" />
-                            <PropertyValue Property="UnsupportedExpressions">
-                                <EnumMember>Org.OData.Capabilities.V1.SearchExpressions/none</EnumMember>
-                            </PropertyValue>
-                        </Record>
-                    </Annotation>
-                    <Annotation Term="Org.OData.Capabilities.V1.InsertRestrictions">
-                        <Record>
-                            <PropertyValue Property="Insertable" Bool="true" />
-                            <PropertyValue Property="NonInsertableNavigationProperties">
-                                <Collection />
-                            </PropertyValue>
-                        </Record>
-                    </Annotation>
-                </EntitySet>
-                <EntitySet Name="Airports" EntityType="Microsoft.OData.SampleService.Models.TripPin.Airport">
-                    <Annotation Term="Org.OData.Core.V1.ResourcePath" String="Airports" />
-                    <Annotation Term="Org.OData.Capabilities.V1.SearchRestrictions">
-                        <Record>
-                            <PropertyValue Property="Searchable" Bool="true" />
-                            <PropertyValue Property="UnsupportedExpressions">
-                                <EnumMember>Org.OData.Capabilities.V1.SearchExpressions/none</EnumMember>
-                            </PropertyValue>
-                        </Record>
-                    </Annotation>
-                    <Annotation Term="Org.OData.Capabilities.V1.InsertRestrictions">
-                        <Record>
-                            <PropertyValue Property="Insertable" Bool="false" />
-                            <PropertyValue Property="NonInsertableNavigationProperties">
-                                <Collection />
-                            </PropertyValue>
-                        </Record>
-                    </Annotation>
-                    <Annotation Term="Org.OData.Capabilities.V1.DeleteRestrictions">
-                        <Record>
-                            <PropertyValue Property="Deletable" Bool="false" />
-                            <PropertyValue Property="NonDeletableNavigationProperties">
-                                <Collection />
-                            </PropertyValue>
-                        </Record>
-                    </Annotation>
-                </EntitySet>
-                <Singleton Name="Me" Type="Microsoft.OData.SampleService.Models.TripPin.Person">
-                    <NavigationPropertyBinding Path="Friends" Target="People" />
-                    <NavigationPropertyBinding Path="Microsoft.OData.SampleService.Models.TripPin.Flight/Airline" Target="Airlines" />
-                    <NavigationPropertyBinding Path="Microsoft.OData.SampleService.Models.TripPin.Flight/From" Target="Airports" />
-                    <NavigationPropertyBinding Path="Microsoft.OData.SampleService.Models.TripPin.Flight/To" Target="Airports" />
-                    <NavigationPropertyBinding Path="Photo" Target="Photos" />
-                    <NavigationPropertyBinding Path="Microsoft.OData.SampleService.Models.TripPin.Trip/Photos" Target="Photos" />
-                    <Annotation Term="Org.OData.Core.V1.ResourcePath" String="Me" />
-                </Singleton>
-                <FunctionImport Name="GetNearestAirport" Function="Microsoft.OData.SampleService.Models.TripPin.GetNearestAirport" EntitySet="Airports" IncludeInServiceDocument="true">
-                    <Annotation Term="Org.OData.Core.V1.ResourcePath" String="Microsoft.OData.SampleService.Models.TripPin.GetNearestAirport" />
-                </FunctionImport>
-                <ActionImport Name="ResetDataSource" Action="Microsoft.OData.SampleService.Models.TripPin.ResetDataSource" />
-                <Annotation Term="Org.OData.Core.V1.Description" String="TripPin service is a sample service for OData V4." />
-            </EntityContainer>
-            <Annotations Target="Microsoft.OData.SampleService.Models.TripPin.DefaultContainer">
-                <Annotation Term="Org.OData.Core.V1.DereferenceableIDs" Bool="true" />
-                <Annotation Term="Org.OData.Core.V1.ConventionalIDs" Bool="true" />
-                <Annotation Term="Org.OData.Capabilities.V1.ConformanceLevel">
-                    <EnumMember>Org.OData.Capabilities.V1.ConformanceLevelType/Advanced</EnumMember>
-                </Annotation>
-                <Annotation Term="Org.OData.Capabilities.V1.SupportedFormats">
-                    <Collection>
-                        <String>application/json;odata.metadata=full;IEEE754Compatible=false;odata.streaming=true</String>
-                        <String>application/json;odata.metadata=minimal;IEEE754Compatible=false;odata.streaming=true</String>
-                        <String>application/json;odata.metadata=none;IEEE754Compatible=false;odata.streaming=true</String>
-                    </Collection>
-                </Annotation>
-                <Annotation Term="Org.OData.Capabilities.V1.AsynchronousRequestsSupported" Bool="true" />
-                <Annotation Term="Org.OData.Capabilities.V1.BatchContinueOnErrorSupported" Bool="false" />
-                <Annotation Term="Org.OData.Capabilities.V1.FilterFunctions">
-                    <Collection>
-                        <String>contains</String>
-                        <String>endswith</String>
-                        <String>startswith</String>
-                        <String>length</String>
-                        <String>indexof</String>
-                        <String>substring</String>
-                        <String>tolower</String>
-                        <String>toupper</String>
-                        <String>trim</String>
-                        <String>concat</String>
-                        <String>year</String>
-                        <String>month</String>
-                        <String>day</String>
-                        <String>hour</String>
-                        <String>minute</String>
-                        <String>second</String>
-                        <String>round</String>
-                        <String>floor</String>
-                        <String>ceiling</String>
-                        <String>cast</String>
-                        <String>isof</String>
-                    </Collection>
-                </Annotation>
-            </Annotations>
-        </Schema>
-    </edmx:DataServices>
+	<edmx:DataServices>
+		<Schema Namespace="Microsoft.OData.SampleService.Models.TripPin"
+			xmlns="http://docs.oasis-open.org/odata/ns/edm">
+			<EnumType Name="PersonGender">
+				<Member Name="Male" Value="0" />
+				<Member Name="Female" Value="1" />
+				<Member Name="Unknown" Value="2" />
+			</EnumType>
+			<ComplexType Name="City">
+				<Property Name="CountryRegion" Type="Edm.String" Nullable="false" />
+				<Property Name="Name" Type="Edm.String" Nullable="false" />
+				<Property Name="Region" Type="Edm.String" Nullable="false" />
+			</ComplexType>
+			<ComplexType Name="Location" OpenType="true">
+				<Property Name="Address" Type="Edm.String" Nullable="false" />
+				<Property Name="City"
+					Type="Microsoft.OData.SampleService.Models.TripPin.City" Nullable="false" />
+			</ComplexType>
+			<ComplexType Name="EventLocation"
+				BaseType="Microsoft.OData.SampleService.Models.TripPin.Location"
+				OpenType="true">
+				<Property Name="BuildingInfo" Type="Edm.String" />
+			</ComplexType>
+			<ComplexType Name="AirportLocation"
+				BaseType="Microsoft.OData.SampleService.Models.TripPin.Location"
+				OpenType="true">
+				<Property Name="Loc" Type="Edm.GeographyPoint" Nullable="false"
+					SRID="4326" />
+			</ComplexType>
+			<EntityType Name="Photo" HasStream="true">
+				<Key>
+					<PropertyRef Name="Id" />
+				</Key>
+				<Property Name="Id" Type="Edm.Int64" Nullable="false">
+					<Annotation Term="Org.OData.Core.V1.Permissions">
+						<EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
+					</Annotation>
+				</Property>
+				<Property Name="Name" Type="Edm.String" />
+				<Annotation Term="Org.OData.Core.V1.AcceptableMediaTypes">
+					<Collection>
+						<String>image/jpeg</String>
+					</Collection>
+				</Annotation>
+			</EntityType>
+			<EntityType Name="Person" OpenType="true">
+				<Key>
+					<PropertyRef Name="UserName" />
+				</Key>
+				<Property Name="UserName" Type="Edm.String" Nullable="false">
+					<Annotation Term="Org.OData.Core.V1.Permissions">
+						<EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
+					</Annotation>
+				</Property>
+				<Property Name="FirstName" Type="Edm.String" Nullable="true" />
+				<Property Name="LastName" Type="Edm.String" Nullable="false" />
+				<Property Name="Emails" Type="Collection(Edm.String)" />
+				<Property Name="AddressInfo"
+					Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Location)" />
+				<Property Name="Gender"
+					Type="Microsoft.OData.SampleService.Models.TripPin.PersonGender" />
+				<Property Name="Concurrency" Type="Edm.Int64" Nullable="false">
+					<Annotation Term="Org.OData.Core.V1.Computed" Bool="true" />
+				</Property>
+				<NavigationProperty Name="Friends"
+					Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Person)" />
+				<NavigationProperty Name="Trips"
+					Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Trip)"
+					ContainsTarget="true" />
+				<NavigationProperty Name="Photo"
+					Type="Microsoft.OData.SampleService.Models.TripPin.Photo" />
+			</EntityType>
+			<EntityType Name="Airline">
+				<Key>
+					<PropertyRef Name="AirlineCode" />
+				</Key>
+				<Property Name="AirlineCode" Type="Edm.String" Nullable="false">
+					<Annotation Term="Org.OData.Core.V1.Permissions">
+						<EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
+					</Annotation>
+				</Property>
+				<Property Name="Name" Type="Edm.String" Nullable="false" />
+				<Property Name="Picture" Type="Edm.Stream" Nullable="true" />
+			</EntityType>
+			<EntityType Name="Airport">
+				<Key>
+					<PropertyRef Name="IcaoCode" />
+				</Key>
+				<Property Name="IcaoCode" Type="Edm.String" Nullable="false">
+					<Annotation Term="Org.OData.Core.V1.Permissions">
+						<EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
+					</Annotation>
+				</Property>
+				<Property Name="Name" Type="Edm.String" Nullable="false" />
+				<Property Name="IataCode" Type="Edm.String" Nullable="false">
+					<Annotation Term="Org.OData.Core.V1.Immutable" Bool="true" />
+				</Property>
+				<Property Name="Location"
+					Type="Microsoft.OData.SampleService.Models.TripPin.AirportLocation"
+					Nullable="false" />
+			</EntityType>
+			<EntityType Name="PlanItem">
+				<Key>
+					<PropertyRef Name="PlanItemId" />
+				</Key>
+				<Property Name="PlanItemId" Type="Edm.Int32" Nullable="false">
+					<Annotation Term="Org.OData.Core.V1.Permissions">
+						<EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
+					</Annotation>
+				</Property>
+				<Property Name="ConfirmationCode" Type="Edm.String" />
+				<Property Name="StartsAt" Type="Edm.DateTimeOffset" />
+				<Property Name="EndsAt" Type="Edm.DateTimeOffset" />
+				<Property Name="Duration" Type="Edm.Duration" />
+			</EntityType>
+			<EntityType Name="PublicTransportation"
+				BaseType="Microsoft.OData.SampleService.Models.TripPin.PlanItem">
+				<Property Name="SeatNumber" Type="Edm.String" />
+			</EntityType>
+			<EntityType Name="Flight"
+				BaseType="Microsoft.OData.SampleService.Models.TripPin.PublicTransportation">
+				<Property Name="FlightNumber" Type="Edm.String" Nullable="false" />
+				<NavigationProperty Name="From"
+					Type="Microsoft.OData.SampleService.Models.TripPin.Airport"
+					Nullable="false" />
+				<NavigationProperty Name="To"
+					Type="Microsoft.OData.SampleService.Models.TripPin.Airport"
+					Nullable="false" />
+				<NavigationProperty Name="Airline"
+					Type="Microsoft.OData.SampleService.Models.TripPin.Airline"
+					Nullable="false" />
+			</EntityType>
+			<EntityType Name="Event"
+				BaseType="Microsoft.OData.SampleService.Models.TripPin.PlanItem"
+				OpenType="true">
+				<Property Name="Description" Type="Edm.String" />
+				<Property Name="OccursAt"
+					Type="Microsoft.OData.SampleService.Models.TripPin.EventLocation"
+					Nullable="false" />
+			</EntityType>
+			<EntityType Name="Trip">
+				<Key>
+					<PropertyRef Name="TripId" />
+				</Key>
+				<Property Name="TripId" Type="Edm.Int32" Nullable="false">
+					<Annotation Term="Org.OData.Core.V1.Permissions">
+						<EnumMember>Org.OData.Core.V1.Permission/Read</EnumMember>
+					</Annotation>
+				</Property>
+				<Property Name="ShareId" Type="Edm.Guid" />
+				<Property Name="Description" Type="Edm.String" />
+				<Property Name="Name" Type="Edm.String" Nullable="false" />
+				<Property Name="Budget" Type="Edm.Single" Nullable="false">
+					<Annotation Term="Org.OData.Measures.V1.ISOCurrency"
+						String="USD" />
+					<Annotation Term="Org.OData.Measures.V1.Scale" Int="2" />
+				</Property>
+				<Property Name="StartsAt" Type="Edm.DateTimeOffset"
+					Nullable="false" />
+				<Property Name="EndsAt" Type="Edm.DateTimeOffset" Nullable="false" />
+				<Property Name="Tags" Type="Collection(Edm.String)"
+					Nullable="false" />
+				<NavigationProperty Name="Photos"
+					Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Photo)" />
+				<NavigationProperty Name="PlanItems"
+					Type="Collection(Microsoft.OData.SampleService.Models.TripPin.PlanItem)"
+					ContainsTarget="true" />
+			</EntityType>
+			<Function Name="GetFavoriteAirline" IsBound="true"
+				EntitySetPath="person/Trips/PlanItems/Microsoft.OData.SampleService.Models.TripPin.Flight/Airline"
+				IsComposable="true">
+				<Parameter Name="person"
+					Type="Microsoft.OData.SampleService.Models.TripPin.Person"
+					Nullable="false" />
+				<ReturnType Type="Microsoft.OData.SampleService.Models.TripPin.Airline"
+					Nullable="false" />
+			</Function>
+			<Function Name="GetInvolvedPeople" IsBound="true"
+				IsComposable="true">
+				<Parameter Name="trip"
+					Type="Microsoft.OData.SampleService.Models.TripPin.Trip" Nullable="false" />
+				<ReturnType
+					Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Person)"
+					Nullable="false" />
+			</Function>
+			<Function Name="GetFriendsTrips" IsBound="true"
+				EntitySetPath="person/Friends/Trips" IsComposable="true">
+				<Parameter Name="person"
+					Type="Microsoft.OData.SampleService.Models.TripPin.Person"
+					Nullable="false" />
+				<Parameter Name="userName" Type="Edm.String" Nullable="false" />
+				<ReturnType
+					Type="Collection(Microsoft.OData.SampleService.Models.TripPin.Trip)"
+					Nullable="false" />
+			</Function>
+			<Function Name="GetNearestAirport" IsComposable="true">
+				<Parameter Name="lat" Type="Edm.Double" Nullable="false" />
+				<Parameter Name="lon" Type="Edm.Double" Nullable="false" />
+				<ReturnType Type="Microsoft.OData.SampleService.Models.TripPin.Airport"
+					Nullable="false" />
+			</Function>
+			<Action Name="ResetDataSource" />
+			<Action Name="ShareTrip" IsBound="true">
+				<Parameter Name="person"
+					Type="Microsoft.OData.SampleService.Models.TripPin.Person"
+					Nullable="false" />
+				<Parameter Name="userName" Type="Edm.String" Nullable="false" />
+				<Parameter Name="tripId" Type="Edm.Int32" Nullable="false" />
+			</Action>
+			<EntityContainer Name="DefaultContainer">
+				<EntitySet Name="Photos"
+					EntityType="Microsoft.OData.SampleService.Models.TripPin.Photo">
+					<Annotation Term="Org.OData.Core.V1.ResourcePath"
+						String="Photos" />
+					<Annotation Term="Org.OData.Capabilities.V1.SearchRestrictions">
+						<Record>
+							<PropertyValue Property="Searchable" Bool="true" />
+							<PropertyValue Property="UnsupportedExpressions">
+								<EnumMember>Org.OData.Capabilities.V1.SearchExpressions/none
+								</EnumMember>
+							</PropertyValue>
+						</Record>
+					</Annotation>
+					<Annotation Term="Org.OData.Capabilities.V1.InsertRestrictions">
+						<Record>
+							<PropertyValue Property="Insertable" Bool="true" />
+							<PropertyValue Property="NonInsertableNavigationProperties">
+								<Collection />
+							</PropertyValue>
+						</Record>
+					</Annotation>
+				</EntitySet>
+				<EntitySet Name="People"
+					EntityType="Microsoft.OData.SampleService.Models.TripPin.Person">
+					<NavigationPropertyBinding Path="Friends"
+						Target="People" />
+					<NavigationPropertyBinding
+						Path="Microsoft.OData.SampleService.Models.TripPin.Flight/Airline"
+						Target="Airlines" />
+					<NavigationPropertyBinding
+						Path="Microsoft.OData.SampleService.Models.TripPin.Flight/From"
+						Target="Airports" />
+					<NavigationPropertyBinding
+						Path="Microsoft.OData.SampleService.Models.TripPin.Flight/To"
+						Target="Airports" />
+					<NavigationPropertyBinding Path="Photo"
+						Target="Photos" />
+					<NavigationPropertyBinding
+						Path="Microsoft.OData.SampleService.Models.TripPin.Trip/Photos"
+						Target="Photos" />
+					<Annotation Term="Org.OData.Core.V1.OptimisticConcurrency">
+						<Collection>
+							<PropertyPath>Concurrency</PropertyPath>
+						</Collection>
+					</Annotation>
+					<Annotation Term="Org.OData.Core.V1.ResourcePath"
+						String="People" />
+					<Annotation Term="Org.OData.Capabilities.V1.NavigationRestrictions">
+						<Record>
+							<PropertyValue Property="Navigability">
+								<EnumMember>Org.OData.Capabilities.V1.NavigationType/None
+								</EnumMember>
+							</PropertyValue>
+							<PropertyValue Property="RestrictedProperties">
+								<Collection>
+									<Record>
+										<PropertyValue Property="NavigationProperty"
+											NavigationPropertyPath="Friends" />
+										<PropertyValue Property="Navigability">
+											<EnumMember>Org.OData.Capabilities.V1.NavigationType/Recursive
+											</EnumMember>
+										</PropertyValue>
+									</Record>
+								</Collection>
+							</PropertyValue>
+						</Record>
+					</Annotation>
+					<Annotation Term="Org.OData.Capabilities.V1.SearchRestrictions">
+						<Record>
+							<PropertyValue Property="Searchable" Bool="true" />
+							<PropertyValue Property="UnsupportedExpressions">
+								<EnumMember>Org.OData.Capabilities.V1.SearchExpressions/none
+								</EnumMember>
+							</PropertyValue>
+						</Record>
+					</Annotation>
+					<Annotation Term="Org.OData.Capabilities.V1.InsertRestrictions">
+						<Record>
+							<PropertyValue Property="Insertable" Bool="true" />
+							<PropertyValue Property="NonInsertableNavigationProperties">
+								<Collection>
+									<NavigationPropertyPath>Trips</NavigationPropertyPath>
+									<NavigationPropertyPath>Friends</NavigationPropertyPath>
+								</Collection>
+							</PropertyValue>
+						</Record>
+					</Annotation>
+				</EntitySet>
+				<EntitySet Name="Airlines"
+					EntityType="Microsoft.OData.SampleService.Models.TripPin.Airline">
+					<Annotation Term="Org.OData.Core.V1.ResourcePath"
+						String="Airlines" />
+					<Annotation Term="Org.OData.Capabilities.V1.SearchRestrictions">
+						<Record>
+							<PropertyValue Property="Searchable" Bool="true" />
+							<PropertyValue Property="UnsupportedExpressions">
+								<EnumMember>Org.OData.Capabilities.V1.SearchExpressions/none
+								</EnumMember>
+							</PropertyValue>
+						</Record>
+					</Annotation>
+					<Annotation Term="Org.OData.Capabilities.V1.InsertRestrictions">
+						<Record>
+							<PropertyValue Property="Insertable" Bool="true" />
+							<PropertyValue Property="NonInsertableNavigationProperties">
+								<Collection />
+							</PropertyValue>
+						</Record>
+					</Annotation>
+				</EntitySet>
+				<EntitySet Name="Airports"
+					EntityType="Microsoft.OData.SampleService.Models.TripPin.Airport">
+					<Annotation Term="Org.OData.Core.V1.ResourcePath"
+						String="Airports" />
+					<Annotation Term="Org.OData.Capabilities.V1.SearchRestrictions">
+						<Record>
+							<PropertyValue Property="Searchable" Bool="true" />
+							<PropertyValue Property="UnsupportedExpressions">
+								<EnumMember>Org.OData.Capabilities.V1.SearchExpressions/none
+								</EnumMember>
+							</PropertyValue>
+						</Record>
+					</Annotation>
+					<Annotation Term="Org.OData.Capabilities.V1.InsertRestrictions">
+						<Record>
+							<PropertyValue Property="Insertable" Bool="false" />
+							<PropertyValue Property="NonInsertableNavigationProperties">
+								<Collection />
+							</PropertyValue>
+						</Record>
+					</Annotation>
+					<Annotation Term="Org.OData.Capabilities.V1.DeleteRestrictions">
+						<Record>
+							<PropertyValue Property="Deletable" Bool="false" />
+							<PropertyValue Property="NonDeletableNavigationProperties">
+								<Collection />
+							</PropertyValue>
+						</Record>
+					</Annotation>
+				</EntitySet>
+				<Singleton Name="Me"
+					Type="Microsoft.OData.SampleService.Models.TripPin.Person">
+					<NavigationPropertyBinding Path="Friends"
+						Target="People" />
+					<NavigationPropertyBinding
+						Path="Microsoft.OData.SampleService.Models.TripPin.Flight/Airline"
+						Target="Airlines" />
+					<NavigationPropertyBinding
+						Path="Microsoft.OData.SampleService.Models.TripPin.Flight/From"
+						Target="Airports" />
+					<NavigationPropertyBinding
+						Path="Microsoft.OData.SampleService.Models.TripPin.Flight/To"
+						Target="Airports" />
+					<NavigationPropertyBinding Path="Photo"
+						Target="Photos" />
+					<NavigationPropertyBinding
+						Path="Microsoft.OData.SampleService.Models.TripPin.Trip/Photos"
+						Target="Photos" />
+					<Annotation Term="Org.OData.Core.V1.ResourcePath"
+						String="Me" />
+				</Singleton>
+				<FunctionImport Name="GetNearestAirport"
+					Function="Microsoft.OData.SampleService.Models.TripPin.GetNearestAirport"
+					EntitySet="Airports" IncludeInServiceDocument="true">
+					<Annotation Term="Org.OData.Core.V1.ResourcePath"
+						String="Microsoft.OData.SampleService.Models.TripPin.GetNearestAirport" />
+				</FunctionImport>
+				<ActionImport Name="ResetDataSource"
+					Action="Microsoft.OData.SampleService.Models.TripPin.ResetDataSource" />
+				<Annotation Term="Org.OData.Core.V1.Description"
+					String="TripPin service is a sample service for OData V4." />
+			</EntityContainer>
+			<Annotations
+				Target="Microsoft.OData.SampleService.Models.TripPin.DefaultContainer">
+				<Annotation Term="Org.OData.Core.V1.DereferenceableIDs"
+					Bool="true" />
+				<Annotation Term="Org.OData.Core.V1.ConventionalIDs"
+					Bool="true" />
+				<Annotation Term="Org.OData.Capabilities.V1.ConformanceLevel">
+					<EnumMember>Org.OData.Capabilities.V1.ConformanceLevelType/Advanced
+					</EnumMember>
+				</Annotation>
+				<Annotation Term="Org.OData.Capabilities.V1.SupportedFormats">
+					<Collection>
+						<String>application/json;odata.metadata=full;IEEE754Compatible=false;odata.streaming=true
+						</String>
+						<String>application/json;odata.metadata=minimal;IEEE754Compatible=false;odata.streaming=true
+						</String>
+						<String>application/json;odata.metadata=none;IEEE754Compatible=false;odata.streaming=true
+						</String>
+					</Collection>
+				</Annotation>
+				<Annotation
+					Term="Org.OData.Capabilities.V1.AsynchronousRequestsSupported"
+					Bool="true" />
+				<Annotation
+					Term="Org.OData.Capabilities.V1.BatchContinueOnErrorSupported"
+					Bool="false" />
+				<Annotation Term="Org.OData.Capabilities.V1.FilterFunctions">
+					<Collection>
+						<String>contains</String>
+						<String>endswith</String>
+						<String>startswith</String>
+						<String>length</String>
+						<String>indexof</String>
+						<String>substring</String>
+						<String>tolower</String>
+						<String>toupper</String>
+						<String>trim</String>
+						<String>concat</String>
+						<String>year</String>
+						<String>month</String>
+						<String>day</String>
+						<String>hour</String>
+						<String>minute</String>
+						<String>second</String>
+						<String>round</String>
+						<String>floor</String>
+						<String>ceiling</String>
+						<String>cast</String>
+						<String>isof</String>
+					</Collection>
+				</Annotation>
+			</Annotations>
+			<Term Name="IsURI" Type="Core.Tag" DefaultValue="true"
+				AppliesTo="Property">
+				<Annotation Term="Core.Description">
+					<String>
+						Properties and terms annotated with this term MUST contain a valid URI
+					</String>
+				</Annotation>
+				<Annotation Term="Core.RequiresType" String="Edm.String" />
+			</Term>
+		</Schema>
+	</edmx:DataServices>
 </edmx:Edmx>
\ No newline at end of file