Skip to content

DDI Lifecycle Implementation Profile

The application is used to document the variables of a statistical data file and to manage the metadata associated with them. It allows users to create and modify variables, define their name, label, description and representation, and organize them within a physical instance. The application also supports the reuse of code lists, helping to ensure metadata consistency and to improve the discoverability and dissemination of statistical data. Metadata is managed according to the DDI Lifecycle standard and stored in the Colectica repository. The application supports the export of metadata in both DDI 3.3 (XML) and DDI 4.0/JSON serializations.

This document describes the subset of the DDI Lifecycle model implemented by the application.

The application uses DDI Lifecycle 4.0 as its internal metadata model. It does not implement the complete DDI Lifecycle model. Instead, its implementation focuses on the PhysicalInstance object and the variable-related structures associated with it.

The purpose of this document is to describe, as precisely as possible, the DDI objects, properties, and cardinalities implemented by the application, including application-specific restrictions.

The implementation matrix provides the detailed description of the implementation profile.

The main concepts implemented by the application are:

PhysicalInstance
└─► DataRelationship
└── LogicalRecord
└─► Variable
└── VariableRepresentation
├── TextRepresentation
├── NumericRepresentation
├── DateTimeRepresentation
│
├── CodeRepresentation
│ └──► CodeList
│ ├── Code
│ │ └─► Category
│ └── ...
│
└── MissingValuesReference
└─► ManagedMissingValuesRepresentation
└─► CodeList
├── Code
│ └─► Category
└── ...

Only DDI Lifecycle objects that are at least identifiable within the supported scope are shown in this high-level profile (except VariableRepresentation). ──► indicates a DDI reference to another object.

They are documented in more detail in the implementation matrix.

The application requires a set of DDI metadata to be available in the repository before variable documentation can be performed.

In particular, they define the relationship between the PhysicalInstance managed by the application and its parent StudyUnit, and provide the schemes used to organize variables, code lists, categories and missing value representations.

The placement of these schemes reflects their intended reuse scope. The VariableScheme is attached to the StudyUnit level, as variables instantiated within a study can be reused across the different PhysicalInstance of that study. In contrast, categories, code lists, and missing value representations can be shared across StudyUnit and are therefore organized at the Group level. This organization provides the structure required for the application’s metadata reuse functionality.

The following DDI objects and schemes are required:

Their relationship to the metadata managed by the application is illustrated below:

Group
├── StudyUnit
│ ├── LogicalProduct
│ │ └── VariableScheme (only one)
│ │
│ └── PhysicalInstance (managed by the application)
│
└── LogicalProduct
├── ManagedRepresentationScheme (only one)
├── CategoryScheme (only one)
└── CodeListScheme (only one)

In addition, the application can use pre-existing CodeListGroup definitions to present collections of reusable CodeList to all application users. This provides a way to promote the sharing and reuse of code lists with a high reuse potential, such as official, geographic and statistical classifications (e.g. NACE).

CodeList and Category reuse and derivation

Section titled “CodeList and Category reuse and derivation”

CodeLists can be reused through two mechanisms.

A CodeListGroup can be configured in the repository to provide a set of centrally managed CodeLists with high reuse potential, such as official, geographic and statistical classifications (e.g. NACE). These CodeLists are referenced directly and are available to all application users in read-only mode. They cannot be modified by application users.

User-created CodeLists are stored in the CodeListScheme at Group level and can be reused by variables belonging to the same or different PhysicalInstance and StudyUnit. A CodeList becomes shared when it is referenced by more than one variable.

Because CodeList and Category are versionable DDI objects, modifications of shared objects require a distinction between updating the shared object and creating a derived variant. If a shared CodeList is modified, the application can either update the existing object, affecting all variables that reference it, or create a new CodeList as a variant of the original one using BasedOnObject. The new CodeList remains in the same CodeListScheme and can subsequently be reused. The application does not use DDI versioning for these objects.

A derived CodeList initially reuses the Category objects of the original CodeList. Consequently, a Category may remain shared even when the CodeList using it has been derived. If a shared Category is modified, the application can similarly either update the shared Category or create a derived Category using BasedOnObject. When the modification is initiated from a shared CodeList, the application can derive both the CodeList and the Category so that the change applies only to the current variable.

These derived objects represent a new application-level variant, typically corresponding to a business evolution of the metadata. They are not treated as DDI versions; updating the existing shared object is instead used when the intention is to correct the shared metadata.

DDI identification and technical metadata are not considered user-editable fields. Some values may be managed by the application.

Typical examples for the creation of an item include:

PropertyOrigin
IDGenerated
URNGenerated
AgencyDefined in the configuration
VersionSet to 1; DDI versioning is not supported by the application
versionDateGenerated
isUniversallyUniqueSet to true

These properties apply to all identifiable objects: PhysicalInstance, DataRelationship, LogicalRecord, Variable, ManagedMissingValuesRepresentation, CodeList, Code and Category.

DDI pathModeCardinalityApplication restrictionComment
PhysicalInstanceContainer-1
PhysicalInstance/Citation/TitleEditable0..11
PhysicalInstance/DataRelationshipReferenceReference0..n1
DataRelationshipContainer--
DataRelationship/LabelInferred--Inferred as Structure: + PhysicalInstance/Label
DataRelationship/LogicalRecordGenerated0..n1
LogicalRecord/LabelInferred0..n1Inferred as LogicalRecord: + PhysicalInstance/Label
LogicalRecord/VariablesInRecordGenerated0..10..1
VariablesInRecord/VariableUsedReferenceReference0..n0..n
VariableContainer--
Variable/VariableNameEditable0..n11 supported language defined in the configuration
Variable/LabelEditable0..n11 supported language defined in the configuration
Variable/DescriptionEditable0..n0..1Markdown supported
Variable/VariableRepresentationEditable0..11
VariableRepresentation/TextRepresentationEditable0..10..1
TextRepresentation/minLengthEditable0..10..1
TextRepresentation/maxLengthEditable0..10..1
TextRepresentation/regExpEditable0..10..1
VariableRepresentation/NumericRepresentationEditable0..10..1
NumericRepresentation/NumericTypeCodeEditable0..11Enumerated values
NumericRepresentation/NumberRangeContainer0..10..1
NumberRange/LowEditable0..10..1isInclusive set to true
NumberRange/HighEditable0..10..1isInclusive set to true
VariableRepresentation/DateTimeRepresentationEditable0..10..1
DateTimeRepresentation/DateTypeCodeEditable0..11Enumerated values
VariableRepresentation/CodeRepresentationEditable0..10..1
CodeRepresentation/CodeListReferenceReference0..10..1
CodeListContainer--
CodeList/BasedOnObjectReference0..10..1References the original CodeList for a derived variant
CodeList/LabelEditable0..10..11 supported language defined in the configuration
CodeList/CodeEditable0..n0..n
Code/ValueEditable0..n0..n
Code/CategoryReferenceReference0..10..1
CategoryContainer--
Category/BasedOnObjectReference0..10..1References the original Category for a derived variant
Category/LabelEditable0..n0..1
VariableRepresentation/MissingValuesReferenceReference0..10..1
ManagedMissingValuesRepresentationContainer--
ManagedMissingValuesRepresentation/LabelInferred0..10..11 supported language defined in the configuration. Same label as the CodeList
ManagedMissingValuesRepresentation/MissingCodeRepresentationEditable0..n0..1Only MissingCodeRepresentation supported
MissingCodeRepresentation/CodeListReferenceReference0..10..1Same restrictions as CodeRepresentation/CodeListReference