Skip to content
Kevalkumar edited this page Jan 23, 2026 · 1 revision

Overview

A File is a SubmodelElement used to reference external file-based content via a resolvable URI or path, together with an associated MIME type. According to the IDTA AAS specification, a File element is unambiguous when its semantic ID is unique.

DataEngine supports File elements as a core SubmodelElement type for linking documents, manuals, images, or other external resources to an asset.

Semantics and intent

  • A File represents a reference to external content, not the content itself.
  • The meaning of the file is defined by its semanticId.
  • The file format is defined by the mimeType attribute.
  • The actual file location is provided via the value attribute.
  • Because the structure and semantics are clearly separated, File elements are well-suited for runtime value resolution via Plugins.

How DataEngine handles File

DataEngine applies the following handling rules for File elements:

  • A one-to-one mapping is maintained between a semanticId and a file reference.
  • The semanticId is extracted from the template during submodel or submodel element requests.
  • DataEngine requests a file reference for the semanticId from the Plugin.
  • The Plugin returns a resolvable URI or path mapped to the semanticId.
  • The mimeType remains template-driven and is not overridden by the Plugin.
  • The returned URI is injected into the File element without altering its structure.
  • DataEngine does not download, host, or transform the referenced file content.

Example

Submodel template (from Template Repository)

The following example shows a File definition in a submodel template. The template defines structure, semantics, and MIME type, but no runtime value.

{
  "modelType": "File",
  "idShort": "ManualPdf",
  "semanticId": {
    "type": "ExternalReference",
    "keys": [
      {
        "type": "GlobalReference",
        "value": "https://example.com/semantics/document/manual"
      }
    ]
  },
  "mimeType": "application/pdf",
  "value": ""
}

Value provided by Plugin

The Plugin resolves the semanticId and returns a resolvable URI pointing to the external file.

{
  "https://example.com/semantics/document/manual": "https://cdn.example.com/manuals/device-1234.pdf"
}

DataEngine response to user

DataEngine injects the resolved URI into the File element while preserving all original metadata.

{
  "modelType": "File",
  "idShort": "ManualPdf",
  "semanticId": {
    "type": "ExternalReference",
    "keys": [
      {
        "type": "GlobalReference",
        "value": "https://example.com/semantics/document/manual"
      }
    ]
  },
  "mimeType": "application/pdf",
  "value": "https://cdn.example.com/manuals/device-1234.pdf"
}

Constraints and behavior

  • Each File semanticId must resolve to at most one file reference.

  • The Plugin must return a resolvable URI or path.

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

Clone this wiki locally