Skip to main content

The Aspect Model Loader as part of the Python SDK provided by the Eclipse Semantic Modeling Framework.

An Aspect of the Meta Model

The esmf-aspect-model-loader package provides the Python implementation for the SAMM Aspect Meta Model, or SAMM. Each Meta Model element and each Characteristic class is represented by an interface with a corresponding implementation.

Documentation

Set Up SAMM Aspect Meta Model

Before getting started to use the esmf-aspect-model-loader library you need to apply some set up actions:

Required

Install uv

uv is used as the dependency manager for the esmf-aspect-model-loader. Follow the next instruction to install it.

To check the uv version run:

uv --version

Install project dependencies

uv provides convenient functionality for working with dependencies in the project. To automatically create a virtual environment and install all the necessary libraries, just run one command:

uv sync

It is required to run uv sync once in the esmf-aspect-model-loader module.

Download SAMM files

There are two possibilities to download the SAMM files and extract the Turtle sources for the Meta Model: SAMM release or SAMM branch

Download SAMM release

This script downloads a release JAR-file from GitHub, extracts them for further usage in the Aspect Model Loader:

To run script, execute the next command.

uv run download-samm-release

The version of the SAMM release is specified in the python script.

Link to all Releases: SAMM Releases

Download SAMM branch

The script uses the GitHub API and downloads the files from the main GitHub branch.

If the script is run in a pipeline, it uses a GitHub token to authorize. If the script is run locally, the API is called without a token. This may cause problems because unauthorized API calls are limited.

Run the next command to download and start working with the Aspect Model Loader.

uv run download-samm-branch

Link to all branches: SAMM Releases

SAMM Aspect Model Graph usage

SAMM Aspect Model Graph is a class that allows you to load and interact with the Semantic Data Aspect Meta Model graph. Below is an example of how to use SAMM Aspect Model Graph in your Python code:

from esmf_aspect_meta_model_python import SAMMGraph

# Define the path to your Turtle file
model_path = "absolute/path/to/turtle.ttl"

# Create an instance of SAMMGraph
samm_graph = SAMMGraph()

# Parse the Turtle file to load the graph
samm_graph.parse(model_path)

# Load the aspect model from the graph
aspect = samm_graph.load_aspect_model()

The load_model_elements method in the SAMMGraph class creates Python objects to represent all nodes from the Aspect model graph. It retrieves all SAMM elements from the RDF graph and converts them into structured Python objects.

from esmf_aspect_meta_model_python import SAMMGraph

# Define the path to your Turtle file
model_path = "absolute/path/to/turtle.ttl"

# Create an instance of SAMMGraph
samm_graph = SAMMGraph()

# Parse the Turtle file to load the graph
samm_graph.parse(model_path)

# Load all model elements from the graph
model_elements = samm_graph.load_model_elements()

Samm Units

SAMMUnitsGraph is a class contains functions for accessing units of measurement.

from esmf_aspect_meta_model_python.samm_meta_model import SammUnitsGraph

units = SammUnitsGraph()

unit_name = "unit:volt"
units.print_info(units.get_info(unit_name))
# preferredName: volt
# commonCode: VLT
# ...
# symbol: V

# Get unit data as dictionary
volt_info = units.get_info("unit:volt")
# {'preferredName': rdflib.term.Literal('volt', lang='en'), 'commonCode': rdflib.term.Literal('VLT'), ... }

units.print_info(volt_info)
# preferredName: volt
# commonCode: VLT
# ...
# symbol: V

SAMM CLI wrapper class

The SAMM CLI is a command line tool provided number of functions for working with Aspect Models.

More detailed information about SAMM CLI functionality can be found in the SAMM CLI documentation.

Python Aspect Model Loader provide a wrapper class to be able to call SAMM CLI functions from the Python code. For instance, validation of a model can be done with the following code snippet:

from esmf_aspect_meta_model_python.samm_cli import SammCli

samm_cli = SammCli()
model_path = "Path_to_the_model/Model.ttl"
samm_cli.validate(model_path)
# Input model is valid

List of SAMMCLI functions:

  • validate
  • prettyprint
  • usage
  • to_openapi
  • to_schema
  • to_json
  • to_html
  • to_png
  • to_svg
  • to_java
  • to_asyncapi
  • to_jsonld
  • to_sql
  • to_aas
  • edit_move
  • edit_newversion
  • aas_to_aspect
  • aas_list
  • package_import
  • package_export

Scripts

The Aspect Model Loader provide scripts for downloading some additional code and data. Provided scripts:

  • download-samm-release
  • download-samm-branch
  • download-samm-cli
  • download-test-models

All scripts run like a uv command. uv is available from the folder where pyproject.toml is located.

Tests running

tox

tox is used for the tests automation purpose. There are two environments with different purposes and tests can be running with the tox:

  • pep8: static code checks (PEP8 style) with MyPy and Black
  • py310: unit and integration tests

tox-uv plugin

tox is integrated with uv through the tox-uv plugin. Both tox and tox-uv are declared as dev dependencies in pyproject.toml, so a single uv sync installs everything required - no separate installation step is needed.

The two environments use the plugin differently (see tox.ini):

  • pep8 uses the uv-venv-lock-runner provided by tox-uv, which provisions the environment directly from the pinned uv.lock and installs the dev dependency group. This guarantees the linters run with the exact, locked versions.
  • py310 uses the default runner and explicitly runs uv sync and uv run download-samm-release in its commands_pre to prepare dependencies and the SAMM meta model files before executing the test suite.
# run all checks use the next command
uv run tox

# run only pep8 checks
uv run tox -e pep8

# run tests
uv run tox -e py310

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

esmf_aspect_model_loader-2.3.0.tar.gz (556.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

esmf_aspect_model_loader-2.3.0-py3-none-any.whl (587.5 kB view details)

Uploaded Python 3

File details

Details for the file esmf_aspect_model_loader-2.3.0.tar.gz.

File metadata

  • Download URL: esmf_aspect_model_loader-2.3.0.tar.gz
  • Upload date:
  • Size: 556.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for esmf_aspect_model_loader-2.3.0.tar.gz
Algorithm Hash digest
SHA256 348566301fce3424a980c5ae4aec8e9a053c73054237c7c9a26d24f60cd54967
MD5 4475abe649ca9b854203f41afe766214
BLAKE2b-256 51bbdba033370e7f4ead7c9d80ba1beea6db313ee5280d3b07f48d2f257757ff

See more details on using hashes here.

File details

Details for the file esmf_aspect_model_loader-2.3.0-py3-none-any.whl.

File metadata

  • Download URL: esmf_aspect_model_loader-2.3.0-py3-none-any.whl
  • Upload date:
  • Size: 587.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for esmf_aspect_model_loader-2.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cd38cc63f79d8da6ce973b991ca25cf05667c09c30bbac2d28ff7f880e421781
MD5 bac71b4eace322f035a9cbd496448840
BLAKE2b-256 8a4e12d9976d55ffac26b5f06760dbfe4cadbe8ce21194551a7b918759cb2d67

See more details on using hashes here.

Release history Release notifications | RSS feed

2.3.1

2 files

This release

2.3.0 This release

2 files

2.2.1

2 files

2.2.0

2 files

2.1.8

2 files

2.1.7

2 files

2.1.6

2 files

2.1.5

2 files

2.1.4

2 files

2.1.3

2 files

2.1.2

2 files

2.1.1

2 files

2.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page