diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..077972a
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,38 @@
+name: CI
+
+on:
+ push:
+ branches: ['main']
+ paths:
+ - dev_scripts/**
+ pull_request:
+ branches: [ 'main' ]
+ paths:
+ - dev_scripts/**
+
+jobs:
+ Precommit:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ python-version: ['3.10']
+
+ defaults:
+ run:
+ working-directory: ./dev_scripts
+
+ steps:
+ - uses: actions/checkout@master
+
+ - name: Set up Python ${{ matrix.python-version }}
+ uses: actions/setup-python@v2
+ with:
+ python-version: ${{ matrix.python-version }}
+
+ - name: Install dependencies
+ run: |
+ python3 -m pip install --upgrade pip
+ pip3 install -e .[dev]
+
+ - name: Run precommit.py
+ run: python3 precommit.py
diff --git a/.gitignore b/.gitignore
index 82f9275..db6288e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,4 @@
+.idea/
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..e6d334b
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,109 @@
+# Contributing
+
+## Issues
+
+Please report bugs or feature requests by [creating GitHub issues].
+
+[creating GitHub issues]: https://github.com/aas-core-works/aas-core-protobuf/issues
+
+## In Code
+
+If you want to contribute in code, pull requests are welcome!
+
+Please do [create a new issue] before you dive into coding.
+It can well be that we already started working on the feature, or that there are upstream or downstream complexities involved which you might not be aware of.
+
+[create a new issue]: https://github.com/aas-core-works/aas-core-protobuf/issues
+
+## Definition Generation
+
+All the generation logic lives in [dev_scripts/](dev_scripts/) (short for "development scripts").
+Dev. scripts are a Python project.
+
+To install the dev. scripts, create a virtual environment:
+
+```
+python3 -m venv venv
+```
+
+Activate it (on Linux):
+
+```
+source venv/bin/activate
+```
+
+Or on Windows:
+
+```
+venv/bin/Scripts/activate
+```
+
+Once in a virtual environment, install the dependencies to run the generation:
+
+```
+cd dev_scripts
+pip3 install -e .
+```
+
+Run the definition generation:
+
+```
+python dev_scripts/aas_core_protobuf_generation/main.py
+```
+
+If you want to propagate the changes from aas-core-meta or aas-core-codegen, update the dependencies in [dev_scripts/pyproject.toml](dev_scripts/pyproject.toml).
+
+### Development
+
+Install a couple of development dependencies (*e.g.*, tools for static code analysis):
+
+```
+pip3 install -e .[dev]
+```
+
+Make changes to the code.
+
+Run the precommit checks:
+
+```
+python dev_scripts/precommit.py
+```
+
+If you want to automatically re-format:
+
+```
+python dev_scripts/precommit.py --overwrite
+```
+
+### Pull Requests
+
+**Feature branches**.
+We develop using the feature branches, see [this section of the Git book].
+
+[this section of the Git book]: https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows
+
+If you are a member of the development team, create a feature branch directly within the repository.
+
+Otherwise, if you are a non-member contributor, fork the repository and create the feature branch in your forked repository.
+See [this GitHub tutorial] for more guidance.
+
+[this GitHub tutorial]: https://help.github.com/en/github/collaborating-with-issues-and-pull-requests/creating-a-pull-request-from-a-fork
+
+**Branch Prefix**.
+Please prefix the branch with your Github user name (*e.g.,* ``mristin/Add-some-feature``).
+
+**Continuous Integration**.
+GitHub will run the continuous integration (CI) automatically through GitHub actions.
+The CI includes running the tests, inspecting the code, re-building the documentation *etc.*
+
+### Commit Messages
+
+The commit messages follow the guidelines from https://chris.beams.io/posts/git-commit:
+
+* Separate subject from body with a blank line,
+* Limit the subject line to 50 characters,
+* Capitalize the subject line,
+* Do not end the subject line with a period,
+* Use the imperative mood in the subject line,
+* Wrap the body at 72 characters, and
+* Use the body to explain *what* and *why* (instead of *how*).
diff --git a/README.md b/README.md
index 831ea43..a5e2d3a 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,8 @@
# aas-core-protobuf
+
Provide Protocol Buffer definitions for AAS meta-models.
+
+We put the definitions in the directories corresponding to the meta-model version:
+* [v3/](v3/)
+
+If you want to contribute (*e.g.*, update or re-generate the definitions), please see [CONTRIBUTING.md](CONTRIBUTING.md).
diff --git a/dev_scripts/aas_core_protobuf_generation/__init__.py b/dev_scripts/aas_core_protobuf_generation/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/dev_scripts/aas_core_protobuf_generation/main.py b/dev_scripts/aas_core_protobuf_generation/main.py
new file mode 100644
index 0000000..ed48eed
--- /dev/null
+++ b/dev_scripts/aas_core_protobuf_generation/main.py
@@ -0,0 +1,51 @@
+"""Generate the Protobuf definitions for AAS meta-models."""
+
+import argparse
+import os
+import pathlib
+import sys
+
+import aas_core_codegen.main
+import aas_core_meta.v3
+
+
+def module_basename(name: str) -> str:
+ """
+ Extract the last name in a qualified module name.
+
+ >>> module_basename("aas_core_meta.v3")
+ 'v3'
+ """
+ return name.split(".")[-1]
+
+
+def main() -> int:
+ """Execute the main routine."""
+ parser = argparse.ArgumentParser(description=__doc__)
+ parser.parse_args()
+
+ this_path = pathlib.Path(os.path.realpath(__file__))
+
+ for meta_model in [aas_core_meta.v3]:
+ assert meta_model.__file__ is not None
+ model_path = pathlib.Path(meta_model.__file__)
+ meta_model_basename = module_basename(meta_model.__name__)
+
+ print(f"Generating the definitions for meta-model: {meta_model_basename}")
+
+ codegen_params = aas_core_codegen.main.Parameters(
+ model_path=model_path,
+ target=aas_core_codegen.main.Target.PROTOBUF,
+ snippets_dir=this_path.parent.parent / "snippets" / meta_model_basename,
+ output_dir=this_path.parent.parent.parent / meta_model_basename,
+ )
+
+ aas_core_codegen.main.execute(
+ params=codegen_params, stdout=sys.stdout, stderr=sys.stderr
+ )
+
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/dev_scripts/precommit.py b/dev_scripts/precommit.py
new file mode 100644
index 0000000..616d0bb
--- /dev/null
+++ b/dev_scripts/precommit.py
@@ -0,0 +1,44 @@
+"""Run the pre-commit on all the files."""
+
+import argparse
+import os
+import pathlib
+import subprocess
+import sys
+
+
+def main() -> int:
+ """Execute the main routine."""
+ parser = argparse.ArgumentParser(description=__doc__)
+ parser.add_argument(
+ "--overwrite", help="Auto-heal, where possible", action="store_true"
+ )
+ args = parser.parse_args()
+
+ overwrite = bool(args.overwrite)
+
+ this_path = pathlib.Path(os.path.realpath(__file__))
+
+ python_files = [
+ str(pth)
+ for pth in (
+ sorted((this_path.parent / "aas_core_protobuf_generation").glob("*.py"))
+ + [this_path.parent / "precommit.py"]
+ )
+ ]
+
+ subprocess.check_call(
+ ["black", "--check"] + python_files
+ if not overwrite
+ else ["black"] + python_files
+ )
+
+ subprocess.check_call(["mypy"] + python_files)
+
+ subprocess.check_call(["pylint"] + python_files)
+
+ return 0
+
+
+if __name__ == "__main__":
+ sys.exit(main())
diff --git a/dev_scripts/pyproject.toml b/dev_scripts/pyproject.toml
new file mode 100644
index 0000000..571cf59
--- /dev/null
+++ b/dev_scripts/pyproject.toml
@@ -0,0 +1,48 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
+
+[project]
+name = "aas-core-protobuf-generation"
+version = "0.0.1"
+
+description = "Generate ProtoBuf definitions for AAS meta-models."
+readme = "README.md"
+requires-python = ">=3.7"
+
+authors = [
+ { name = "Marko Ristin", email = "marko@ristin.ch" }
+]
+
+dependencies = [
+ "aas-core-meta@git+https://github.com/aas-core-works/aas-core-meta@f9cbdb3#egg=aas-core-meta",
+ "aas-core-codegen@git+https://github.com/aas-core-works/aas-core-codegen@6df5c9e8#egg=aas-core-codegen",
+]
+
+[project.urls]
+repository = "https://github.com/aas-core-works/aas-core-protobuf"
+
+license = "MIT"
+
+[tool.setuptools.packages.find]
+include = ["aas_core_protobuf_generation"]
+exclude = ["precommit.py"]
+
+# Development dependencies
+[tool]
+[tool.black]
+line-length = 88
+
+[tool.pylint]
+disable = ["too-many-locals", "no-member", "duplicate-code"]
+
+[tool.mypy]
+python_version = "3.8"
+strict = true
+
+[project.optional-dependencies]
+dev = [
+ "black==24.8.0",
+ "pylint==3.2.7",
+ "mypy==1.5.1",
+]
diff --git a/dev_scripts/snippets/v3/namespace.txt b/dev_scripts/snippets/v3/namespace.txt
new file mode 100644
index 0000000..74a993a
--- /dev/null
+++ b/dev_scripts/snippets/v3/namespace.txt
@@ -0,0 +1 @@
+aas_core3
\ No newline at end of file
diff --git a/dev_scripts/snippets/v3_1/namespace.txt b/dev_scripts/snippets/v3_1/namespace.txt
new file mode 100644
index 0000000..63a4767
--- /dev/null
+++ b/dev_scripts/snippets/v3_1/namespace.txt
@@ -0,0 +1 @@
+aas_core3_1
\ No newline at end of file
diff --git a/v3/types.proto b/v3/types.proto
new file mode 100644
index 0000000..138dd73
--- /dev/null
+++ b/v3/types.proto
@@ -0,0 +1,3780 @@
+/*
+ * This code has been automatically generated by aas-core-codegen.
+ * Do NOT edit or append.
+ */
+
+syntax = "proto3";
+
+package aas_core3;
+
+
+ ///
+ /// Single extension of an element.
+ ///
+ message Extension {
+ ///
+ /// Name of the extension.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-077:
+ /// The name of an extension (Extension/name) within needs
+ /// to be unique.
+ ///
+ ///
+ ///
+ string name = 1;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 2;
+
+ ///
+ /// Type of the value of the extension.
+ ///
+ ///
+ /// Default:
+ ///
+ optional DataTypeDefXsd value_type = 3;
+
+ ///
+ /// Reference to an element the extension refers to.
+ ///
+ repeated Reference refers_to = 4;
+
+ ///
+ /// Value of the extension
+ ///
+ optional string value = 5;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 6;
+ }
+
+ ///
+ /// Enumeration for denoting whether an element is a template or an instance.
+ ///
+ enum ModellingKind {
+ Modellingkind_UNSPECIFIED = 0;
+
+ ///
+ /// Specification of the common features of a structured element in sufficient detail
+ /// that such a instance can be instantiated using it
+ ///
+ Modellingkind_TEMPLATE = 1;
+
+ ///
+ /// Concrete, clearly identifiable element instance. Its creation and validation
+ /// may be guided by a corresponding element template.
+ ///
+ Modellingkind_INSTANCE = 2;
+ }
+
+ ///
+ /// Administrative meta-information for an element like version
+ /// information.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-005:
+ /// If is not specified then also shall be
+ /// unspecified. This means, a revision requires a version. If there is no version
+ /// there is no revision neither. Revision is optional.
+ ///
+ ///
+ ///
+ message AdministrativeInformation {
+ ///
+ /// Revision of the element.
+ ///
+ optional string revision = 1;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 2;
+
+ ///
+ /// The subject ID of the subject responsible for making the element.
+ ///
+ optional Reference creator = 3;
+
+ ///
+ /// Identifier of the template that guided the creation of the element.
+ ///
+ ///
+ ///
+ /// In case of a submodel the is the identifier
+ /// of the submodel template ID that guided the creation of the submodel
+ ///
+ ///
+ /// The is not relevant for validation in Submodels.
+ /// For validation the shall be used.
+ ///
+ ///
+ /// Usage of is not restricted to submodel instances. So also
+ /// the creation of submodel templates can be guided by another submodel template.
+ ///
+ ///
+ optional string template_id = 4;
+
+ ///
+ /// Version of the element.
+ ///
+ optional string version = 5;
+ }
+
+ ///
+ /// Enumeration for kinds of qualifiers.
+ ///
+ ///
+ /// This element is experimental and therefore may be subject to change or may be
+ /// removed completely in future versions of the meta-model.
+ ///
+ enum QualifierKind {
+ Qualifierkind_UNSPECIFIED = 0;
+
+ ///
+ /// qualifies the value of the element and can change during run-time.
+ ///
+ ///
+ /// Value qualifiers are only applicable to elements with kind
+ /// .
+ ///
+ Qualifierkind_VALUE_QUALIFIER = 1;
+
+ ///
+ /// qualifies the semantic definition the element is referring to
+ /// ()
+ ///
+ Qualifierkind_CONCEPT_QUALIFIER = 2;
+
+ ///
+ /// qualifies the elements within a specific submodel on concept level.
+ ///
+ ///
+ /// Template qualifiers are only applicable to elements with kind
+ /// .
+ ///
+ Qualifierkind_TEMPLATE_QUALIFIER = 3;
+ }
+
+ ///
+ /// A qualifier is a type-value-pair that makes additional statements w.r.t. the value
+ /// of the element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-006:
+ /// If both the and the of
+ /// a are present then the needs
+ /// to be identical to the value of the referenced coded value
+ /// in .
+ ///
+ /// -
+ /// Constraint AASd-020:
+ /// The value of shall be consistent to the data type as
+ /// defined in .
+ ///
+ ///
+ ///
+ message Qualifier {
+ ///
+ /// The qualifier kind describes the kind of the qualifier that is applied to the
+ /// element.
+ ///
+ ///
+ /// Default:
+ ///
+ optional QualifierKind kind = 1;
+
+ ///
+ /// Data type of the qualifier value.
+ ///
+ DataTypeDefXsd value_type = 2;
+
+ ///
+ /// The qualifier type describes the type of the qualifier that is applied to
+ /// the element.
+ ///
+ string type = 3;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 4;
+
+ ///
+ /// The qualifier value is the value of the qualifier.
+ ///
+ optional string value = 5;
+
+ ///
+ /// Reference to the global unique ID of a coded value.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference value_id = 6;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 7;
+ }
+
+ ///
+ /// An asset administration shell.
+ ///
+ message AssetAdministrationShell {
+ ///
+ /// References to submodels of the AAS.
+ ///
+ ///
+ ///
+ /// A submodel is a description of an aspect of the asset the AAS is representing.
+ ///
+ ///
+ /// The asset of an AAS is typically described by one or more submodels.
+ ///
+ ///
+ /// Temporarily no submodel might be assigned to the AAS.
+ ///
+ ///
+ repeated Reference submodels = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 3;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 4;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 5;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 6;
+
+ ///
+ /// Meta-information about the asset the AAS is representing.
+ ///
+ AssetInformation asset_information = 7;
+
+ ///
+ /// The reference to the AAS the AAS was derived from.
+ ///
+ optional Reference derived_from = 8;
+
+ ///
+ /// The globally unique identification of the element.
+ ///
+ string id = 9;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 10;
+
+ ///
+ /// Administrative information of an identifiable element.
+ ///
+ ///
+ /// Some of the administrative information like the version number might need to
+ /// be part of the identification.
+ ///
+ optional AdministrativeInformation administration = 11;
+ }
+
+ ///
+ /// In identifying meta data of the asset that is
+ /// represented by an AAS is defined.
+ ///
+ ///
+ ///
+ /// The asset may either represent an asset type or an asset instance.
+ ///
+ ///
+ /// The asset has a globally unique identifier plus – if needed – additional domain
+ /// specific (proprietary) identifiers. However, to support the corner case of very
+ /// first phase of lifecycle where a stabilised/constant_set global asset identifier
+ /// does not already exist, the corresponding attribute is
+ /// optional.
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ ///
+ /// Constraint AASd-116:
+ /// globalAssetId is a reserved key. If used as value for
+ /// then shall be
+ /// identical to .
+ ///
+ ///
+ /// Constraint AASd-116 is important to enable a generic search across
+ /// global and specific asset IDs.
+ ///
+ ///
+ ///
+ /// In the book, Constraint AASd-116 imposes a
+ /// case-insensitive equality against globalAssetId. This is
+ /// culturally-dependent, and depends on the system settings.
+ /// For example, the case-folding for the letters "i" and "I" is
+ /// different in Turkish from English.
+ ///
+ ///
+ /// We implement the constraint as case-sensitive instead to allow
+ /// for interoperability across different culture settings.
+ ///
+ ///
+ ///
+ /// -
+ /// Constraint AASd-131:
+ /// For either the shall be
+ /// defined or at least one item in .
+ ///
+ ///
+ ///
+ message AssetInformation {
+ ///
+ /// Additional domain-specific, typically proprietary identifier for the asset like
+ /// e.g., serial number etc.
+ ///
+ repeated SpecificAssetId specific_asset_ids = 1;
+
+ ///
+ /// Denotes whether the Asset is of kind or
+ /// .
+ ///
+ AssetKind asset_kind = 2;
+
+ ///
+ /// In case is applicable the is the asset ID
+ /// of the type asset of the asset under consideration
+ /// as identified by .
+ ///
+ ///
+ /// In case is "Instance" than the denotes
+ /// which "Type" the asset is of. But it is also possible
+ /// to have an of an asset of kind "Type".
+ ///
+ optional string asset_type = 3;
+
+ ///
+ /// Global identifier of the asset the AAS is representing.
+ ///
+ ///
+ ///
+ /// This attribute is required as soon as the AAS is exchanged via partners in the life
+ /// cycle of the asset. In a first phase of the life cycle the asset might not yet have
+ /// a global ID but already an internal identifier. The internal identifier would be
+ /// modelled via .
+ ///
+ ///
+ /// This is a global reference.
+ ///
+ ///
+ optional string global_asset_id = 4;
+
+ ///
+ /// Thumbnail of the asset represented by the Asset Administration Shell.
+ ///
+ ///
+ /// Used as default.
+ ///
+ optional Resource default_thumbnail = 5;
+ }
+
+ ///
+ /// Resource represents an address to a file (a locator). The value is an URI that
+ /// can represent an absolute or relative path
+ ///
+ message Resource {
+ ///
+ /// Content type of the content of the file.
+ ///
+ ///
+ /// The content type states which file extensions the file can have.
+ ///
+ optional string content_type = 1;
+
+ ///
+ /// Path and name of the resource (with file extension).
+ ///
+ ///
+ /// The path can be absolute or relative.
+ ///
+ string path = 2;
+ }
+
+ ///
+ /// Enumeration for denoting whether an asset is a type asset or an instance asset.
+ ///
+ enum AssetKind {
+ Assetkind_UNSPECIFIED = 0;
+
+ ///
+ /// Type asset
+ ///
+ Assetkind_TYPE = 1;
+
+ ///
+ /// Instance asset
+ ///
+ Assetkind_INSTANCE = 2;
+
+ ///
+ /// Neither a type asset nor an instance asset
+ ///
+ Assetkind_NOT_APPLICABLE = 3;
+ }
+
+ ///
+ /// A specific asset ID describes a generic supplementary identifying attribute of the
+ /// asset.
+ ///
+ ///
+ ///
+ /// The specific asset ID is not necessarily globally unique.
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-133:
+ /// shall be an external reference,
+ /// i.e. = .
+ ///
+ ///
+ ///
+ message SpecificAssetId {
+ ///
+ /// The value of the specific asset identifier with the corresponding name.
+ ///
+ string value = 1;
+
+ ///
+ /// Name of the identifier
+ ///
+ string name = 2;
+
+ ///
+ /// The (external) subject the key belongs to or has meaning to.
+ ///
+ ///
+ /// This is a global reference.
+ ///
+ optional Reference external_subject_id = 3;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 4;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 5;
+ }
+
+ ///
+ /// A submodel defines a specific aspect of the asset represented by the AAS.
+ ///
+ ///
+ /// A submodel is used to structure the digital representation and technical
+ /// functionality of an Administration Shell into distinguishable parts. Each submodel
+ /// refers to a well-defined domain or subject matter. Submodels can become
+ /// standardized and, thus, become submodels templates.
+ ///
+ message Submodel {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// A submodel consists of zero or more submodel elements.
+ ///
+ repeated SubmodelElement submodel_elements = 3;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 4;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 5;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 6;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 7;
+
+ ///
+ /// Kind of the element: either type or instance.
+ ///
+ ///
+ /// Default:
+ ///
+ optional ModellingKind kind = 8;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 9;
+
+ ///
+ /// The globally unique identification of the element.
+ ///
+ string id = 10;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 11;
+
+ ///
+ /// Administrative information of an identifiable element.
+ ///
+ ///
+ /// Some of the administrative information like the version number might need to
+ /// be part of the identification.
+ ///
+ optional AdministrativeInformation administration = 12;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 13;
+ }
+
+ ///
+ /// A relationship element is used to define a relationship between two elements
+ /// being either referable (model reference) or external (global reference).
+ ///
+ message RelationshipElement {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// Reference to the second element in the relationship taking the role of the object.
+ ///
+ Reference second = 3;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 4;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 5;
+
+ ///
+ /// Reference to the first element in the relationship taking the role of the subject.
+ ///
+ Reference first = 6;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 7;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 8;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 9;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 10;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 11;
+ }
+
+ ///
+ /// Enumeration of all possible elements of a .
+ ///
+ enum AasSubmodelElements {
+ Aassubmodelelements_UNSPECIFIED = 0;
+
+ Aassubmodelelements_ANNOTATED_RELATIONSHIP_ELEMENT = 1;
+
+ Aassubmodelelements_BASIC_EVENT_ELEMENT = 2;
+
+ Aassubmodelelements_BLOB = 3;
+
+ Aassubmodelelements_CAPABILITY = 4;
+
+ Aassubmodelelements_DATA_ELEMENT = 5;
+
+ Aassubmodelelements_ENTITY = 6;
+
+ Aassubmodelelements_EVENT_ELEMENT = 7;
+
+ Aassubmodelelements_FILE = 8;
+
+ Aassubmodelelements_MULTI_LANGUAGE_PROPERTY = 9;
+
+ Aassubmodelelements_OPERATION = 10;
+
+ Aassubmodelelements_PROPERTY = 11;
+
+ Aassubmodelelements_RANGE = 12;
+
+ Aassubmodelelements_REFERENCE_ELEMENT = 13;
+
+ Aassubmodelelements_RELATIONSHIP_ELEMENT = 14;
+
+ Aassubmodelelements_SUBMODEL_ELEMENT = 15;
+
+ Aassubmodelelements_SUBMODEL_ELEMENT_LIST = 16;
+
+ Aassubmodelelements_SUBMODEL_ELEMENT_COLLECTION = 17;
+ }
+
+ ///
+ /// A submodel element list is an ordered list of submodel elements.
+ ///
+ ///
+ ///
+ /// The numbering starts with zero (0).
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-107:
+ /// If a first level child element in a has
+ /// a it
+ /// shall be identical to .
+ ///
+ /// -
+ /// Constraint AASd-114:
+ /// If two first level child elements in a have
+ /// a then they shall be identical.
+ ///
+ /// -
+ /// Constraint AASd-115:
+ /// If a first level child element in a does not
+ /// specify a then the value is assumed to be
+ /// identical to .
+ ///
+ /// -
+ /// Constraint AASd-120:
+ /// The of a being a direct child of a
+ /// shall not be specified.
+ ///
+ /// -
+ /// Constraint AASd-108:
+ /// All first level child elements in a shall have
+ /// the same submodel element type as specified in .
+ ///
+ /// -
+ /// Constraint AASd-109:
+ /// If is equal to
+ /// or
+ ///
+ /// shall be set and all first
+ /// level child elements in the shall have
+ /// the value type as specified in .
+ ///
+ ///
+ ///
+ message SubmodelElementList {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// Defines whether order in list is relevant. If = False
+ /// then the list is representing a set or a bag.
+ ///
+ ///
+ /// Default: True
+ ///
+ optional bool order_relevant = 3;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 4;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 5;
+
+ ///
+ /// The submodel element type of the submodel elements contained in the list.
+ ///
+ AasSubmodelElements type_value_list_element = 6;
+
+ ///
+ /// Semantic ID the submodel elements contained in the list match to.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id_list_element = 7;
+
+ ///
+ /// The value type of the submodel element contained in the list.
+ ///
+ optional DataTypeDefXsd value_type_list_element = 8;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 9;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 10;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 11;
+
+ ///
+ /// Submodel element contained in the list.
+ ///
+ ///
+ /// The list is ordered.
+ ///
+ repeated SubmodelElement value = 12;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 13;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 14;
+ }
+
+ ///
+ /// A submodel element collection is a kind of struct, i.e. a a logical encapsulation
+ /// of multiple named values. It has a fixed number of submodel elements.
+ ///
+ message SubmodelElementCollection {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 3;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 4;
+
+ ///
+ /// Submodel element contained in the collection.
+ ///
+ repeated SubmodelElement value = 5;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 6;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 7;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 8;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 9;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 10;
+ }
+
+ ///
+ /// A property is a data element that has a single value.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-007:
+ /// If both, the and the are
+ /// present then the value of needs to be identical to
+ /// the value of the referenced coded value in .
+ ///
+ ///
+ ///
+ message Property {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 3;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 4;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 5;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 6;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 7;
+
+ ///
+ /// Data type of the value
+ ///
+ DataTypeDefXsd value_type = 8;
+
+ ///
+ /// The value of the property instance.
+ ///
+ optional string value = 9;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 10;
+
+ ///
+ /// Reference to the global unique ID of a coded value.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference value_id = 11;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 12;
+ }
+
+ ///
+ /// A property is a data element that has a multi-language value.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-012:
+ /// If both the and the are present then for each
+ /// string in a specific language the meaning must be the same as specified in
+ /// .
+ ///
+ ///
+ ///
+ message MultiLanguageProperty {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 3;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 4;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 5;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 6;
+
+ ///
+ /// The value of the property instance.
+ ///
+ repeated LangStringTextType value = 7;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 8;
+
+ ///
+ /// Reference to the global unique ID of a coded value.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference value_id = 9;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 10;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 11;
+ }
+
+ ///
+ /// A range data element is a data element that defines a range with min and max.
+ ///
+ message Range {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// The maximum value of the range.
+ ///
+ ///
+ /// If the max value is missing, then the value is assumed to be positive infinite.
+ ///
+ optional string max = 3;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 4;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 5;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 6;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 7;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 8;
+
+ ///
+ /// Data type of the min und max
+ ///
+ DataTypeDefXsd value_type = 9;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 10;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 11;
+
+ ///
+ /// The minimum value of the range.
+ ///
+ ///
+ /// If the min value is missing, then the value is assumed to be negative infinite.
+ ///
+ optional string min = 12;
+ }
+
+ ///
+ /// A reference element is a data element that defines a logical reference to another
+ /// element within the same or another AAS or a reference to an external object or
+ /// entity.
+ ///
+ message ReferenceElement {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// Global reference to an external object or entity or a logical reference to
+ /// another element within the same or another AAS (i.e. a model reference to
+ /// a Referable).
+ ///
+ optional Reference value = 3;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 4;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 5;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 6;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 7;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 8;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 9;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 10;
+ }
+
+ ///
+ /// A is a data element that represents a file that is contained with its
+ /// source code in the value attribute.
+ ///
+ message Blob {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// Content type of the content of the .
+ ///
+ ///
+ ///
+ /// The content type (MIME type) states which file extensions the file can have.
+ ///
+ ///
+ /// Valid values are content types like e.g. application/json, application/xls,
+ /// image/jpg.
+ ///
+ ///
+ /// The allowed values are defined as in RFC2046.
+ ///
+ ///
+ string content_type = 3;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 4;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 5;
+
+ ///
+ /// The value of the instance of a blob data element.
+ ///
+ ///
+ /// In contrast to the file property the file content is stored directly as value
+ /// in the data element.
+ ///
+ optional bytes value = 6;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 7;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 8;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 9;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 10;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 11;
+ }
+
+ ///
+ /// A File is a data element that represents an address to a file (a locator).
+ ///
+ ///
+ /// The value is an URI that can represent an absolute or relative path.
+ ///
+ message File {
+ ///
+ /// Path and name of the referenced file (with file extension).
+ ///
+ ///
+ /// The path can be absolute or relative.
+ ///
+ optional string value = 1;
+
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 2;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 3;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 4;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 5;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 6;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 7;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 8;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 9;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 10;
+
+ ///
+ /// Content type of the content of the file.
+ ///
+ ///
+ /// The content type states which file extensions the file can have.
+ ///
+ string content_type = 11;
+ }
+
+ ///
+ /// An annotated relationship element is a relationship element that can be annotated
+ /// with additional data elements.
+ ///
+ message AnnotatedRelationshipElement {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// Reference to the second element in the relationship taking the role of the object.
+ ///
+ Reference second = 3;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 4;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 5;
+
+ ///
+ /// Reference to the first element in the relationship taking the role of the subject.
+ ///
+ Reference first = 6;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 7;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 8;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 9;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 10;
+
+ ///
+ /// A data element that represents an annotation that holds for the relationship
+ /// between the two elements
+ ///
+ repeated DataElement annotations = 11;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 12;
+ }
+
+ ///
+ /// An entity is a submodel element that is used to model entities.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-014:
+ /// Either the attribute or
+ /// of an must be set if is set to
+ /// . They are not existing otherwise.
+ ///
+ ///
+ ///
+ message Entity {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// Describes whether the entity is a co-managed entity or a self-managed entity.
+ ///
+ EntityType entity_type = 3;
+
+ ///
+ /// Describes statements applicable to the entity by a set of submodel elements,
+ /// typically with a qualified value.
+ ///
+ repeated SubmodelElement statements = 4;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 5;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 6;
+
+ ///
+ /// Global identifier of the asset the entity is representing.
+ ///
+ ///
+ /// This is a global reference.
+ ///
+ optional string global_asset_id = 7;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 8;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 9;
+
+ ///
+ /// Reference to a specific asset ID representing a supplementary identifier
+ /// of the asset represented by the Asset Administration Shell.
+ ///
+ repeated SpecificAssetId specific_asset_ids = 10;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 11;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 12;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 13;
+ }
+
+ ///
+ /// Enumeration for denoting whether an entity is a self-managed entity or a co-managed
+ /// entity.
+ ///
+ enum EntityType {
+ Entitytype_UNSPECIFIED = 0;
+
+ ///
+ /// For co-managed entities there is no separate AAS. Co-managed entities need to be
+ /// part of a self-managed entity.
+ ///
+ Entitytype_CO_MANAGED_ENTITY = 1;
+
+ ///
+ /// Self-Managed Entities have their own AAS but can be part of the bill of material of
+ /// a composite self-managed entity.
+ ///
+ ///
+ /// The asset of an I4.0 Component is a self-managed entity per definition.
+ ///
+ Entitytype_SELF_MANAGED_ENTITY = 2;
+ }
+
+ ///
+ /// Direction
+ ///
+ ///
+ /// This element is experimental and therefore may be subject to change or may be
+ /// removed completely in future versions of the meta-model.
+ ///
+ enum Direction {
+ Direction_UNSPECIFIED = 0;
+
+ ///
+ /// Input direction.
+ ///
+ Direction_INPUT = 1;
+
+ ///
+ /// Output direction
+ ///
+ Direction_OUTPUT = 2;
+ }
+
+ ///
+ /// State of an event
+ ///
+ ///
+ /// This element is experimental and therefore may be subject to change or may be
+ /// removed completely in future versions of the meta-model.
+ ///
+ enum StateOfEvent {
+ Stateofevent_UNSPECIFIED = 0;
+
+ ///
+ /// Event is on
+ ///
+ Stateofevent_ON = 1;
+
+ ///
+ /// Event is off.
+ ///
+ Stateofevent_OFF = 2;
+ }
+
+ ///
+ /// Defines the necessary information of an event instance sent out or received.
+ ///
+ ///
+ /// This element is experimental and therefore may be subject to change or may be
+ /// removed completely in future versions of the meta-model.
+ ///
+ message EventPayload {
+ ///
+ /// Reference to the source event element, including identification of
+ /// , ,
+ /// 's.
+ ///
+ Reference source = 1;
+
+ ///
+ /// Reference to the referable, which defines the scope of the event.
+ ///
+ ///
+ /// Can be , or
+ /// .
+ ///
+ Reference observable_reference = 2;
+
+ ///
+ /// of the source event element, if available
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference source_semantic_id = 3;
+
+ ///
+ /// of the referable which defines the scope of
+ /// the event, if available.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference observable_semantic_id = 4;
+
+ ///
+ /// Information for the outer message infrastructure for scheduling the event to
+ /// the respective communication channel.
+ ///
+ optional string topic = 5;
+
+ ///
+ /// Timestamp in UTC, when this event was triggered.
+ ///
+ string time_stamp = 6;
+
+ ///
+ /// Subject, who/which initiated the creation.
+ ///
+ ///
+ /// This is an external reference.
+ ///
+ optional Reference subject_id = 7;
+
+ ///
+ /// Event specific payload.
+ ///
+ optional bytes payload = 8;
+ }
+
+ ///
+ /// A basic event element.
+ ///
+ ///
+ /// This element is experimental and therefore may be subject to change or may be
+ /// removed completely in future versions of the meta-model.
+ ///
+ message BasicEventElement {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 3;
+
+ ///
+ /// Direction of event.
+ ///
+ ///
+ /// Can be { Input, Output }.
+ ///
+ Direction direction = 4;
+
+ ///
+ /// Information for the outer message infrastructure for scheduling the event to the
+ /// respective communication channel.
+ ///
+ optional string message_topic = 5;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 6;
+
+ ///
+ /// Timestamp in UTC, when the last event was received (input direction) or sent
+ /// (output direction).
+ ///
+ optional string last_update = 7;
+
+ ///
+ /// For input direction: not applicable.
+ ///
+ ///
+ ///
+ /// For output direction: maximum interval in time, the respective Referable shall send
+ /// an update of the status of the event, even if no other trigger condition for
+ /// the event was not met.
+ ///
+ ///
+ /// Might be not specified, that is, there is no maximum interval
+ ///
+ ///
+ optional string max_interval = 8;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 9;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 10;
+
+ ///
+ /// State of event.
+ ///
+ ///
+ /// Can be { On, Off }.
+ ///
+ StateOfEvent state = 11;
+
+ ///
+ /// Reference to the , which defines the scope of the event.
+ /// Can be , , or
+ /// .
+ ///
+ ///
+ /// Reference to a referable, e.g., a data element or
+ /// a submodel, that is being observed.
+ ///
+ Reference observed = 12;
+
+ ///
+ /// Information, which outer message infrastructure shall handle messages for
+ /// the . Refers to a ,
+ /// , or
+ /// , which contains 's describing
+ /// the proprietary specification for the message broker.
+ ///
+ ///
+ /// For different message infrastructure, e.g., OPC UA or MQTT or AMQP, this
+ /// proprietary specification could be standardized by having respective Submodels.
+ ///
+ optional Reference message_broker = 13;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 14;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 15;
+
+ ///
+ /// For input direction, reports on the maximum frequency, the software entity behind
+ /// the respective Referable can handle input events.
+ ///
+ ///
+ ///
+ /// For output events, specifies the maximum frequency of outputting this event to
+ /// an outer infrastructure.
+ ///
+ ///
+ /// Might be not specified, that is, there is no minimum interval.
+ ///
+ ///
+ optional string min_interval = 16;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 17;
+ }
+
+ ///
+ /// An operation is a submodel element with input and output variables.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-134:
+ /// For an the of all
+ /// 's in
+ /// ,
+ /// and shall be unique.
+ ///
+ ///
+ ///
+ message Operation {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// Input parameter of the operation.
+ ///
+ repeated OperationVariable input_variables = 3;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 4;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 5;
+
+ ///
+ /// Output parameter of the operation.
+ ///
+ repeated OperationVariable output_variables = 6;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 7;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 8;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 9;
+
+ ///
+ /// Parameter that is input and output of the operation.
+ ///
+ repeated OperationVariable inoutput_variables = 10;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 11;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 12;
+ }
+
+ ///
+ /// The value of an operation variable is a submodel element that is used as input
+ /// and/or output variable of an operation.
+ ///
+ message OperationVariable {
+ ///
+ /// Describes an argument or result of an operation via a submodel element
+ ///
+ SubmodelElement value = 1;
+ }
+
+ ///
+ /// A capability is the implementation-independent description of the potential of an
+ /// asset to achieve a certain effect in the physical or virtual world.
+ ///
+ ///
+ /// The of a capability is typically an ontology.
+ /// Thus, reasoning on capabilities is enabled.
+ ///
+ message Capability {
+ ///
+ /// Additional qualification of a qualifiable element.
+ ///
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-021:
+ /// Every qualifiable can only have one qualifier with the same
+ /// .
+ ///
+ ///
+ ///
+ repeated Qualifier qualifiers = 1;
+
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 2;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 3;
+
+ ///
+ /// Identifier of a supplemental semantic definition of the element.
+ /// It is called supplemental semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ repeated Reference supplemental_semantic_ids = 4;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 5;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 6;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 7;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 8;
+
+ ///
+ /// Identifier of the semantic definition of the element. It is called semantic ID
+ /// of the element or also main semantic ID of the element.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ optional Reference semantic_id = 9;
+ }
+
+ ///
+ /// The semantics of a property or other elements that may have a semantic description
+ /// is defined by a concept description.
+ ///
+ ///
+ ///
+ /// The description of the concept should follow a standardized schema (realized as
+ /// data specification template).
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ ///
+ /// Constraint AASc-3a-004:
+ /// For a with PROPERTY or
+ /// VALUE using data specification IEC61360,
+ /// the is mandatory and shall be
+ /// one of: DATE, STRING, STRING_TRANSLATABLE, INTEGER_MEASURE,
+ /// INTEGER_COUNT, INTEGER_CURRENCY, REAL_MEASURE, REAL_COUNT,
+ /// REAL_CURRENCY, BOOLEAN, RATIONAL, RATIONAL_MEASURE,
+ /// TIME, TIMESTAMP.
+ ///
+ ///
+ /// Note: categories are deprecated since V3.0 of Part 1a of the document series
+ /// "Details of the Asset Administration Shell".
+ ///
+ ///
+ /// -
+ ///
+ /// Constraint AASc-3a-005:
+ /// For a with REFERENCE
+ /// using data specification template IEC61360,
+ /// the shall be
+ /// one of: STRING, IRI, IRDI.
+ ///
+ ///
+ /// Note: categories are deprecated since V3.0 of Part 1a of the document series
+ /// "Details of the Asset Administration Shell".
+ ///
+ ///
+ /// -
+ ///
+ /// Constraint AASc-3a-006:
+ /// For a with DOCUMENT
+ /// using data specification IEC61360,
+ /// the shall be one of FILE,
+ /// BLOB, HTML
+ ///
+ ///
+ /// Categories are deprecated since V3.0 of Part 1a of the document series
+ /// "Details of the Asset Administration Shell".
+ ///
+ ///
+ /// -
+ ///
+ /// Constraint AASc-3a-007:
+ /// For a with QUALIFIER_TYPE
+ /// using data specification IEC61360,
+ /// the is mandatory and shall be
+ /// defined.
+ ///
+ ///
+ /// Categories are deprecated since V3.0 of Part 1a of the document series
+ /// "Details of the Asset Administration Shell".
+ ///
+ ///
+ /// -
+ ///
+ /// Constraint AASc-3a-008:
+ /// For a using data specification template IEC61360,
+ /// is mandatory and shall be
+ /// defined at least in English.
+ ///
+ ///
+ /// Exception: The concept description describes a value, i.e.
+ /// is defined.
+ ///
+ ///
+ /// -
+ /// Constraint AASc-3a-003:
+ /// For a using data specification template IEC61360,
+ /// referenced via
+ ///
+ /// the shall be set.
+ ///
+ ///
+ ///
+ message ConceptDescription {
+ ///
+ /// The category is a value that gives further meta information
+ /// w.r.t. to the class of the element.
+ /// It affects the expected existence of attributes and the applicability of
+ /// constraints.
+ ///
+ ///
+ /// The category is not identical to the semantic definition
+ /// () of an element. The category e.g. could denote that
+ /// the element is a measurement value whereas the semantic definition of
+ /// the element would denote that it is the measured temperature.
+ ///
+ optional string category = 1;
+
+ ///
+ /// Reference to an external definition the concept is compatible to or was derived
+ /// from.
+ ///
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ ///
+ /// Compare to is-case-of relationship in ISO 13584-32 & IEC EN 61360
+ ///
+ ///
+ repeated Reference is_case_of = 2;
+
+ ///
+ /// In case of identifiables this attribute is a short name of the element.
+ /// In case of referable this ID is an identifying string of the element within
+ /// its name space.
+ ///
+ ///
+ /// In case the element is a property and the property has a semantic definition
+ /// () conformant to IEC61360
+ /// the is typically identical to the short name in English.
+ ///
+ optional string id_short = 3;
+
+ ///
+ /// An extension of the element.
+ ///
+ repeated Extension extensions = 4;
+
+ ///
+ /// Display name. Can be provided in several languages.
+ ///
+ repeated LangStringNameType display_name = 5;
+
+ ///
+ /// Embedded data specification.
+ ///
+ repeated EmbeddedDataSpecification embedded_data_specifications = 6;
+
+ ///
+ /// The globally unique identification of the element.
+ ///
+ string id = 7;
+
+ ///
+ /// Description or comments on the element.
+ ///
+ ///
+ ///
+ /// The description can be provided in several languages.
+ ///
+ ///
+ /// If no description is defined, then the definition of the concept
+ /// description that defines the semantics of the element is used.
+ ///
+ ///
+ /// Additional information can be provided, e.g., if the element is
+ /// qualified and which qualifier types can be expected in which
+ /// context or which additional data specification templates are
+ /// provided.
+ ///
+ ///
+ repeated LangStringTextType description = 8;
+
+ ///
+ /// Administrative information of an identifiable element.
+ ///
+ ///
+ /// Some of the administrative information like the version number might need to
+ /// be part of the identification.
+ ///
+ optional AdministrativeInformation administration = 9;
+ }
+
+ ///
+ /// Reference types
+ ///
+ enum ReferenceTypes {
+ Referencetypes_UNSPECIFIED = 0;
+
+ ///
+ /// External reference.
+ ///
+ Referencetypes_EXTERNAL_REFERENCE = 1;
+
+ ///
+ /// Model reference.
+ ///
+ Referencetypes_MODEL_REFERENCE = 2;
+ }
+
+ ///
+ /// Reference to either a model element of the same or another AAS or to an external
+ /// entity.
+ ///
+ ///
+ ///
+ /// A reference is an ordered list of keys.
+ ///
+ ///
+ /// A model reference is an ordered list of keys, each key referencing an element. The
+ /// complete list of keys may for example be concatenated to a path that then gives
+ /// unique access to an element.
+ ///
+ ///
+ /// An external reference is a reference to an external entity.
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASd-121:
+ /// For 's the value of of the first key of "
+ /// shall be one of .
+ ///
+ /// -
+ /// Constraint AASd-122:
+ /// For external references, i.e. 's with
+ /// = , the value
+ /// of of the first key of shall be one of
+ /// .
+ ///
+ /// -
+ /// Constraint AASd-123:
+ /// For model references, i.e. 's with
+ /// = , the value
+ /// of of the first key of shall be one of
+ /// .
+ ///
+ /// -
+ /// Constraint AASd-124:
+ /// For external references, i.e. 's with
+ /// = , the last
+ /// key of shall be either one of
+ /// or one of
+ /// .
+ ///
+ /// -
+ ///
+ /// Constraint AASd-125:
+ /// For model references, i.e. 's with
+ /// = , with more
+ /// than one key in the value of
+ /// of each of the keys following the first
+ /// key of shall be one of .
+ ///
+ ///
+ /// Constraint AASd-125 ensures that the shortest path is used.
+ ///
+ ///
+ /// -
+ /// Constraint AASd-126:
+ /// For model references, i.e. 's with
+ /// = , with more
+ /// than one key in the value of
+ /// of the last key in the reference key chain may be
+ /// one of or no key at all
+ /// shall have a value out of .
+ ///
+ /// -
+ ///
+ /// Constraint AASd-127:
+ /// For model references, i.e. 's with
+ /// = , with more
+ /// than one key in a key with
+ /// shall be preceded by a key with
+ /// or . All other
+ /// AAS fragments, i.e. values
+ /// out of , do not support fragments.
+ ///
+ ///
+ /// Which kind of fragments are supported depends on the content type and the
+ /// specification of allowed fragment identifiers for the corresponding resource
+ /// being referenced via the reference.
+ ///
+ ///
+ /// -
+ /// Constraint AASd-128:
+ /// For model references, i.e. 's with
+ /// = , the
+ /// of a preceded by a with
+ /// = is an integer
+ /// number denoting the position in the array of the submodel element list.
+ ///
+ ///
+ ///
+ message Reference {
+ ///
+ /// Unique references in their name space.
+ ///
+ repeated Key keys = 1;
+
+ ///
+ /// Type of the reference.
+ ///
+ ///
+ /// Denotes, whether reference is an external reference or a model reference.
+ ///
+ ReferenceTypes type = 2;
+
+ ///
+ /// of the referenced model element
+ /// ( = ).
+ ///
+ ///
+ ///
+ /// For external references there typically is no semantic ID.
+ ///
+ ///
+ /// It is recommended to use a external reference.
+ ///
+ ///
+ optional Reference referred_semantic_id = 3;
+ }
+
+ ///
+ /// A key is a reference to an element by its ID.
+ ///
+ message Key {
+ ///
+ /// The key value, for example an IRDI or an URI
+ ///
+ string value = 1;
+
+ ///
+ /// Denotes which kind of entity is referenced.
+ ///
+ ///
+ ///
+ /// In case = ,
+ /// the key represents a reference to a source that can be globally identified.
+ ///
+ ///
+ /// In case = the key represents
+ /// a bookmark or a similar local identifier within its parent element as specified
+ /// by the key that precedes this key.
+ ///
+ ///
+ /// In all other cases the key references a model element of the same or of another AAS.
+ /// The name of the model element is explicitly listed.
+ ///
+ ///
+ KeyTypes type = 2;
+ }
+
+ ///
+ /// Enumeration of different key value types within a key.
+ ///
+ enum KeyTypes {
+ Keytypes_UNSPECIFIED = 0;
+
+ Keytypes_ANNOTATED_RELATIONSHIP_ELEMENT = 1;
+
+ Keytypes_ASSET_ADMINISTRATION_SHELL = 2;
+
+ Keytypes_BASIC_EVENT_ELEMENT = 3;
+
+ Keytypes_BLOB = 4;
+
+ Keytypes_CAPABILITY = 5;
+
+ Keytypes_CONCEPT_DESCRIPTION = 6;
+
+ ///
+ /// Data element.
+ ///
+ ///
+ /// Data Element is abstract, i.e. if a key uses
+ /// the reference may be a Property, a File etc.
+ ///
+ Keytypes_DATA_ELEMENT = 7;
+
+ Keytypes_ENTITY = 8;
+
+ ///
+ /// Event.
+ ///
+ ///
+ /// is abstract.
+ ///
+ Keytypes_EVENT_ELEMENT = 9;
+
+ Keytypes_FILE = 10;
+
+ ///
+ /// Bookmark or a similar local identifier of a subordinate part of
+ /// a primary resource
+ ///
+ Keytypes_FRAGMENT_REFERENCE = 11;
+
+ Keytypes_GLOBAL_REFERENCE = 12;
+
+ ///
+ /// Identifiable.
+ ///
+ ///
+ /// Identifiable is abstract, i.e. if a key uses “Identifiable” the reference
+ /// may be an Asset Administration Shell, a Submodel or a Concept Description.
+ ///
+ Keytypes_IDENTIFIABLE = 13;
+
+ ///
+ /// Property with a value that can be provided in multiple languages
+ ///
+ Keytypes_MULTI_LANGUAGE_PROPERTY = 14;
+
+ Keytypes_OPERATION = 15;
+
+ Keytypes_PROPERTY = 16;
+
+ ///
+ /// Range with min and max
+ ///
+ Keytypes_RANGE = 17;
+
+ Keytypes_REFERABLE = 18;
+
+ ///
+ /// Reference
+ ///
+ Keytypes_REFERENCE_ELEMENT = 19;
+
+ ///
+ /// Relationship
+ ///
+ Keytypes_RELATIONSHIP_ELEMENT = 20;
+
+ Keytypes_SUBMODEL = 21;
+
+ ///
+ /// Submodel Element
+ ///
+ ///
+ /// Submodel Element is abstract, i.e. if a key uses
+ /// the reference may be a , an etc.
+ ///
+ Keytypes_SUBMODEL_ELEMENT = 22;
+
+ ///
+ /// Struct of Submodel Elements
+ ///
+ Keytypes_SUBMODEL_ELEMENT_COLLECTION = 23;
+
+ ///
+ /// List of Submodel Elements
+ ///
+ Keytypes_SUBMODEL_ELEMENT_LIST = 24;
+ }
+
+ ///
+ /// Enumeration listing all XSD anySimpleTypes
+ ///
+ enum DataTypeDefXsd {
+ Datatypedefxsd_UNSPECIFIED = 0;
+
+ Datatypedefxsd_ANY_URI = 1;
+
+ Datatypedefxsd_BASE_64_BINARY = 2;
+
+ Datatypedefxsd_BOOLEAN = 3;
+
+ Datatypedefxsd_BYTE = 4;
+
+ Datatypedefxsd_DATE = 5;
+
+ Datatypedefxsd_DATE_TIME = 6;
+
+ Datatypedefxsd_DECIMAL = 7;
+
+ Datatypedefxsd_DOUBLE = 8;
+
+ Datatypedefxsd_DURATION = 9;
+
+ Datatypedefxsd_FLOAT = 10;
+
+ Datatypedefxsd_G_DAY = 11;
+
+ Datatypedefxsd_G_MONTH = 12;
+
+ Datatypedefxsd_G_MONTH_DAY = 13;
+
+ Datatypedefxsd_G_YEAR = 14;
+
+ Datatypedefxsd_G_YEAR_MONTH = 15;
+
+ Datatypedefxsd_HEX_BINARY = 16;
+
+ Datatypedefxsd_INT = 17;
+
+ Datatypedefxsd_INTEGER = 18;
+
+ Datatypedefxsd_LONG = 19;
+
+ Datatypedefxsd_NEGATIVE_INTEGER = 20;
+
+ Datatypedefxsd_NON_NEGATIVE_INTEGER = 21;
+
+ Datatypedefxsd_NON_POSITIVE_INTEGER = 22;
+
+ Datatypedefxsd_POSITIVE_INTEGER = 23;
+
+ Datatypedefxsd_SHORT = 24;
+
+ Datatypedefxsd_STRING = 25;
+
+ Datatypedefxsd_TIME = 26;
+
+ Datatypedefxsd_UNSIGNED_BYTE = 27;
+
+ Datatypedefxsd_UNSIGNED_INT = 28;
+
+ Datatypedefxsd_UNSIGNED_LONG = 29;
+
+ Datatypedefxsd_UNSIGNED_SHORT = 30;
+ }
+
+ ///
+ /// String with length 128 maximum and minimum 1 characters and with language tags
+ ///
+ message LangStringNameType {
+ ///
+ /// Text in the
+ ///
+ string text = 1;
+
+ ///
+ /// Language tag conforming to BCP 47
+ ///
+ string language = 2;
+ }
+
+ ///
+ /// String with length 1023 maximum and minimum 1 characters and with language tags
+ ///
+ message LangStringTextType {
+ ///
+ /// Text in the
+ ///
+ string text = 1;
+
+ ///
+ /// Language tag conforming to BCP 47
+ ///
+ string language = 2;
+ }
+
+ ///
+ /// Container for the sets of different identifiables.
+ ///
+ ///
+ /// w.r.t. file exchange: There is exactly one environment independent on how many
+ /// files the contained elements are split. If the file is split then there
+ /// shall be no element with the same identifier in two different files.
+ ///
+ message Environment {
+ ///
+ /// Concept description
+ ///
+ repeated ConceptDescription concept_descriptions = 1;
+
+ ///
+ /// Asset administration shell
+ ///
+ repeated AssetAdministrationShell asset_administration_shells = 2;
+
+ ///
+ /// Submodel
+ ///
+ repeated Submodel submodels = 3;
+ }
+
+ ///
+ /// Embed the content of a data specification.
+ ///
+ message EmbeddedDataSpecification {
+ ///
+ /// Reference to the data specification
+ ///
+ Reference data_specification = 1;
+
+ ///
+ /// Actual content of the data specification
+ ///
+ DataSpecificationContent data_specification_content = 2;
+ }
+
+ enum DataTypeIec61360 {
+ Datatypeiec61360_UNSPECIFIED = 0;
+
+ ///
+ /// values containing a calendar date, conformant to ISO 8601:2004 Format yyyy-mm-dd
+ /// Example from IEC 61360-1:2017: "1999-05-31" is the [DATE] representation of:
+ /// "31 May 1999".
+ ///
+ Datatypeiec61360_DATE = 1;
+
+ ///
+ /// values consisting of sequence of characters but cannot be translated into other
+ /// languages
+ ///
+ Datatypeiec61360_STRING = 2;
+
+ ///
+ /// values containing string but shall be represented as different string in different
+ /// languages
+ ///
+ Datatypeiec61360_STRING_TRANSLATABLE = 3;
+
+ ///
+ /// values containing values that are measure of type INTEGER. In addition such a value
+ /// comes with a physical unit.
+ ///
+ Datatypeiec61360_INTEGER_MEASURE = 4;
+
+ ///
+ /// values containing values of type INTEGER but are no currencies or measures
+ ///
+ Datatypeiec61360_INTEGER_COUNT = 5;
+
+ ///
+ /// values containing values of type INTEGER that are currencies
+ ///
+ Datatypeiec61360_INTEGER_CURRENCY = 6;
+
+ ///
+ /// values containing values that are measures of type REAL. In addition such a value
+ /// comes with a physical unit.
+ ///
+ Datatypeiec61360_REAL_MEASURE = 7;
+
+ ///
+ /// values containing numbers that can be written as a terminating or non-terminating
+ /// decimal; a rational or irrational number but are no currencies or measures
+ ///
+ Datatypeiec61360_REAL_COUNT = 8;
+
+ ///
+ /// values containing values of type REAL that are currencies
+ ///
+ Datatypeiec61360_REAL_CURRENCY = 9;
+
+ ///
+ /// values representing truth of logic or Boolean algebra (TRUE, FALSE)
+ ///
+ Datatypeiec61360_BOOLEAN = 10;
+
+ ///
+ /// values containing values of type STRING conformant to Rfc 3987
+ ///
+ ///
+ /// In IEC61360-1 (2017) only URI is supported.
+ /// An IRI type allows in particular to express an URL or an URI.
+ ///
+ Datatypeiec61360_IRI = 11;
+
+ ///
+ /// values conforming to ISO/IEC 11179 series global identifier sequences
+ ///
+ ///
+ ///
+ /// IRDI can be used instead of the more specific data types ICID or ISO29002_IRDI.
+ ///
+ ///
+ /// ICID values are value conformant to an IRDI, where the delimiter between RAI and ID
+ /// is “#” while the delimiter between DI and VI is confined to “##”
+ ///
+ ///
+ /// ISO29002_IRDI values are values containing a global identifier that identifies an
+ /// administrated item in a registry. The structure of this identifier complies with
+ /// identifier syntax defined in ISO/TS 29002-5. The identifier shall fulfil the
+ /// requirements specified in ISO/TS 29002-5 for an "international registration data
+ /// identifier" (IRDI).
+ ///
+ ///
+ Datatypeiec61360_IRDI = 12;
+
+ ///
+ /// values containing values of type rational
+ ///
+ Datatypeiec61360_RATIONAL = 13;
+
+ ///
+ /// values containing values of type rational. In addition such a value comes with a
+ /// physical unit.
+ ///
+ Datatypeiec61360_RATIONAL_MEASURE = 14;
+
+ ///
+ /// values containing a time, conformant to ISO 8601:2004 but restricted to what is
+ /// allowed in the corresponding type in xml.
+ ///
+ ///
+ ///
+ /// Format hh:mm (ECLASS)
+ ///
+ ///
+ /// Example from IEC 61360-1:2017: "13:20:00-05:00" is the [TIME] representation of:
+ /// 1.20 p.m. for Eastern Standard Time, which is 5 hours behind Coordinated
+ /// Universal Time (UTC).
+ ///
+ ///
+ Datatypeiec61360_TIME = 15;
+
+ ///
+ /// values containing a time, conformant to ISO 8601:2004 but restricted to what is
+ /// allowed in the corresponding type in xml.
+ ///
+ ///
+ /// Format yyyy-mm-dd hh:mm (ECLASS)
+ ///
+ Datatypeiec61360_TIMESTAMP = 16;
+
+ ///
+ /// values containing an address to a file. The values are of type URI and can represent
+ /// an absolute or relative path.
+ ///
+ ///
+ /// IEC61360 does not support the file type.
+ ///
+ Datatypeiec61360_FILE = 17;
+
+ ///
+ /// Values containing string with any sequence of characters, using the syntax of HTML5
+ /// (see W3C Recommendation 28:2014)
+ ///
+ Datatypeiec61360_HTML = 18;
+
+ ///
+ /// values containing the content of a file. Values may be binaries.
+ ///
+ ///
+ ///
+ /// HTML conformant to HTML5 is a special blob.
+ ///
+ ///
+ /// In IEC61360 binary is for a sequence of bits, each bit being represented by “0” and
+ /// “1” only. A binary is a blob but a blob may also contain other source code.
+ ///
+ ///
+ Datatypeiec61360_BLOB = 19;
+ }
+
+ ///
+ /// Value represented by up to four variants of a numeric value in a specific role:
+ /// MIN, NOM, TYP and MAX. True means that the value is available,
+ /// false means the value is not available.
+ ///
+ ///
+ ///
+ /// EXAMPLE from [IEC61360-1]: In the case of having a property which is
+ /// of the LEVEL_TYPE min/max − expressing a range − only those two values
+ /// need to be provided.
+ ///
+ ///
+ ///
+ /// This is how AAS deals with the following combinations of level types:
+ ///
+ ///
+ /// -
+ /// Either all attributes are false. In this case the concept is mapped
+ /// to a and level type is ignored.
+ ///
+ /// -
+ /// At most one of the attributes is set to true. In this case
+ /// the concept is mapped to a .
+ ///
+ /// -
+ /// Min and max are set to true. In this case the concept is mapped
+ /// to a .
+ ///
+ /// -
+ /// More than one attribute is set to true but not min and max only
+ /// (see second case). In this case the concept is mapped
+ /// to a with the corresponding
+ /// number of Properties.
+ /// Example: If attribute and are set to true
+ /// then the concept is mapped to a
+ /// with two Properties within: min and nom.
+ /// The data type of both Properties is the same.
+ ///
+ ///
+ ///
+ ///
+ /// In the cases 2. and 4. the of the Property
+ /// or Properties within the needs to include
+ /// information about the level type. Otherwise, the semantics is not described
+ /// in a unique way. Please refer to the specification.
+ ///
+ ///
+ message LevelType {
+ ///
+ /// Maximum of the value
+ ///
+ bool max = 1;
+
+ ///
+ /// Minimum of the value
+ ///
+ bool min = 2;
+
+ ///
+ /// Nominal value (value as designated)
+ ///
+ bool nom = 3;
+
+ ///
+ /// Value as typically present
+ ///
+ bool typ = 4;
+ }
+
+ ///
+ /// A value reference pair within a value list. Each value has a global unique id
+ /// defining its semantic.
+ ///
+ message ValueReferencePair {
+ ///
+ /// The value of the referenced concept definition of the value in .
+ ///
+ string value = 1;
+
+ ///
+ /// Global unique id of the value.
+ ///
+ ///
+ /// It is recommended to use a global reference.
+ ///
+ Reference value_id = 2;
+ }
+
+ ///
+ /// A set of value reference pairs.
+ ///
+ message ValueList {
+ ///
+ /// A pair of a value together with its global unique id.
+ ///
+ repeated ValueReferencePair value_reference_pairs = 1;
+ }
+
+ ///
+ /// String with length 255 maximum and minimum 1 characters and with language tags
+ ///
+ ///
+ /// It is advised to keep the length of the name limited to 35 characters.
+ ///
+ message LangStringPreferredNameTypeIec61360 {
+ ///
+ /// Text in the
+ ///
+ string text = 1;
+
+ ///
+ /// Language tag conforming to BCP 47
+ ///
+ string language = 2;
+ }
+
+ ///
+ /// String with length 18 maximum and minimum 1 characters and with language tags
+ ///
+ message LangStringShortNameTypeIec61360 {
+ ///
+ /// Text in the
+ ///
+ string text = 1;
+
+ ///
+ /// Language tag conforming to BCP 47
+ ///
+ string language = 2;
+ }
+
+ ///
+ /// String with length 1023 maximum and minimum 1 characters and with language tags
+ ///
+ message LangStringDefinitionTypeIec61360 {
+ ///
+ /// Text in the
+ ///
+ string text = 1;
+
+ ///
+ /// Language tag conforming to BCP 47
+ ///
+ string language = 2;
+ }
+
+ ///
+ /// Content of data specification template for concept descriptions for properties,
+ /// values and value lists conformant to IEC 61360.
+ ///
+ ///
+ ///
+ /// IEC61360 requires also a globally unique identifier for a concept
+ /// description. This ID is not part of the data specification template.
+ /// Instead the as inherited via
+ /// is used. Same holds for administrative
+ /// information like the version and revision.
+ ///
+ ///
+ /// and are very
+ /// similar. However, in this case the decision was to add
+ /// explicitly to the data specification. Same holds for
+ /// and
+ /// . Same holds for
+ /// and .
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ ///
+ /// Constraint AASc-3a-010:
+ /// If is not empty then shall be empty
+ /// and vice versa.
+ ///
+ ///
+ /// It is also possible that both and are
+ /// empty. This is the case for concept descriptions that define the semantics
+ /// of a property but do not have an enumeration () as
+ /// data type.
+ ///
+ ///
+ /// Although it is possible to define a for a
+ /// :attr:´value_list`,
+ /// it is not possible to reuse this .
+ /// It is only possible to directly add a as data type
+ /// to a specific semantic definition of a property.
+ ///
+ ///
+ /// -
+ /// Constraint AASc-3a-009:
+ /// If one of:
+ /// ,
+ /// ,
+ /// ,
+ /// ,
+ /// , then or
+ /// shall be defined.
+ ///
+ ///
+ ///
+ message DataSpecificationIec61360 {
+ ///
+ /// Value
+ ///
+ optional string value = 1;
+
+ ///
+ /// Set of levels.
+ ///
+ optional LevelType level_type = 2;
+
+ ///
+ /// Symbol
+ ///
+ optional string symbol = 3;
+
+ ///
+ /// Preferred name
+ ///
+ ///
+ ///
+ /// It is advised to keep the length of the name limited to 35 characters.
+ ///
+ ///
+ /// Constraints:
+ ///
+ ///
+ /// -
+ /// Constraint AASc-3a-002:
+ /// shall be provided at least in English.
+ ///
+ ///
+ ///
+ repeated LangStringPreferredNameTypeIec61360 preferred_name = 4;
+
+ ///
+ /// Data Type
+ ///
+ optional DataTypeIec61360 data_type = 5;
+
+ ///
+ /// Short name
+ ///
+ repeated LangStringShortNameTypeIec61360 short_name = 6;
+
+ ///
+ /// Definition in different languages
+ ///
+ repeated LangStringDefinitionTypeIec61360 definition = 7;
+
+ ///
+ /// Unit
+ ///
+ optional string unit = 8;
+
+ ///
+ /// Value Format
+ ///
+ ///
+ /// The value format is based on ISO 13584-42 and IEC 61360-2.
+ ///
+ optional string value_format = 9;
+
+ ///
+ /// Unique unit id
+ ///
+ ///
+ ///
+ /// and need to be consistent if both attributes
+ /// are set
+ ///
+ ///
+ /// It is recommended to use an external reference ID.
+ ///
+ ///
+ optional Reference unit_id = 10;
+
+ ///
+ /// List of allowed values
+ ///
+ optional ValueList value_list = 11;
+
+ ///
+ /// Source of definition
+ ///
+ optional string source_of_definition = 12;
+ }
+
+ message DataSpecificationContent {
+ oneof value {
+ DataSpecificationIec61360 data_specification_iec_61360 = 1;
+ }
+ }
+
+ message SubmodelElement {
+ oneof value {
+ RelationshipElement relationship_element = 1;
+ AnnotatedRelationshipElement annotated_relationship_element = 2;
+ BasicEventElement basic_event_element = 3;
+ Blob blob = 4;
+ Capability capability = 5;
+ Entity entity = 6;
+ File file = 7;
+ MultiLanguageProperty multi_language_property = 8;
+ Operation operation = 9;
+ Property property = 10;
+ Range range = 11;
+ ReferenceElement reference_element = 12;
+ SubmodelElementCollection submodel_element_collection = 13;
+ SubmodelElementList submodel_element_list = 14;
+ }
+ }
+
+ message DataElement {
+ oneof value {
+ Blob blob = 1;
+ File file = 2;
+ MultiLanguageProperty multi_language_property = 3;
+ Property property = 4;
+ Range range = 5;
+ ReferenceElement reference_element = 6;
+ }
+ }
+
+/*
+ * This code has been automatically generated by aas-core-codegen.
+ * Do NOT edit or append.
+ */