[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: [OASIS Issue Tracker] Updated: (ODATA-278) Introduce vocabulary expression edm:Url
[ http://tools.oasis-open.org/issues/browse/ODATA-278?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martin Zurmuehl updated ODATA-278: ---------------------------------- Summary: Introduce vocabulary expression edm:Url (was: Introduce edm:Url expression as child element of the edm:Annotation element.) Proposal: Introduce a edm:Url expression as a child of edm:annotation element: The edm:Url expression enables a value to be obtained by sending a GET request to the edm:Url expression value . A Url expression MUST be assigned a value of the type xs:string see [XML-Schema-2], section 3.2.1. The response body of the GET request MUST be returned as the result of the edm:Url expression. The edm:Url expression result MUST be type compatible with the type expected by the surrounding element or expression. was: Introduce a edm:Url expression as a child of edm:annotation element: The edm:Url expression enables a value to be obtained by sending a GET request to the edm:Url expression value . A Url expression MUST be assigned a value of the type xs:string see [XML-Schema-2], section 3.2.1. The response body of the GET request MUST be returned as the result of the edm:Url expression. The edm:Url expression result MUST be type compatible with the type expected by the surrounding edm:Annotation element. > Introduce vocabulary expression edm:Url > --------------------------------------- > > Key: ODATA-278 > URL: http://tools.oasis-open.org/issues/browse/ODATA-278 > Project: OASIS Open Data Protocol (OData) TC > Issue Type: Improvement > Components: OData CSDL > Affects Versions: V4.0_WD01 > Environment: [Proposed] > Reporter: Martin Zurmuehl > Fix For: V4.0_WD01 > > > In mashup scenarios it is often the case that a third party can detect a rule that allows constructing URLs from information provided in an entity that allow navigation to other resources in the web. > Annotations allow to express these construction rules, this construction rules can also be seen as "special navigation properties defined via annotations". > We want to annotate these "special navigagtion properties" in a such a way, that they can be used in further annotation similar to native navigation properties. > In the following example two navigation properties ( to a supplier and to purchase orders ) and one property is annotated at the product entity type; and they are used in a other annotation. This example is currently invalid, because the <Url> element isn't specified so far. > Complete annotation file example (it uses https://tools.oasis-open.org/issues/browse/ODATA-257): > <?xml version="1.0" encoding="utf-8"?> > <edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx/4.0"> > <edmx:Reference Url="http://biz.org/odata/foobar/ProductService.srv/$metadata" /> > <edmx:Reference Url="http://example.org:1234/odata/bar/SupplierService.srv/$metadata" /> > <edmx:Reference Url="http://somewhere.org/odata/foo/Purchasing.srv/$metadata" /> > <edmx:DataServices DataServiceVersion="4.0"> > <Schema xmlns="http://docs.oasis-open.org/odata/ns/csdl/4.0" Namespace="AnnotationCrossReference" Alias="ACR"> > <Using Namespace="com.sap.erp.products" Alias="ServiceA" /> > <Using Namespace="com.sap.erp.supplier" Alias="ServiceB" /> > <Using Namespace="com.sap.foo.purchasing" Alias="ServiceC" /> > <Term Name="DataFieldWithNavigation" Type="DataFieldWithNavigationType" /> > <ComplexType Name="DataFieldWithNavigationType"> > <Property Name="Label" Type="String" Nullable="true"> > <Annotation Term="Core.IsLanguageDependent" /> > </Property> > <Property Name="Value" Type="Edm.PrimitiveType" Nullable="false" /> > <Property Name="NavigationPath" Type="Edm.NavigationPropertyPath" Nullable="false" /> > </ComplexType> > <Term Name="Supplier" Type="ServiceB.Supplier" /> > <Term Name="PurchaseOrders" Type="Collection(ServiceC.PurchaseOrder)" /> > <Term Name="NumberOfPurchaseOrders" Type="Edm.Int32" /> > <Annotations Target="ServiceA.Product"> > <Annotation Term="Supplier"> > <Url> > <Apply Function="odata.fillUriTemplate"> > <!-- ... construct path to ServiceB.Supplier --> > <String>http://example.org:1234/odata/bar/SupplierService.srv/Suppliers('{suppID}')</String> > <LabeledElement Name="suppID"> > <Apply Function="odata.UriEncode"> > <Path>SupplierId</Path> > </Apply> > </LabeledElement> > </Apply> > </Url> > </Annotation> > <Annotation Term="PurchaseOrders"> > <Url> > <Apply Function="odata.fillUriTemplate"> > <!-- ... construct path to a ServiceC.EntiySet of entity type PurchaseOrders --> > <String>http://somewhere.org/odata/foo/Purchasing.srv/PurchaseOrders?$search={productID}</String> > <LabeledElement Name="productID"> > <Apply Function="odata.UriEncode"> > <Path>ProductKey</Path> > </Apply> > </LabeledElement> > </Apply> > </Url> > </Annotation> > <Annotation Term="NumberOfPurchaseOrders"> > <Url> > <Apply Function="odata.fillUriTemplate"> > <!-- ... construct path an int value --> > <String>http://somewhere.org/odata/foo/Purchasing.srv/PurchaseOrders/$count?$search={productID}</String> > <LabeledElement Name="productID"> > <Apply Function="odata.UriEncode"> > <Path>ProductKey</Path> > </Apply> > </LabeledElement> > </Apply> > </Url> > </Annotation> > <Annotation Term="DataFieldWithNavigation" Qualifier="FirstDataField"> > <Record> > <PropertyValue Property="Label" String="Supplier" /> > <PropertyValue Property="Value" Path="@ACR.Supplier/SupplierName" /> > <PropertyValue Property="NavigationPath" NavigationPropertyPath="@ACR.Supplier" /> > </Record> > </Annotation> > <Annotation Term="DataFieldWithNavigation" Qualifier="SecondDataField"> > <Record> > <PropertyValue Property="Label" String="Purchase Orders" /> > <PropertyValue Property="Value" Path="@ACR.NumberOfPurchaseOrders" /> > <PropertyValue Property="NavigationPath" NavigationPropertyPath="@ACR.PurchaseOrders" /> > </Record> > </Annotation> > </Annotations> > </Schema> > </edmx:DataServices> > </edmx:Edmx> -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://tools.oasis-open.org/issues/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]