Guidelines on Using SDMX Annotations

Version 1.11 by Helena K. on 2026/01/15 23:41

Document card
Download document

DOCUMENT HISTORY

VersionDateComment
1.001/03/2021Initial version.
2.024/04/2025Adapted to SDMX 3.0. Extensions to controlled vocabulary. Clarified text.

Introduction

According to the SDMX documentation, the Annotation is a construct that contains user or organisation-specific metadata. The Annotation construct in SDMX is available to most of the SDMX structural metadata artefacts. This facility is essentially a flexible extension mechanism allowing metadata to be added to an SDMX structural artefact. Annotations are often used to store metadata in artefacts when there is no specific place for that information in the SDMX information model. Presentation metadata is a prime example, such as a default presentation for a dataflow.

Note that whilst the SDMX Annotation has a specific structure (Title, Type, URL, Text) individual organisations are free to use these in any way and any combination they wish. However, an Annotation can only be processed in a meaningful way (i.e. other than viewing it) by systems that understand its semantics.

The main advantage of the Annotation is its flexibility as all properties can be tailor-made and there is no limit to their number. This can prove very useful for specific applications, such as dissemination tools. The main drawback is poor interoperability as Annotations convey no semantics and are not standardised. This means that organisations that want to exchange Annotations and process them automatically must agree upon, at least, a common naming syntax.

The aim of this guideline is to improve machine interactions by proposing a controlled vocabulary for the Type property of the SDMX Annotation construct and a recommended usage for the other properties that will greatly improve the interoperability of Annotations between SDMX-compliant organisations.

The Controlled Vocabulary referred to above will be maintained as a SDMX Concept Scheme stored in the SDMX Global Repository.

SDMX Information Model for the Annotation construct

SDMX 2.1

1768507168026-558.png

All classes derived from the abstract class AnnotableArtefact may have Annotations. The Annotation is used to convey extra information to describe SDMX constructs. This information may be in the form of a URL reference, a non-localised text, and/or multiple localised texts (represented by the one-to-many relationship to LocalisedString).

SDMX 3.0

1768507168030-780.png

The URL can be localised which gives the advantage of linking to different resources depending on the language. It also removes the complexity of having to use AnnotationText in SDMX 2.1 to do this.

Properties of the Annotation construct

The properties of the Annotation construct are listed below. This information is taken from the SDMX official technical documentation.

PropertyDescriptionControlled vocabulary context
idIdentifier for the Annotation. It can be used to disambiguate one Annotation from another where there are several Annotations for the same annotated object.Id is set to @SDMX to identify it as part of the controlled vocabulary
titleA title used to identify an Annotation.A non-localised value for the annotation. Used when localisation is irrelevant.
type

Specifies how the Annotation is to be processed.
The type is often used as the usage context of the Annotation. The types are not enumerated1, as these can be specified by the Annotation creator. The definitions and use of Annotation types should be documented by their creator.

Identifies the usage (e.g. images are type IMAGE) of the annotation. The type values are enumerated in the controlled vocabulary table.
url

A link to external descriptive text.
The url is a URI - typically a URL - which points to a resource. If a specific behaviour is desired, an Annotation type should be defined which specifies the use of this field more exactly.

A non-localised URL reference to an external resource. Used when localisation is irrelevant.
+urlSDMX 3.0 and later. An annotation may have several localised URLsA localised URL reference to an external resource.
+text

An International String that provides the multilingual text content of the Annotation.

Text holds a language-specific string containing the text of the Annotation.

A localised value for the annotation.

Introducing Standard Annotations

As stated earlier, a major drawback of the Annotation construct is the fact that they are not standardised for reuse when exchanging structural metadata. Annotations are containers for additional information relating to the object to which they are attached. This means that for an Annotation to be interpreted in the same way by exchange partners, a reference is needed that defines some standard behaviour and implementation.

This guideline proposes an Annotation controlled vocabulary and guidelines on their (re)use for SDMX implementers.

A standard Annotation can be defined as an Annotation that has an agreed definition in the SDMX community. Some of them, especially the general and display-related annotations also have a described behaviour. They allow diverse systems to parse the information and perform a specific action in response.

How to Identify Standard Annotations?

In order to be able to configure their applications to implement actions based upon standard Annotations, systems must know how to identify such Annotations. This is done by setting the Annotation id property to “@SDMX” which indicates that the Annotation is part of the controlled vocabulary described in the section List of Standard Annotations, and avoids using “@SDMX” for other usage contexts. For example, ORDER could be the order of codes (as described in this controlled vocabulary) or some kind of order number (a different usage).

