OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

odata message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: instance annotations


Yes, I saw @Core.Computed, but it is too limited.

 

Derivation constraints are well defined by OMG in UML and in OCL.

 

In the example, I have no disagreement with having Company.currency computed by the implementation.  On the other hand, Product.currency is dependent on Company.currency, so the derivation is simple to model.

 

I suppose, there might be a case where Product.currency does not have a well-defined derivation.  In that case having information about how it was computed could be useful, but noteâ the derivation can be arbitrarily complex.

 

George

 

 

 

 

 

 

From: Handl, Ralf <ralf.handl@sap.com>
Sent: Tuesday, February 23, 2021 11:24 AM
To: Ericson, George; Theissen, Heiko; Michael Pizzo; Christof Sprenger
Cc: odata@lists.oasis-open.org
Subject: RE: instance annotations

 

[EXTERNAL EMAIL]

Properties carrying derived/computed values can be annotated in $metadata with @Core.Computed. These properties are implicitly read-only, and we donât tell the client how their values are computed by the service.

 

Even in the modeling languages underpinning our OData APIs we have virtual elements that end up as computed properties in OData APIs, and the modeler doesnât tell how the values of these elements will come into existence. Some piece of application logic will conjure up those values eventually.

 

Even if we could tell the client how to derive some values: what would we expect the client to do with this derivation rule?

 

From: Ericson, George <George.Ericson@dell.com>
Sent: Tuesday, 23 February 2021 16:55
To: Theissen, Heiko <heiko.theissen@sap.com>; Handl, Ralf <ralf.handl@sap.com>; Michael Pizzo <mikep@microsoft.com>; Christof Sprenger <chrispre@microsoft.com>
Cc: odata@lists.oasis-open.org
Subject: RE: instance annotations

 

Oops, correction.

Product:

               company: Company

amount: Decimal

               currency: String = company->currency  // derived value

 

Company:

                currency: String

 

 

From: odata@lists.oasis-open.org <odata@lists.oasis-open.org> On Behalf Of Ericson, George
Sent: Tuesday, February 23, 2021 9:26 AM
To: Theissen, Heiko; Handl, Ralf; Michael Pizzo; Christof Sprenger
Cc: odata@lists.oasis-open.org
Subject: [odata] RE: instance annotations

 

[EXTERNAL EMAIL]

Heiko,

Thanks for this explanation.

I would prefer a more explicit solution that uses derivation.

I didnât find a Term that would express derivation.


A sketch follows:

 

Product:

                company: Company

amount: Decimal

                currency: String = company->company  // derived value

 

Company:

                currency: String

 

 

From: odata@lists.oasis-open.org <odata@lists.oasis-open.org> On Behalf Of Ericson, George
Sent: Montag, 22. Februar 2021 19:02
To: Handl, Ralf <ralf.handl@sap.com>; Michael Pizzo <mikep@microsoft.com>; Christof Sprenger <chrispre@microsoft.com>
Cc: odata@lists.oasis-open.org
Subject: [odata] RE: instance annotations

 

Ralf,

 

Just curiousâ.

 

What is SAPâs rational for applying a Term to an instance (i.e. a realization of a model element), as opposed to adding a property/method to the model element?

 

Thanks,
George

 

From: Handl, Ralf <ralf.handl@sap.com>
Sent: Monday, February 22, 2021 12:22 PM
To: Ericson, George; Michael Pizzo; Christof Sprenger
Cc: odata@lists.oasis-open.org
Subject: RE: instance annotations

 

[EXTERNAL EMAIL]

We use the tagging term Common.IsInstanceAnnotation to mark terms that are intended for instance annotations, see https://github.com/SAP/odata-vocabularies/blob/master/vocabularies/Common.md#IsInstanceAnnotation

 

PS: @Michael Pizzo, @Christof Sprenger: I did not receive your mails in this thread, only Georgeâs response to your mails.

 

From: odata@lists.oasis-open.org <odata@lists.oasis-open.org> On Behalf Of Ericson, George
Sent: Monday, 22 February 2021 17:24
To: Michael Pizzo <mikep@microsoft.com>; Christof Sprenger <chrispre@microsoft.com>
Cc: odata@lists.oasis-open.org
Subject: [odata] RE: instance annotations

 

There are examples where an annotation is meant to be applied to an instance and not the model that describes the instance.

 

For example in the Redfish vocabulary there is this:

      <Term Name="Settings" Type="Settings.Settings">

        <Annotation Term="OData.Description" String="The link to the settings resource that represents the settings to apply to this resource."/>

      </Term>

 

As I understand it, this Term could have been alternatively defined as a âSettingsâ property of the model that it is applied to.

 

My preference would be to use instance annotations only as a way to pass information about the underlying Model that an instance is realized from.  If we want to dig deeper, we could ask a representative of the Redfish team to provide more rational.

 

Thanks,

George

 

 

From: odata@lists.oasis-open.org <odata@lists.oasis-open.org> On Behalf Of Michael Pizzo
Sent: Saturday, February 20, 2021 2:01 PM
To: Christof Sprenger
Cc: odata@lists.oasis-open.org
Subject: [odata] RE: instance annotations

 

[EXTERNAL EMAIL]

We don't currently have a way to specify that an annotation term is intended for use as an instance annotation â to my recollection, it has never come up.

 

How would this information be useful to the client?  Is it just a matter of documenting how the term is intended to be used, or is it required at runtime in order to invoke some type of logic?

 

If it's part of documenting the usage, then we generally try to convey that in the description â having a machine-readable way to determine if a term is intended as an instance annotation is useful if code needs to determine applicability.

 

For comparison, the AppliesTo attribute for metadata annotations is intended to help schema designers know where they can put what terms (i.e., you can have a drop-down of terms that are applicable to a particular model element without having to understand the semantics of the term.)  AppliesTo is *not* intended to be restrictive (i.e., clients should not throw an error if a term is used somewhere that is not called out in AppliesTo).

 

Similarly, clients should never error due to an unexpected/unknown instance annotation, so I wouldn't add a way to distinguish a term as intended for an instance annotation in order to add client validation.

 

From: odata@lists.oasis-open.org <odata@lists.oasis-open.org> On Behalf Of Christof Sprenger
Sent: Thursday, February 18, 2021 2:58 PM
To: odata@lists.oasis-open.org
Subject: [EXTERNAL] [odata] instance annotations

 

Hello,

 

I would have expected to find something in the annotation term applicability table that allows me to specify that an annotation is intended as an instance annotation.

 

OData Common Schema Definition Language (CSDL) XML Representation Version 4.01 (oasis-open.org)

 

Am I misunderstanding something how a term is supposed to be defined that can be used as an instance annotation? Or is this a gap in the standard?

 

Christof



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]