Skip to content

MultiLanguage Property

Kevalkumar edited this page Jan 23, 2026 · 1 revision

Overview

A MultiLanguageProperty is a SubmodelElement used to represent language-dependent textual values.A single semantic ID represents the same concept expressed in multiple languages.According to the IDTA AAS specification, a MultiLanguageProperty contains an array of language–text pairs (LangString).This introduces ambiguity during value resolution because one semanticId maps to multiple values.

DataEngine supports MultiLanguageProperty elements by applying a deterministic language-based semanticId expansion strategy.

Semantics and intent

  • A MultiLanguageProperty represents one semantic concept expressed in multiple languages.
  • Each language variant is identified by a language code (for example, en, de).
  • The structure of supported languages is defined in the template.
  • Because one semanticId represents multiple textual values, special handling is required during runtime resolution.

How DataEngine handles MultiLanguageProperty

DataEngine applies the following handling rules for MultiLanguageProperty elements:

  • A single semanticId is extracted from the template during submodel or submodel element requests.
  • The set of supported languages is derived from the template's value array.
  • For each language entry, DataEngine derives a language-specific semantic ID using a configurable separator:
    • <semanticId>_<languageCode> (for example, _de, _en)
  • DataEngine requests values for all derived semantic IDs from the Plugin.
  • The Plugin returns one value per language-specific semantic ID.
  • DataEngine reassembles the returned values into the value array as LangString objects.
  • DataEngine does not infer additional languages or modify the language set defined in the template.

Example

Submodel template (from Template Repository)

{
	"modelType": "MultiLanguageProperty",
	"idShort": "Department",
	"semanticId": {
		"type": "ExternalReference",
		"keys": [{ "type": "GlobalReference", "value": "0173-1#02-AAO127#003" }]
	},
	"value": [
		{ "language": "de", "text": "" },
		{ "language": "en", "text": "" }
	]
}

Value provided by Plugin

The Plugin returns values for the language-specific semantic IDs.

{
    "0173-1#02-AAO127#003": {
        "0173-1#02-AAO127#003_de": "Vertrieb",
        "0173-1#02-AAO127#003_en": "Distribution"
    }
}

DataEngine response to user

DataEngine maps the resolved values back into the language-specific structure defined in the template.

{
	"modelType": "MultiLanguageProperty",
	"idShort": "Department",
	"semanticId": {
		"type": "ExternalReference",
		"keys": [{ "type": "GlobalReference", "value": "0173-1#02-AAO127#003" }]
	},
	"value": [
		{ "language": "de", "text": "Vertrieb" },
		{ "language": "en", "text": "Distribution" }
	]
}

Constraints and behavior

  • Each language entry must resolve to at most one value.
  • Plugins must follow the agreed language suffix convention.
  • If a value for a specific language is missing, the corresponding text may remain empty depending on configuration.
  • DataEngine does not translate values or infer missing languages.

Clone this wiki locally