The additional mandatory information to be provided is the type property that specifies the type of action to be implemented. There may be other mandatory property values depending on the type of the standard Annotation.

Examples

The green columns in the table below show example usages of standard Annotations. The orange “ORDER” column is not a standard Annotation because the usage context is not the same as the standard Annotation “ORDER”, therefore the id should not be “@SDMX”.

id*@SDMX@SDMX@SDMX

Not @SDMX

This is a “customer order no.” which is a different use case than the ORDER standard Annotation which is a list order

title   1934245
type*NOT_DISPLAYEDEXCLUDESORDERORDER
+text  en :10 
fr :20

* denotes a mandatory information for standard Annotations

The Business value of Standard Annotations

The following diagram explains the business value and decision process when deciding whether to use a standard Annotation. As can be seen, if they are used then a maximum reuse is made of the Annotation itself, tools and processes. If they are not used then bespoke Annotations, agreements, tools and processing are required to understand and make use of the information in the Annotation, and it (plus supporting tools, processes, etc.) is harder to reuse.

1768507168033-962.png

List of Standard Annotations

This section lists the standard Annotations with their typical usage contexts. This list will be expanded over time as new implementations and needs arise. When references to external standards are made (e.g. skos or xkos specifications), the reader is invited to consult the “References” section for more information.

The list of standard Annotations will be available from the SDMX Registry as artefact: SDMX:CS_ANNOT(*.*.*). Link: https://registry.sdmx.org/ws/public/sdmxapi/rest/conceptscheme/SDMX/CS_ANNOT/latest/?format=sdmx-2.1&detail=full&references=none

Note: There are several Annotations that are types of name or label, e.g. FULL_NAME, SHORT_LABEL, ORIGINAL_LABEL. These Annotations have specific use cases that are described in the tables below and should not be used to replace an artefact’s or item scheme item’s Name and Description property.

Relationships between Annotation properties

Text value defaults and specific locale values

Some use cases may benefit from having a single, default value for all locales/languages but also to set the value for certain locales. An example is ORDER where there may be a default list order for all locales but two locales have a specific order which is different from the default. In order to avoid having to state an order for every locale, the Annotation Title property may be used to state the default value, whereas the text property is used for the localised values.

Consider this annotation Example: An ORDER annotation type that is attached to a code item ACME. If both the Annotation Text and Annotation Title have values, then the Annotation Text value (e.g. en:10,es:20) is used for the localized values instead of the Annotation Title (e.g. 30) which would only be taken if the locale in the context is not found among the specified ones.

URL value defaults and specific locale values

SDMX 2.1 and earlier

In SDMX 2.1, the Annotation’s URL property is a single, non-localised value. There may be cases where different URLs are required for certain locales. In this case, it is recommended to use the Annotation text property and state the language and URL in an HTML fragment, for example:

fr:<a href=”https://someLink”>

When both a URL and text property for the locale exists, the text property overrides (is used instead of) the URL property.

SDMX 3.0 and later

Multiple URL localised properties were introduced in SDMX 3.0. Therefore, the URL work-around in the above paragraph is not recommended. The URL property should be used as shown in the table.

General and Display-related Annotation types

Annotation TypeUse CaseWhere to attach

+Text
Blue is optional

Title
Blue is optional

SDMX 2.1:URL
SDMX >=3.0:+URL
Blue is optional

FULL_NAMEAlternative name to be displayed for items in Item Schemes (e.g. Codelists, Concept Schemes, Category Schemes) whenever the item is displayed without its parent. For example, if a code list that has a hierarchy is displayed as a flat list, then this annotation may be used to provide sufficient context for the code. Concatenation of code + heading in NACE Rev.2.1 
en: A0123 Growing of citrus fruits
Item in an Item Scheme

<language>:<content>,<language>:<content>,…
Example:
en:Labour force (Employment)

<content> 
REPLACE_NAMEReplace each code name in a component by the value of another component in an observation or seriesA Dataflow or DSD 

<component Id to replace name>:<component Id to use name>
Example:
CUST_BREAKDOWN:CUST_BREAKDOWN_LB

 
REPLACE_CONTENTReplace the content in a component by the value of another component in an observation or seriesA Dataflow or DSD 

<component Id to replace content>:<component Id to use content>
Example:
REF_AREA:M49_CODE

 
COMPLEMENT

Additional fixed text to be displayed in parenthesis after the code name.
E.g. Representation of Non-hazardous (NHAZW), hazardous waste (HAZW) in the European List of Wastes
en: 01 03 04* acid-generating tailings from processing of sulphide ore (HAZW)
en: 01 03 99 wastes not otherwise specified (NHAZW)

Item in an Item Scheme

