Create, Get and Set Properties of an AAS Model

The module aas_core3.types contains all the data types of the meta-model. This includes enumerations, abstract and concrete classes.

The module aas_core3.types also contains visitors and transformers, but we will write more about them in Iterate and Transform section.

Creation

We use constructors to create an AAS model.

Usually you start bottom-up, all the way up to the aas_core3.types.Environment.

Getting and Setting Properties

All properties of the classes are modeled as Python properties.

After initialization of a class, you can directly get and modify its properties.

Getters with a Default Value

For optional properties which come with a default value, we provide special getters, {property name}_or_default. If the property is None, this getter will give you the default value. Otherwise, if the property is set, the actual value of the property will be returned.

For example, see aas_core3.types.HasKind.kind_or_default().

Example: Create an Environment with a Submodel

Here is a very rudimentary example where we show how to create an environment which contains a submodel.

The submodel will contain two elements, a property and a blob.

import aas_core3.types as aas_types

# Create the first element
some_element = aas_types.Property(
    id_short="some_property",
    value_type=aas_types.DataTypeDefXSD.INT,
    value="1984"
)

# Create the second element
another_element = aas_types.Blob(
    id_short="some_blob",
    content_type="application/octet-stream",
    value=b'\xDE\xAD\xBE\xEF'
)

# You can directly access the element properties.
another_element.value = b'\xDE\xAD\xC0\xDE'

# Nest the elements in a submodel
submodel = aas_types.Submodel(
    id="some-unique-global-identifier",
    submodel_elements=[
        some_element,
        another_element
    ]
)

# Now create the environment to wrap it all up
environment = aas_types.Environment(
    submodels=[submodel]
)

# You can access the properties from the children as well.
environment.submodels[0].submodel_elements[1].value = b'\xC0\x01\xCA\xFE'

# Now you can do something with the environment...