SAP Home Learn Build Integrate Model Operate Extend with AI ConnectTutorial navigator Knowledge Graph API Devtoberfest Developer Advocates App Space

Manage my Account SAP Devs YouTube ↗ Learnings ↗ Community ↗ Provide Feedback ↗
Logout
โคข Open full site

Understand how vocabularies are used in OData metadata documents

Metadata can be extended, using content organized into vocabularies.

Overview

🎓 beginner 20 min. SAP Business Technology PlatformCloudOdataBeginner

You will learn

  • โœ”How vocabularies are used to organize annotations
  • โœ”How they’re included within an OData metadata document
DJ Adams D DJ Adams February 25, 2026
Created by February 21, 2026
Contributors

Prerequisites

Steps

Intro

The members of the OData Technical Committee have worked hard on OData as a robust, well-defined and extensible standard. In this tutorial we’ll look at a key extensibility mechanism in the form of vocabularies, and how they’re used to organize annotations.

This tutorial belongs to the OData Deep Dive mission, a re-write of the original. The re-write is a work in progess, please proceed with caution! More info can be found in the blog post OData Deep Dive rewrite in the open.


Step 1 Examine the rest of the entity model wrapper
โ€”

In the previous Metadata tutorial we saw how the schema was presented within a context. That context is called the entity model wrapper. We left the examination of part of that wrapper - the references to vocabularies - to this tutorial. Let’s start by digging into those now.

Here’s what the relevant section of the wrapper in the Northbreeze OData service’s metadata document looks like:

XML
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
  <edmx:Reference
    Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Capabilities.V1.xml">
    <edmx:Include Alias="Capabilities" Namespace="Org.OData.Capabilities.V1"/>
  </edmx:Reference>
  <edmx:Reference
    Uri="https://sap.github.io/odata-vocabularies/vocabularies/Common.xml">
    <edmx:Include Alias="Common" Namespace="com.sap.vocabularies.Common.v1"/>
  </edmx:Reference>
  <edmx:Reference
    Uri="https://oasis-tcs.github.io/odata-vocabularies/vocabularies/Org.OData.Core.V1.xml">
    <edmx:Include Alias="Core" Namespace="Org.OData.Core.V1"/>
  </edmx:Reference>
  ...
</edmx:Edmx>

What are these references? Well, section 3.3 Element edmx:Reference of the CSDL standards document is helpful here (as well as section 3.1 Element edmx:Edmx telling us that there can be zero or more of them within an <edmx:Edmx> element).

Basically, edmx:Reference elements point to external CSDL documents, specific content from which (indicated by the edmx:Include elements within) is then added to the overall scope of the referring (OData metadata) document.

Think of it like an “include” or “import” as found in various programming languages; these references might look like this in pseudo-JavaScript, for example:

JavaScript
import { "Org.OData.Capabilities.V1" as "Capabilities" } from "https://oasis-tcs.github.io/.../Org.OData.Capabilities.V1.xml";
import { "com.sap.vocabularies.Common.v1" as "Common" } from "https://sap.github.io/.../Common.xml";
import { "Org.OData.Core.V1" as "Core" } from "https://oasis-tcs.github.io/.../Org.OData.Core.V1.xml";
Step 2 Meet the OData vocabularies
+
Step 3 Take a first look at the annotations
+
Step 4 Further info
+

Resources

Discussion

Share feedback on this tutorial or join the conversation in SAP Community.

Submit detailed feedback Discuss in Community
Steps
Step 1 of 4
1. Examine the rest of the entity model wrapper 2. Meet the OData vocabularies 3. Take a first look at the annotations 4. Further info

Learn more →