<language>:<content>,<language>:<content>,…

Example:
en:See reference metadata

<content> 
ORDERExplicit indication of a localised order of items in Items Schemes or artefacts (e.g. Codelist, Concept Scheme, Category Scheme, Dataflow, etc.)

Either:

  • an artefact, or;
  • an item in an Item Scheme

<language>:<content>,<language>:<content>,…

Example:
en:10,es:20

<content> 
TOTAL

Code Item that represents a total value. If the attachment is:

  • to a Code, the Annotation Text is optional and may contain an explanatory text;
  • to a Codelist, the Annotation Title is mandatory and includes the code(s) that represent a total

Either:

  • a Code Item that represents a total value, or;
  • a Codelist to specify the code(s) with the total

<language>:<explanatory text>, 
<language>:<explanatory text>,…

Attached to Code Item: <blank>
Attached to Codelist: <code>,<code>,…

 
DRILLDOWNDenotes the concept that specifies whether observations are at the aggregate level or a drilldown.

Either:

  • A Dataflow or DSD
 

<concept Id>
Example:
DD_DIM (this concept should be hidden using the NOT_DISPLAYED Annotation below)

 
DEPRECATED

Indication that an Item in an Item Scheme or an artefact is deprecated.
For an item scheme item, the annotation value provides a replacement name for the code name.
For an artefact, the URL points to the replacement artefact. May be used in conjunction with SUPERSEED where the replacement artefact references the replaced artefact.
Suggestion to use a controlled vocabulary
url: <http://publications.europa.eu/resource/authority/concept-status/CURRENT>
url: <http://publications.europa.eu/resource/authority/concept-status/DEPRECATED>
or
TITLE: true (false)

Either:

  • an artefact, or;
  • an item in an Item Scheme

For item scheme item:

<language>:<content>,<language>:<content>,…

Example:
en:deprecated,fr:obsolète

<content>

For artefact:
<see section URL value defaults and specific locale values>

DEFAULT

Indication that an item in an Item Scheme or artefacts is to be selected by default.

The Annotation defines a selection so that a pre-defined default subset of data can be processed (e.g. visualised, extracted) instead of the entire dataset

  • Item in ItemScheme, or;
  • DSD, or;
  • a Dataflow

Note: A DEFAULT Annotation attached to a later level in this list supersedes that attached to an earlier level. E.g., a DEFAULT Annotation attached to individual Codes in Codelists is only to be used when there is no DEFAULT Annotation attached to the Dataflow nor to the DSD, and those of DSDs are only to be used when there is no DEFAULT Annotation attached to the Dataflow.

 

Attached to:

- DSD or Dataflow:
<concept>=<code>+<code>+…,<concept>=<code>+<code>+…

Example: FREQ=A+Q,TIME_PERIOD_START=2013-01,TIME_PERIOD_END=2018-12

 
IMAGEA visual identity to associate to Item Scheme Items or artefacts

Either:

  • an artefact, or;
  • an item in an item scheme

For localised content in SDMX 2.1

<language>:<HTML containing URL to the resource>,

<language>:<HTML containing URL to the resource>,…

Example:

en:<a href=”https://sdmx.org/wp-content/uploads/SDMX_map_small-220x220.jpg”>

 

See section URL value defaults and specific locale values.

Example:

https://sdmx.org/wp-content/uploads/SDMX_map_small-220x220.jpg

DRILLDOWN_CONCEPTSConcepts to be displayed in a drilldown operationDataflow or DSD 

<concept Id>,<concept Id>,…

Example :

DONOR,RECIPIENT,YEAR,PROJECT_ID, OBS_VALUE,DESCRIPTION,OWNER

 
NOT_DISPLAYEDUsed to hide components or their values in the presentation

Either:

  • a Dataflow or DSD, or;
  • an Item in an Item Scheme
 

Attached to Item in Item Scheme: <blank>

Attached to Dataflow or DSD:

<concept Id>,<concept Id>,…

Example :

DD_DIM (to hide drilldown control concept)

 
LAYOUT_ROWDimensions to be presented in rows (concepts on y-axis)

Either:

  • an artefact, or;
  • a Dimension
 

Attached to Dimension: <blank>

Attached to Dataflow or DSD: <dimension Id>,<dimension Id >,…

Example:

REF_AREA,MEASURE

 
LAYOUT_COLUMNDimensions to be presented in columns (concepts on x-axis)

Either:

  • an artefact, or;

a Dimension

 

Attached to Dimension: <blank>

Attached to Dataflow or DSD: <dimension Id>,<dimension Id>,…

Example:

TIME_PERIOD

 
LAYOUT_FLAGIndication that an attribute and its attribute value should be presented as a flagDataflow 

