Verify
Our SDK allows you to verify that a model satisfies the constraints of the meta-model.
The verification logic is concentrated in the module aas_core3.verification
, and all it takes is a call to aas_core3.verification.verify()
function.
The function aas_core3.verification.verify()
will check that constraints in the given model element are satisfied, including the recursion into children elements.
The function returns an iterator of aas_core3.verification.Error
’s, which you can use for further processing (e.g., report to the user).
Here is a short example snippet:
import aas_core3.types as aas_types
import aas_core3.verification as aas_verification
# Prepare the environment
environment = aas_types.Environment(
submodels=[
aas_types.Submodel(
id="some-unique-global-identifier",
submodel_elements=[
aas_types.Property(
# The ID-shorts must be proper variable names,
# but there is a dash ("-") in this ID-short.
id_short = "some-Property",
value_type=aas_types.DataTypeDefXSD.INT,
value="1984"
)
]
)
]
)
for error in aas_verification.verify(environment):
print(f"{error.path}: {error.cause}")
Expected output:
.submodels[0].submodel_elements[0].id_short: ID-short of Referables shall only feature letters, digits, underscore (``_``); starting mandatory with a letter. *I.e.* ``[a-zA-Z][a-zA-Z0-9_]*``.
Limit the Number of Reported Errors
Since the function aas_core3.verification.verify()
gives you an iterator, you can use itertools
on it.
Here is a snippet which reports only the first 10 errors:
# ... code from above ...
import itertools
for error in itertools.islice(
aas_verification.verify(environment),
10
):
print(f"{error.path}: {error.cause}")
Omitted Constraints
Not all constraints specified in the meta-model can be verified. Some constraints require external dependencies such as an AAS registry. Verifying the constraints with external dependencies is out-of-scope of our SDK, as we still lack standardized interfaces to those dependencies.
However, all the constraints which need no external dependency are verified.
For a full list of exception, please see the description of the module aas_core3.types
.