-
Type: Improvement
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: V4.0_CSD01
-
Fix Version/s: V4.0_CSD02
-
Component/s: CSDL XML
-
Labels:None
-
Environment:
[Applied]
-
Proposal:
-
Resolution:
If a term is annotated at a model element (with an optional qualifier), this annotation is uniquely identified by (the "target" model element, the term, the qualifier). E.g. the following annotation is identified by (com.sap.erp.products.Product,UIVA.DataFieldWithNavigation,FirstDataField):
<Annotations Target="com.sap.erp.products.Product">
<Annotation Term="UIVA.DataFieldWithNavigation" Qualifier="FirstDataField">
<Record>
<PropertyValue Property="Label" String="Supplier" />
<PropertyValue Property="Value" Path="@com.sap.AnnoCrossReferenceTerm.Supplier#Foo/SupplierName" />
</Record>
</Annotation>
</Annotations>
This annotation uses a other annotation in the path attribute identified by (com.sap.erp.products.Product,com.sap.AnnoCrossReferenceTerm.Supplier,Foo). If this annotation is not included in the same file as the sample annotation above, the consumer has to load this annotation to figure out the annotation value. How can he find the right edmx:reference URI? Today we can qualify an edmx:includeAnnotation element inside an edmx:reference element by a TermNamspace attribute (MUST) and a Qualifier attribute (MAY). In our example he can search for (com.sap.AnnoCrossReferenceTerm,Foo) inside the edmx:includeAnnotation elements and load all matching edmx:reference files. There can be many.
If we allow annotation providers to express in addition to the TermNamespace and the Qualifier a so called TargetNamespace (the namespace the annotated model element belongs to), the number of matching files could be reduced, because the consumer can search for (com.sap.erp.products,com.sap.AnnoCrossReferenceTerm,Foo) inside the edmx:includeAnnotation elements and load only the edmx:reference files matching this more specific search query.