Skip to content

Property

Kevalkumar edited this page Jan 23, 2026 · 1 revision

Overview

A Property is a scalar-valued SubmodelElement used to represent a single, typed value identified by a semantic ID. According to the IDTA AAS specification, a Property has no inherent ambiguity when its semantic ID is unique.

DataEngine supports Property elements as a core SubmodelElement type and treats them as the simplest and most deterministic form of value resolution.

Semantics and intent

  • A Property represents a single scalar value.

  • The meaning of the value is defined entirely by its semanticId.

  • The expected data type is defined by valueType.

Because of this strict definition, Properties are ideal candidates for semanticId-based resolution via Plugins.

How DataEngine handles Property

DataEngine applies the following handling rules for Property elements:

  • A strict one-to-one mapping is maintained between a semanticId and its value.

  • The semanticId is extracted from the template during submodel or submodel element requests.

  • DataEngine requests the value for the semanticId from the Plugin, Dataengine will also pass expedted valueType to Plugin.

  • The Plugin returns a scalar value mapped to the semanticId.

  • DataEngine validates the value against the declared valueType.

  • The validated value is injected into the Property element without altering its structure.

DataEngine does not infer, aggregate, or transform Property values.

Example

Submodel template (from Template Repository)

The following example shows a Property definition in a submodel template. The template contains structural and semantic information but no runtime value.

{
	"modelType": "Property",
	"idShort": "RatedVoltage",
	"semanticId": {
		"type": "ExternalReference",
		"keys": [{ "type": "GlobalReference", "value": "https://example.com/semantics/electrical/ratedVoltage" }]
	},
	"valueType": "xs:double",
	"value": ""
}

Value provided by Plugin

The Plugin resolves the semanticId and returns the corresponding scalar value. The response format is based on semanticId-to-value mapping.

{
  "https://example.com/semantics/electrical/ratedVoltage": "230.0"
}

DataEngine response to user

DataEngine injects the resolved value into the Property while preserving all original metadata.

{
	"modelType": "Property",
	"idShort": "RatedVoltage",
	"semanticId": {
		"type": "ExternalReference",
		"keys": [{ "type": "GlobalReference", "value": "https://example.com/semantics/electrical/ratedVoltage" }]
	},
	"valueType": "xs:double",
	"value": "230.0"
}

Constraints and behavior

  • Each Property semanticId must resolve to at most one value.

  • If a Plugin does not return a value for the semanticId, the Property may be returned with an empty value or throw erorr depedens on Cardinality.

  • If the returned value does not match valueType, the request will fail.

Clone this wiki locally