Using the @ sign as the separator for named stream properties (only) feels odd, because until now we don't differentiate "term casts" in CSDL Path expressions by property type. Accessing a display.hidden annotation on a property would be
Path="PropertyName/display.hidden"
independently of whether the property is primitive or complex or navigation. So
Path="NamedStream/odata.mediaReadLink"
is more consistent than
Path="NamedStream@odata.mediaReadLink"
We COULD consistently switch to the @ sign for all "term casts":
Path="PropertyName@display.hidden"
The examples in ODATA-108 and ODATA-109 would then be changed to
<PropertyValue Property="PhoneNumbers" Path="Phones@vCard.PhoneNumber#work" />
and
<Annotation Term="Display.Caption" Path="@CreativeWorks.Movie/Title"/> (empty prefix means "this", then look for annotation)
<Annotation Term="Display.Caption" Path="@vCard.Contact/Fullname" />
<Property Name="Something" Type="String">
<Annotation Term="Display.Hidden" Path="Something@Core.ReadOnly" />
</Property>
<Property Name="SomethingElse" Type="String">
<Annotation Term="Display.Hidden" Path="Something@Core.ReadOnly" />
</Property>
Thoughts?
Using the @ sign as the separator for named stream properties (only) feels odd, because until now we don't differentiate "term casts" in CSDL Path expressions by property type. Accessing a display.hidden annotation on a property would be
Path="PropertyName/display.hidden"
independently of whether the property is primitive or complex or navigation. So
Path="NamedStream/odata.mediaReadLink"
is more consistent than
Path="NamedStream@odata.mediaReadLink"
We COULD consistently switch to the @ sign for all "term casts":
Path="PropertyName@display.hidden"
The examples in
ODATA-108andODATA-109would then be changed to<PropertyValue Property="PhoneNumbers" Path="Phones@vCard.PhoneNumber#work" />
and
<Annotation Term="Display.Caption" Path="@CreativeWorks.Movie/Title"/> (empty prefix means "this", then look for annotation)
<Annotation Term="Display.Caption" Path="@vCard.Contact/Fullname" />
<Property Name="Something" Type="String">
<Annotation Term="Display.Hidden" Path="Something@Core.ReadOnly" />
</Property>
<Property Name="SomethingElse" Type="String">
<Annotation Term="Display.Hidden" Path="Something@Core.ReadOnly" />
</Property>
Thoughts?