OData 4.0 三种标准词汇的使用场合介绍

简介: OData 4.0 三种标准词汇的使用场合介绍

OData 4.0 定义了三个标准词汇(vocabularies):Core, Capabilities 和 Measures.

我们看个实际的例子:

<Property Name=“OrderedQuantity” Type=“Edm.Int16”>
  <Annotation Term=“Measures.Unit” Path=“OrderedUnit” />
</Property>
<Property Name=“OrderedUnit” Type=“Edm.String” />
<Property Name=“Price” Type=“Edm.Decimal” Scale=“variable”>
  <Annotation Term=“Measures.ISOCurrency” Path=“Currency” />
  <Annotation Term=“Measures.Scale” Path=“DisplayScale” />
</Property>
<Property Name=“DisplayScale” Type=“Edm.Byte” />
    <Property Name=“Currency” Type=“Edm.String” MaxLength=“3”>
      <Annotation Term=“SAP.Text” Path=“CurrencyText” />
    </Property>
<Property Name=“CurrencyText” Type=“Edm.String”>
  <Annotation Term=“Core.IsLanguageDependent” />
</Property>

上面的示例使用了 Measure 词汇表中的三个术语、Core 词汇表中的一个术语以及三个标准词汇表中不存在的概念的 SAP 特定术语。

第一个重要事实是:标准化术语和自定义术语的 Annotations 看起来相同。

第二个重要事实是:标准术语和自定义术语的定义也使用相同的语言结构。

OData 4.0 中的 Vocabulary 是一种极其重要的语义扩展机制,它可以为 OData 协议赋予更丰富的元数据信息。在 OData 中,我们主要有 Core, Capabilities 和 Measures 这三种 Vocabulary。

Core Vocabulary 旨在提供一种方式来描述通用的概念或属性。例如,您可能希望标记某个属性为只读,或者指出某个实体是一个抽象实体。这是一种通用的 Vocabulary,可用于各种场景,包括但不限于描述实体的生命周期、关联、权限等。例如,我们可以使用 Core Vocabulary 来标记一个属性为只读:

<Property Name="ID" Type="Edm.String" Nullable="false">
  <Annotation Term="Core.Computed" Bool="true"/>
</Property>

在这个例子中,我们对 “ID” 属性使用了 Core.Computed 这个注解,表示这个属性是计算出来的,也就是说,它是只读的。

Capabilities Vocabulary 主要用于描述服务的能力。这种 Vocabulary 主要用于向客户端声明服务端所支持的操作,例如是否支持排序、筛选、分页等。例如,我们可以声明我们的服务不支持过滤操作:

<EntityContainer Name="Container">
  <Annotation Term="Capabilities.FilterRestrictions">
    <Record>
      <PropertyValue Property="Filterable" Bool="false"/>
    </Record>
  </Annotation>
</EntityContainer>

在这个例子中,我们使用了 Capabilities.FilterRestrictions 这个注解,表示我们的服务不支持过滤操作。

Measures Vocabulary 主要用于描述度量单位。它允许我们为数值属性定义度量单位,例如货币、长度、重量等。例如,我们可以为一个属性定义货币单位:

<Property Name="Price" Type="Edm.Decimal" Nullable="false">
  <Annotation Term="Measures.ISOCurrency" String="USD"/>
</Property>

在这个例子中,我们使用了 Measures.ISOCurrency 这个注解,表示 “Price” 这个属性的单位是美元。

总的来说,OData 4.0 的 Vocabulary 提供了一种强大的元数据扩展机制,使得我们可以为 OData 服务添加更丰富的语义信息。Core Vocabulary 提供了描述通用概念的能力,Capabilities Vocabulary 允许我们声明服务的能力,而 Measures Vocabulary 则为我们提供了描述度量单位的能力。这三种 Vocabulary 在不同的场景下都有其独特的用途,使得 OData 服务能够更好的满足各种各样的需求。

相关文章
|
8月前
|
存储 Java BI
如何通过增强(Enhancement) 的方式给 SAP ABAP 标准程序增添新功能试读版
如何通过增强(Enhancement) 的方式给 SAP ABAP 标准程序增添新功能试读版
109 0
|
1月前
|
BI
如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版
如何使用动态 ABAP 程序生成技术,对 ABAP 系统标准的报表行为进行微调试读版
23 0
|
1月前
流式系统:第九章到第十章
流式系统:第九章到第十章
22 0
|
8月前
|
存储 供应链 数据库
[ChatGPT 勘误]:SAP ABAP 系统里数据库表 dlv_systc 的用途
[ChatGPT 勘误]:SAP ABAP 系统里数据库表 dlv_systc 的用途
81 0
|
9月前
|
存储 安全 数据库
如何手动通过增强的方式,给 SAP ABAP 数据库表增添新的字段试读版
如何手动通过增强的方式,给 SAP ABAP 数据库表增添新的字段试读版
72 0
|
设计模式 移动开发 前端开发
😲Review 实战经典:2 种封装风格,你偏爱哪种?
所以大家在后台管理系统项目中遇到的很多问题也都是相似的,代码很值得 review,本篇带来一例(真实)
|
数据库
[ChatGPT 勘误]:SAP ABAP 系统里数据库表 dlv_systc 的用途(2)
[ChatGPT 勘误]:SAP ABAP 系统里数据库表 dlv_systc 的用途
|
存储 供应链 数据库
[ChatGPT 勘误]:SAP ABAP 系统里数据库表 dlv_systc 的用途(1)
[ChatGPT 勘误]:SAP ABAP 系统里数据库表 dlv_systc 的用途
ABAP 创建数据类型的三种方式,各自的使用场合和优缺点辨析试读版
ABAP 创建数据类型的三种方式,各自的使用场合和优缺点辨析试读版
编程基本功:典型的柳氏风格命名一例
编程基本功:典型的柳氏风格命名一例
56 0
编程基本功:典型的柳氏风格命名一例