<concept Id>,<concept Id>,...

Example:

OBS_STATUS,CONF_STATUS

 
LAYOUT_NOTEIndication that an attribute and its attribute value should  be presented as a noteDataflow 

<concept Id>,<concept Id>,...

Example:

OBS_STATUS,CONF_STATUS

 

METADATA

Links an MSD directly to a DSD. Can be used to overcome the complexities of reference metadata linkageDSD MSD URI, e.g. urn:sdmx:org.sdmx.infomodel.metadatastructure.MetadataStructure =OECD:MSD_REF_METADATA(1.0) 
LAYOUT_ROW_SECTIONDimension to be presented as a break-down concept at a third hierarchical level above columns and rows.

Either:

  • an artefact, or;
  • a Dimension
 

Attached to Dimension: <blank>

Attached to Dataflow or DSD: <dimension Id>,<dimension Id>,…

Example:

SEX

 
EXT_RESOURCE

A localised link to an external resource associated to the annotated artefact. For example, an ontology item

a methodology en:<a href:"https://ec.europa.eu/eurostat/web/waste/methodology">

Any SDMX object

For localised content in SDMX 2.1

 <language>:<HTML containing URL to the resource>,

<language>:<HTML containing URL to the resource>,…

Example:

en:<a href=”http://rdf-vocabulary.ddialliance.org/xkos#depth”>

 

See section URL value defaults and specific locale values.

Example:

http://rdf-vocabulary.ddialliance.org/xkos#depth

COMBINED_CONCEPTS

Comma-separated list of concept IDs to show as a concatenated label.

The listed concepts’ item contents may be concatenated to generate the target concept.

Multiple target concept combinations can be defined by separating the target concepts by ;

Dataflow or DSD

<language>:<display name>,
<language>:<display name>
e.g. COMBINED_UNIT_MEASURE:PRICE_BASE, UNIT_MEASURE;COMBINED_MEASURE:MEASURE, REF_SECTOR{(en):Combined unit of measure;Combined measure}{(fr):Unité de mesure combinée;Mesure combinée}

  
      
      
      
      
      
 

Codelist and Statistical Classification-specific Annotations

The categories below are used widely, for example by the European Statistical System (ESS), and the United Nations Statistics Division for its central framework classifications ISIC42 and CPC3.

Concept Scheme SDMX:CS_ANNOT

The Concept Scheme for standard Annotations will have the Maintenance Agency SDMX and will describe the following properties for each Annotation. For the information represented by Annotations, the value is in AnnotationTitle apart from the URL property where it is in AnnotationURL.

PropertyRepresentation in ConceptDescription
CodeConcept IdThe Annotation Type column, e.g. NOT_DISPLAYED, EXCLUDES
NameConcept NameShort description of the standard Annotation derived from the “Use case” column
RepresentationConcept Core RepresentationAllowable type or format for the Annotation
DescriptionConcept DescriptionThe information in the “Use case” column. Possible to add more contextual information. Specific details can be described here, such as if the value should be in AnnotationText or AnnotationTitle
Artefact(s)Annotation Type: Artefact(s)The information in the “Where to attach” column
URLAnnotation Type: URLThe Annotation URL column. The value is in URL

Example of a Concept

Concept IdNOT_DISPLAYED
Concept NameUsed to hide components or their values in the presentation
Concept Core Representation/TextFormat@textType="String"
Concept DescriptionTo hide dimensions and attributes in a display (e.g. a table). For example, if they have only one allowed, available or selected value
Concept: Annotation: Type: Artefact(s)Either a Dataflow or DSD, or an item in an item scheme

SDMX-ML of the Example

<str:Concept id="NOT_DISPLAYED">
   <com:Annotations>
      <com:Annotation>
         <com:AnnotationTitle>Either a Dataflow or DSD, or an item in an item scheme</com:AnnotationTitle>
         <com:AnnotationType>Artefact(s)</com:AnnotationType>
      </com:Annotation>
   </com:Annotations>
   <com:Name xml:lang="en">Used to hide components or their values in the presentation</com:Name>
   <com:Description xml:lang="en">To hide dimensions and attributes in a display (e.g. a table). For example, if they have only one allowed, available or selected value</com:Description>
   <str:CoreRepresentation>
      <str:TextFormat textType="String"/>
   </str:CoreRepresentation>
</str:Concept>

References


  1. ^ The technical standard does not enumerate the annotation types, however this guideline provides a recommended enumeration or controlled vocabulary
  2. ^ International Standard Industrial Classification of All Economic Activities
  3. ^ Central Product Classification

© Semantic R&D Group, 2026